/*
 * 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.ProjectCreateV30AudienceAc;
import com.bytedance.ads.model.ProjectCreateV30AudienceAndroidOsv;
import com.bytedance.ads.model.ProjectCreateV30AudienceAutoExtendTargets;
import com.bytedance.ads.model.ProjectCreateV30AudienceAwemeFanBehaviors;
import com.bytedance.ads.model.ProjectCreateV30AudienceAwemeFanTimeScope;
import com.bytedance.ads.model.ProjectCreateV30AudienceCarrier;
import com.bytedance.ads.model.ProjectCreateV30AudienceCarrierRegionOptimize;
import com.bytedance.ads.model.ProjectCreateV30AudienceConvertedTimeDuration;
import com.bytedance.ads.model.ProjectCreateV30AudienceDeviceBrand;
import com.bytedance.ads.model.ProjectCreateV30AudienceDeviceType;
import com.bytedance.ads.model.ProjectCreateV30AudienceDistrict;
import com.bytedance.ads.model.ProjectCreateV30AudienceDpaCity;
import com.bytedance.ads.model.ProjectCreateV30AudienceDpaLbs;
import com.bytedance.ads.model.ProjectCreateV30AudienceDpaRtaRecommendType;
import com.bytedance.ads.model.ProjectCreateV30AudienceDpaRtaSwitch;
import com.bytedance.ads.model.ProjectCreateV30AudienceFilterAwemeAbnormalActive;
import com.bytedance.ads.model.ProjectCreateV30AudienceFilterAwemeFansCount;
import com.bytedance.ads.model.ProjectCreateV30AudienceFilterOwnAwemeFans;
import com.bytedance.ads.model.ProjectCreateV30AudienceGender;
import com.bytedance.ads.model.ProjectCreateV30AudienceHideIfConverted;
import com.bytedance.ads.model.ProjectCreateV30AudienceHideIfExists;
import com.bytedance.ads.model.ProjectCreateV30AudienceInterestActionMode;
import com.bytedance.ads.model.ProjectCreateV30AudienceIosOsv;
import com.bytedance.ads.model.ProjectCreateV30AudienceLocationType;
import com.bytedance.ads.model.ProjectCreateV30AudiencePlatform;
import com.bytedance.ads.model.ProjectCreateV30AudienceRegionRecommend;
import com.bytedance.ads.model.ProjectCreateV30AudienceSuperiorPopularityType;
import com.bytedance.ads.model.ProjectCreateV30RequestAudienceGeolocationInner;
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 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;

/**
 * 
 */
@javax.annotation.Generated(value = "com.org.bytedance.ad_open_sdk.JavacusGenerator", date = "2024-09-10T15:29:00.246104612+08:00[Asia/Shanghai]")
public class ProjectCreateV30RequestAudience {
  public static final String SERIALIZED_NAME_AC = "ac";
  @SerializedName(SERIALIZED_NAME_AC)
  private List<ProjectCreateV30AudienceAc> ac = null;

  public static final String SERIALIZED_NAME_ACTION_CATEGORIES = "action_categories";
  @SerializedName(SERIALIZED_NAME_ACTION_CATEGORIES)
  private List<Long> actionCategories = null;

  public static final String SERIALIZED_NAME_ACTION_DAYS = "action_days";
  @SerializedName(SERIALIZED_NAME_ACTION_DAYS)
  private Long actionDays = null;

  public static final String SERIALIZED_NAME_ACTION_WORDS = "action_words";
  @SerializedName(SERIALIZED_NAME_ACTION_WORDS)
  private List<Long> actionWords = null;

  public static final String SERIALIZED_NAME_AGE = "age";
  @SerializedName(SERIALIZED_NAME_AGE)
  private List<String> age = null;

  public static final String SERIALIZED_NAME_ANDROID_OSV = "android_osv";
  @SerializedName(SERIALIZED_NAME_ANDROID_OSV)
  private ProjectCreateV30AudienceAndroidOsv androidOsv = null;

  public static final String SERIALIZED_NAME_AUDIENCE_PACKAGE_ID = "audience_package_id";
  @SerializedName(SERIALIZED_NAME_AUDIENCE_PACKAGE_ID)
  private Long audiencePackageId = null;

  public static final String SERIALIZED_NAME_AUTO_EXTEND_TARGETS = "auto_extend_targets";
  @SerializedName(SERIALIZED_NAME_AUTO_EXTEND_TARGETS)
  private List<ProjectCreateV30AudienceAutoExtendTargets> autoExtendTargets = null;

  public static final String SERIALIZED_NAME_AWEME_FAN_ACCOUNTS = "aweme_fan_accounts";
  @SerializedName(SERIALIZED_NAME_AWEME_FAN_ACCOUNTS)
  private List<Long> awemeFanAccounts = null;

  public static final String SERIALIZED_NAME_AWEME_FAN_BEHAVIORS = "aweme_fan_behaviors";
  @SerializedName(SERIALIZED_NAME_AWEME_FAN_BEHAVIORS)
  private List<ProjectCreateV30AudienceAwemeFanBehaviors> awemeFanBehaviors = null;

  public static final String SERIALIZED_NAME_AWEME_FAN_CATEGORIES = "aweme_fan_categories";
  @SerializedName(SERIALIZED_NAME_AWEME_FAN_CATEGORIES)
  private List<Long> awemeFanCategories = null;

  public static final String SERIALIZED_NAME_AWEME_FAN_TIME_SCOPE = "aweme_fan_time_scope";
  @SerializedName(SERIALIZED_NAME_AWEME_FAN_TIME_SCOPE)
  private ProjectCreateV30AudienceAwemeFanTimeScope awemeFanTimeScope = null;

  public static final String SERIALIZED_NAME_CARRIER = "carrier";
  @SerializedName(SERIALIZED_NAME_CARRIER)
  private List<ProjectCreateV30AudienceCarrier> carrier = null;

  public static final String SERIALIZED_NAME_CARRIER_REGION_OPTIMIZE = "carrier_region_optimize";
  @SerializedName(SERIALIZED_NAME_CARRIER_REGION_OPTIMIZE)
  private ProjectCreateV30AudienceCarrierRegionOptimize carrierRegionOptimize = null;

  public static final String SERIALIZED_NAME_CITY = "city";
  @SerializedName(SERIALIZED_NAME_CITY)
  private List<Long> city = null;

  public static final String SERIALIZED_NAME_CONVERTED_TIME_DURATION = "converted_time_duration";
  @SerializedName(SERIALIZED_NAME_CONVERTED_TIME_DURATION)
  private ProjectCreateV30AudienceConvertedTimeDuration convertedTimeDuration = null;

  public static final String SERIALIZED_NAME_DEVICE_BRAND = "device_brand";
  @SerializedName(SERIALIZED_NAME_DEVICE_BRAND)
  private List<ProjectCreateV30AudienceDeviceBrand> deviceBrand = null;

