/*
 * Oceanengine Open Api
 * 巨量引擎开放平台 Open Api
 *
 * The version of the OpenAPI document: 1.1.19
 * 
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */


package com.bytedance.ads.model;

import java.util.Objects;
import java.util.Arrays;
import com.bytedance.ads.model.ProjectListV30DataListAdType;
import com.bytedance.ads.model.ProjectListV30DataListAigcDynamicCreativeSwitch;
import com.bytedance.ads.model.ProjectListV30DataListAppPromotionType;
import com.bytedance.ads.model.ProjectListV30DataListAssetType;
import com.bytedance.ads.model.ProjectListV30DataListDeliveryMode;
import com.bytedance.ads.model.ProjectListV30DataListDeliveryType;
import com.bytedance.ads.model.ProjectListV30DataListDownloadMode;
import com.bytedance.ads.model.ProjectListV30DataListDownloadType;
import com.bytedance.ads.model.ProjectListV30DataListDpaAdtype;
import com.bytedance.ads.model.ProjectListV30DataListLandingPageStayTime;
import com.bytedance.ads.model.ProjectListV30DataListLandingType;
import com.bytedance.ads.model.ProjectListV30DataListLaunchType;
import com.bytedance.ads.model.ProjectListV30DataListMarketingGoal;
import com.bytedance.ads.model.ProjectListV30DataListMicroPromotionType;
import com.bytedance.ads.model.ProjectListV30DataListMultiAssetType;
import com.bytedance.ads.model.ProjectListV30DataListOpenUrlType;
import com.bytedance.ads.model.ProjectListV30DataListOptStatus;
import com.bytedance.ads.model.ProjectListV30DataListPricing;
import com.bytedance.ads.model.ProjectListV30DataListPromotionType;
import com.bytedance.ads.model.ProjectListV30DataListStatus;
import com.bytedance.ads.model.ProjectListV30DataListStatusFirst;
import com.bytedance.ads.model.ProjectListV30DataListStatusSecond;
import com.bytedance.ads.model.ProjectListV30DataListValueOptimizedType;
import com.bytedance.ads.model.ProjectListV30ResponseDataListInnerAudience;
import com.bytedance.ads.model.ProjectListV30ResponseDataListInnerBlueFlowPackage;
import com.bytedance.ads.model.ProjectListV30ResponseDataListInnerDeliveryRange;
import com.bytedance.ads.model.ProjectListV30ResponseDataListInnerDeliverySetting;
import com.bytedance.ads.model.ProjectListV30ResponseDataListInnerDpaProductTargetInner;
import com.bytedance.ads.model.ProjectListV30ResponseDataListInnerInternalAdvertiserInfo;
import com.bytedance.ads.model.ProjectListV30ResponseDataListInnerKeywordsInner;
import com.bytedance.ads.model.ProjectListV30ResponseDataListInnerOptimizeGoal;
import com.bytedance.ads.model.ProjectListV30ResponseDataListInnerRelatedProduct;
import com.bytedance.ads.model.ProjectListV30ResponseDataListInnerTrackUrlSetting;
import com.google.gson.TypeAdapter;
import com.google.gson.annotations.JsonAdapter;
import com.google.gson.annotations.SerializedName;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.openapitools.jackson.nullable.JsonNullable;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonArray;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParseException;
import com.google.gson.TypeAdapterFactory;
import com.google.gson.reflect.TypeToken;
import com.google.gson.TypeAdapter;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
import java.io.IOException;

import java.lang.reflect.Type;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

import com.bytedance.ads.JSON;

/**
 * ProjectListV30ResponseDataListInner
 */
@javax.annotation.Generated(value = "com.org.bytedance.ad_open_sdk.JavacusGenerator", date = "2024-09-10T15:29:00.246104612+08:00[Asia/Shanghai]")
public class ProjectListV30ResponseDataListInner {
  public static final String SERIALIZED_NAME_AD_TYPE = "ad_type";
  @SerializedName(SERIALIZED_NAME_AD_TYPE)
  private ProjectListV30DataListAdType adType = null;

  public static final String SERIALIZED_NAME_ADVERTISER_ID = "advertiser_id";
  @SerializedName(SERIALIZED_NAME_ADVERTISER_ID)
  private Long advertiserId = null;

  public static final String SERIALIZED_NAME_AIGC_DYNAMIC_CREATIVE_SWITCH = "aigc_dynamic_creative_switch";
  @SerializedName(SERIALIZED_NAME_AIGC_DYNAMIC_CREATIVE_SWITCH)
  private ProjectListV30DataListAigcDynamicCreativeSwitch aigcDynamicCreativeSwitch = null;

  public static final String SERIALIZED_NAME_APP_NAME = "app_name";
  @SerializedName(SERIALIZED_NAME_APP_NAME)
  private String appName = null;

  public static final String SERIALIZED_NAME_APP_PROMOTION_TYPE = "app_promotion_type";
  @SerializedName(SERIALIZED_NAME_APP_PROMOTION_TYPE)
  private ProjectListV30DataListAppPromotionType appPromotionType = null;

  public static final String SERIALIZED_NAME_ASSET_TYPE = "asset_type";
  @SerializedName(SERIALIZED_NAME_ASSET_TYPE)
  private ProjectListV30DataListAssetType assetType = null;

  public static final String SERIALIZED_NAME_AUDIENCE = "audience";
  @SerializedName(SERIALIZED_NAME_AUDIENCE)
  private ProjectListV30ResponseDataListInnerAudience audience = null;

  public static final String SERIALIZED_NAME_AUDIENCE_EXTEND = "audience_extend";
  @SerializedName(SERIALIZED_NAME_AUDIENCE_EXTEND)
  private String audienceExtend = null;

  public static final String SERIALIZED_NAME_BLUE_FLOW_PACKAGE = "blue_flow_package";
  @SerializedName(SERIALIZED_NAME_BLUE_FLOW_PACKAGE)
  private ProjectListV30ResponseDataListInnerBlueFlowPackage blueFlowPackage = null;

  public static final String SERIALIZED_NAME_BUDGET_GROUP_ID = "budget_group_id";
  @SerializedName(SERIALIZED_NAME_BUDGET_GROUP_ID)
  private Long budgetGroupId = null;

  public static final String SERIALIZED_NAME_DELIVERY_MODE = "delivery_mode";
  @SerializedName(SERIALIZED_NAME_DELIVERY_MODE)
  private ProjectListV30DataListDeliveryMode deliveryMode = null;

  public static final String SERIALIZED_NAME_DELIVERY_RANGE = "delivery_range";
  @SerializedName(SERIALIZED_NAME_DELIVERY_RANGE)
  private ProjectListV30ResponseDataListInnerDeliveryRange deliveryRange = null;

  public static final String SERIALIZED_NAME_DELIVERY_SETTING = "delivery_setting";
  @SerializedName(SERIALIZED_NAME_DELIVERY_SETTING)
  private ProjectListV30ResponseDataListInnerDeliverySetting deliverySetting = null;

  public static final String SERIALIZED_NAME_DELIVERY_TYPE = "delivery_type";
  @SerializedName(SERIALIZED_NAME_DELIVERY_TYPE)
  private ProjectListV30DataListDeliveryType deliveryType = null;

  public static final String SERIALIZED_NAME_DOWNLOAD_MODE = "download_mode";
  @SerializedName(SERIALIZED_NAME_DOWNLOAD_MODE)
  private ProjectListV30DataListDownloadMode downloadMode = null;

  public static final String SERIALIZED_NAME_DOWNLOAD_TYPE = "download_type";
  @SerializedName(SERIALIZED_NAME_DOWNLOAD_TYPE)
  private ProjectListV30DataListDownloadType downloadType = null;