  public static final String SERIALIZED_NAME_DEVICE_TYPE = "device_type";
  @SerializedName(SERIALIZED_NAME_DEVICE_TYPE)
  private List<ProjectCreateV30AudienceDeviceType> deviceType = null;

  public static final String SERIALIZED_NAME_DISTRICT = "district";
  @SerializedName(SERIALIZED_NAME_DISTRICT)
  private ProjectCreateV30AudienceDistrict district = null;

  public static final String SERIALIZED_NAME_DPA_CITY = "dpa_city";
  @SerializedName(SERIALIZED_NAME_DPA_CITY)
  private ProjectCreateV30AudienceDpaCity dpaCity = null;

  public static final String SERIALIZED_NAME_DPA_LBS = "dpa_lbs";
  @SerializedName(SERIALIZED_NAME_DPA_LBS)
  private ProjectCreateV30AudienceDpaLbs dpaLbs = null;

  public static final String SERIALIZED_NAME_DPA_RTA_RECOMMEND_TYPE = "dpa_rta_recommend_type";
  @SerializedName(SERIALIZED_NAME_DPA_RTA_RECOMMEND_TYPE)
  private ProjectCreateV30AudienceDpaRtaRecommendType dpaRtaRecommendType = null;

  public static final String SERIALIZED_NAME_DPA_RTA_SWITCH = "dpa_rta_switch";
  @SerializedName(SERIALIZED_NAME_DPA_RTA_SWITCH)
  private ProjectCreateV30AudienceDpaRtaSwitch dpaRtaSwitch = null;

  public static final String SERIALIZED_NAME_EXCLUDE_FLOW_PACKAGE = "exclude_flow_package";
  @SerializedName(SERIALIZED_NAME_EXCLUDE_FLOW_PACKAGE)
  private List<Long> excludeFlowPackage = null;

  public static final String SERIALIZED_NAME_FILTER_AWEME_ABNORMAL_ACTIVE = "filter_aweme_abnormal_active";
  @SerializedName(SERIALIZED_NAME_FILTER_AWEME_ABNORMAL_ACTIVE)
  private ProjectCreateV30AudienceFilterAwemeAbnormalActive filterAwemeAbnormalActive = null;

  public static final String SERIALIZED_NAME_FILTER_AWEME_FANS_COUNT = "filter_aweme_fans_count";
  @SerializedName(SERIALIZED_NAME_FILTER_AWEME_FANS_COUNT)
  private ProjectCreateV30AudienceFilterAwemeFansCount filterAwemeFansCount = null;

  public static final String SERIALIZED_NAME_FILTER_OWN_AWEME_FANS = "filter_own_aweme_fans";
  @SerializedName(SERIALIZED_NAME_FILTER_OWN_AWEME_FANS)
  private ProjectCreateV30AudienceFilterOwnAwemeFans filterOwnAwemeFans = null;

  public static final String SERIALIZED_NAME_FLOW_PACKAGE = "flow_package";
  @SerializedName(SERIALIZED_NAME_FLOW_PACKAGE)
  private List<Long> flowPackage = null;

  public static final String SERIALIZED_NAME_GENDER = "gender";
  @SerializedName(SERIALIZED_NAME_GENDER)
  private ProjectCreateV30AudienceGender gender = null;

  public static final String SERIALIZED_NAME_GEOLOCATION = "geolocation";
  @SerializedName(SERIALIZED_NAME_GEOLOCATION)
  private List<ProjectCreateV30RequestAudienceGeolocationInner> geolocation = null;

  public static final String SERIALIZED_NAME_HIDE_IF_CONVERTED = "hide_if_converted";
  @SerializedName(SERIALIZED_NAME_HIDE_IF_CONVERTED)
  private ProjectCreateV30AudienceHideIfConverted hideIfConverted = null;

  public static final String SERIALIZED_NAME_HIDE_IF_EXISTS = "hide_if_exists";
  @SerializedName(SERIALIZED_NAME_HIDE_IF_EXISTS)
  private ProjectCreateV30AudienceHideIfExists hideIfExists = null;

  public static final String SERIALIZED_NAME_INTEREST_ACTION_MODE = "interest_action_mode";
  @SerializedName(SERIALIZED_NAME_INTEREST_ACTION_MODE)
  private ProjectCreateV30AudienceInterestActionMode interestActionMode = null;

  public static final String SERIALIZED_NAME_INTEREST_CATEGORIES = "interest_categories";
  @SerializedName(SERIALIZED_NAME_INTEREST_CATEGORIES)
  private List<Long> interestCategories = null;

  public static final String SERIALIZED_NAME_INTEREST_WORDS = "interest_words";
  @SerializedName(SERIALIZED_NAME_INTEREST_WORDS)
  private List<Long> interestWords = null;

  public static final String SERIALIZED_NAME_IOS_OSV = "ios_osv";
  @SerializedName(SERIALIZED_NAME_IOS_OSV)
  private ProjectCreateV30AudienceIosOsv iosOsv = null;

  public static final String SERIALIZED_NAME_LAUNCH_PRICE = "launch_price";
  @SerializedName(SERIALIZED_NAME_LAUNCH_PRICE)
  private List<Long> launchPrice = null;

  public static final String SERIALIZED_NAME_LOCATION_TYPE = "location_type";
  @SerializedName(SERIALIZED_NAME_LOCATION_TYPE)
  private ProjectCreateV30AudienceLocationType locationType = null;

  public static final String SERIALIZED_NAME_PLATFORM = "platform";
  @SerializedName(SERIALIZED_NAME_PLATFORM)
  private List<ProjectCreateV30AudiencePlatform> platform = null;

  public static final String SERIALIZED_NAME_REGION_RECOMMEND = "region_recommend";
  @SerializedName(SERIALIZED_NAME_REGION_RECOMMEND)
  private ProjectCreateV30AudienceRegionRecommend regionRecommend = null;

  public static final String SERIALIZED_NAME_REGION_VERSION = "region_version";
  @SerializedName(SERIALIZED_NAME_REGION_VERSION)
  private String regionVersion = null;

  public static final String SERIALIZED_NAME_RETARGETING_TAGS_EXCLUDE = "retargeting_tags_exclude";
  @SerializedName(SERIALIZED_NAME_RETARGETING_TAGS_EXCLUDE)
  private List<Long> retargetingTagsExclude = null;

  public static final String SERIALIZED_NAME_RETARGETING_TAGS_INCLUDE = "retargeting_tags_include";
  @SerializedName(SERIALIZED_NAME_RETARGETING_TAGS_INCLUDE)
  private List<Long> retargetingTagsInclude = null;

  public static final String SERIALIZED_NAME_RTA_ID = "rta_id";
  @SerializedName(SERIALIZED_NAME_RTA_ID)
  private Long rtaId = null;