  public static final String SERIALIZED_NAME_DOWNLOAD_URL = "download_url";
  @SerializedName(SERIALIZED_NAME_DOWNLOAD_URL)
  private String downloadUrl = null;

  public static final String SERIALIZED_NAME_DPA_ADTYPE = "dpa_adtype";
  @SerializedName(SERIALIZED_NAME_DPA_ADTYPE)
  private ProjectListV30DataListDpaAdtype dpaAdtype = null;

  public static final String SERIALIZED_NAME_DPA_CATEGORIES = "dpa_categories";
  @SerializedName(SERIALIZED_NAME_DPA_CATEGORIES)
  private List<Long> dpaCategories = null;

  public static final String SERIALIZED_NAME_DPA_PRODUCT_TARGET = "dpa_product_target";
  @SerializedName(SERIALIZED_NAME_DPA_PRODUCT_TARGET)
  private List<ProjectListV30ResponseDataListInnerDpaProductTargetInner> dpaProductTarget = null;

  public static final String SERIALIZED_NAME_FEED_DELIVERY_SEARCH = "feed_delivery_search";
  @SerializedName(SERIALIZED_NAME_FEED_DELIVERY_SEARCH)
  private String feedDeliverySearch = null;

  public static final String SERIALIZED_NAME_INTERNAL_ADVERTISER_INFO = "internal_advertiser_info";
  @SerializedName(SERIALIZED_NAME_INTERNAL_ADVERTISER_INFO)
  private ProjectListV30ResponseDataListInnerInternalAdvertiserInfo internalAdvertiserInfo = null;

  public static final String SERIALIZED_NAME_KEYWORDS = "keywords";
  @SerializedName(SERIALIZED_NAME_KEYWORDS)
  private List<ProjectListV30ResponseDataListInnerKeywordsInner> keywords = null;

  public static final String SERIALIZED_NAME_LANDING_PAGE_STAY_TIME = "landing_page_stay_time";
  @SerializedName(SERIALIZED_NAME_LANDING_PAGE_STAY_TIME)
  private ProjectListV30DataListLandingPageStayTime landingPageStayTime = null;

  public static final String SERIALIZED_NAME_LANDING_TYPE = "landing_type";
  @SerializedName(SERIALIZED_NAME_LANDING_TYPE)
  private ProjectListV30DataListLandingType landingType = null;

  public static final String SERIALIZED_NAME_LAUNCH_TYPE = "launch_type";
  @SerializedName(SERIALIZED_NAME_LAUNCH_TYPE)
  private ProjectListV30DataListLaunchType launchType = null;

  public static final String SERIALIZED_NAME_MARKETING_GOAL = "marketing_goal";
  @SerializedName(SERIALIZED_NAME_MARKETING_GOAL)
  private ProjectListV30DataListMarketingGoal marketingGoal = null;

  public static final String SERIALIZED_NAME_MICRO_APP_INSTANCE_ID = "micro_app_instance_id";
  @SerializedName(SERIALIZED_NAME_MICRO_APP_INSTANCE_ID)
  private Long microAppInstanceId = null;

  public static final String SERIALIZED_NAME_MICRO_PROMOTION_TYPE = "micro_promotion_type";
  @SerializedName(SERIALIZED_NAME_MICRO_PROMOTION_TYPE)
  private ProjectListV30DataListMicroPromotionType microPromotionType = null;

  public static final String SERIALIZED_NAME_MULTI_ASSET_TYPE = "multi_asset_type";
  @SerializedName(SERIALIZED_NAME_MULTI_ASSET_TYPE)
  private ProjectListV30DataListMultiAssetType multiAssetType = null;

  public static final String SERIALIZED_NAME_NAME = "name";
  @SerializedName(SERIALIZED_NAME_NAME)
  private String name = null;

  public static final String SERIALIZED_NAME_OPEN_URL = "open_url";
  @SerializedName(SERIALIZED_NAME_OPEN_URL)
  private String openUrl = null;

  public static final String SERIALIZED_NAME_OPEN_URL_FIELD = "open_url_field";
  @SerializedName(SERIALIZED_NAME_OPEN_URL_FIELD)
  private String openUrlField = null;

  public static final String SERIALIZED_NAME_OPEN_URL_PARAMS = "open_url_params";
  @SerializedName(SERIALIZED_NAME_OPEN_URL_PARAMS)
  private String openUrlParams = null;

  public static final String SERIALIZED_NAME_OPEN_URL_TYPE = "open_url_type";
  @SerializedName(SERIALIZED_NAME_OPEN_URL_TYPE)
  private ProjectListV30DataListOpenUrlType openUrlType = null;

  public static final String SERIALIZED_NAME_OPT_STATUS = "opt_status";
  @SerializedName(SERIALIZED_NAME_OPT_STATUS)
  private ProjectListV30DataListOptStatus optStatus = null;

  public static final String SERIALIZED_NAME_OPTIMIZE_GOAL = "optimize_goal";
  @SerializedName(SERIALIZED_NAME_OPTIMIZE_GOAL)
  private ProjectListV30ResponseDataListInnerOptimizeGoal optimizeGoal = null;

  public static final String SERIALIZED_NAME_PACKAGE_NAME = "package_name";
  @SerializedName(SERIALIZED_NAME_PACKAGE_NAME)
  private String packageName = null;

  public static final String SERIALIZED_NAME_PRICING = "pricing";
  @SerializedName(SERIALIZED_NAME_PRICING)
  private ProjectListV30DataListPricing pricing = null;

  public static final String SERIALIZED_NAME_PROJECT_CREATE_TIME = "project_create_time";
  @SerializedName(SERIALIZED_NAME_PROJECT_CREATE_TIME)
  private String projectCreateTime = null;

  public static final String SERIALIZED_NAME_PROJECT_ID = "project_id";
  @SerializedName(SERIALIZED_NAME_PROJECT_ID)
  private Long projectId = null;

  public static final String SERIALIZED_NAME_PROJECT_MODIFY_TIME = "project_modify_time";
  @SerializedName(SERIALIZED_NAME_PROJECT_MODIFY_TIME)
  private String projectModifyTime = null;

  public static final String SERIALIZED_NAME_PROMOTION_TYPE = "promotion_type";
  @SerializedName(SERIALIZED_NAME_PROMOTION_TYPE)
  private ProjectListV30DataListPromotionType promotionType = null;

  public static final String SERIALIZED_NAME_QUICK_APP_ID = "quick_app_id";
  @SerializedName(SERIALIZED_NAME_QUICK_APP_ID)
  private Long quickAppId = null;

  public static final String SERIALIZED_NAME_RELATED_PRODUCT = "related_product";
  @SerializedName(SERIALIZED_NAME_RELATED_PRODUCT)
  private ProjectListV30ResponseDataListInnerRelatedProduct relatedProduct = null;

  public static final String SERIALIZED_NAME_SEARCH_BID_RATIO = "search_bid_ratio";
  @SerializedName(SERIALIZED_NAME_SEARCH_BID_RATIO)
  private Double searchBidRatio = null;

  public static final String SERIALIZED_NAME_STAR_TASK_ID = "star_task_id";
  @SerializedName(SERIALIZED_NAME_STAR_TASK_ID)
  private Long starTaskId = null;

  public static final String SERIALIZED_NAME_STATUS = "status";
  @SerializedName(SERIALIZED_NAME_STATUS)
  private ProjectListV30DataListStatus status = null;

  public static final String SERIALIZED_NAME_STATUS_FIRST = "status_first";
  @SerializedName(SERIALIZED_NAME_STATUS_FIRST)
  private ProjectListV30DataListStatusFirst statusFirst = null;

  public static final String SERIALIZED_NAME_STATUS_SECOND = "status_second";
  @SerializedName(SERIALIZED_NAME_STATUS_SECOND)
  private List<ProjectListV30DataListStatusSecond> statusSecond = null;