  public static final String SERIALIZED_NAME_SUPERIOR_POPULARITY_TYPE = "superior_popularity_type";
  @SerializedName(SERIALIZED_NAME_SUPERIOR_POPULARITY_TYPE)
  private ProjectCreateV30AudienceSuperiorPopularityType superiorPopularityType = null;

  public ProjectCreateV30RequestAudience() {
  }

  public ProjectCreateV30RequestAudience ac(List<ProjectCreateV30AudienceAc> ac) {
    
    this.ac = ac;
    return this;
  }

  public ProjectCreateV30RequestAudience addAcItem(ProjectCreateV30AudienceAc acItem) {
    if (this.ac == null) {
      this.ac = new ArrayList<>();
    }
    this.ac.add(acItem);
    return this;
  }

   /**
   * 
   * @return ac
  **/
  @javax.annotation.Nullable
  public List<ProjectCreateV30AudienceAc> getAc() {
    return ac;
  }


  public void setAc(List<ProjectCreateV30AudienceAc> ac) {
    this.ac = ac;
  }


  public ProjectCreateV30RequestAudience actionCategories(List<Long> actionCategories) {
    
    this.actionCategories = actionCategories;
    return this;
  }

  public ProjectCreateV30RequestAudience addActionCategoriesItem(Long actionCategoriesItem) {
    if (this.actionCategories == null) {
      this.actionCategories = new ArrayList<>();
    }
    this.actionCategories.add(actionCategoriesItem);
    return this;
  }

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


  public void setActionCategories(List<Long> actionCategories) {
    this.actionCategories = actionCategories;
  }


  public ProjectCreateV30RequestAudience actionDays(Long actionDays) {
    
    this.actionDays = actionDays;
    return this;
  }

   /**
   * 
   * @return actionDays
  **/
  @javax.annotation.Nullable
  public Long getActionDays() {
    return actionDays;
  }


  public void setActionDays(Long actionDays) {
    this.actionDays = actionDays;
  }


  public ProjectCreateV30RequestAudience actionWords(List<Long> actionWords) {
    
    this.actionWords = actionWords;
    return this;
  }

  public ProjectCreateV30RequestAudience addActionWordsItem(Long actionWordsItem) {
    if (this.actionWords == null) {
      this.actionWords = new ArrayList<>();
    }
    this.actionWords.add(actionWordsItem);
    return this;
  }

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


  public void setActionWords(List<Long> actionWords) {
    this.actionWords = actionWords;
  }


  public ProjectCreateV30RequestAudience age(List<String> age) {
    
    this.age = age;
    return this;
  }

  public ProjectCreateV30RequestAudience addAgeItem(String ageItem) {
    if (this.age == null) {
      this.age = new ArrayList<>();
    }
    this.age.add(ageItem);
    return this;
  }

   /**
   * 
   * @return age
  **/
  @javax.annotation.Nullable
  public List<String> getAge() {
    return age;
  }


  public void setAge(List<String> age) {
    this.age = age;
  }


  public ProjectCreateV30RequestAudience androidOsv(ProjectCreateV30AudienceAndroidOsv androidOsv) {
    
    this.androidOsv = androidOsv;
    return this;
  }

   /**
   * Get androidOsv
   * @return androidOsv
  **/
  @javax.annotation.Nullable
  public ProjectCreateV30AudienceAndroidOsv getAndroidOsv() {
    return androidOsv;
  }


  public void setAndroidOsv(ProjectCreateV30AudienceAndroidOsv androidOsv) {
    this.androidOsv = androidOsv;
  }


  public ProjectCreateV30RequestAudience audiencePackageId(Long audiencePackageId) {
    
    this.audiencePackageId = audiencePackageId;
    return this;
  }

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


  public void setAudiencePackageId(Long audiencePackageId) {
    this.audiencePackageId = audiencePackageId;
  }


  public ProjectCreateV30RequestAudience autoExtendTargets(List<ProjectCreateV30AudienceAutoExtendTargets> autoExtendTargets) {
    
    this.autoExtendTargets = autoExtendTargets;
    return this;
  }

  public ProjectCreateV30RequestAudience addAutoExtendTargetsItem(ProjectCreateV30AudienceAutoExtendTargets autoExtendTargetsItem) {
    if (this.autoExtendTargets == null) {
      this.autoExtendTargets = new ArrayList<>();
    }
    this.autoExtendTargets.add(autoExtendTargetsItem);
    return this;
  }

   /**
   * 
   * @return autoExtendTargets
  **/
  @javax.annotation.Nullable
  public List<ProjectCreateV30AudienceAutoExtendTargets> getAutoExtendTargets() {
    return autoExtendTargets;
  }


  public void setAutoExtendTargets(List<ProjectCreateV30AudienceAutoExtendTargets> autoExtendTargets) {
    this.autoExtendTargets = autoExtendTargets;
  }


  public ProjectCreateV30RequestAudience awemeFanAccounts(List<Long> awemeFanAccounts) {
    
    this.awemeFanAccounts = awemeFanAccounts;
    return this;
  }

  public ProjectCreateV30RequestAudience addAwemeFanAccountsItem(Long awemeFanAccountsItem) {
    if (this.awemeFanAccounts == null) {
      this.awemeFanAccounts = new ArrayList<>();
    }
    this.awemeFanAccounts.add(awemeFanAccountsItem);
    return this;
  }

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


  public void setAwemeFanAccounts(List<Long> awemeFanAccounts) {
    this.awemeFanAccounts = awemeFanAccounts;
  }


  public ProjectCreateV30RequestAudience awemeFanBehaviors(List<ProjectCreateV30AudienceAwemeFanBehaviors> awemeFanBehaviors) {
    
    this.awemeFanBehaviors = awemeFanBehaviors;
    return this;
  }

  public ProjectCreateV30RequestAudience addAwemeFanBehaviorsItem(ProjectCreateV30AudienceAwemeFanBehaviors awemeFanBehaviorsItem) {
    if (this.awemeFanBehaviors == null) {
      this.awemeFanBehaviors = new ArrayList<>();
    }
    this.awemeFanBehaviors.add(awemeFanBehaviorsItem);
    return this;
  }

   /**
   * 
   * @return awemeFanBehaviors
  **/
  @javax.annotation.Nullable
  public List<ProjectCreateV30AudienceAwemeFanBehaviors> getAwemeFanBehaviors() {
    return awemeFanBehaviors;
  }


  public void setAwemeFanBehaviors(List<ProjectCreateV30AudienceAwemeFanBehaviors> awemeFanBehaviors) {
    this.awemeFanBehaviors = awemeFanBehaviors;
  }


  public ProjectCreateV30RequestAudience awemeFanCategories(List<Long> awemeFanCategories) {
    
    this.awemeFanCategories = awemeFanCategories;
    return this;
  }

  public ProjectCreateV30RequestAudience addAwemeFanCategoriesItem(Long awemeFanCategoriesItem) {
    if (this.awemeFanCategories == null) {
      this.awemeFanCategories = new ArrayList<>();
    }
    this.awemeFanCategories.add(awemeFanCategoriesItem);
    return this;
  }

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


  public void setAwemeFanCategories(List<Long> awemeFanCategories) {
    this.awemeFanCategories = awemeFanCategories;
  }


  public ProjectCreateV30RequestAudience awemeFanTimeScope(ProjectCreateV30AudienceAwemeFanTimeScope awemeFanTimeScope) {
    
    this.awemeFanTimeScope = awemeFanTimeScope;
    return this;
  }

   /**
   * Get awemeFanTimeScope
   * @return awemeFanTimeScope
  **/
  @javax.annotation.Nullable
  public ProjectCreateV30AudienceAwemeFanTimeScope getAwemeFanTimeScope() {
    return awemeFanTimeScope;
  }


  public void setAwemeFanTimeScope(ProjectCreateV30AudienceAwemeFanTimeScope awemeFanTimeScope) {
    this.awemeFanTimeScope = awemeFanTimeScope;
  }


  public ProjectCreateV30RequestAudience carrier(List<ProjectCreateV30AudienceCarrier> carrier) {
    
    this.carrier = carrier;
    return this;
  }

  public ProjectCreateV30RequestAudience addCarrierItem(ProjectCreateV30AudienceCarrier carrierItem) {
    if (this.carrier == null) {
      this.carrier = new ArrayList<>();
    }
    this.carrier.add(carrierItem);
    return this;
  }

   /**
   * 仅通信行业且非仅选穿山甲广告时可用
   * @return carrier
  **/
  @javax.annotation.Nullable
  public List<ProjectCreateV30AudienceCarrier> getCarrier() {
    return carrier;
  }


  public void setCarrier(List<ProjectCreateV30AudienceCarrier> carrier) {
    this.carrier = carrier;
  }


  public ProjectCreateV30RequestAudience carrierRegionOptimize(ProjectCreateV30AudienceCarrierRegionOptimize carrierRegionOptimize) {
    
    this.carrierRegionOptimize = carrierRegionOptimize;
    return this;
  }

   /**
   * Get carrierRegionOptimize
   * @return carrierRegionOptimize
  **/
  @javax.annotation.Nullable
  public ProjectCreateV30AudienceCarrierRegionOptimize getCarrierRegionOptimize() {
    return carrierRegionOptimize;
  }


  public void setCarrierRegionOptimize(ProjectCreateV30AudienceCarrierRegionOptimize carrierRegionOptimize) {
    this.carrierRegionOptimize = carrierRegionOptimize;
  }


  public ProjectCreateV30RequestAudience city(List<Long> city) {
    
    this.city = city;
    return this;
  }

  public ProjectCreateV30RequestAudience addCityItem(Long cityItem) {
    if (this.city == null) {
      this.city = new ArrayList<>();
    }
    this.city.add(cityItem);
    return this;
  }

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


  public void setCity(List<Long> city) {
    this.city = city;
  }


  public ProjectCreateV30RequestAudience convertedTimeDuration(ProjectCreateV30AudienceConvertedTimeDuration convertedTimeDuration) {
    
    this.convertedTimeDuration = convertedTimeDuration;
    return this;
  }

   /**
   * Get convertedTimeDuration
   * @return convertedTimeDuration
  **/
  @javax.annotation.Nullable
  public ProjectCreateV30AudienceConvertedTimeDuration getConvertedTimeDuration() {
    return convertedTimeDuration;
  }


  public void setConvertedTimeDuration(ProjectCreateV30AudienceConvertedTimeDuration convertedTimeDuration) {
    this.convertedTimeDuration = convertedTimeDuration;
  }


  public ProjectCreateV30RequestAudience deviceBrand(List<ProjectCreateV30AudienceDeviceBrand> deviceBrand) {
    
    this.deviceBrand = deviceBrand;
    return this;
  }

  public ProjectCreateV30RequestAudience addDeviceBrandItem(ProjectCreateV30AudienceDeviceBrand deviceBrandItem) {
    if (this.deviceBrand == null) {
      this.deviceBrand = new ArrayList<>();
    }
    this.deviceBrand.add(deviceBrandItem);
    return this;
  }

   /**
   * 
   * @return deviceBrand
  **/
  @javax.annotation.Nullable
  public List<ProjectCreateV30AudienceDeviceBrand> getDeviceBrand() {
    return deviceBrand;
  }


  public void setDeviceBrand(List<ProjectCreateV30AudienceDeviceBrand> deviceBrand) {
    this.deviceBrand = deviceBrand;
  }


  public ProjectCreateV30RequestAudience deviceType(List<ProjectCreateV30AudienceDeviceType> deviceType) {
    
    this.deviceType = deviceType;
    return this;
  }

  public ProjectCreateV30RequestAudience addDeviceTypeItem(ProjectCreateV30AudienceDeviceType deviceTypeItem) {
    if (this.deviceType == null) {
      this.deviceType = new ArrayList<>();
    }
    this.deviceType.add(deviceTypeItem);
    return this;
  }

   /**
   * 
   * @return deviceType
  **/
  @javax.annotation.Nullable
  public List<ProjectCreateV30AudienceDeviceType> getDeviceType() {
    return deviceType;
  }


  public void setDeviceType(List<ProjectCreateV30AudienceDeviceType> deviceType) {
    this.deviceType = deviceType;
  }


  public ProjectCreateV30RequestAudience district(ProjectCreateV30AudienceDistrict district) {
    
    this.district = district;
    return this;
  }

   /**
   * Get district
   * @return district
  **/
  @javax.annotation.Nullable
  public ProjectCreateV30AudienceDistrict getDistrict() {
    return district;
  }


  public void setDistrict(ProjectCreateV30AudienceDistrict district) {
    this.district = district;
  }


  public ProjectCreateV30RequestAudience dpaCity(ProjectCreateV30AudienceDpaCity dpaCity) {
    
    this.dpaCity = dpaCity;
    return this;
  }

   /**
   * Get dpaCity
   * @return dpaCity
  **/
  @javax.annotation.Nullable
  public ProjectCreateV30AudienceDpaCity getDpaCity() {
    return dpaCity;
  }


  public void setDpaCity(ProjectCreateV30AudienceDpaCity dpaCity) {
    this.dpaCity = dpaCity;
  }


  public ProjectCreateV30RequestAudience dpaLbs(ProjectCreateV30AudienceDpaLbs dpaLbs) {
    
    this.dpaLbs = dpaLbs;
    return this;
  }

   /**
   * Get dpaLbs
   * @return dpaLbs
  **/
  @javax.annotation.Nullable
  public ProjectCreateV30AudienceDpaLbs getDpaLbs() {
    return dpaLbs;
  }


  public void setDpaLbs(ProjectCreateV30AudienceDpaLbs dpaLbs) {
    this.dpaLbs = dpaLbs;
  }