  public static final String SERIALIZED_NAME_SUBSCRIBE_URL = "subscribe_url";
  @SerializedName(SERIALIZED_NAME_SUBSCRIBE_URL)
  private String subscribeUrl = null;

  public static final String SERIALIZED_NAME_TRACK_URL_SETTING = "track_url_setting";
  @SerializedName(SERIALIZED_NAME_TRACK_URL_SETTING)
  private ProjectListV30ResponseDataListInnerTrackUrlSetting trackUrlSetting = null;

  public static final String SERIALIZED_NAME_ULINK_URL = "ulink_url";
  @SerializedName(SERIALIZED_NAME_ULINK_URL)
  private String ulinkUrl = null;

  public static final String SERIALIZED_NAME_VALUE_OPTIMIZED_TYPE = "value_optimized_type";
  @SerializedName(SERIALIZED_NAME_VALUE_OPTIMIZED_TYPE)
  private ProjectListV30DataListValueOptimizedType valueOptimizedType = null;

  public ProjectListV30ResponseDataListInner() {
  }

  public ProjectListV30ResponseDataListInner adType(ProjectListV30DataListAdType adType) {
    
    this.adType = adType;
    return this;
  }

   /**
   * Get adType
   * @return adType
  **/
  @javax.annotation.Nullable
  public ProjectListV30DataListAdType getAdType() {
    return adType;
  }


  public void setAdType(ProjectListV30DataListAdType adType) {
    this.adType = adType;
  }


  public ProjectListV30ResponseDataListInner advertiserId(Long advertiserId) {
    
    this.advertiserId = advertiserId;
    return this;
  }

   /**
   * 
   * minimum: 1
   * @return advertiserId
  **/
  @javax.annotation.Nullable
  public Long getAdvertiserId() {
    return advertiserId;
  }


  public void setAdvertiserId(Long advertiserId) {
    this.advertiserId = advertiserId;
  }


  public ProjectListV30ResponseDataListInner aigcDynamicCreativeSwitch(ProjectListV30DataListAigcDynamicCreativeSwitch aigcDynamicCreativeSwitch) {
    
    this.aigcDynamicCreativeSwitch = aigcDynamicCreativeSwitch;
    return this;
  }

   /**
   * Get aigcDynamicCreativeSwitch
   * @return aigcDynamicCreativeSwitch
  **/
  @javax.annotation.Nullable
  public ProjectListV30DataListAigcDynamicCreativeSwitch getAigcDynamicCreativeSwitch() {
    return aigcDynamicCreativeSwitch;
  }


  public void setAigcDynamicCreativeSwitch(ProjectListV30DataListAigcDynamicCreativeSwitch aigcDynamicCreativeSwitch) {
    this.aigcDynamicCreativeSwitch = aigcDynamicCreativeSwitch;
  }


  public ProjectListV30ResponseDataListInner appName(String appName) {
    
    this.appName = appName;
    return this;
  }

   /**
   * 
   * @return appName
  **/
  @javax.annotation.Nullable
  public String getAppName() {
    return appName;
  }


  public void setAppName(String appName) {
    this.appName = appName;
  }


  public ProjectListV30ResponseDataListInner appPromotionType(ProjectListV30DataListAppPromotionType appPromotionType) {
    
    this.appPromotionType = appPromotionType;
    return this;
  }

   /**
   * Get appPromotionType
   * @return appPromotionType
  **/
  @javax.annotation.Nullable
  public ProjectListV30DataListAppPromotionType getAppPromotionType() {
    return appPromotionType;
  }


  public void setAppPromotionType(ProjectListV30DataListAppPromotionType appPromotionType) {
    this.appPromotionType = appPromotionType;
  }


  public ProjectListV30ResponseDataListInner assetType(ProjectListV30DataListAssetType assetType) {
    
    this.assetType = assetType;
    return this;
  }

   /**
   * Get assetType
   * @return assetType
  **/
  @javax.annotation.Nullable
  public ProjectListV30DataListAssetType getAssetType() {
    return assetType;
  }


  public void setAssetType(ProjectListV30DataListAssetType assetType) {
    this.assetType = assetType;
  }


  public ProjectListV30ResponseDataListInner audience(ProjectListV30ResponseDataListInnerAudience audience) {
    
    this.audience = audience;
    return this;
  }

   /**
   * Get audience
   * @return audience
  **/
  @javax.annotation.Nullable
  public ProjectListV30ResponseDataListInnerAudience getAudience() {
    return audience;
  }


  public void setAudience(ProjectListV30ResponseDataListInnerAudience audience) {
    this.audience = audience;
  }


  public ProjectListV30ResponseDataListInner audienceExtend(String audienceExtend) {
    
    this.audienceExtend = audienceExtend;
    return this;
  }

   /**
   * 
   * @return audienceExtend
  **/
  @javax.annotation.Nullable
  public String getAudienceExtend() {
    return audienceExtend;
  }


  public void setAudienceExtend(String audienceExtend) {
    this.audienceExtend = audienceExtend;
  }


  public ProjectListV30ResponseDataListInner blueFlowPackage(ProjectListV30ResponseDataListInnerBlueFlowPackage blueFlowPackage) {
    
    this.blueFlowPackage = blueFlowPackage;
    return this;
  }

   /**
   * Get blueFlowPackage
   * @return blueFlowPackage
  **/
  @javax.annotation.Nullable
  public ProjectListV30ResponseDataListInnerBlueFlowPackage getBlueFlowPackage() {
    return blueFlowPackage;
  }


  public void setBlueFlowPackage(ProjectListV30ResponseDataListInnerBlueFlowPackage blueFlowPackage) {
    this.blueFlowPackage = blueFlowPackage;
  }


  public ProjectListV30ResponseDataListInner budgetGroupId(Long budgetGroupId) {
    
    this.budgetGroupId = budgetGroupId;
    return this;
  }

   /**
   * 
   * @return budgetGroupId
  **/
  @javax.annotation.Nullable
  public Long getBudgetGroupId() {
    return budgetGroupId;
  }


  public void setBudgetGroupId(Long budgetGroupId) {
    this.budgetGroupId = budgetGroupId;
  }


  public ProjectListV30ResponseDataListInner deliveryMode(ProjectListV30DataListDeliveryMode deliveryMode) {
    
    this.deliveryMode = deliveryMode;
    return this;
  }

   /**
   * Get deliveryMode
   * @return deliveryMode
  **/
  @javax.annotation.Nullable
  public ProjectListV30DataListDeliveryMode getDeliveryMode() {
    return deliveryMode;
  }


  public void setDeliveryMode(ProjectListV30DataListDeliveryMode deliveryMode) {
    this.deliveryMode = deliveryMode;
  }


  public ProjectListV30ResponseDataListInner deliveryRange(ProjectListV30ResponseDataListInnerDeliveryRange deliveryRange) {
    
    this.deliveryRange = deliveryRange;
    return this;
  }

   /**
   * Get deliveryRange
   * @return deliveryRange
  **/
  @javax.annotation.Nullable
  public ProjectListV30ResponseDataListInnerDeliveryRange getDeliveryRange() {
    return deliveryRange;
  }


  public void setDeliveryRange(ProjectListV30ResponseDataListInnerDeliveryRange deliveryRange) {
    this.deliveryRange = deliveryRange;
  }


  public ProjectListV30ResponseDataListInner deliverySetting(ProjectListV30ResponseDataListInnerDeliverySetting deliverySetting) {
    
    this.deliverySetting = deliverySetting;
    return this;
  }

   /**
   * Get deliverySetting
   * @return deliverySetting
  **/
  @javax.annotation.Nullable
  public ProjectListV30ResponseDataListInnerDeliverySetting getDeliverySetting() {
    return deliverySetting;
  }


  public void setDeliverySetting(ProjectListV30ResponseDataListInnerDeliverySetting deliverySetting) {
    this.deliverySetting = deliverySetting;
  }


  public ProjectListV30ResponseDataListInner deliveryType(ProjectListV30DataListDeliveryType deliveryType) {
    
    this.deliveryType = deliveryType;
    return this;
  }

   /**
   * Get deliveryType
   * @return deliveryType
  **/
  @javax.annotation.Nullable
  public ProjectListV30DataListDeliveryType getDeliveryType() {
    return deliveryType;
  }


  public void setDeliveryType(ProjectListV30DataListDeliveryType deliveryType) {
    this.deliveryType = deliveryType;
  }


  public ProjectListV30ResponseDataListInner downloadMode(ProjectListV30DataListDownloadMode downloadMode) {
    
    this.downloadMode = downloadMode;
    return this;
  }

   /**
   * Get downloadMode
   * @return downloadMode
  **/
  @javax.annotation.Nullable
  public ProjectListV30DataListDownloadMode getDownloadMode() {
    return downloadMode;
  }


  public void setDownloadMode(ProjectListV30DataListDownloadMode downloadMode) {
    this.downloadMode = downloadMode;
  }


  public ProjectListV30ResponseDataListInner downloadType(ProjectListV30DataListDownloadType downloadType) {
    
    this.downloadType = downloadType;
    return this;
  }

   /**
   * Get downloadType
   * @return downloadType
  **/
  @javax.annotation.Nullable
  public ProjectListV30DataListDownloadType getDownloadType() {
    return downloadType;
  }


  public void setDownloadType(ProjectListV30DataListDownloadType downloadType) {
    this.downloadType = downloadType;
  }


  public ProjectListV30ResponseDataListInner downloadUrl(String downloadUrl) {
    
    this.downloadUrl = downloadUrl;
    return this;
  }

   /**
   * 
   * @return downloadUrl
  **/
  @javax.annotation.Nullable
  public String getDownloadUrl() {
    return downloadUrl;
  }


  public void setDownloadUrl(String downloadUrl) {
    this.downloadUrl = downloadUrl;
  }


  public ProjectListV30ResponseDataListInner dpaAdtype(ProjectListV30DataListDpaAdtype dpaAdtype) {
    
    this.dpaAdtype = dpaAdtype;
    return this;
  }

   /**
   * Get dpaAdtype
   * @return dpaAdtype
  **/
  @javax.annotation.Nullable
  public ProjectListV30DataListDpaAdtype getDpaAdtype() {
    return dpaAdtype;
  }


  public void setDpaAdtype(ProjectListV30DataListDpaAdtype dpaAdtype) {
    this.dpaAdtype = dpaAdtype;
  }


  public ProjectListV30ResponseDataListInner dpaCategories(List<Long> dpaCategories) {
    
    this.dpaCategories = dpaCategories;
    return this;
  }

  public ProjectListV30ResponseDataListInner addDpaCategoriesItem(Long dpaCategoriesItem) {
    if (this.dpaCategories == null) {
      this.dpaCategories = new ArrayList<>();
    }
    this.dpaCategories.add(dpaCategoriesItem);
    return this;
  }

   /**
   * 
   * @return dpaCategories
  **/
  @javax.annotation.Nullable
  public List<Long> getDpaCategories() {
    return dpaCategories;
  }


  public void setDpaCategories(List<Long> dpaCategories) {
    this.dpaCategories = dpaCategories;
  }


  public ProjectListV30ResponseDataListInner dpaProductTarget(List<ProjectListV30ResponseDataListInnerDpaProductTargetInner> dpaProductTarget) {
    
    this.dpaProductTarget = dpaProductTarget;
    return this;
  }

  public ProjectListV30ResponseDataListInner addDpaProductTargetItem(ProjectListV30ResponseDataListInnerDpaProductTargetInner dpaProductTargetItem) {
    if (this.dpaProductTarget == null) {
      this.dpaProductTarget = new ArrayList<>();
    }
    this.dpaProductTarget.add(dpaProductTargetItem);
    return this;
  }

   /**
   * 
   * @return dpaProductTarget
  **/
  @javax.annotation.Nullable
  public List<ProjectListV30ResponseDataListInnerDpaProductTargetInner> getDpaProductTarget() {
    return dpaProductTarget;
  }


  public void setDpaProductTarget(List<ProjectListV30ResponseDataListInnerDpaProductTargetInner> dpaProductTarget) {
    this.dpaProductTarget = dpaProductTarget;
  }


  public ProjectListV30ResponseDataListInner feedDeliverySearch(String feedDeliverySearch) {
    
    this.feedDeliverySearch = feedDeliverySearch;
    return this;
  }

   /**
   * 
   * @return feedDeliverySearch
  **/
  @javax.annotation.Nullable
  public String getFeedDeliverySearch() {
    return feedDeliverySearch;
  }


  public void setFeedDeliverySearch(String feedDeliverySearch) {
    this.feedDeliverySearch = feedDeliverySearch;
  }


  public ProjectListV30ResponseDataListInner internalAdvertiserInfo(ProjectListV30ResponseDataListInnerInternalAdvertiserInfo internalAdvertiserInfo) {
    
    this.internalAdvertiserInfo = internalAdvertiserInfo;
    return this;
  }

   /**
   * Get internalAdvertiserInfo
   * @return internalAdvertiserInfo
  **/
  @javax.annotation.Nullable
  public ProjectListV30ResponseDataListInnerInternalAdvertiserInfo getInternalAdvertiserInfo() {
    return internalAdvertiserInfo;
  }


  public void setInternalAdvertiserInfo(ProjectListV30ResponseDataListInnerInternalAdvertiserInfo internalAdvertiserInfo) {
    this.internalAdvertiserInfo = internalAdvertiserInfo;
  }


  public ProjectListV30ResponseDataListInner keywords(List<ProjectListV30ResponseDataListInnerKeywordsInner> keywords) {
    
    this.keywords = keywords;
    return this;
  }

  public ProjectListV30ResponseDataListInner addKeywordsItem(ProjectListV30ResponseDataListInnerKeywordsInner keywordsItem) {
    if (this.keywords == null) {
      this.keywords = new ArrayList<>();
    }
    this.keywords.add(keywordsItem);
    return this;
  }

   /**
   * 关键词
   * @return keywords
  **/
  @javax.annotation.Nullable
  public List<ProjectListV30ResponseDataListInnerKeywordsInner> getKeywords() {
    return keywords;
  }


  public void setKeywords(List<ProjectListV30ResponseDataListInnerKeywordsInner> keywords) {
    this.keywords = keywords;
  }


  public ProjectListV30ResponseDataListInner landingPageStayTime(ProjectListV30DataListLandingPageStayTime landingPageStayTime) {
    
    this.landingPageStayTime = landingPageStayTime;
    return this;
  }

   /**
   * Get landingPageStayTime
   * @return landingPageStayTime
  **/
  @javax.annotation.Nullable
  public ProjectListV30DataListLandingPageStayTime getLandingPageStayTime() {
    return landingPageStayTime;
  }


  public void setLandingPageStayTime(ProjectListV30DataListLandingPageStayTime landingPageStayTime) {
    this.landingPageStayTime = landingPageStayTime;
  }


  public ProjectListV30ResponseDataListInner landingType(ProjectListV30DataListLandingType landingType) {
    
    this.landingType = landingType;
    return this;
  }

   /**
   * Get landingType
   * @return landingType
  **/
  @javax.annotation.Nullable
  public ProjectListV30DataListLandingType getLandingType() {
    return landingType;
  }


  public void setLandingType(ProjectListV30DataListLandingType landingType) {
    this.landingType = landingType;
  }