  public ProjectCreateV30RequestAudience dpaRtaRecommendType(ProjectCreateV30AudienceDpaRtaRecommendType dpaRtaRecommendType) {
    
    this.dpaRtaRecommendType = dpaRtaRecommendType;
    return this;
  }

   /**
   * Get dpaRtaRecommendType
   * @return dpaRtaRecommendType
  **/
  @javax.annotation.Nullable
  public ProjectCreateV30AudienceDpaRtaRecommendType getDpaRtaRecommendType() {
    return dpaRtaRecommendType;
  }


  public void setDpaRtaRecommendType(ProjectCreateV30AudienceDpaRtaRecommendType dpaRtaRecommendType) {
    this.dpaRtaRecommendType = dpaRtaRecommendType;
  }


  public ProjectCreateV30RequestAudience dpaRtaSwitch(ProjectCreateV30AudienceDpaRtaSwitch dpaRtaSwitch) {
    
    this.dpaRtaSwitch = dpaRtaSwitch;
    return this;
  }

   /**
   * Get dpaRtaSwitch
   * @return dpaRtaSwitch
  **/
  @javax.annotation.Nullable
  public ProjectCreateV30AudienceDpaRtaSwitch getDpaRtaSwitch() {
    return dpaRtaSwitch;
  }


  public void setDpaRtaSwitch(ProjectCreateV30AudienceDpaRtaSwitch dpaRtaSwitch) {
    this.dpaRtaSwitch = dpaRtaSwitch;
  }


  public ProjectCreateV30RequestAudience excludeFlowPackage(List<Long> excludeFlowPackage) {
    
    this.excludeFlowPackage = excludeFlowPackage;
    return this;
  }

  public ProjectCreateV30RequestAudience addExcludeFlowPackageItem(Long excludeFlowPackageItem) {
    if (this.excludeFlowPackage == null) {
      this.excludeFlowPackage = new ArrayList<>();
    }
    this.excludeFlowPackage.add(excludeFlowPackageItem);
    return this;
  }

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


  public void setExcludeFlowPackage(List<Long> excludeFlowPackage) {
    this.excludeFlowPackage = excludeFlowPackage;
  }


  public ProjectCreateV30RequestAudience filterAwemeAbnormalActive(ProjectCreateV30AudienceFilterAwemeAbnormalActive filterAwemeAbnormalActive) {
    
    this.filterAwemeAbnormalActive = filterAwemeAbnormalActive;
    return this;
  }

   /**
   * Get filterAwemeAbnormalActive
   * @return filterAwemeAbnormalActive
  **/
  @javax.annotation.Nullable
  public ProjectCreateV30AudienceFilterAwemeAbnormalActive getFilterAwemeAbnormalActive() {
    return filterAwemeAbnormalActive;
  }


  public void setFilterAwemeAbnormalActive(ProjectCreateV30AudienceFilterAwemeAbnormalActive filterAwemeAbnormalActive) {
    this.filterAwemeAbnormalActive = filterAwemeAbnormalActive;
  }


  public ProjectCreateV30RequestAudience filterAwemeFansCount(ProjectCreateV30AudienceFilterAwemeFansCount filterAwemeFansCount) {
    
    this.filterAwemeFansCount = filterAwemeFansCount;
    return this;
  }

   /**
   * Get filterAwemeFansCount
   * @return filterAwemeFansCount
  **/
  @javax.annotation.Nullable
  public ProjectCreateV30AudienceFilterAwemeFansCount getFilterAwemeFansCount() {
    return filterAwemeFansCount;
  }


  public void setFilterAwemeFansCount(ProjectCreateV30AudienceFilterAwemeFansCount filterAwemeFansCount) {
    this.filterAwemeFansCount = filterAwemeFansCount;
  }


  public ProjectCreateV30RequestAudience filterOwnAwemeFans(ProjectCreateV30AudienceFilterOwnAwemeFans filterOwnAwemeFans) {
    
    this.filterOwnAwemeFans = filterOwnAwemeFans;
    return this;
  }

   /**
   * Get filterOwnAwemeFans
   * @return filterOwnAwemeFans
  **/
  @javax.annotation.Nullable
  public ProjectCreateV30AudienceFilterOwnAwemeFans getFilterOwnAwemeFans() {
    return filterOwnAwemeFans;
  }


  public void setFilterOwnAwemeFans(ProjectCreateV30AudienceFilterOwnAwemeFans filterOwnAwemeFans) {
    this.filterOwnAwemeFans = filterOwnAwemeFans;
  }


  public ProjectCreateV30RequestAudience flowPackage(List<Long> flowPackage) {
    
    this.flowPackage = flowPackage;
    return this;
  }

  public ProjectCreateV30RequestAudience addFlowPackageItem(Long flowPackageItem) {
    if (this.flowPackage == null) {
      this.flowPackage = new ArrayList<>();
    }
    this.flowPackage.add(flowPackageItem);
    return this;
  }

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


  public void setFlowPackage(List<Long> flowPackage) {
    this.flowPackage = flowPackage;
  }


  public ProjectCreateV30RequestAudience gender(ProjectCreateV30AudienceGender gender) {
    
    this.gender = gender;
    return this;
  }

   /**
   * Get gender
   * @return gender
  **/
  @javax.annotation.Nullable
  public ProjectCreateV30AudienceGender getGender() {
    return gender;
  }


  public void setGender(ProjectCreateV30AudienceGender gender) {
    this.gender = gender;
  }


  public ProjectCreateV30RequestAudience geolocation(List<ProjectCreateV30RequestAudienceGeolocationInner> geolocation) {
    
    this.geolocation = geolocation;
    return this;
  }

  public ProjectCreateV30RequestAudience addGeolocationItem(ProjectCreateV30RequestAudienceGeolocationInner geolocationItem) {
    if (this.geolocation == null) {
      this.geolocation = new ArrayList<>();
    }
    this.geolocation.add(geolocationItem);
    return this;
  }

   /**
   * 
   * @return geolocation
  **/
  @javax.annotation.Nullable
  public List<ProjectCreateV30RequestAudienceGeolocationInner> getGeolocation() {
    return geolocation;
  }


  public void setGeolocation(List<ProjectCreateV30RequestAudienceGeolocationInner> geolocation) {
    this.geolocation = geolocation;
  }


  public ProjectCreateV30RequestAudience hideIfConverted(ProjectCreateV30AudienceHideIfConverted hideIfConverted) {
    
    this.hideIfConverted = hideIfConverted;
    return this;
  }

   /**
   * Get hideIfConverted
   * @return hideIfConverted
  **/
  @javax.annotation.Nullable
  public ProjectCreateV30AudienceHideIfConverted getHideIfConverted() {
    return hideIfConverted;
  }


  public void setHideIfConverted(ProjectCreateV30AudienceHideIfConverted hideIfConverted) {
    this.hideIfConverted = hideIfConverted;
  }