  public ProjectListV30ResponseDataListInner launchType(ProjectListV30DataListLaunchType launchType) {
    
    this.launchType = launchType;
    return this;
  }

   /**
   * Get launchType
   * @return launchType
  **/
  @javax.annotation.Nullable
  public ProjectListV30DataListLaunchType getLaunchType() {
    return launchType;
  }


  public void setLaunchType(ProjectListV30DataListLaunchType launchType) {
    this.launchType = launchType;
  }


  public ProjectListV30ResponseDataListInner marketingGoal(ProjectListV30DataListMarketingGoal marketingGoal) {
    
    this.marketingGoal = marketingGoal;
    return this;
  }

   /**
   * Get marketingGoal
   * @return marketingGoal
  **/
  @javax.annotation.Nullable
  public ProjectListV30DataListMarketingGoal getMarketingGoal() {
    return marketingGoal;
  }


  public void setMarketingGoal(ProjectListV30DataListMarketingGoal marketingGoal) {
    this.marketingGoal = marketingGoal;
  }


  public ProjectListV30ResponseDataListInner microAppInstanceId(Long microAppInstanceId) {
    
    this.microAppInstanceId = microAppInstanceId;
    return this;
  }

   /**
   * 对应「创建字节小程序」接口获取的instance_id
   * @return microAppInstanceId
  **/
  @javax.annotation.Nullable
  public Long getMicroAppInstanceId() {
    return microAppInstanceId;
  }


  public void setMicroAppInstanceId(Long microAppInstanceId) {
    this.microAppInstanceId = microAppInstanceId;
  }


  public ProjectListV30ResponseDataListInner microPromotionType(ProjectListV30DataListMicroPromotionType microPromotionType) {
    
    this.microPromotionType = microPromotionType;
    return this;
  }

   /**
   * Get microPromotionType
   * @return microPromotionType
  **/
  @javax.annotation.Nullable
  public ProjectListV30DataListMicroPromotionType getMicroPromotionType() {
    return microPromotionType;
  }


  public void setMicroPromotionType(ProjectListV30DataListMicroPromotionType microPromotionType) {
    this.microPromotionType = microPromotionType;
  }


  public ProjectListV30ResponseDataListInner multiAssetType(ProjectListV30DataListMultiAssetType multiAssetType) {
    
    this.multiAssetType = multiAssetType;
    return this;
  }

   /**
   * Get multiAssetType
   * @return multiAssetType
  **/
  @javax.annotation.Nullable
  public ProjectListV30DataListMultiAssetType getMultiAssetType() {
    return multiAssetType;
  }


  public void setMultiAssetType(ProjectListV30DataListMultiAssetType multiAssetType) {
    this.multiAssetType = multiAssetType;
  }


  public ProjectListV30ResponseDataListInner name(String name) {
    
    this.name = name;
    return this;
  }

   /**
   * 
   * @return name
  **/
  @javax.annotation.Nullable
  public String getName() {
    return name;
  }


  public void setName(String name) {
    this.name = name;
  }


  public ProjectListV30ResponseDataListInner openUrl(String openUrl) {
    
    this.openUrl = openUrl;
    return this;
  }

   /**
   * 
   * @return openUrl
  **/
  @javax.annotation.Nullable
  public String getOpenUrl() {
    return openUrl;
  }


  public void setOpenUrl(String openUrl) {
    this.openUrl = openUrl;
  }


  public ProjectListV30ResponseDataListInner openUrlField(String openUrlField) {
    
    this.openUrlField = openUrlField;
    return this;
  }

   /**
   * 
   * @return openUrlField
  **/
  @javax.annotation.Nullable
  public String getOpenUrlField() {
    return openUrlField;
  }


  public void setOpenUrlField(String openUrlField) {
    this.openUrlField = openUrlField;
  }


  public ProjectListV30ResponseDataListInner openUrlParams(String openUrlParams) {
    
    this.openUrlParams = openUrlParams;
    return this;
  }

   /**
   * 
   * @return openUrlParams
  **/
  @javax.annotation.Nullable
  public String getOpenUrlParams() {
    return openUrlParams;
  }


  public void setOpenUrlParams(String openUrlParams) {
    this.openUrlParams = openUrlParams;
  }


  public ProjectListV30ResponseDataListInner openUrlType(ProjectListV30DataListOpenUrlType openUrlType) {
    
    this.openUrlType = openUrlType;
    return this;
  }

   /**
   * Get openUrlType
   * @return openUrlType
  **/
  @javax.annotation.Nullable
  public ProjectListV30DataListOpenUrlType getOpenUrlType() {
    return openUrlType;
  }


  public void setOpenUrlType(ProjectListV30DataListOpenUrlType openUrlType) {
    this.openUrlType = openUrlType;
  }


  public ProjectListV30ResponseDataListInner optStatus(ProjectListV30DataListOptStatus optStatus) {
    
    this.optStatus = optStatus;
    return this;
  }

   /**
   * Get optStatus
   * @return optStatus
  **/
  @javax.annotation.Nullable
  public ProjectListV30DataListOptStatus getOptStatus() {
    return optStatus;
  }


  public void setOptStatus(ProjectListV30DataListOptStatus optStatus) {
    this.optStatus = optStatus;
  }


  public ProjectListV30ResponseDataListInner optimizeGoal(ProjectListV30ResponseDataListInnerOptimizeGoal optimizeGoal) {
    
    this.optimizeGoal = optimizeGoal;
    return this;
  }

   /**
   * Get optimizeGoal
   * @return optimizeGoal
  **/
  @javax.annotation.Nullable
  public ProjectListV30ResponseDataListInnerOptimizeGoal getOptimizeGoal() {
    return optimizeGoal;
  }


  public void setOptimizeGoal(ProjectListV30ResponseDataListInnerOptimizeGoal optimizeGoal) {
    this.optimizeGoal = optimizeGoal;
  }


  public ProjectListV30ResponseDataListInner packageName(String packageName) {
    
    this.packageName = packageName;
    return this;
  }

   /**
   * 
   * @return packageName
  **/
  @javax.annotation.Nullable
  public String getPackageName() {
    return packageName;
  }


  public void setPackageName(String packageName) {
    this.packageName = packageName;
  }


  public ProjectListV30ResponseDataListInner pricing(ProjectListV30DataListPricing pricing) {
    
    this.pricing = pricing;
    return this;
  }

   /**
   * Get pricing
   * @return pricing
  **/
  @javax.annotation.Nullable
  public ProjectListV30DataListPricing getPricing() {
    return pricing;
  }


  public void setPricing(ProjectListV30DataListPricing pricing) {
    this.pricing = pricing;
  }


  public ProjectListV30ResponseDataListInner projectCreateTime(String projectCreateTime) {
    
    this.projectCreateTime = projectCreateTime;
    return this;
  }

   /**
   * 
   * @return projectCreateTime
  **/
  @javax.annotation.Nullable
  public String getProjectCreateTime() {
    return projectCreateTime;
  }


  public void setProjectCreateTime(String projectCreateTime) {
    this.projectCreateTime = projectCreateTime;
  }


  public ProjectListV30ResponseDataListInner projectId(Long projectId) {
    
    this.projectId = projectId;
    return this;
  }

   /**
   * 
   * minimum: 1
   * @return projectId
  **/
  @javax.annotation.Nullable
  public Long getProjectId() {
    return projectId;
  }


  public void setProjectId(Long projectId) {
    this.projectId = projectId;
  }


  public ProjectListV30ResponseDataListInner projectModifyTime(String projectModifyTime) {
    
    this.projectModifyTime = projectModifyTime;
    return this;
  }

   /**
   * 
   * @return projectModifyTime
  **/
  @javax.annotation.Nullable
  public String getProjectModifyTime() {
    return projectModifyTime;
  }


  public void setProjectModifyTime(String projectModifyTime) {
    this.projectModifyTime = projectModifyTime;
  }