  public ProjectCreateV30RequestAudience hideIfExists(ProjectCreateV30AudienceHideIfExists hideIfExists) {
    
    this.hideIfExists = hideIfExists;
    return this;
  }

   /**
   * Get hideIfExists
   * @return hideIfExists
  **/
  @javax.annotation.Nullable
  public ProjectCreateV30AudienceHideIfExists getHideIfExists() {
    return hideIfExists;
  }


  public void setHideIfExists(ProjectCreateV30AudienceHideIfExists hideIfExists) {
    this.hideIfExists = hideIfExists;
  }


  public ProjectCreateV30RequestAudience interestActionMode(ProjectCreateV30AudienceInterestActionMode interestActionMode) {
    
    this.interestActionMode = interestActionMode;
    return this;
  }

   /**
   * Get interestActionMode
   * @return interestActionMode
  **/
  @javax.annotation.Nullable
  public ProjectCreateV30AudienceInterestActionMode getInterestActionMode() {
    return interestActionMode;
  }


  public void setInterestActionMode(ProjectCreateV30AudienceInterestActionMode interestActionMode) {
    this.interestActionMode = interestActionMode;
  }


  public ProjectCreateV30RequestAudience interestCategories(List<Long> interestCategories) {
    
    this.interestCategories = interestCategories;
    return this;
  }

  public ProjectCreateV30RequestAudience addInterestCategoriesItem(Long interestCategoriesItem) {
    if (this.interestCategories == null) {
      this.interestCategories = new ArrayList<>();
    }
    this.interestCategories.add(interestCategoriesItem);
    return this;
  }

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


  public void setInterestCategories(List<Long> interestCategories) {
    this.interestCategories = interestCategories;
  }


  public ProjectCreateV30RequestAudience interestWords(List<Long> interestWords) {
    
    this.interestWords = interestWords;
    return this;
  }

  public ProjectCreateV30RequestAudience addInterestWordsItem(Long interestWordsItem) {
    if (this.interestWords == null) {
      this.interestWords = new ArrayList<>();
    }
    this.interestWords.add(interestWordsItem);
    return this;
  }

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


  public void setInterestWords(List<Long> interestWords) {
    this.interestWords = interestWords;
  }


  public ProjectCreateV30RequestAudience iosOsv(ProjectCreateV30AudienceIosOsv iosOsv) {
    
    this.iosOsv = iosOsv;
    return this;
  }

   /**
   * Get iosOsv
   * @return iosOsv
  **/
  @javax.annotation.Nullable
  public ProjectCreateV30AudienceIosOsv getIosOsv() {
    return iosOsv;
  }


  public void setIosOsv(ProjectCreateV30AudienceIosOsv iosOsv) {
    this.iosOsv = iosOsv;
  }


  public ProjectCreateV30RequestAudience launchPrice(List<Long> launchPrice) {
    
    this.launchPrice = launchPrice;
    return this;
  }

  public ProjectCreateV30RequestAudience addLaunchPriceItem(Long launchPriceItem) {
    if (this.launchPrice == null) {
      this.launchPrice = new ArrayList<>();
    }
    this.launchPrice.add(launchPriceItem);
    return this;
  }

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


  public void setLaunchPrice(List<Long> launchPrice) {
    this.launchPrice = launchPrice;
  }


  public ProjectCreateV30RequestAudience locationType(ProjectCreateV30AudienceLocationType locationType) {
    
    this.locationType = locationType;
    return this;
  }

   /**
   * Get locationType
   * @return locationType
  **/
  @javax.annotation.Nullable
  public ProjectCreateV30AudienceLocationType getLocationType() {
    return locationType;
  }


  public void setLocationType(ProjectCreateV30AudienceLocationType locationType) {
    this.locationType = locationType;
  }


  public ProjectCreateV30RequestAudience platform(List<ProjectCreateV30AudiencePlatform> platform) {
    
    this.platform = platform;
    return this;
  }

  public ProjectCreateV30RequestAudience addPlatformItem(ProjectCreateV30AudiencePlatform platformItem) {
    if (this.platform == null) {
      this.platform = new ArrayList<>();
    }
    this.platform.add(platformItem);
    return this;
  }

   /**
   * 
   * @return platform
  **/
  @javax.annotation.Nullable
  public List<ProjectCreateV30AudiencePlatform> getPlatform() {
    return platform;
  }


  public void setPlatform(List<ProjectCreateV30AudiencePlatform> platform) {
    this.platform = platform;
  }


  public ProjectCreateV30RequestAudience regionRecommend(ProjectCreateV30AudienceRegionRecommend regionRecommend) {
    
    this.regionRecommend = regionRecommend;
    return this;
  }

   /**
   * Get regionRecommend
   * @return regionRecommend
  **/
  @javax.annotation.Nullable
  public ProjectCreateV30AudienceRegionRecommend getRegionRecommend() {
    return regionRecommend;
  }


  public void setRegionRecommend(ProjectCreateV30AudienceRegionRecommend regionRecommend) {
    this.regionRecommend = regionRecommend;
  }


  public ProjectCreateV30RequestAudience regionVersion(String regionVersion) {
    
    this.regionVersion = regionVersion;
    return this;
  }

   /**
   * 
   * @return regionVersion
  **/
  @javax.annotation.Nullable
  public String getRegionVersion() {
    return regionVersion;
  }


  public void setRegionVersion(String regionVersion) {
    this.regionVersion = regionVersion;
  }


  public ProjectCreateV30RequestAudience retargetingTagsExclude(List<Long> retargetingTagsExclude) {
    
    this.retargetingTagsExclude = retargetingTagsExclude;
    return this;
  }

  public ProjectCreateV30RequestAudience addRetargetingTagsExcludeItem(Long retargetingTagsExcludeItem) {
    if (this.retargetingTagsExclude == null) {
      this.retargetingTagsExclude = new ArrayList<>();
    }
    this.retargetingTagsExclude.add(retargetingTagsExcludeItem);
    return this;
  }

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


  public void setRetargetingTagsExclude(List<Long> retargetingTagsExclude) {
    this.retargetingTagsExclude = retargetingTagsExclude;
  }


  public ProjectCreateV30RequestAudience retargetingTagsInclude(List<Long> retargetingTagsInclude) {
    
    this.retargetingTagsInclude = retargetingTagsInclude;
    return this;
  }

  public ProjectCreateV30RequestAudience addRetargetingTagsIncludeItem(Long retargetingTagsIncludeItem) {
    if (this.retargetingTagsInclude == null) {
      this.retargetingTagsInclude = new ArrayList<>();
    }
    this.retargetingTagsInclude.add(retargetingTagsIncludeItem);
    return this;
  }

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


  public void setRetargetingTagsInclude(List<Long> retargetingTagsInclude) {
    this.retargetingTagsInclude = retargetingTagsInclude;
  }