  public ProjectListV30ResponseDataListInner promotionType(ProjectListV30DataListPromotionType promotionType) {
    
    this.promotionType = promotionType;
    return this;
  }

   /**
   * Get promotionType
   * @return promotionType
  **/
  @javax.annotation.Nullable
  public ProjectListV30DataListPromotionType getPromotionType() {
    return promotionType;
  }


  public void setPromotionType(ProjectListV30DataListPromotionType promotionType) {
    this.promotionType = promotionType;
  }


  public ProjectListV30ResponseDataListInner quickAppId(Long quickAppId) {
    
    this.quickAppId = quickAppId;
    return this;
  }

   /**
   * 对应「查询快应用信息」接口获取的quick_app_id
   * @return quickAppId
  **/
  @javax.annotation.Nullable
  public Long getQuickAppId() {
    return quickAppId;
  }


  public void setQuickAppId(Long quickAppId) {
    this.quickAppId = quickAppId;
  }


  public ProjectListV30ResponseDataListInner relatedProduct(ProjectListV30ResponseDataListInnerRelatedProduct relatedProduct) {
    
    this.relatedProduct = relatedProduct;
    return this;
  }

   /**
   * Get relatedProduct
   * @return relatedProduct
  **/
  @javax.annotation.Nullable
  public ProjectListV30ResponseDataListInnerRelatedProduct getRelatedProduct() {
    return relatedProduct;
  }


  public void setRelatedProduct(ProjectListV30ResponseDataListInnerRelatedProduct relatedProduct) {
    this.relatedProduct = relatedProduct;
  }


  public ProjectListV30ResponseDataListInner searchBidRatio(Double searchBidRatio) {
    
    this.searchBidRatio = searchBidRatio;
    return this;
  }

   /**
   * 
   * @return searchBidRatio
  **/
  @javax.annotation.Nullable
  public Double getSearchBidRatio() {
    return searchBidRatio;
  }


  public void setSearchBidRatio(Double searchBidRatio) {
    this.searchBidRatio = searchBidRatio;
  }


  public ProjectListV30ResponseDataListInner starTaskId(Long starTaskId) {
    
    this.starTaskId = starTaskId;
    return this;
  }

   /**
   * 
   * @return starTaskId
  **/
  @javax.annotation.Nullable
  public Long getStarTaskId() {
    return starTaskId;
  }


  public void setStarTaskId(Long starTaskId) {
    this.starTaskId = starTaskId;
  }


  public ProjectListV30ResponseDataListInner status(ProjectListV30DataListStatus status) {
    
    this.status = status;
    return this;
  }

   /**
   * Get status
   * @return status
  **/
  @javax.annotation.Nullable
  public ProjectListV30DataListStatus getStatus() {
    return status;
  }


  public void setStatus(ProjectListV30DataListStatus status) {
    this.status = status;
  }


  public ProjectListV30ResponseDataListInner statusFirst(ProjectListV30DataListStatusFirst statusFirst) {
    
    this.statusFirst = statusFirst;
    return this;
  }

   /**
   * Get statusFirst
   * @return statusFirst
  **/
  @javax.annotation.Nullable
  public ProjectListV30DataListStatusFirst getStatusFirst() {
    return statusFirst;
  }


  public void setStatusFirst(ProjectListV30DataListStatusFirst statusFirst) {
    this.statusFirst = statusFirst;
  }


  public ProjectListV30ResponseDataListInner statusSecond(List<ProjectListV30DataListStatusSecond> statusSecond) {
    
    this.statusSecond = statusSecond;
    return this;
  }

  public ProjectListV30ResponseDataListInner addStatusSecondItem(ProjectListV30DataListStatusSecond statusSecondItem) {
    if (this.statusSecond == null) {
      this.statusSecond = new ArrayList<>();
    }
    this.statusSecond.add(statusSecondItem);
    return this;
  }

   /**
   * 
   * @return statusSecond
  **/
  @javax.annotation.Nullable
  public List<ProjectListV30DataListStatusSecond> getStatusSecond() {
    return statusSecond;
  }


  public void setStatusSecond(List<ProjectListV30DataListStatusSecond> statusSecond) {
    this.statusSecond = statusSecond;
  }


  public ProjectListV30ResponseDataListInner subscribeUrl(String subscribeUrl) {
    
    this.subscribeUrl = subscribeUrl;
    return this;
  }

   /**
   * 
   * @return subscribeUrl
  **/
  @javax.annotation.Nullable
  public String getSubscribeUrl() {
    return subscribeUrl;
  }


  public void setSubscribeUrl(String subscribeUrl) {
    this.subscribeUrl = subscribeUrl;
  }


  public ProjectListV30ResponseDataListInner trackUrlSetting(ProjectListV30ResponseDataListInnerTrackUrlSetting trackUrlSetting) {
    
    this.trackUrlSetting = trackUrlSetting;
    return this;
  }

   /**
   * Get trackUrlSetting
   * @return trackUrlSetting
  **/
  @javax.annotation.Nullable
  public ProjectListV30ResponseDataListInnerTrackUrlSetting getTrackUrlSetting() {
    return trackUrlSetting;
  }


  public void setTrackUrlSetting(ProjectListV30ResponseDataListInnerTrackUrlSetting trackUrlSetting) {
    this.trackUrlSetting = trackUrlSetting;
  }


  public ProjectListV30ResponseDataListInner ulinkUrl(String ulinkUrl) {
    
    this.ulinkUrl = ulinkUrl;
    return this;
  }

   /**
   * 
   * @return ulinkUrl
  **/
  @javax.annotation.Nullable
  public String getUlinkUrl() {
    return ulinkUrl;
  }


  public void setUlinkUrl(String ulinkUrl) {
    this.ulinkUrl = ulinkUrl;
  }


  public ProjectListV30ResponseDataListInner valueOptimizedType(ProjectListV30DataListValueOptimizedType valueOptimizedType) {
    
    this.valueOptimizedType = valueOptimizedType;
    return this;
  }

   /**
   * Get valueOptimizedType
   * @return valueOptimizedType
  **/
  @javax.annotation.Nullable
  public ProjectListV30DataListValueOptimizedType getValueOptimizedType() {
    return valueOptimizedType;
  }


  public void setValueOptimizedType(ProjectListV30DataListValueOptimizedType valueOptimizedType) {
    this.valueOptimizedType = valueOptimizedType;
  }



  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    ProjectListV30ResponseDataListInner projectListV30ResponseDataListInner = (ProjectListV30ResponseDataListInner) o;
    return Objects.equals(this.adType, projectListV30ResponseDataListInner.adType) &&
        Objects.equals(this.advertiserId, projectListV30ResponseDataListInner.advertiserId) &&
        Objects.equals(this.aigcDynamicCreativeSwitch, projectListV30ResponseDataListInner.aigcDynamicCreativeSwitch) &&
        Objects.equals(this.appName, projectListV30ResponseDataListInner.appName) &&
        Objects.equals(this.appPromotionType, projectListV30ResponseDataListInner.appPromotionType) &&
        Objects.equals(this.assetType, projectListV30ResponseDataListInner.assetType) &&
        Objects.equals(this.audience, projectListV30ResponseDataListInner.audience) &&
        Objects.equals(this.audienceExtend, projectListV30ResponseDataListInner.audienceExtend) &&
        Objects.equals(this.blueFlowPackage, projectListV30ResponseDataListInner.blueFlowPackage) &&
        Objects.equals(this.budgetGroupId, projectListV30ResponseDataListInner.budgetGroupId) &&
        Objects.equals(this.deliveryMode, projectListV30ResponseDataListInner.deliveryMode) &&
        Objects.equals(this.deliveryRange, projectListV30ResponseDataListInner.deliveryRange) &&
        Objects.equals(this.deliverySetting, projectListV30ResponseDataListInner.deliverySetting) &&
        Objects.equals(this.deliveryType, projectListV30ResponseDataListInner.deliveryType) &&
        Objects.equals(this.downloadMode, projectListV30ResponseDataListInner.downloadMode) &&
        Objects.equals(this.downloadType, projectListV30ResponseDataListInner.downloadType) &&
        Objects.equals(this.downloadUrl, projectListV30ResponseDataListInner.downloadUrl) &&
        Objects.equals(this.dpaAdtype, projectListV30ResponseDataListInner.dpaAdtype) &&
        Objects.equals(this.dpaCategories, projectListV30ResponseDataListInner.dpaCategories) &&
        Objects.equals(this.dpaProductTarget, projectListV30ResponseDataListInner.dpaProductTarget) &&
        Objects.equals(this.feedDeliverySearch, projectListV30ResponseDataListInner.feedDeliverySearch) &&
        Objects.equals(this.internalAdvertiserInfo, projectListV30ResponseDataListInner.internalAdvertiserInfo) &&
        Objects.equals(this.keywords, projectListV30ResponseDataListInner.keywords) &&
        Objects.equals(this.landingPageStayTime, projectListV30ResponseDataListInner.landingPageStayTime) &&
        Objects.equals(this.landingType, projectListV30ResponseDataListInner.landingType) &&
        Objects.equals(this.launchType, projectListV30ResponseDataListInner.launchType) &&
        Objects.equals(this.marketingGoal, projectListV30ResponseDataListInner.marketingGoal) &&
        Objects.equals(this.microAppInstanceId, projectListV30ResponseDataListInner.microAppInstanceId) &&
        Objects.equals(this.microPromotionType, projectListV30ResponseDataListInner.microPromotionType) &&
        Objects.equals(this.multiAssetType, projectListV30ResponseDataListInner.multiAssetType) &&
        Objects.equals(this.name, projectListV30ResponseDataListInner.name) &&
        Objects.equals(this.openUrl, projectListV30ResponseDataListInner.openUrl) &&
        Objects.equals(this.openUrlField, projectListV30ResponseDataListInner.openUrlField) &&
        Objects.equals(this.openUrlParams, projectListV30ResponseDataListInner.openUrlParams) &&
        Objects.equals(this.openUrlType, projectListV30ResponseDataListInner.openUrlType) &&
        Objects.equals(this.optStatus, projectListV30ResponseDataListInner.optStatus) &&
        Objects.equals(this.optimizeGoal, projectListV30ResponseDataListInner.optimizeGoal) &&
        Objects.equals(this.packageName, projectListV30ResponseDataListInner.packageName) &&
        Objects.equals(this.pricing, projectListV30ResponseDataListInner.pricing) &&
        Objects.equals(this.projectCreateTime, projectListV30ResponseDataListInner.projectCreateTime) &&
        Objects.equals(this.projectId, projectListV30ResponseDataListInner.projectId) &&
        Objects.equals(this.projectModifyTime, projectListV30ResponseDataListInner.projectModifyTime) &&
        Objects.equals(this.promotionType, projectListV30ResponseDataListInner.promotionType) &&
        Objects.equals(this.quickAppId, projectListV30ResponseDataListInner.quickAppId) &&
        Objects.equals(this.relatedProduct, projectListV30ResponseDataListInner.relatedProduct) &&
        Objects.equals(this.searchBidRatio, projectListV30ResponseDataListInner.searchBidRatio) &&
        Objects.equals(this.starTaskId, projectListV30ResponseDataListInner.starTaskId) &&
        Objects.equals(this.status, projectListV30ResponseDataListInner.status) &&
        Objects.equals(this.statusFirst, projectListV30ResponseDataListInner.statusFirst) &&
        Objects.equals(this.statusSecond, projectListV30ResponseDataListInner.statusSecond) &&
        Objects.equals(this.subscribeUrl, projectListV30ResponseDataListInner.subscribeUrl) &&
        Objects.equals(this.trackUrlSetting, projectListV30ResponseDataListInner.trackUrlSetting) &&
        Objects.equals(this.ulinkUrl, projectListV30ResponseDataListInner.ulinkUrl) &&
        Objects.equals(this.valueOptimizedType, projectListV30ResponseDataListInner.valueOptimizedType);
  }

  private static <T> boolean equalsNullable(JsonNullable<T> a, JsonNullable<T> b) {
    return a == b || (a != null && b != null && a.isPresent() && b.isPresent() && Objects.deepEquals(a.get(), b.get()));
  }

  @Override
  public int hashCode() {
    return Objects.hash(adType, advertiserId, aigcDynamicCreativeSwitch, appName, appPromotionType, assetType, audience, audienceExtend, blueFlowPackage, budgetGroupId, deliveryMode, deliveryRange, deliverySetting, deliveryType, downloadMode, downloadType, downloadUrl, dpaAdtype, dpaCategories, dpaProductTarget, feedDeliverySearch, internalAdvertiserInfo, keywords, landingPageStayTime, landingType, launchType, marketingGoal, microAppInstanceId, microPromotionType, multiAssetType, name, openUrl, openUrlField, openUrlParams, openUrlType, optStatus, optimizeGoal, packageName, pricing, projectCreateTime, projectId, projectModifyTime, promotionType, quickAppId, relatedProduct, searchBidRatio, starTaskId, status, statusFirst, statusSecond, subscribeUrl, trackUrlSetting, ulinkUrl, valueOptimizedType);
  }

  private static <T> int hashCodeNullable(JsonNullable<T> a) {
    if (a == null) {
      return 1;
    }
    return a.isPresent() ? Arrays.deepHashCode(new Object[]{a.get()}) : 31;
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class ProjectListV30ResponseDataListInner {\n");
    sb.append("    adType: ").append(toIndentedString(adType)).append("\n");
    sb.append("    advertiserId: ").append(toIndentedString(advertiserId)).append("\n");
    sb.append("    aigcDynamicCreativeSwitch: ").append(toIndentedString(aigcDynamicCreativeSwitch)).append("\n");
    sb.append("    appName: ").append(toIndentedString(appName)).append("\n");
    sb.append("    appPromotionType: ").append(toIndentedString(appPromotionType)).append("\n");
    sb.append("    assetType: ").append(toIndentedString(assetType)).append("\n");
    sb.append("    audience: ").append(toIndentedString(audience)).append("\n");
    sb.append("    audienceExtend: ").append(toIndentedString(audienceExtend)).append("\n");
    sb.append("    blueFlowPackage: ").append(toIndentedString(blueFlowPackage)).append("\n");
    sb.append("    budgetGroupId: ").append(toIndentedString(budgetGroupId)).append("\n");
    sb.append("    deliveryMode: ").append(toIndentedString(deliveryMode)).append("\n");
    sb.append("    deliveryRange: ").append(toIndentedString(deliveryRange)).append("\n");
    sb.append("    deliverySetting: ").append(toIndentedString(deliverySetting)).append("\n");
    sb.append("    deliveryType: ").append(toIndentedString(deliveryType)).append("\n");
    sb.append("    downloadMode: ").append(toIndentedString(downloadMode)).append("\n");
    sb.append("    downloadType: ").append(toIndentedString(downloadType)).append("\n");
    sb.append("    downloadUrl: ").append(toIndentedString(downloadUrl)).append("\n");
    sb.append("    dpaAdtype: ").append(toIndentedString(dpaAdtype)).append("\n");
    sb.append("    dpaCategories: ").append(toIndentedString(dpaCategories)).append("\n");
    sb.append("    dpaProductTarget: ").append(toIndentedString(dpaProductTarget)).append("\n");
    sb.append("    feedDeliverySearch: ").append(toIndentedString(feedDeliverySearch)).append("\n");
    sb.append("    internalAdvertiserInfo: ").append(toIndentedString(internalAdvertiserInfo)).append("\n");
    sb.append("    keywords: ").append(toIndentedString(keywords)).append("\n");
    sb.append("    landingPageStayTime: ").append(toIndentedString(landingPageStayTime)).append("\n");
    sb.append("    landingType: ").append(toIndentedString(landingType)).append("\n");
    sb.append("    launchType: ").append(toIndentedString(launchType)).append("\n");
    sb.append("    marketingGoal: ").append(toIndentedString(marketingGoal)).append("\n");
    sb.append("    microAppInstanceId: ").append(toIndentedString(microAppInstanceId)).append("\n");
    sb.append("    microPromotionType: ").append(toIndentedString(microPromotionType)).append("\n");
    sb.append("    multiAssetType: ").append(toIndentedString(multiAssetType)).append("\n");
    sb.append("    name: ").append(toIndentedString(name)).append("\n");
    sb.append("    openUrl: ").append(toIndentedString(openUrl)).append("\n");
    sb.append("    openUrlField: ").append(toIndentedString(openUrlField)).append("\n");
    sb.append("    openUrlParams: ").append(toIndentedString(openUrlParams)).append("\n");
    sb.append("    openUrlType: ").append(toIndentedString(openUrlType)).append("\n");
    sb.append("    optStatus: ").append(toIndentedString(optStatus)).append("\n");
    sb.append("    optimizeGoal: ").append(toIndentedString(optimizeGoal)).append("\n");
    sb.append("    packageName: ").append(toIndentedString(packageName)).append("\n");
    sb.append("    pricing: ").append(toIndentedString(pricing)).append("\n");
    sb.append("    projectCreateTime: ").append(toIndentedString(projectCreateTime)).append("\n");
    sb.append("    projectId: ").append(toIndentedString(projectId)).append("\n");
    sb.append("    projectModifyTime: ").append(toIndentedString(projectModifyTime)).append("\n");
    sb.append("    promotionType: ").append(toIndentedString(promotionType)).append("\n");
    sb.append("    quickAppId: ").append(toIndentedString(quickAppId)).append("\n");
    sb.append("    relatedProduct: ").append(toIndentedString(relatedProduct)).append("\n");
    sb.append("    searchBidRatio: ").append(toIndentedString(searchBidRatio)).append("\n");
    sb.append("    starTaskId: ").append(toIndentedString(starTaskId)).append("\n");
    sb.append("    status: ").append(toIndentedString(status)).append("\n");
    sb.append("    statusFirst: ").append(toIndentedString(statusFirst)).append("\n");
    sb.append("    statusSecond: ").append(toIndentedString(statusSecond)).append("\n");
    sb.append("    subscribeUrl: ").append(toIndentedString(subscribeUrl)).append("\n");
    sb.append("    trackUrlSetting: ").append(toIndentedString(trackUrlSetting)).append("\n");
    sb.append("    ulinkUrl: ").append(toIndentedString(ulinkUrl)).append("\n");
    sb.append("    valueOptimizedType: ").append(toIndentedString(valueOptimizedType)).append("\n");
    sb.append("}");
    return sb.toString();
  }

  /**
   * Convert the given object to string with each line indented by 4 spaces
   * (except the first line).
   */
  private String toIndentedString(Object o) {
    if (o == null) {
      return "null";
    }
    return o.toString().replace("\n", "\n    ");
  }


  public static HashSet<String> openapiFields;
  public static HashSet<String> openapiRequiredFields;

  static {
    // a set of all properties/fields (JSON key names)
    openapiFields = new HashSet<String>();
    openapiFields.add("ad_type");
    openapiFields.add("advertiser_id");
    openapiFields.add("aigc_dynamic_creative_switch");
    openapiFields.add("app_name");
    openapiFields.add("app_promotion_type");
    openapiFields.add("asset_type");
    openapiFields.add("audience");
    openapiFields.add("audience_extend");
    openapiFields.add("blue_flow_package");
    openapiFields.add("budget_group_id");
    openapiFields.add("delivery_mode");
    openapiFields.add("delivery_range");
    openapiFields.add("delivery_setting");
    openapiFields.add("delivery_type");
    openapiFields.add("download_mode");
    openapiFields.add("download_type");
    openapiFields.add("download_url");
    openapiFields.add("dpa_adtype");
    openapiFields.add("dpa_categories");
    openapiFields.add("dpa_product_target");
    openapiFields.add("feed_delivery_search");
    openapiFields.add("internal_advertiser_info");
    openapiFields.add("keywords");
    openapiFields.add("landing_page_stay_time");
    openapiFields.add("landing_type");
    openapiFields.add("launch_type");
    openapiFields.add("marketing_goal");
    openapiFields.add("micro_app_instance_id");
    openapiFields.add("micro_promotion_type");
    openapiFields.add("multi_asset_type");
    openapiFields.add("name");
    openapiFields.add("open_url");
    openapiFields.add("open_url_field");
    openapiFields.add("open_url_params");
    openapiFields.add("open_url_type");
    openapiFields.add("opt_status");
    openapiFields.add("optimize_goal");
    openapiFields.add("package_name");
    openapiFields.add("pricing");
    openapiFields.add("project_create_time");
    openapiFields.add("project_id");
    openapiFields.add("project_modify_time");
    openapiFields.add("promotion_type");
    openapiFields.add("quick_app_id");
    openapiFields.add("related_product");
    openapiFields.add("search_bid_ratio");
    openapiFields.add("star_task_id");
    openapiFields.add("status");
    openapiFields.add("status_first");
    openapiFields.add("status_second");
    openapiFields.add("subscribe_url");
    openapiFields.add("track_url_setting");
    openapiFields.add("ulink_url");
    openapiFields.add("value_optimized_type");

    // a set of required properties/fields (JSON key names)
    openapiRequiredFields = new HashSet<String>();
  }


  public static class CustomTypeAdapterFactory implements TypeAdapterFactory {
    @SuppressWarnings("unchecked")
    @Override
    public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> type) {
       if (!ProjectListV30ResponseDataListInner.class.isAssignableFrom(type.getRawType())) {
         return null; // this class only serializes 'ProjectListV30ResponseDataListInner' and its subtypes
       }
       final TypeAdapter<JsonElement> elementAdapter = gson.getAdapter(JsonElement.class);
       final TypeAdapter<ProjectListV30ResponseDataListInner> thisAdapter
                        = gson.getDelegateAdapter(this, TypeToken.get(ProjectListV30ResponseDataListInner.class));

       return (TypeAdapter<T>) new TypeAdapter<ProjectListV30ResponseDataListInner>() {
           @Override
           public void write(JsonWriter out, ProjectListV30ResponseDataListInner value) throws IOException {
             JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject();
             elementAdapter.write(out, obj);
           }

           @Override
           public ProjectListV30ResponseDataListInner read(JsonReader in) throws IOException {
             JsonElement jsonElement = elementAdapter.read(in);
             return thisAdapter.fromJsonTree(jsonElement);
           }

       }.nullSafe();
    }
  }

 /**
  * Create an instance of ProjectListV30ResponseDataListInner given an JSON string
  *
  * @param jsonString JSON string
  * @return An instance of ProjectListV30ResponseDataListInner
  * @throws IOException if the JSON string is invalid with respect to ProjectListV30ResponseDataListInner
  */
  public static ProjectListV30ResponseDataListInner fromJson(String jsonString) throws IOException {
    return JSON.getGson().fromJson(jsonString, ProjectListV30ResponseDataListInner.class);
  }

 /**
  * Convert an instance of ProjectListV30ResponseDataListInner to an JSON string
  *
  * @return JSON string
  */
  public String toJson() {
    return JSON.getGson().toJson(this);
  }
}