  public ProjectCreateV30RequestAudience rtaId(Long rtaId) {
    
    this.rtaId = rtaId;
    return this;
  }

   /**
   * RTA策略ID， https://open.oceanengine.com/labels/7/docs/1696710749917196
   * minimum: 1
   * @return rtaId
  **/
  @javax.annotation.Nullable
  public Long getRtaId() {
    return rtaId;
  }


  public void setRtaId(Long rtaId) {
    this.rtaId = rtaId;
  }


  public ProjectCreateV30RequestAudience superiorPopularityType(ProjectCreateV30AudienceSuperiorPopularityType superiorPopularityType) {
    
    this.superiorPopularityType = superiorPopularityType;
    return this;
  }

   /**
   * Get superiorPopularityType
   * @return superiorPopularityType
  **/
  @javax.annotation.Nullable
  public ProjectCreateV30AudienceSuperiorPopularityType getSuperiorPopularityType() {
    return superiorPopularityType;
  }


  public void setSuperiorPopularityType(ProjectCreateV30AudienceSuperiorPopularityType superiorPopularityType) {
    this.superiorPopularityType = superiorPopularityType;
  }



  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    ProjectCreateV30RequestAudience projectCreateV30RequestAudience = (ProjectCreateV30RequestAudience) o;
    return Objects.equals(this.ac, projectCreateV30RequestAudience.ac) &&
        Objects.equals(this.actionCategories, projectCreateV30RequestAudience.actionCategories) &&
        Objects.equals(this.actionDays, projectCreateV30RequestAudience.actionDays) &&
        Objects.equals(this.actionWords, projectCreateV30RequestAudience.actionWords) &&
        Objects.equals(this.age, projectCreateV30RequestAudience.age) &&
        Objects.equals(this.androidOsv, projectCreateV30RequestAudience.androidOsv) &&
        Objects.equals(this.audiencePackageId, projectCreateV30RequestAudience.audiencePackageId) &&
        Objects.equals(this.autoExtendTargets, projectCreateV30RequestAudience.autoExtendTargets) &&
        Objects.equals(this.awemeFanAccounts, projectCreateV30RequestAudience.awemeFanAccounts) &&
        Objects.equals(this.awemeFanBehaviors, projectCreateV30RequestAudience.awemeFanBehaviors) &&
        Objects.equals(this.awemeFanCategories, projectCreateV30RequestAudience.awemeFanCategories) &&
        Objects.equals(this.awemeFanTimeScope, projectCreateV30RequestAudience.awemeFanTimeScope) &&
        Objects.equals(this.carrier, projectCreateV30RequestAudience.carrier) &&
        Objects.equals(this.carrierRegionOptimize, projectCreateV30RequestAudience.carrierRegionOptimize) &&
        Objects.equals(this.city, projectCreateV30RequestAudience.city) &&
        Objects.equals(this.convertedTimeDuration, projectCreateV30RequestAudience.convertedTimeDuration) &&
        Objects.equals(this.deviceBrand, projectCreateV30RequestAudience.deviceBrand) &&
        Objects.equals(this.deviceType, projectCreateV30RequestAudience.deviceType) &&
        Objects.equals(this.district, projectCreateV30RequestAudience.district) &&
        Objects.equals(this.dpaCity, projectCreateV30RequestAudience.dpaCity) &&
        Objects.equals(this.dpaLbs, projectCreateV30RequestAudience.dpaLbs) &&
        Objects.equals(this.dpaRtaRecommendType, projectCreateV30RequestAudience.dpaRtaRecommendType) &&
        Objects.equals(this.dpaRtaSwitch, projectCreateV30RequestAudience.dpaRtaSwitch) &&
        Objects.equals(this.excludeFlowPackage, projectCreateV30RequestAudience.excludeFlowPackage) &&
        Objects.equals(this.filterAwemeAbnormalActive, projectCreateV30RequestAudience.filterAwemeAbnormalActive) &&
        Objects.equals(this.filterAwemeFansCount, projectCreateV30RequestAudience.filterAwemeFansCount) &&
        Objects.equals(this.filterOwnAwemeFans, projectCreateV30RequestAudience.filterOwnAwemeFans) &&
        Objects.equals(this.flowPackage, projectCreateV30RequestAudience.flowPackage) &&
        Objects.equals(this.gender, projectCreateV30RequestAudience.gender) &&
        Objects.equals(this.geolocation, projectCreateV30RequestAudience.geolocation) &&
        Objects.equals(this.hideIfConverted, projectCreateV30RequestAudience.hideIfConverted) &&
        Objects.equals(this.hideIfExists, projectCreateV30RequestAudience.hideIfExists) &&
        Objects.equals(this.interestActionMode, projectCreateV30RequestAudience.interestActionMode) &&
        Objects.equals(this.interestCategories, projectCreateV30RequestAudience.interestCategories) &&
        Objects.equals(this.interestWords, projectCreateV30RequestAudience.interestWords) &&
        Objects.equals(this.iosOsv, projectCreateV30RequestAudience.iosOsv) &&
        Objects.equals(this.launchPrice, projectCreateV30RequestAudience.launchPrice) &&
        Objects.equals(this.locationType, projectCreateV30RequestAudience.locationType) &&
        Objects.equals(this.platform, projectCreateV30RequestAudience.platform) &&
        Objects.equals(this.regionRecommend, projectCreateV30RequestAudience.regionRecommend) &&
        Objects.equals(this.regionVersion, projectCreateV30RequestAudience.regionVersion) &&
        Objects.equals(this.retargetingTagsExclude, projectCreateV30RequestAudience.retargetingTagsExclude) &&
        Objects.equals(this.retargetingTagsInclude, projectCreateV30RequestAudience.retargetingTagsInclude) &&
        Objects.equals(this.rtaId, projectCreateV30RequestAudience.rtaId) &&
        Objects.equals(this.superiorPopularityType, projectCreateV30RequestAudience.superiorPopularityType);
  }

  @Override
  public int hashCode() {
    return Objects.hash(ac, actionCategories, actionDays, actionWords, age, androidOsv, audiencePackageId, autoExtendTargets, awemeFanAccounts, awemeFanBehaviors, awemeFanCategories, awemeFanTimeScope, carrier, carrierRegionOptimize, city, convertedTimeDuration, deviceBrand, deviceType, district, dpaCity, dpaLbs, dpaRtaRecommendType, dpaRtaSwitch, excludeFlowPackage, filterAwemeAbnormalActive, filterAwemeFansCount, filterOwnAwemeFans, flowPackage, gender, geolocation, hideIfConverted, hideIfExists, interestActionMode, interestCategories, interestWords, iosOsv, launchPrice, locationType, platform, regionRecommend, regionVersion, retargetingTagsExclude, retargetingTagsInclude, rtaId, superiorPopularityType);
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class ProjectCreateV30RequestAudience {\n");
    sb.append("    ac: ").append(toIndentedString(ac)).append("\n");
    sb.append("    actionCategories: ").append(toIndentedString(actionCategories)).append("\n");
    sb.append("    actionDays: ").append(toIndentedString(actionDays)).append("\n");
    sb.append("    actionWords: ").append(toIndentedString(actionWords)).append("\n");
    sb.append("    age: ").append(toIndentedString(age)).append("\n");
    sb.append("    androidOsv: ").append(toIndentedString(androidOsv)).append("\n");
    sb.append("    audiencePackageId: ").append(toIndentedString(audiencePackageId)).append("\n");
    sb.append("    autoExtendTargets: ").append(toIndentedString(autoExtendTargets)).append("\n");
    sb.append("    awemeFanAccounts: ").append(toIndentedString(awemeFanAccounts)).append("\n");
    sb.append("    awemeFanBehaviors: ").append(toIndentedString(awemeFanBehaviors)).append("\n");
    sb.append("    awemeFanCategories: ").append(toIndentedString(awemeFanCategories)).append("\n");
    sb.append("    awemeFanTimeScope: ").append(toIndentedString(awemeFanTimeScope)).append("\n");
    sb.append("    carrier: ").append(toIndentedString(carrier)).append("\n");
    sb.append("    carrierRegionOptimize: ").append(toIndentedString(carrierRegionOptimize)).append("\n");
    sb.append("    city: ").append(toIndentedString(city)).append("\n");
    sb.append("    convertedTimeDuration: ").append(toIndentedString(convertedTimeDuration)).append("\n");
    sb.append("    deviceBrand: ").append(toIndentedString(deviceBrand)).append("\n");
    sb.append("    deviceType: ").append(toIndentedString(deviceType)).append("\n");
    sb.append("    district: ").append(toIndentedString(district)).append("\n");
    sb.append("    dpaCity: ").append(toIndentedString(dpaCity)).append("\n");
    sb.append("    dpaLbs: ").append(toIndentedString(dpaLbs)).append("\n");
    sb.append("    dpaRtaRecommendType: ").append(toIndentedString(dpaRtaRecommendType)).append("\n");
    sb.append("    dpaRtaSwitch: ").append(toIndentedString(dpaRtaSwitch)).append("\n");
    sb.append("    excludeFlowPackage: ").append(toIndentedString(excludeFlowPackage)).append("\n");
    sb.append("    filterAwemeAbnormalActive: ").append(toIndentedString(filterAwemeAbnormalActive)).append("\n");
    sb.append("    filterAwemeFansCount: ").append(toIndentedString(filterAwemeFansCount)).append("\n");
    sb.append("    filterOwnAwemeFans: ").append(toIndentedString(filterOwnAwemeFans)).append("\n");
    sb.append("    flowPackage: ").append(toIndentedString(flowPackage)).append("\n");
    sb.append("    gender: ").append(toIndentedString(gender)).append("\n");
    sb.append("    geolocation: ").append(toIndentedString(geolocation)).append("\n");
    sb.append("    hideIfConverted: ").append(toIndentedString(hideIfConverted)).append("\n");
    sb.append("    hideIfExists: ").append(toIndentedString(hideIfExists)).append("\n");
    sb.append("    interestActionMode: ").append(toIndentedString(interestActionMode)).append("\n");
    sb.append("    interestCategories: ").append(toIndentedString(interestCategories)).append("\n");
    sb.append("    interestWords: ").append(toIndentedString(interestWords)).append("\n");
    sb.append("    iosOsv: ").append(toIndentedString(iosOsv)).append("\n");
    sb.append("    launchPrice: ").append(toIndentedString(launchPrice)).append("\n");
    sb.append("    locationType: ").append(toIndentedString(locationType)).append("\n");
    sb.append("    platform: ").append(toIndentedString(platform)).append("\n");
    sb.append("    regionRecommend: ").append(toIndentedString(regionRecommend)).append("\n");
    sb.append("    regionVersion: ").append(toIndentedString(regionVersion)).append("\n");
    sb.append("    retargetingTagsExclude: ").append(toIndentedString(retargetingTagsExclude)).append("\n");
    sb.append("    retargetingTagsInclude: ").append(toIndentedString(retargetingTagsInclude)).append("\n");
    sb.append("    rtaId: ").append(toIndentedString(rtaId)).append("\n");
    sb.append("    superiorPopularityType: ").append(toIndentedString(superiorPopularityType)).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("ac");
    openapiFields.add("action_categories");
    openapiFields.add("action_days");
    openapiFields.add("action_words");
    openapiFields.add("age");
    openapiFields.add("android_osv");
    openapiFields.add("audience_package_id");
    openapiFields.add("auto_extend_targets");
    openapiFields.add("aweme_fan_accounts");
    openapiFields.add("aweme_fan_behaviors");
    openapiFields.add("aweme_fan_categories");
    openapiFields.add("aweme_fan_time_scope");
    openapiFields.add("carrier");
    openapiFields.add("carrier_region_optimize");
    openapiFields.add("city");
    openapiFields.add("converted_time_duration");
    openapiFields.add("device_brand");
    openapiFields.add("device_type");
    openapiFields.add("district");
    openapiFields.add("dpa_city");
    openapiFields.add("dpa_lbs");
    openapiFields.add("dpa_rta_recommend_type");
    openapiFields.add("dpa_rta_switch");
    openapiFields.add("exclude_flow_package");
    openapiFields.add("filter_aweme_abnormal_active");
    openapiFields.add("filter_aweme_fans_count");
    openapiFields.add("filter_own_aweme_fans");
    openapiFields.add("flow_package");
    openapiFields.add("gender");
    openapiFields.add("geolocation");
    openapiFields.add("hide_if_converted");
    openapiFields.add("hide_if_exists");
    openapiFields.add("interest_action_mode");
    openapiFields.add("interest_categories");
    openapiFields.add("interest_words");
    openapiFields.add("ios_osv");
    openapiFields.add("launch_price");
    openapiFields.add("location_type");
    openapiFields.add("platform");
    openapiFields.add("region_recommend");
    openapiFields.add("region_version");
    openapiFields.add("retargeting_tags_exclude");
    openapiFields.add("retargeting_tags_include");
    openapiFields.add("rta_id");
    openapiFields.add("superior_popularity_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 (!ProjectCreateV30RequestAudience.class.isAssignableFrom(type.getRawType())) {
         return null; // this class only serializes 'ProjectCreateV30RequestAudience' and its subtypes
       }
       final TypeAdapter<JsonElement> elementAdapter = gson.getAdapter(JsonElement.class);
       final TypeAdapter<ProjectCreateV30RequestAudience> thisAdapter
                        = gson.getDelegateAdapter(this, TypeToken.get(ProjectCreateV30RequestAudience.class));

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

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

       }.nullSafe();
    }
  }

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

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

