UNPKG

shipxanh-oalazada

Version:
973 lines 99.3 kB
"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});

var _constants = require("./constants");

var _Common = require("./types/Common");

var _Product = require("./types/Product");

var _LazadaRequest = require("../LazadaRequest");

var _LazadaRequest2 = _interopRequireDefault(_LazadaRequest);

var _constants2 = require("../LazadaRequest/constants");

var _Request = require("../LazadaRequest/types/Request");

var _flowRuntime = require("flow-runtime");

var _flowRuntime2 = _interopRequireDefault(_flowRuntime);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

var Protocol = _flowRuntime2.default.tdz(function () {
  return _Request.Protocol;
});

var HttpAction = _flowRuntime2.default.tdz(function () {
  return _Request.HttpAction;
});

var ProductFilter = _flowRuntime2.default.tdz(function () {
  return _Product.ProductFilter;
});

var APIAction = _flowRuntime2.default.tdz(function () {
  return _Common.APIAction;
});

var getScheme = _flowRuntime2.default.annotate(function getScheme(protocol) {
  var _protocolType = _flowRuntime2.default.ref(Protocol);

  var _returnType = _flowRuntime2.default.return(_flowRuntime2.default.string());

  _flowRuntime2.default.param("protocol", _protocolType).assert(protocol);

  return _returnType.assert(protocol === _constants2.PROTOCOL.HTTP ? "http://" : "https://");
}, _flowRuntime2.default.function(_flowRuntime2.default.param("protocol", _flowRuntime2.default.ref(Protocol)), _flowRuntime2.default.return(_flowRuntime2.default.string())));

/**
 * getProducts GET /products/get
 * @param {Object} payload
 * filter           :require 'all', 'live', 'inactive', 'deleted', 'image-missing', 'pending', 'rejected', 'sold-out'
 * search            search by product name and/or Seller SKU.
 * offset
 * limit             20 as default. maximum products 500.
 * options           Options=1 means contain ReservedStock, RtsStock, PendingStock, RealTimeStock, FulfillmentBySellable.
 * sku_seller_list   JSON array (stringify). A maximum of 100 SKUs can be returned.
 * update_before     ISO 8601 date format
 * create_before     ISO 8601 date format
 * create_after      ISO 8601 date format
 * update_after      ISO 8601 date format
 */
var getProducts = _flowRuntime2.default.ref(APIAction).assert(_flowRuntime2.default.annotate(function getProducts(appKey, appSecret, gateway, accessToken, payload) {
  var action = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : _constants2.HTTP_ACTION.GET;
  var protocol = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : _constants2.PROTOCOL.HTTPS;

  var _appKeyType = _flowRuntime2.default.string();

  var _appSecretType = _flowRuntime2.default.string();

  var _gatewayType = _flowRuntime2.default.string();

  var _accessTokenType = _flowRuntime2.default.nullable(_flowRuntime2.default.string());

  var _payloadType = _flowRuntime2.default.object(_flowRuntime2.default.property("filter", _flowRuntime2.default.ref(ProductFilter)), _flowRuntime2.default.property("search", _flowRuntime2.default.string(), true), _flowRuntime2.default.property("offset", _flowRuntime2.default.number(), true), _flowRuntime2.default.property("limit", _flowRuntime2.default.number(), true), _flowRuntime2.default.property("options", _flowRuntime2.default.number(), true), _flowRuntime2.default.property("sku_seller_list", _flowRuntime2.default.string(), true), _flowRuntime2.default.property("update_before", _flowRuntime2.default.string(), true), _flowRuntime2.default.property("create_before", _flowRuntime2.default.string(), true), _flowRuntime2.default.property("create_after", _flowRuntime2.default.string(), true), _flowRuntime2.default.property("update_after", _flowRuntime2.default.string(), true));

  var _actionType = _flowRuntime2.default.ref(HttpAction);

  var _protocolType2 = _flowRuntime2.default.ref(Protocol);

  _flowRuntime2.default.param("appKey", _appKeyType).assert(appKey);

  _flowRuntime2.default.param("appSecret", _appSecretType).assert(appSecret);

  _flowRuntime2.default.param("gateway", _gatewayType).assert(gateway);

  _flowRuntime2.default.param("accessToken", _accessTokenType).assert(accessToken);

  _flowRuntime2.default.param("payload", _payloadType).assert(payload);

  _flowRuntime2.default.param("action", _actionType, true).assert(action);

  _flowRuntime2.default.param("protocol", _protocolType2, true).assert(protocol);

  var apiPath = "/products/get";
  var baseURL = getScheme(protocol) + gateway;
  return _LazadaRequest2.default.get(baseURL, appKey, appSecret, apiPath, accessToken, payload);
}, _flowRuntime2.default.function(_flowRuntime2.default.param("appKey", _flowRuntime2.default.string()), _flowRuntime2.default.param("appSecret", _flowRuntime2.default.string()), _flowRuntime2.default.param("gateway", _flowRuntime2.default.string()), _flowRuntime2.default.param("accessToken", _flowRuntime2.default.nullable(_flowRuntime2.default.string())), _flowRuntime2.default.param("payload", _flowRuntime2.default.object(_flowRuntime2.default.property("filter", _flowRuntime2.default.ref(ProductFilter)), _flowRuntime2.default.property("search", _flowRuntime2.default.string(), true), _flowRuntime2.default.property("offset", _flowRuntime2.default.number(), true), _flowRuntime2.default.property("limit", _flowRuntime2.default.number(), true), _flowRuntime2.default.property("options", _flowRuntime2.default.number(), true), _flowRuntime2.default.property("sku_seller_list", _flowRuntime2.default.string(), true), _flowRuntime2.default.property("update_before", _flowRuntime2.default.string(), true), _flowRuntime2.default.property("create_before", _flowRuntime2.default.string(), true), _flowRuntime2.default.property("create_after", _flowRuntime2.default.string(), true), _flowRuntime2.default.property("update_after", _flowRuntime2.default.string(), true))), _flowRuntime2.default.param("action", _flowRuntime2.default.ref(HttpAction)), _flowRuntime2.default.param("protocol", _flowRuntime2.default.ref(Protocol)))));

/**
 * Retrieve the list of all product categories in the system
 */
var getCategoryTree = _flowRuntime2.default.ref(APIAction).assert(_flowRuntime2.default.annotate(function getCategoryTree(appKey, appSecret, gateway, accessToken, payload) {
  var action = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : _constants2.HTTP_ACTION.GET;
  var protocol = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : _constants2.PROTOCOL.HTTPS;

  var _appKeyType2 = _flowRuntime2.default.string();

  var _appSecretType2 = _flowRuntime2.default.string();

  var _gatewayType2 = _flowRuntime2.default.string();

  var _accessTokenType2 = _flowRuntime2.default.nullable(_flowRuntime2.default.string());

  var _payloadType2 = _flowRuntime2.default.any();

  var _actionType2 = _flowRuntime2.default.ref(HttpAction);

  var _protocolType3 = _flowRuntime2.default.ref(Protocol);

  _flowRuntime2.default.param("appKey", _appKeyType2).assert(appKey);

  _flowRuntime2.default.param("appSecret", _appSecretType2).assert(appSecret);

  _flowRuntime2.default.param("gateway", _gatewayType2).assert(gateway);

  _flowRuntime2.default.param("accessToken", _accessTokenType2).assert(accessToken);

  _flowRuntime2.default.param("payload", _payloadType2).assert(payload);

  _flowRuntime2.default.param("action", _actionType2, true).assert(action);

  _flowRuntime2.default.param("protocol", _protocolType3, true).assert(protocol);

  var apiPath = "/category/tree/get";
  var baseURL = getScheme(protocol) + gateway;
  return _LazadaRequest2.default.get(baseURL, appKey, appSecret, apiPath, undefined);
}, _flowRuntime2.default.function(_flowRuntime2.default.param("appKey", _flowRuntime2.default.string()), _flowRuntime2.default.param("appSecret", _flowRuntime2.default.string()), _flowRuntime2.default.param("gateway", _flowRuntime2.default.string()), _flowRuntime2.default.param("accessToken", _flowRuntime2.default.nullable(_flowRuntime2.default.string())), _flowRuntime2.default.param("payload", _flowRuntime2.default.any()), _flowRuntime2.default.param("action", _flowRuntime2.default.ref(HttpAction)), _flowRuntime2.default.param("protocol", _flowRuntime2.default.ref(Protocol)))));

/**
 * Retrieve api url createProduct
 */
var getProductCreateUrl = _flowRuntime2.default.ref(APIAction).assert(_flowRuntime2.default.annotate(function getProductCreateUrl(appKey, appSecret, gateway, accessToken) {
  var action = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : _constants2.HTTP_ACTION.GET;
  var protocol = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : _constants2.PROTOCOL.HTTPS;

  var _appKeyType3 = _flowRuntime2.default.string();

  var _appSecretType3 = _flowRuntime2.default.string();

  var _gatewayType3 = _flowRuntime2.default.string();

  var _accessTokenType3 = _flowRuntime2.default.nullable(_flowRuntime2.default.string());

  var _actionType3 = _flowRuntime2.default.ref(HttpAction);

  var _protocolType4 = _flowRuntime2.default.ref(Protocol);

  _flowRuntime2.default.param("appKey", _appKeyType3).assert(appKey);

  _flowRuntime2.default.param("appSecret", _appSecretType3).assert(appSecret);

  _flowRuntime2.default.param("gateway", _gatewayType3).assert(gateway);

  _flowRuntime2.default.param("accessToken", _accessTokenType3).assert(accessToken);

  _flowRuntime2.default.param("action", _actionType3, true).assert(action);

  _flowRuntime2.default.param("protocol", _protocolType4, true).assert(protocol);

  var apiPath = "/product/create";
  var baseURL = getScheme(protocol) + gateway;
  return baseURL + apiPath;
}, _flowRuntime2.default.function(_flowRuntime2.default.param("appKey", _flowRuntime2.default.string()), _flowRuntime2.default.param("appSecret", _flowRuntime2.default.string()), _flowRuntime2.default.param("gateway", _flowRuntime2.default.string()), _flowRuntime2.default.param("accessToken", _flowRuntime2.default.nullable(_flowRuntime2.default.string())), _flowRuntime2.default.param("action", _flowRuntime2.default.ref(HttpAction)), _flowRuntime2.default.param("protocol", _flowRuntime2.default.ref(Protocol)))));

/**
 * Retrieve api url updateProduct
 */
var getProductUpdateUrl = _flowRuntime2.default.ref(APIAction).assert(_flowRuntime2.default.annotate(function getProductUpdateUrl(appKey, appSecret, gateway, accessToken) {
  var action = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : _constants2.HTTP_ACTION.GET;
  var protocol = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : _constants2.PROTOCOL.HTTPS;

  var _appKeyType4 = _flowRuntime2.default.string();

  var _appSecretType4 = _flowRuntime2.default.string();

  var _gatewayType4 = _flowRuntime2.default.string();

  var _accessTokenType4 = _flowRuntime2.default.nullable(_flowRuntime2.default.string());

  var _actionType4 = _flowRuntime2.default.ref(HttpAction);

  var _protocolType5 = _flowRuntime2.default.ref(Protocol);

  _flowRuntime2.default.param("appKey", _appKeyType4).assert(appKey);

  _flowRuntime2.default.param("appSecret", _appSecretType4).assert(appSecret);

  _flowRuntime2.default.param("gateway", _gatewayType4).assert(gateway);

  _flowRuntime2.default.param("accessToken", _accessTokenType4).assert(accessToken);

  _flowRuntime2.default.param("action", _actionType4, true).assert(action);

  _flowRuntime2.default.param("protocol", _protocolType5, true).assert(protocol);

  var apiPath = "/product/update";
  var baseURL = getScheme(protocol) + gateway;
  return baseURL + apiPath;
}, _flowRuntime2.default.function(_flowRuntime2.default.param("appKey", _flowRuntime2.default.string()), _flowRuntime2.default.param("appSecret", _flowRuntime2.default.string()), _flowRuntime2.default.param("gateway", _flowRuntime2.default.string()), _flowRuntime2.default.param("accessToken", _flowRuntime2.default.nullable(_flowRuntime2.default.string())), _flowRuntime2.default.param("action", _flowRuntime2.default.ref(HttpAction)), _flowRuntime2.default.param("protocol", _flowRuntime2.default.ref(Protocol)))));

/**
 * Get a list of attributes for a specified product category.
 * @param {Object} payload
 * primary_category_id :require
 */
var getCategoryAttributes = _flowRuntime2.default.ref(APIAction).assert(_flowRuntime2.default.annotate(function getCategoryAttributes(appKey, appSecret, gateway, accessToken, payload) {
  var action = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : _constants2.HTTP_ACTION.GET;
  var protocol = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : _constants2.PROTOCOL.HTTPS;

  var _appKeyType5 = _flowRuntime2.default.string();

  var _appSecretType5 = _flowRuntime2.default.string();

  var _gatewayType5 = _flowRuntime2.default.string();

  var _accessTokenType5 = _flowRuntime2.default.nullable(_flowRuntime2.default.string());

  var _payloadType3 = _flowRuntime2.default.object(_flowRuntime2.default.property("primary_category_id", _flowRuntime2.default.string()));

  var _actionType5 = _flowRuntime2.default.ref(HttpAction);

  var _protocolType6 = _flowRuntime2.default.ref(Protocol);

  _flowRuntime2.default.param("appKey", _appKeyType5).assert(appKey);

  _flowRuntime2.default.param("appSecret", _appSecretType5).assert(appSecret);

  _flowRuntime2.default.param("gateway", _gatewayType5).assert(gateway);

  _flowRuntime2.default.param("accessToken", _accessTokenType5).assert(accessToken);

  _flowRuntime2.default.param("payload", _payloadType3).assert(payload);

  _flowRuntime2.default.param("action", _actionType5, true).assert(action);

  _flowRuntime2.default.param("protocol", _protocolType6, true).assert(protocol);

  var apiPath = "/category/attributes/get";
  var baseURL = getScheme(protocol) + gateway;
  return _LazadaRequest2.default.get(baseURL, appKey, appSecret, apiPath, undefined, payload);
}, _flowRuntime2.default.function(_flowRuntime2.default.param("appKey", _flowRuntime2.default.string()), _flowRuntime2.default.param("appSecret", _flowRuntime2.default.string()), _flowRuntime2.default.param("gateway", _flowRuntime2.default.string()), _flowRuntime2.default.param("accessToken", _flowRuntime2.default.nullable(_flowRuntime2.default.string())), _flowRuntime2.default.param("payload", _flowRuntime2.default.object(_flowRuntime2.default.property("primary_category_id", _flowRuntime2.default.string()))), _flowRuntime2.default.param("action", _flowRuntime2.default.ref(HttpAction)), _flowRuntime2.default.param("protocol", _flowRuntime2.default.ref(Protocol)))));

/**
 * Get a list of attributes for a specified product category.
 * @param {Object} payload
 * product_name :require
 */
var getCategorySuggestior = _flowRuntime2.default.ref(APIAction).assert(_flowRuntime2.default.annotate(function getCategorySuggestior(appKey, appSecret, gateway, accessToken, payload) {
  var action = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : _constants2.HTTP_ACTION.GET;
  var protocol = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : _constants2.PROTOCOL.HTTPS;

  var _appKeyType6 = _flowRuntime2.default.string();

  var _appSecretType6 = _flowRuntime2.default.string();

  var _gatewayType6 = _flowRuntime2.default.string();

  var _accessTokenType6 = _flowRuntime2.default.nullable(_flowRuntime2.default.string());

  var _payloadType4 = _flowRuntime2.default.object(_flowRuntime2.default.property("product_name", _flowRuntime2.default.string()));

  var _actionType6 = _flowRuntime2.default.ref(HttpAction);

  var _protocolType7 = _flowRuntime2.default.ref(Protocol);

  _flowRuntime2.default.param("appKey", _appKeyType6).assert(appKey);

  _flowRuntime2.default.param("appSecret", _appSecretType6).assert(appSecret);

  _flowRuntime2.default.param("gateway", _gatewayType6).assert(gateway);

  _flowRuntime2.default.param("accessToken", _accessTokenType6).assert(accessToken);

  _flowRuntime2.default.param("payload", _payloadType4).assert(payload);

  _flowRuntime2.default.param("action", _actionType6, true).assert(action);

  _flowRuntime2.default.param("protocol", _protocolType7, true).assert(protocol);

  var apiPath = "/product/category/suggestion/get";
  var baseURL = getScheme(protocol) + gateway;
  return _LazadaRequest2.default.get(baseURL, appKey, appSecret, apiPath, accessToken, payload);
}, _flowRuntime2.default.function(_flowRuntime2.default.param("appKey", _flowRuntime2.default.string()), _flowRuntime2.default.param("appSecret", _flowRuntime2.default.string()), _flowRuntime2.default.param("gateway", _flowRuntime2.default.string()), _flowRuntime2.default.param("accessToken", _flowRuntime2.default.nullable(_flowRuntime2.default.string())), _flowRuntime2.default.param("payload", _flowRuntime2.default.object(_flowRuntime2.default.property("product_name", _flowRuntime2.default.string()))), _flowRuntime2.default.param("action", _flowRuntime2.default.ref(HttpAction)), _flowRuntime2.default.param("protocol", _flowRuntime2.default.ref(Protocol)))));

/**
 * Get single product by ItemId or SellerSku.
 * @param {Object} payload
 * item_id
 * seller_sku
 */
var getProductItem = _flowRuntime2.default.ref(APIAction).assert(_flowRuntime2.default.annotate(function getProductItem(appKey, appSecret, gateway, accessToken, payload) {
  var action = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : _constants2.HTTP_ACTION.GET;
  var protocol = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : _constants2.PROTOCOL.HTTPS;

  var _appKeyType7 = _flowRuntime2.default.string();

  var _appSecretType7 = _flowRuntime2.default.string();

  var _gatewayType7 = _flowRuntime2.default.string();

  var _accessTokenType7 = _flowRuntime2.default.nullable(_flowRuntime2.default.string());

  var _payloadType5 = _flowRuntime2.default.object(_flowRuntime2.default.property("seller_sku", _flowRuntime2.default.string(), true), _flowRuntime2.default.property("item_id", _flowRuntime2.default.number(), true));

  var _actionType7 = _flowRuntime2.default.ref(HttpAction);

  var _protocolType8 = _flowRuntime2.default.ref(Protocol);

  _flowRuntime2.default.param("appKey", _appKeyType7).assert(appKey);

  _flowRuntime2.default.param("appSecret", _appSecretType7).assert(appSecret);

  _flowRuntime2.default.param("gateway", _gatewayType7).assert(gateway);

  _flowRuntime2.default.param("accessToken", _accessTokenType7).assert(accessToken);

  _flowRuntime2.default.param("payload", _payloadType5).assert(payload);

  _flowRuntime2.default.param("action", _actionType7, true).assert(action);

  _flowRuntime2.default.param("protocol", _protocolType8, true).assert(protocol);

  var apiPath = "/product/item/get";
  var baseURL = getScheme(protocol) + gateway;
  return _LazadaRequest2.default.get(baseURL, appKey, appSecret, apiPath, accessToken, payload);
}, _flowRuntime2.default.function(_flowRuntime2.default.param("appKey", _flowRuntime2.default.string()), _flowRuntime2.default.param("appSecret", _flowRuntime2.default.string()), _flowRuntime2.default.param("gateway", _flowRuntime2.default.string()), _flowRuntime2.default.param("accessToken", _flowRuntime2.default.nullable(_flowRuntime2.default.string())), _flowRuntime2.default.param("payload", _flowRuntime2.default.object(_flowRuntime2.default.property("seller_sku", _flowRuntime2.default.string(), true), _flowRuntime2.default.property("item_id", _flowRuntime2.default.number(), true))), _flowRuntime2.default.param("action", _flowRuntime2.default.ref(HttpAction)), _flowRuntime2.default.param("protocol", _flowRuntime2.default.ref(Protocol)))));

/**
 * Get video info.
 * @param {Object} payload
 * videoId
 */
var getVideo = _flowRuntime2.default.ref(APIAction).assert(_flowRuntime2.default.annotate(function getVideo(appKey, appSecret, gateway, accessToken, payload) {
  var action = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : _constants2.HTTP_ACTION.GET;
  var protocol = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : _constants2.PROTOCOL.HTTPS;

  var _appKeyType8 = _flowRuntime2.default.string();

  var _appSecretType8 = _flowRuntime2.default.string();

  var _gatewayType8 = _flowRuntime2.default.string();

  var _accessTokenType8 = _flowRuntime2.default.nullable(_flowRuntime2.default.string());

  var _payloadType6 = _flowRuntime2.default.object(_flowRuntime2.default.property("videoId", _flowRuntime2.default.number()));

  var _actionType8 = _flowRuntime2.default.ref(HttpAction);

  var _protocolType9 = _flowRuntime2.default.ref(Protocol);

  _flowRuntime2.default.param("appKey", _appKeyType8).assert(appKey);

  _flowRuntime2.default.param("appSecret", _appSecretType8).assert(appSecret);

  _flowRuntime2.default.param("gateway", _gatewayType8).assert(gateway);

  _flowRuntime2.default.param("accessToken", _accessTokenType8).assert(accessToken);

  _flowRuntime2.default.param("payload", _payloadType6).assert(payload);

  _flowRuntime2.default.param("action", _actionType8, true).assert(action);

  _flowRuntime2.default.param("protocol", _protocolType9, true).assert(protocol);

  var apiPath = "/media/video/get";
  var baseURL = getScheme(protocol) + gateway;
  return _LazadaRequest2.default.get(baseURL, appKey, appSecret, apiPath, accessToken, payload);
}, _flowRuntime2.default.function(_flowRuntime2.default.param("appKey", _flowRuntime2.default.string()), _flowRuntime2.default.param("appSecret", _flowRuntime2.default.string()), _flowRuntime2.default.param("gateway", _flowRuntime2.default.string()), _flowRuntime2.default.param("accessToken", _flowRuntime2.default.nullable(_flowRuntime2.default.string())), _flowRuntime2.default.param("payload", _flowRuntime2.default.object(_flowRuntime2.default.property("videoId", _flowRuntime2.default.number()))), _flowRuntime2.default.param("action", _flowRuntime2.default.ref(HttpAction)), _flowRuntime2.default.param("protocol", _flowRuntime2.default.ref(Protocol)))));

/**
 * Use this API to get the returned information from the system for the MigrateImages API.
 * @param {Object} payload
 * batch_id :require
 */
var getResponse = _flowRuntime2.default.ref(APIAction).assert(_flowRuntime2.default.annotate(function getResponse(appKey, appSecret, gateway, accessToken, payload) {
  var action = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : _constants2.HTTP_ACTION.GET;
  var protocol = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : _constants2.PROTOCOL.HTTPS;

  var _appKeyType9 = _flowRuntime2.default.string();

  var _appSecretType9 = _flowRuntime2.default.string();

  var _gatewayType9 = _flowRuntime2.default.string();

  var _accessTokenType9 = _flowRuntime2.default.string();

  var _payloadType7 = _flowRuntime2.default.object(_flowRuntime2.default.property("batch_id", _flowRuntime2.default.string()));

  var _actionType9 = _flowRuntime2.default.ref(HttpAction);

  var _protocolType10 = _flowRuntime2.default.ref(Protocol);

  _flowRuntime2.default.param("appKey", _appKeyType9).assert(appKey);

  _flowRuntime2.default.param("appSecret", _appSecretType9).assert(appSecret);

  _flowRuntime2.default.param("gateway", _gatewayType9).assert(gateway);

  _flowRuntime2.default.param("accessToken", _accessTokenType9).assert(accessToken);

  _flowRuntime2.default.param("payload", _payloadType7).assert(payload);

  _flowRuntime2.default.param("action", _actionType9, true).assert(action);

  _flowRuntime2.default.param("protocol", _protocolType10, true).assert(protocol);

  var apiPath = "/image/response/get";
  var baseURL = getScheme(protocol) + gateway;
  return _LazadaRequest2.default.get(baseURL, appKey, appSecret, apiPath, accessToken, payload);
}, _flowRuntime2.default.function(_flowRuntime2.default.param("appKey", _flowRuntime2.default.string()), _flowRuntime2.default.param("appSecret", _flowRuntime2.default.string()), _flowRuntime2.default.param("gateway", _flowRuntime2.default.string()), _flowRuntime2.default.param("accessToken", _flowRuntime2.default.string()), _flowRuntime2.default.param("payload", _flowRuntime2.default.object(_flowRuntime2.default.property("batch_id", _flowRuntime2.default.string()))), _flowRuntime2.default.param("action", _flowRuntime2.default.ref(HttpAction)), _flowRuntime2.default.param("protocol", _flowRuntime2.default.ref(Protocol)))));

/**
 * Retrieve all size chart template.
 * @param {Object} payload
 * page_no :require
 * page_size  :require
 */
var getSizeChartTemplate = _flowRuntime2.default.ref(APIAction).assert(_flowRuntime2.default.annotate(function getSizeChartTemplate(appKey, appSecret, gateway, accessToken, payload) {
  var action = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : _constants2.HTTP_ACTION.GET;
  var protocol = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : _constants2.PROTOCOL.HTTPS;

  var _appKeyType10 = _flowRuntime2.default.string();

  var _appSecretType10 = _flowRuntime2.default.string();

  var _gatewayType10 = _flowRuntime2.default.string();

  var _accessTokenType10 = _flowRuntime2.default.string();

  var _payloadType8 = _flowRuntime2.default.object(_flowRuntime2.default.property("page_no", _flowRuntime2.default.string()), _flowRuntime2.default.property("page_size", _flowRuntime2.default.string()));

  var _actionType10 = _flowRuntime2.default.ref(HttpAction);

  var _protocolType11 = _flowRuntime2.default.ref(Protocol);

  _flowRuntime2.default.param("appKey", _appKeyType10).assert(appKey);

  _flowRuntime2.default.param("appSecret", _appSecretType10).assert(appSecret);

  _flowRuntime2.default.param("gateway", _gatewayType10).assert(gateway);

  _flowRuntime2.default.param("accessToken", _accessTokenType10).assert(accessToken);

  _flowRuntime2.default.param("payload", _payloadType8).assert(payload);

  _flowRuntime2.default.param("action", _actionType10, true).assert(action);

  _flowRuntime2.default.param("protocol", _protocolType11, true).assert(protocol);

  var apiPath = "/size/chart/template/get";
  var baseURL = getScheme(protocol) + gateway;
  return _LazadaRequest2.default.get(baseURL, appKey, appSecret, apiPath, accessToken, payload);
}, _flowRuntime2.default.function(_flowRuntime2.default.param("appKey", _flowRuntime2.default.string()), _flowRuntime2.default.param("appSecret", _flowRuntime2.default.string()), _flowRuntime2.default.param("gateway", _flowRuntime2.default.string()), _flowRuntime2.default.param("accessToken", _flowRuntime2.default.string()), _flowRuntime2.default.param("payload", _flowRuntime2.default.object(_flowRuntime2.default.property("page_no", _flowRuntime2.default.string()), _flowRuntime2.default.property("page_size", _flowRuntime2.default.string()))), _flowRuntime2.default.param("action", _flowRuntime2.default.ref(HttpAction)), _flowRuntime2.default.param("protocol", _flowRuntime2.default.ref(Protocol)))));

/**
 * Retrieve all product brands in the system.
 * @param {Object} payload
 * startRow :require
 * pageSize  :require
 * languageCode  :require
 */
var getBrands = _flowRuntime2.default.ref(APIAction).assert(_flowRuntime2.default.annotate(function getBrands(appKey, appSecret, gateway, accessToken, payload) {
  var action = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : _constants2.HTTP_ACTION.GET;
  var protocol = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : _constants2.PROTOCOL.HTTPS;

  var _appKeyType11 = _flowRuntime2.default.string();

  var _appSecretType11 = _flowRuntime2.default.string();

  var _gatewayType11 = _flowRuntime2.default.string();

  var _accessTokenType11 = _flowRuntime2.default.nullable(_flowRuntime2.default.string());

  var _payloadType9 = _flowRuntime2.default.object(_flowRuntime2.default.property("startRow", _flowRuntime2.default.string()), _flowRuntime2.default.property("pageSize", _flowRuntime2.default.string()), _flowRuntime2.default.property("languageCode", _flowRuntime2.default.string()));

  var _actionType11 = _flowRuntime2.default.ref(HttpAction);

  var _protocolType12 = _flowRuntime2.default.ref(Protocol);

  _flowRuntime2.default.param("appKey", _appKeyType11).assert(appKey);

  _flowRuntime2.default.param("appSecret", _appSecretType11).assert(appSecret);

  _flowRuntime2.default.param("gateway", _gatewayType11).assert(gateway);

  _flowRuntime2.default.param("accessToken", _accessTokenType11).assert(accessToken);

  _flowRuntime2.default.param("payload", _payloadType9).assert(payload);

  _flowRuntime2.default.param("action", _actionType11, true).assert(action);

  _flowRuntime2.default.param("protocol", _protocolType12, true).assert(protocol);

  var apiPath = "/category/brands/query";
  var baseURL = getScheme(protocol) + gateway;
  return _LazadaRequest2.default.get(baseURL, appKey, appSecret, apiPath, undefined, payload);
}, _flowRuntime2.default.function(_flowRuntime2.default.param("appKey", _flowRuntime2.default.string()), _flowRuntime2.default.param("appSecret", _flowRuntime2.default.string()), _flowRuntime2.default.param("gateway", _flowRuntime2.default.string()), _flowRuntime2.default.param("accessToken", _flowRuntime2.default.nullable(_flowRuntime2.default.string())), _flowRuntime2.default.param("payload", _flowRuntime2.default.object(_flowRuntime2.default.property("startRow", _flowRuntime2.default.string()), _flowRuntime2.default.property("pageSize", _flowRuntime2.default.string()), _flowRuntime2.default.property("languageCode", _flowRuntime2.default.string()))), _flowRuntime2.default.param("action", _flowRuntime2.default.ref(HttpAction)), _flowRuntime2.default.param("protocol", _flowRuntime2.default.ref(Protocol)))));

/**
 * TODO:
 * @param {Object} payload xml string
 * @ref https://open.lazada.com/doc/doc.htm?spm=a2o9m.11193535.0.0.2de238e4eebY8v#?nodeId=10557&docId=108253
 */
var createProduct = _flowRuntime2.default.ref(APIAction).assert(_flowRuntime2.default.annotate(function createProduct(appKey, appSecret, gateway, accessToken, payload) {
  var action = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : _constants2.HTTP_ACTION.GET;
  var protocol = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : _constants2.PROTOCOL.HTTPS;

  var _appKeyType12 = _flowRuntime2.default.string();

  var _appSecretType12 = _flowRuntime2.default.string();

  var _gatewayType12 = _flowRuntime2.default.string();

  var _accessTokenType12 = _flowRuntime2.default.nullable(_flowRuntime2.default.string());

  var _payloadType10 = _flowRuntime2.default.object(_flowRuntime2.default.property("payload", _flowRuntime2.default.string()));

  var _actionType12 = _flowRuntime2.default.ref(HttpAction);

  var _protocolType13 = _flowRuntime2.default.ref(Protocol);

  _flowRuntime2.default.param("appKey", _appKeyType12).assert(appKey);

  _flowRuntime2.default.param("appSecret", _appSecretType12).assert(appSecret);

  _flowRuntime2.default.param("gateway", _gatewayType12).assert(gateway);

  _flowRuntime2.default.param("accessToken", _accessTokenType12).assert(accessToken);

  _flowRuntime2.default.param("payload", _payloadType10).assert(payload);

  _flowRuntime2.default.param("action", _actionType12, true).assert(action);

  _flowRuntime2.default.param("protocol", _protocolType13, true).assert(protocol);

  var apiPath = "/product/create";
  var baseURL = getScheme(protocol) + gateway;
  return _LazadaRequest2.default.post(baseURL, appKey, appSecret, apiPath, accessToken, payload);
}, _flowRuntime2.default.function(_flowRuntime2.default.param("appKey", _flowRuntime2.default.string()), _flowRuntime2.default.param("appSecret", _flowRuntime2.default.string()), _flowRuntime2.default.param("gateway", _flowRuntime2.default.string()), _flowRuntime2.default.param("accessToken", _flowRuntime2.default.nullable(_flowRuntime2.default.string())), _flowRuntime2.default.param("payload", _flowRuntime2.default.object(_flowRuntime2.default.property("payload", _flowRuntime2.default.string()))), _flowRuntime2.default.param("action", _flowRuntime2.default.ref(HttpAction)), _flowRuntime2.default.param("protocol", _flowRuntime2.default.ref(Protocol)))));

/**
 * init video upload
 * @param {string} fileName
 * @param {string} fileBytes
 * @ref https://open.lazada.com/apps/doc/api?path=%2Fmedia%2Fvideo%2Fblock%2Fcreate
 */
var initCreateVideo = _flowRuntime2.default.ref(APIAction).assert(_flowRuntime2.default.annotate(function initCreateVideo(appKey, appSecret, gateway, accessToken, payload) {
  var action = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : _constants2.HTTP_ACTION.GET;
  var protocol = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : _constants2.PROTOCOL.HTTPS;

  var _appKeyType13 = _flowRuntime2.default.string();

  var _appSecretType13 = _flowRuntime2.default.string();

  var _gatewayType13 = _flowRuntime2.default.string();

  var _accessTokenType13 = _flowRuntime2.default.string();

  var _payloadType11 = _flowRuntime2.default.object(_flowRuntime2.default.property("fileName", _flowRuntime2.default.string()), _flowRuntime2.default.property("fileBytes", _flowRuntime2.default.number()));

  var _actionType13 = _flowRuntime2.default.ref(HttpAction);

  var _protocolType14 = _flowRuntime2.default.ref(Protocol);

  _flowRuntime2.default.param("appKey", _appKeyType13).assert(appKey);

  _flowRuntime2.default.param("appSecret", _appSecretType13).assert(appSecret);

  _flowRuntime2.default.param("gateway", _gatewayType13).assert(gateway);

  _flowRuntime2.default.param("accessToken", _accessTokenType13).assert(accessToken);

  _flowRuntime2.default.param("payload", _payloadType11).assert(payload);

  _flowRuntime2.default.param("action", _actionType13, true).assert(action);

  _flowRuntime2.default.param("protocol", _protocolType14, true).assert(protocol);

  var apiPath = "/media/video/block/create";
  var baseURL = getScheme(protocol) + gateway;
  return _LazadaRequest2.default.post(baseURL, appKey, appSecret, apiPath, accessToken, payload);
}, _flowRuntime2.default.function(_flowRuntime2.default.param("appKey", _flowRuntime2.default.string()), _flowRuntime2.default.param("appSecret", _flowRuntime2.default.string()), _flowRuntime2.default.param("gateway", _flowRuntime2.default.string()), _flowRuntime2.default.param("accessToken", _flowRuntime2.default.string()), _flowRuntime2.default.param("payload", _flowRuntime2.default.object(_flowRuntime2.default.property("fileName", _flowRuntime2.default.string()), _flowRuntime2.default.property("fileBytes", _flowRuntime2.default.number()))), _flowRuntime2.default.param("action", _flowRuntime2.default.ref(HttpAction)), _flowRuntime2.default.param("protocol", _flowRuntime2.default.ref(Protocol)))));

/**
 * upload video block
 * @param {string} uploadId
 * @param {string} blockNo
 * @param {string} blockCount
 * @param {Array<string>} file
 * @ref https://open.lazada.com/apps/doc/api?path=%2Fmedia%2Fvideo%2Fblock%2Fupload
 */
var UploadVideoBlock = _flowRuntime2.default.ref(APIAction).assert(_flowRuntime2.default.annotate(function UploadVideoBlock(appKey, appSecret, gateway, accessToken, payload) {
  var action = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : _constants2.HTTP_ACTION.GET;
  var protocol = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : _constants2.PROTOCOL.HTTPS;

  var _appKeyType14 = _flowRuntime2.default.string();

  var _appSecretType14 = _flowRuntime2.default.string();

  var _gatewayType14 = _flowRuntime2.default.string();

  var _accessTokenType14 = _flowRuntime2.default.string();

  var _payloadType12 = _flowRuntime2.default.object(_flowRuntime2.default.property("uploadId", _flowRuntime2.default.string()), _flowRuntime2.default.property("blockNo", _flowRuntime2.default.string()), _flowRuntime2.default.property("blockCount", _flowRuntime2.default.string()), _flowRuntime2.default.property("filePath", _flowRuntime2.default.string()));

  var _actionType14 = _flowRuntime2.default.ref(HttpAction);

  var _protocolType15 = _flowRuntime2.default.ref(Protocol);

  _flowRuntime2.default.param("appKey", _appKeyType14).assert(appKey);

  _flowRuntime2.default.param("appSecret", _appSecretType14).assert(appSecret);

  _flowRuntime2.default.param("gateway", _gatewayType14).assert(gateway);

  _flowRuntime2.default.param("accessToken", _accessTokenType14).assert(accessToken);

  _flowRuntime2.default.param("payload", _payloadType12).assert(payload);

  _flowRuntime2.default.param("action", _actionType14, true).assert(action);

  _flowRuntime2.default.param("protocol", _protocolType15, true).assert(protocol);

  var apiPath = "/media/video/block/upload";
  var baseURL = getScheme(protocol) + gateway;
  var filePath = payload.filePath;
  delete payload.filePath;
  return _LazadaRequest2.default.uploadFile(baseURL, appKey, appSecret, apiPath, accessToken, filePath, payload);
}, _flowRuntime2.default.function(_flowRuntime2.default.param("appKey", _flowRuntime2.default.string()), _flowRuntime2.default.param("appSecret", _flowRuntime2.default.string()), _flowRuntime2.default.param("gateway", _flowRuntime2.default.string()), _flowRuntime2.default.param("accessToken", _flowRuntime2.default.string()), _flowRuntime2.default.param("payload", _flowRuntime2.default.object(_flowRuntime2.default.property("uploadId", _flowRuntime2.default.string()), _flowRuntime2.default.property("blockNo", _flowRuntime2.default.string()), _flowRuntime2.default.property("blockCount", _flowRuntime2.default.string()), _flowRuntime2.default.property("filePath", _flowRuntime2.default.string()))), _flowRuntime2.default.param("action", _flowRuntime2.default.ref(HttpAction)), _flowRuntime2.default.param("protocol", _flowRuntime2.default.ref(Protocol)))));

/**
 * complete video upload
 * @param {string} uploadId
 * @param {string} parts
 * @param {string} title
 * @param {string} coverUrl
 * @ref https://open.lazada.com/apps/doc/api?path=%2Fmedia%2Fvideo%2Fblock%2Fcommit
 */
var completeCreateVideo = _flowRuntime2.default.ref(APIAction).assert(_flowRuntime2.default.annotate(function completeCreateVideo(appKey, appSecret, gateway, accessToken, payload) {
  var action = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : _constants2.HTTP_ACTION.GET;
  var protocol = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : _constants2.PROTOCOL.HTTPS;

  var _appKeyType15 = _flowRuntime2.default.string();

  var _appSecretType15 = _flowRuntime2.default.string();

  var _gatewayType15 = _flowRuntime2.default.string();

  var _accessTokenType15 = _flowRuntime2.default.string();

  var _payloadType13 = _flowRuntime2.default.object(_flowRuntime2.default.property("uploadId", _flowRuntime2.default.string()), _flowRuntime2.default.property("parts", _flowRuntime2.default.string()), _flowRuntime2.default.property("title", _flowRuntime2.default.string()), _flowRuntime2.default.property("coverUrl", _flowRuntime2.default.string()));

  var _actionType15 = _flowRuntime2.default.ref(HttpAction);

  var _protocolType16 = _flowRuntime2.default.ref(Protocol);

  _flowRuntime2.default.param("appKey", _appKeyType15).assert(appKey);

  _flowRuntime2.default.param("appSecret", _appSecretType15).assert(appSecret);

  _flowRuntime2.default.param("gateway", _gatewayType15).assert(gateway);

  _flowRuntime2.default.param("accessToken", _accessTokenType15).assert(accessToken);

  _flowRuntime2.default.param("payload", _payloadType13).assert(payload);

  _flowRuntime2.default.param("action", _actionType15, true).assert(action);

  _flowRuntime2.default.param("protocol", _protocolType16, true).assert(protocol);

  var apiPath = "/media/video/block/commit";
  var baseURL = getScheme(protocol) + gateway;
  return _LazadaRequest2.default.post(baseURL, appKey, appSecret, apiPath, accessToken, payload);
}, _flowRuntime2.default.function(_flowRuntime2.default.param("appKey", _flowRuntime2.default.string()), _flowRuntime2.default.param("appSecret", _flowRuntime2.default.string()), _flowRuntime2.default.param("gateway", _flowRuntime2.default.string()), _flowRuntime2.default.param("accessToken", _flowRuntime2.default.string()), _flowRuntime2.default.param("payload", _flowRuntime2.default.object(_flowRuntime2.default.property("uploadId", _flowRuntime2.default.string()), _flowRuntime2.default.property("parts", _flowRuntime2.default.string()), _flowRuntime2.default.property("title", _flowRuntime2.default.string()), _flowRuntime2.default.property("coverUrl", _flowRuntime2.default.string()))), _flowRuntime2.default.param("action", _flowRuntime2.default.ref(HttpAction)), _flowRuntime2.default.param("protocol", _flowRuntime2.default.ref(Protocol)))));

/**
 * TODO:
 * Use this API to migrate multiple images from an external site to Lazada site. Allowed image formats are JPG and PNG. The maximum size of an image file is 1MB. A single call can migrate 8 images at most.
 * @param {Object} payload xml string
 * @ref https://open.lazada.com/doc/api.htm?spm=a2o9m.11193487.0.0.3ac413fe8i3bMI#/api?cid=5&path=/images/migrate
 */
var migrateImages = _flowRuntime2.default.ref(APIAction).assert(_flowRuntime2.default.annotate(function migrateImages(appKey, appSecret, gateway, accessToken, payload) {
  var action = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : _constants2.HTTP_ACTION.GET;
  var protocol = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : _constants2.PROTOCOL.HTTPS;

  var _appKeyType16 = _flowRuntime2.default.string();

  var _appSecretType16 = _flowRuntime2.default.string();

  var _gatewayType16 = _flowRuntime2.default.string();

  var _accessTokenType16 = _flowRuntime2.default.nullable(_flowRuntime2.default.string());

  var _payloadType14 = _flowRuntime2.default.object(_flowRuntime2.default.property("payload", _flowRuntime2.default.string()));

  var _actionType16 = _flowRuntime2.default.ref(HttpAction);

  var _protocolType17 = _flowRuntime2.default.ref(Protocol);

  _flowRuntime2.default.param("appKey", _appKeyType16).assert(appKey);

  _flowRuntime2.default.param("appSecret", _appSecretType16).assert(appSecret);

  _flowRuntime2.default.param("gateway", _gatewayType16).assert(gateway);

  _flowRuntime2.default.param("accessToken", _accessTokenType16).assert(accessToken);

  _flowRuntime2.default.param("payload", _payloadType14).assert(payload);

  _flowRuntime2.default.param("action", _actionType16, true).assert(action);

  _flowRuntime2.default.param("protocol", _protocolType17, true).assert(protocol);

  var apiPath = "/images/migrate";
  var baseURL = getScheme(protocol) + gateway;
  return _LazadaRequest2.default.post(baseURL, appKey, appSecret, apiPath, accessToken, payload);
}, _flowRuntime2.default.function(_flowRuntime2.default.param("appKey", _flowRuntime2.default.string()), _flowRuntime2.default.param("appSecret", _flowRuntime2.default.string()), _flowRuntime2.default.param("gateway", _flowRuntime2.default.string()), _flowRuntime2.default.param("accessToken", _flowRuntime2.default.nullable(_flowRuntime2.default.string())), _flowRuntime2.default.param("payload", _flowRuntime2.default.object(_flowRuntime2.default.property("payload", _flowRuntime2.default.string()))), _flowRuntime2.default.param("action", _flowRuntime2.default.ref(HttpAction)), _flowRuntime2.default.param("protocol", _flowRuntime2.default.ref(Protocol)))));

/**
 *
 * @param {Object} payload
 * payload xml string
 * @ref https://open.lazada.com/doc/doc.htm?spm=a2o9m.11193535.0.0.6e6e38e475ZXlW#?nodeId=10557&docId=108252
 */
var updateProduct = _flowRuntime2.default.ref(APIAction).assert(_flowRuntime2.default.annotate(function updateProduct(appKey, appSecret, gateway, accessToken, payload) {
  var action = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : _constants2.HTTP_ACTION.GET;
  var protocol = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : _constants2.PROTOCOL.HTTPS;

  var _appKeyType17 = _flowRuntime2.default.string();

  var _appSecretType17 = _flowRuntime2.default.string();

  var _gatewayType17 = _flowRuntime2.default.string();

  var _accessTokenType17 = _flowRuntime2.default.nullable(_flowRuntime2.default.string());

  var _payloadType15 = _flowRuntime2.default.object(_flowRuntime2.default.property("payload", _flowRuntime2.default.string()));

  var _actionType17 = _flowRuntime2.default.ref(HttpAction);

  var _protocolType18 = _flowRuntime2.default.ref(Protocol);

  _flowRuntime2.default.param("appKey", _appKeyType17).assert(appKey);

  _flowRuntime2.default.param("appSecret", _appSecretType17).assert(appSecret);

  _flowRuntime2.default.param("gateway", _gatewayType17).assert(gateway);

  _flowRuntime2.default.param("accessToken", _accessTokenType17).assert(accessToken);

  _flowRuntime2.default.param("payload", _payloadType15).assert(payload);

  _flowRuntime2.default.param("action", _actionType17, true).assert(action);

  _flowRuntime2.default.param("protocol", _protocolType18, true).assert(protocol);

  var apiPath = "/product/update";
  var baseURL = getScheme(protocol) + gateway;
  return _LazadaRequest2.default.post(baseURL, appKey, appSecret, apiPath, accessToken, payload);
}, _flowRuntime2.default.function(_flowRuntime2.default.param("appKey", _flowRuntime2.default.string()), _flowRuntime2.default.param("appSecret", _flowRuntime2.default.string()), _flowRuntime2.default.param("gateway", _flowRuntime2.default.string()), _flowRuntime2.default.param("accessToken", _flowRuntime2.default.nullable(_flowRuntime2.default.string())), _flowRuntime2.default.param("payload", _flowRuntime2.default.object(_flowRuntime2.default.property("payload", _flowRuntime2.default.string()))), _flowRuntime2.default.param("action", _flowRuntime2.default.ref(HttpAction)), _flowRuntime2.default.param("protocol", _flowRuntime2.default.ref(Protocol)))));

/**
 * Migrate a single image from an external site to Lazada site.
 * Allowed image formats are JPG and PNG.
 * The maximum size of an image file is 1MB.
 * @param {Object} payload
 * ??
 */
var migrateImage = _flowRuntime2.default.ref(APIAction).assert(_flowRuntime2.default.annotate(function migrateImage(appKey, appSecret, gateway, accessToken, payload) {
  var action = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : _constants2.HTTP_ACTION.GET;
  var protocol = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : _constants2.PROTOCOL.HTTPS;

  var _appKeyType18 = _flowRuntime2.default.string();

  var _appSecretType18 = _flowRuntime2.default.string();

  var _gatewayType18 = _flowRuntime2.default.string();

  var _accessTokenType18 = _flowRuntime2.default.nullable(_flowRuntime2.default.string());

  var _payloadType16 = _flowRuntime2.default.object(_flowRuntime2.default.property("payload", _flowRuntime2.default.string()));

  var _actionType18 = _flowRuntime2.default.ref(HttpAction);

  var _protocolType19 = _flowRuntime2.default.ref(Protocol);

  _flowRuntime2.default.param("appKey", _appKeyType18).assert(appKey);

  _flowRuntime2.default.param("appSecret", _appSecretType18).assert(appSecret);

  _flowRuntime2.default.param("gateway", _gatewayType18).assert(gateway);

  _flowRuntime2.default.param("accessToken", _accessTokenType18).assert(accessToken);

  _flowRuntime2.default.param("payload", _payloadType16).assert(payload);

  _flowRuntime2.default.param("action", _actionType18, true).assert(action);

  _flowRuntime2.default.param("protocol", _protocolType19, true).assert(protocol);

  var apiPath = "/image/migrate";
  var baseURL = getScheme(protocol) + gateway;

  return _LazadaRequest2.default.post(baseURL, appKey, appSecret, apiPath, accessToken, payload);
}, _flowRuntime2.default.function(_flowRuntime2.default.param("appKey", _flowRuntime2.default.string()), _flowRuntime2.default.param("appSecret", _flowRuntime2.default.string()), _flowRuntime2.default.param("gateway", _flowRuntime2.default.string()), _flowRuntime2.default.param("accessToken", _flowRuntime2.default.nullable(_flowRuntime2.default.string())), _flowRuntime2.default.param("payload", _flowRuntime2.default.object(_flowRuntime2.default.property("payload", _flowRuntime2.default.string()))), _flowRuntime2.default.param("action", _flowRuntime2.default.ref(HttpAction)), _flowRuntime2.default.param("protocol", _flowRuntime2.default.ref(Protocol)))));

/**
 * Set the images for an existing product by associating one or more image URLs with it.
 * @param {Object} payload
 * @ref https://open.lazada.com/doc/doc.htm?spm=a2o9m.11193535.0.0.2de238e4eebY8v#?nodeId=10557&docId=108254
 */
var setImages = _flowRuntime2.default.ref(APIAction).assert(_flowRuntime2.default.annotate(function setImages(appKey, appSecret, gateway, accessToken, payload) {
  var action = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : _constants2.HTTP_ACTION.GET;
  var protocol = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : _constants2.PROTOCOL.HTTPS;

  var _appKeyType19 = _flowRuntime2.default.string();

  var _appSecretType19 = _flowRuntime2.default.string();

  var _gatewayType19 = _flowRuntime2.default.string();

  var _accessTokenType19 = _flowRuntime2.default.nullable(_flowRuntime2.default.string());

  var _payloadType17 = _flowRuntime2.default.object(_flowRuntime2.default.property("payload", _flowRuntime2.default.string()));

  var _actionType19 = _flowRuntime2.default.ref(HttpAction);

  var _protocolType20 = _flowRuntime2.default.ref(Protocol);

  _flowRuntime2.default.param("appKey", _appKeyType19).assert(appKey);

  _flowRuntime2.default.param("appSecret", _appSecretType19).assert(appSecret);

  _flowRuntime2.default.param("gateway", _gatewayType19).assert(gateway);

  _flowRuntime2.default.param("accessToken", _accessTokenType19).assert(accessToken);

  _flowRuntime2.default.param("payload", _payloadType17).assert(payload);

  _flowRuntime2.default.param("action", _actionType19, true).assert(action);

  _flowRuntime2.default.param("protocol", _protocolType20, true).assert(protocol);

  var apiPath = "/images/set";
  var baseURL = getScheme(protocol) + gateway;
  return _LazadaRequest2.default.post(baseURL, appKey, appSecret, apiPath, accessToken, payload);
}, _flowRuntime2.default.function(_flowRuntime2.default.param("appKey", _flowRuntime2.default.string()), _flowRuntime2.default.param("appSecret", _flowRuntime2.default.string()), _flowRuntime2.default.param("gateway", _flowRuntime2.default.string()), _flowRuntime2.default.param("accessToken", _flowRuntime2.default.nullable(_flowRuntime2.default.string())), _flowRuntime2.default.param("payload", _flowRuntime2.default.object(_flowRuntime2.default.property("payload", _flowRuntime2.default.string()))), _flowRuntime2.default.param("action", _flowRuntime2.default.ref(HttpAction)), _flowRuntime2.default.param("protocol", _flowRuntime2.default.ref(Protocol)))));

/**
 * Update the price and quantity of one or more existing products.
 * The maximum number of products that can be updated is 50, but 20 is recommended.
 * @param {string} payload
 * @ref https://open.lazada.com/doc/doc.htm?spm=a2o9m.11193535.0.0.2de238e4eebY8v#?nodeId=10557&docId=108251
 */
var updatePriceQuantity = _flowRuntime2.default.ref(APIAction).assert(_flowRuntime2.default.annotate(function updatePriceQuantity(appKey, appSecret, gateway, accessToken, payload) {
  var action = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : _constants2.HTTP_ACTION.GET;
  var protocol = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : _constants2.PROTOCOL.HTTPS;

  var _appKeyType20 = _flowRuntime2.default.string();

  var _appSecretType20 = _flowRuntime2.default.string();

  var _gatewayType20 = _flowRuntime2.default.string();

  var _accessTokenType20 = _flowRuntime2.default.nullable(_flowRuntime2.default.string());

  var _payloadType18 = _flowRuntime2.default.object(_flowRuntime2.default.property("payload", _flowRuntime2.default.string()));

  var _actionType20 = _flowRuntime2.default.ref(HttpAction);

  var _protocolType21 = _flowRuntime2.default.ref(Protocol);

  _flowRuntime2.default.param("appKey", _appKeyType20).assert(appKey);

  _flowRuntime2.default.param("appSecret", _appSecretType20).assert(appSecret);

  _flowRuntime2.default.param("gateway", _gatewayType20).assert(gateway);

  _flowRuntime2.default.param("accessToken", _accessTokenType20).assert(accessToken);

  _flowRuntime2.default.param("payload", _payloadType18).assert(payload);

  _flowRuntime2.default.param("action", _actionType20, true).assert(action);

  _flowRuntime2.default.param("protocol", _protocolType21, true).assert(protocol);

  var apiPath = "/product/price_quantity/update";
  var baseURL = getScheme(protocol) + gateway;
  return _LazadaRequest2.default.post(baseURL, appKey, appSecret, apiPath, accessToken, payload);
}, _flowRuntime2.default.function(_flowRuntime2.default.param("appKey", _flowRuntime2.default.string()), _flowRuntime2.default.param("appSecret", _flowRuntime2.default.string()), _flowRuntime2.default.param("gateway", _flowRuntime2.default.string()), _flowRuntime2.default.param("accessToken", _flowRuntime2.default.nullable(_flowRuntime2.default.string())), _flowRuntime2.default.param("payload", _flowRuntime2.default.object(_flowRuntime2.default.property("payload", _flowRuntime2.default.string()))), _flowRuntime2.default.param("action", _flowRuntime2.default.ref(HttpAction)), _flowRuntime2.default.param("protocol", _flowRuntime2.default.ref(Protocol)))));

/**
 * To remove an existing product, some SKUs in one product, or all SKUs in one product.
 * System supports a maximum number of 50 SellerSkus in one request
 * @param {Object} payload
 * seller_sku_list // Seller SKU in a json list e.g. ["asd","vvv","sss"], max 50 SellerSkus
 */
var removeProduct = _flowRuntime2.default.ref(APIAction).assert(_flowRuntime2.default.annotate(function removeProduct(appKey, appSecret, gateway, accessToken, payload) {
  var action = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : _constants2.HTTP_ACTION.GET;
  var protocol = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : _constants2.PROTOCOL.HTTPS;

  var _appKeyType21 = _flowRuntime2.default.string();

  var _appSecretType21 = _flowRuntime2.default.string();

  var _gatewayType21 = _flowRuntime2.default.string();

  var _accessTokenType21 = _flowRuntime2.default.nullable(_flowRuntime2.default.string());

  var _payloadType19 = _flowRuntime2.default.object(_flowRuntime2.default.property("seller_sku_list", _flowRuntime2.default.string()));

  var _actionType21 = _flowRuntime2.default.ref(HttpAction);

  var _protocolType22 = _flowRuntime2.default.ref(Protocol);

  _flowRuntime2.default.param("appKey", _appKeyType21).assert(appKey);

  _flowRuntime2.default.param("appSecret", _appSecretType21).assert(appSecret);

  _flowRuntime2.default.param("gateway", _gatewayType21).assert(gateway);

  _flowRuntime2.default.param("accessToken", _accessTokenType21).assert(accessToken);

  _flowRuntime2.default.param("payload", _payloadType19).assert(payload);

  _flowRuntime2.default.param("action", _actionType21, true).assert(action);

  _flowRuntime2.default.param("protocol", _protocolType22, true).assert(protocol);

  var apiPath = "/product/remove";
  var baseURL = getScheme(protocol) + gateway;
  return _LazadaRequest2.default.post(baseURL, appKey, appSecret, apiPath, accessToken, payload);
}, _flowRuntime2.default.function(_flowRuntime2.default.param("appKey", _flowRuntime2.default.string()), _flowRuntime2.default.param("appSecret", _flowRuntime2.default.string()), _flowRuntime2.default.param("gateway", _flowRuntime2.default.string()), _flowRuntime2.default.param("accessToken", _flowRuntime2.default.nullable(_flowRuntime2.default.string())), _flowRuntime2.default.param("payload", _flowRuntime2.default.object(_flowRuntime2.default.property("seller_sku_list", _flowRuntime2.default.string()))), _flowRuntime2.default.param("action", _flowRuntime2.default.ref(HttpAction)), _flowRuntime2.default.param("protocol", _flowRuntime2.default.ref(Protocol)))));

exports.default = {
  getProducts: getProducts,
  getCategoryTree: getCategoryTree,
  getCategoryAttributes: getCategoryAttributes,
  getBrands: getBrands,
  createProduct: createProduct,
  updateProduct: updateProduct,
  migrateImage: migrateImage,
  setImages: setImages,
  updatePriceQuantity: updatePriceQuantity,
  removeProduct: removeProduct,
  getResponse: getResponse,
  migrateImages: migrateImages,
  getProductCreateUrl: getProductCreateUrl,
  getProductUpdateUrl: getProductUpdateUrl,
  getProductItem: getProductItem,
  getCategorySuggestior: getCategorySuggestior,
  initCreateVideo: initCreateVideo,
  completeCreateVideo: completeCreateVideo,
  UploadVideoBlock: UploadVideoBlock,
  getVideo: getVideo,
  getSizeChartTemplate: getSizeChartTemplate
};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9MYXphZGFDbGllbnQvcHJvZHVjdC5qcyJdLCJuYW1lcyI6WyJnZXRTY2hlbWUiLCJwcm90b2NvbCIsIlBST1RPQ09MIiwiSFRUUCIsImFwcEtleSIsImFwcFNlY3JldCIsImdhdGV3YXkiLCJhY2Nlc3NUb2tlbiIsInBheWxvYWQiLCJhY3Rpb24iLCJIVFRQX0FDVElPTiIsIkdFVCIsIkhUVFBTIiwiYXBpUGF0aCIsImJhc2VVUkwiLCJMYXphZGFSZXF1ZXN0IiwiZ2V0IiwidW5kZWZpbmVkIiwicG9zdCIsImZpbGVQYXRoIiwidXBsb2FkRmlsZSIsImdldFByb2R1Y3RzIiwiZ2V0Q2F0ZWdvcnlUcmVlIiwiZ2V0Q2F0ZWdvcnlBdHRyaWJ1dGVzIiwiZ2V0QnJhbmRzIiwiY3JlYXRlUHJvZHVjdCIsInVwZGF0ZVByb2R1Y3QiLCJtaWdyYXRlSW1hZ2UiLCJzZXRJbWFnZXMiLCJ1cGRhdGVQcmljZVF1YW50aXR5IiwicmVtb3ZlUHJvZHVjdCIsImdldFJlc3BvbnNlIiwibWlncmF0ZUltYWdlcyIsImdldFByb2R1Y3RDcmVhdGVVcmwiLCJnZXRQcm9kdWN0VXBkYXRlVXJsIiwiZ2V0UHJvZHVjdEl0ZW0iLCJnZXRDYXRlZ29yeVN1Z2dlc3Rpb3IiLCJpbml0Q3JlYXRlVmlkZW8iLCJjb21wbGV0ZUNyZWF0ZVZpZGVvIiwiVXBsb2FkVmlkZW9CbG9jayIsImdldFZpZGVvIiwiZ2V0U2l6ZUNoYXJ0VGVtcGxhdGUiXSwibWFwcGluZ3MiOiJBQUNBOzs7Ozs7QUFFQTs7QUFDQTs7QUFDQTs7QUFFQTs7OztBQUNBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxJQUFNQSwyQ0FBWSxtQkFBQ0MsUUFBRCxFQUFnQztBQUFBLHNCQUF2QixtQ0FBdUI7O0FBQUEsaURBQVYsOEJBQVU7O0FBQUE7O0FBQ2hELDRCQUFPQSxhQUFhQyxxQkFBU0MsSUFBdEIsR0FBNkIsU0FBN0IsR0FBeUMsVUFBaEQ7QUFDRCxDQUZLLEVBQVksdUVBQVMs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QywwQkFYYTtBQVliQyw4QkFaYTtBQWFiQywwQ0FiYTtBQWNiQywwQ0FkYTtBQWViQyxnQ0FmYTtBQWdCYkMsOENBaEJhO0FBaUJiQyxrQ0FqQmE7QUFrQmJDLDBDQWxCYTtBQW1CYkMsb0NBbkJhO0FBb0JiQyxvQkFwQmE7QUFxQmJDO0FBckJhLEMiLCJmaWxlIjoicHJvZHVjdC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEBmbG93XG5cInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgR0FURVdBWSB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHR5cGUgeyBBUElBY3Rpb24gfSBmcm9tIFwiLi90eXBlcy9Db21tb25cIjtcbmltcG9ydCB0eXBlIHsgUHJvZHVjdEZpbHRlciB9IGZyb20gXCIuL3R5cGVzL1Byb2R1Y3RcIjtcblxuaW1wb3J0IExhemFkYVJlcXVlc3QgZnJvbSBcInNyYy9MYXphZGFSZXF1ZXN0XCI7XG5pbXBvcnQgeyBQUk9UT0NPTCwgSFRUUF9BQ1RJT04gfSBmcm9tIFwic3JjL0xhemFkYVJlcXVlc3QvY29uc3RhbnRzXCI7XG5pbXBvcnQgdHlwZSB7IFByb3RvY29sLCBIdHRwQWN0aW9uIH0gZnJvbSBcInNyYy9MYXphZGFSZXF1ZXN0L3R5cGVzL1JlcXVlc3RcIjtcblxuY29uc3QgZ2V0U2NoZW1lID0gKHByb3RvY29sOiBQcm90b2NvbCk6IHN0cmluZyA9PiB7XG4gIHJldHVybiBwcm90b2NvbCA9PT0gUFJPVE9DT0wuSFRUUCA/IFwiaHR0cDovL1wiIDogXCJodHRwczovL1wiO1xufTtcblxuLyoqXG4gKiBnZXRQcm9kdWN0cyBHRVQgL3Byb2R1Y3RzL2dldFxuICogQHBhcmFtIHtPYmplY3R9IHBheWxvYWRcbiAqIGZpbHRlciAgICAgICAgICAgOnJlcXVpcmUgJ2FsbCcsICdsaXZlJywgJ2luYWN0aXZlJywgJ2RlbGV0ZWQnLCAnaW1hZ2UtbWlzc2luZycsICdwZW5kaW5nJywgJ3JlamVjdGVkJywgJ3NvbGQtb3V0J1xuICogc2VhcmNoICAgICAgICAgICAgc2VhcmNoIGJ5IHByb2R1Y3QgbmFtZSBhbmQvb3IgU2VsbGVyIFNLVS5cbiAqIG9mZnNldFxuICogbGltaXQgICAgICAgICAgICAgMjAgYXMgZGVmYXVsdC4gbWF4aW11bSBwcm9kdWN0cyA1MDAuXG4gKiBvcHRpb25zICAgICAgICAgICBPcHRpb25zPTEgbWVhbnMgY29udGFpbiBSZXNlcnZlZFN0b2NrLCBSdHNTdG9jaywgUGVuZGluZ1N0b2NrLCBSZWFsVGltZVN0b2NrLCBGdWxmaWxsbWVudEJ5U2VsbGFibGUuXG4gKiBza3Vfc2VsbGVyX2xpc3QgICBKU09OIGFycmF5IChzdHJpbmdpZnkpLiBBIG1heGltdW0gb2YgMTAwIFNLVXMgY2FuIGJlIHJldHVybmVkLlxuICogdXBkYXRlX2JlZm9yZSAgICAgSVNPIDg2MDEgZGF0ZSBmb3JtYXRcbiAqIGNyZWF0ZV9iZWZvcmUgICAgIElTTyA4NjAxIGRhdGUgZm9ybWF0XG4gKiBjcmVhdGVfYWZ0ZXIgICAgICBJU08gODYwMSBkYXRlIGZvcm1hdFxuICogdXBkYXRlX2FmdGVyICAgICAgSVNPIDg2MDEgZGF0ZSBmb3JtYXRcbiAqL1xuY29uc3QgZ2V0UHJvZHVjdHM6IEFQSUFjdGlvbiA9IChcbiAgYXBwS2V5OiBzdHJpbmcsXG4gIGFwcFNlY3JldDogc3RyaW5nLFxuICBnYXRld2F5OiBzdHJpbmcsXG4gIGFjY2Vzc1Rva2VuOiA/c3RyaW5nLFxuICBwYXlsb2FkOiB7XG4gICAgZmlsdGVyOiBQcm9kdWN0RmlsdGVyLFxuICAgIHNlYXJjaD86IHN0cmluZyxcbiAgICBvZmZzZXQ/OiBudW1iZXIsXG4gICAgbGltaXQ/OiBudW1iZXIsXG4gICAgb3B0aW9ucz86IG51bWJlcixcbiAgICBza3Vfc2VsbGVyX2xpc3Q/OiBzdHJpbmcsXG4gICAgdXBkYXRlX2JlZm9yZT86IHN0cmluZyxcbiAgICBjcmVhdGVfYmVmb3JlPzogc3RyaW5nLFxuICAgIGNyZWF0ZV9hZnRlcj86IHN0cmluZyxcbiAgICB1cGRhdGVfYWZ0ZXI/OiBzdHJpbmcsXG4gIH0sXG4gIGFjdGlvbj86IEh0dHBBY3Rpb24gPSBIVFRQX0FDVElPTi5HRVQsXG4gIHByb3RvY29sPzogUHJvdG9jb2wgPSBQUk9UT0NPTC5IVFRQU1xuKSA9PiB7XG4gIGNvbnN0IGFwaVBhdGggPSBcIi9wcm9kdWN0cy9nZXRcIjtcbiAgY29uc3QgYmFzZVVSTCA9IGdldFNjaGVtZShwcm90b2NvbCkgKyBnYXRld2F5O1xuICByZXR1cm4gTGF6YWRhUmVxdWVzdC5nZXQoXG4gICAgYmFzZVVSTCxcbiAgICBhcHBLZXksXG4gICAgYXBwU2VjcmV0LFxuICAgIGFwaVBhdGgsXG4gICAgYWNjZXNzVG9rZW4sXG4gICAgcGF5bG9hZFxuICApO1xufTtcblxuLyoqXG4gKiBSZXRyaWV2ZSB0aGUgbGlzdCBvZiBhbGwgcHJvZHVjdCBjYXRlZ29yaWVzIGluIHRoZSBzeXN0ZW1cbiAqL1xuY29uc3QgZ2V0Q2F0ZWdvcnlUcmVlOiBBUElBY3Rpb24gPSAoXG4gIGFwcEtleTogc3RyaW5nLFxuICBhcHBTZWNyZXQ6IHN0cmluZyxcbiAgZ2F0ZXdheTogc3RyaW5nLFxuICBhY2Nlc3NUb2tlbjogP3N0cmluZyxcbiAgcGF5bG9hZDogYW55LFxuICBhY3Rpb24/OiBIdHRwQWN0aW9uID0gSFRUUF9BQ1RJT04uR0VULFxuICBwcm90b2NvbD86IFByb3RvY29sID0gUFJPVE9DT0wuSFRUUFNcbikgPT4ge1xuICBjb25zdCBhcGlQYXRoID0gXCIvY2F0ZWdvcnkvdHJlZS9nZXRcIjtcbiAgY29uc3QgYmFzZVVSTCA9IGdldFNjaGVtZShwcm90b2NvbCkgKyBnYXRld2F5O1xuICByZXR1cm4gTGF6YWRhUmVxdWVzdC5nZXQoYmFzZVVSTCwgYXBwS2V5LCBhcHBTZWNyZXQsIGFwaVBhdGgsIHVuZGVmaW5lZCk7XG59O1xuXG4vKipcbiAqIFJldHJpZXZlIGFwaSB1cmwgY3JlYXRlUHJvZHVjdFxuICovXG5jb25zdCBnZXRQcm9kdWN0Q3JlYXRlVXJsOiBBUElBY3Rpb24gPSAoXG4gIGFwcEtleTogc3RyaW5nLFxuICBhcHBTZWNyZXQ6IHN0cmluZyxcbiAgZ2F0ZXdheTogc3RyaW5nLFxuICBhY2Nlc3NUb2tlbjogP3N0cmluZyxcbiAgYWN0aW9uPzogSHR0cEFjdGlvbiA9IEhUVFBfQUNUSU9OLkdFVCxcbiAgcHJvdG9jb2w/OiBQcm90b2NvbCA9IFBST1RPQ09MLkhUVFBTXG4pID0+IHtcbiAgY29uc3QgYXBpUGF0aCA9IFwiL3Byb2R1Y3QvY3JlYXRlXCI7XG4gIGNvbnN0IGJhc2VVUkwgPSBnZXRTY2hlbWUocHJvdG9jb2wpICsgZ2F0ZXdheTtcbiAgcmV0dXJuIGJhc2VVUkwgKyBhcGlQYXRoO1xufTtcblxuLyoqXG4gKiBSZXRyaWV2ZSBhcGkgdXJsIHVwZGF0ZVByb2R1Y3RcbiAqL1xuY29uc3QgZ2V0UHJvZHVjdFVwZGF0ZVVybDogQVBJQWN0aW9uID0gKFxuICBhcHBLZXk6IHN0cmluZyxcbiAgYXBwU2VjcmV0OiBzdHJpbmcsXG4gIGdhdGV3YXk6IHN0cmluZyxcbiAgYWNjZXNzVG9rZW46ID9zdHJpbmcsXG4gIGFjdGlvbj86IEh0dHBBY3Rpb24gPSBIVFRQX0FDVElPTi5HRVQsXG4gIHByb3RvY29sPzogUHJvdG9jb2wgPSBQUk9UT0NPTC5IVFRQU1xuKSA9PiB7XG4gIGNvbnN0IGFwaVBhdGggPSBcIi9wcm9kdWN0L3VwZGF0ZVwiO1xuICBjb25zdCBiYXNlVVJMID0gZ2V0U2NoZW1lKHByb3RvY29sKSArIGdhdGV3YXk7XG4gIHJldHVybiBiYXNlVVJMICsgYXBpUGF0aDtcbn07XG5cbi8qKlxuICogR2V0IGEgbGlzdCBvZiBhdHRyaWJ1dGVzIGZvciBhIHNwZWNpZmllZCBwcm9kdWN0IGNhdGVnb3J5LlxuICogQHBhcmFtIHtPYmplY3R9IHBheWxvYWRcbiAqIHByaW1hcnlfY2F0ZWdvcnlfaWQgOnJlcXVpcmVcbiAqL1xuY29uc3QgZ2V0Q2F0ZWdvcnlBdHRyaWJ1dGVzOiBBUElBY3Rpb24gPSAoXG4gIGFwcEtleTogc3RyaW5nLFxuICBhcHBTZWNyZXQ6IHN0cmluZyxcbiAgZ2F0ZXdheTogc3RyaW5nLFxuICBhY2Nlc3NUb2tlbjogP3N0cmluZyxcbiAgcGF5bG9hZDoge1xuICAgIHByaW1hcnlfY2F0ZWdvcnlfaWQ6IHN0cmluZyxcbiAgfSxcbiAgYWN0aW9uPzogSHR0cEFjdGlvbiA9IEhUVFBfQUNUSU9OLkdFVCxcbiAgcHJvdG9jb2w/OiBQcm90b2NvbCA9IFBST1RPQ09MLkhUVFBTXG4pID0+IHtcbiAgY29uc3QgYXBpUGF0aCA9IFwiL2NhdGVnb3J5L2F0dHJpYnV0ZXMvZ2V0XCI7XG4gIGNvbnN0IGJhc2VVUkwgPSBnZXRTY2hlbWUocHJvdG9jb2wpICsgZ2F0ZXdheTtcbiAgcmV0dXJuIExhemFkYVJlcXVlc3QuZ2V0KFxuICAgIGJhc2VVUkwsXG4gICAgYXBwS2V5LFxuICAgIGFwcFNlY3JldCxcbiAgICBhcGlQYXRoLFxuICAgIHVuZGVmaW5lZCxcbiAgICBwYXlsb2FkXG4gICk7XG59O1xuXG4vKipcbiAqIEdldCBhIGxpc3Qgb2YgYXR0cmlidXRlcyBmb3IgYSBzcGVjaWZpZWQgcHJvZHVjdCBjYXRlZ29yeS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBwYXlsb2FkXG4gKiBwcm9kdWN0X25hbWUgOnJlcXVpcmVcbiAqL1xuY29uc3QgZ2V0Q2F0ZWdvcnlTdWdnZXN0aW9yOiBBUElBY3Rpb24gPSAoXG4gIGFwcEtleTogc3RyaW5nLFxuICBhcHBTZWNyZXQ6IHN0cmluZyxcbiAgZ2F0ZXdheTogc3RyaW5nLFxuICBhY2Nlc3NUb2tlbjogP3N0cmluZyxcbiAgcGF5bG9hZDoge1xuICAgIHByb2R1Y3RfbmFtZTogc3RyaW5nLFxuICB9LFxuICBhY3Rpb24/OiBIdHRwQWN0aW9uID0gSFRUUF9BQ1RJT04uR0VULFxuICBwcm90b2NvbD86IFByb3RvY29sID0gUFJPVE9DT0wuSFRUUFNcbikgPT4ge1xuICBjb25zdCBhcGlQYXRoID0gXCIvcHJvZHVjdC9jYXRlZ29yeS9zdWdnZXN0aW9uL2dldFwiO1xuICBjb25zdCBiYXNlVVJMID0gZ2V0U2NoZW1lKHByb3RvY29sKSArIGdhdGV3YXk7XG4gIHJldHVybiBMYXphZGFSZXF1ZXN0LmdldChcbiAgICBiYXNlVVJMLFxuICAgIGFwcEtleSxcbiAgICBhcHBTZWNyZXQsXG4gICAgYXBpUGF0aCxcbiAgICBhY2Nlc3NUb2tlbixcbiAgICBwYXlsb2FkXG4gICk7XG59O1xuXG4vKipcbiAqIEdldCBzaW5nbGUgcHJvZHVjdCBieSBJdGVtSWQgb3IgU2VsbGVyU2t1LlxuICogQHBhcmFtIHtPYmplY3R9IHBheWxvYWRcbiAqIGl0ZW1faWRcbiAqIHNlbGxlcl9za3VcbiAqL1xuY29uc3QgZ2V0UHJvZHVjdEl0ZW06IEFQSUFjdGlvbiA9IChcbiAgYXBwS2V5OiBzdHJpbmcsXG4gIGFwcFNlY3JldDogc3RyaW5nLFxuICBnYXRld2F5OiBzdHJpbmcsXG4gIGFjY2Vzc1Rva2VuOiA/c3RyaW5nLFxuICBwYXlsb2FkOiB7XG4gICAgc2VsbGVyX3NrdT86IHN0cmluZyxcbiAgICBpdGVtX2lkPzogbnVtYmVyLFxuICB9LFxuICBhY3Rpb24/OiBIdHRwQWN0aW9uID0gSFRUUF9BQ1RJT04uR0VULFxuICBwcm90b2NvbD86IFByb3RvY29sID0gUFJPVE9DT0wuSFRUUFNcbikgPT4ge1xuICBjb25zdCBhcGlQYXRoID0gXCIvcHJvZHVjdC9pdGVtL2dldFwiO1xuICBjb25zdCBiYXNlVVJMID0gZ2V0U2NoZW1lKHByb3RvY29sKSArIGdhdGV3YXk7XG4gIHJldHVybiBMYXphZGFSZXF1ZXN0LmdldChcbiAgICBiYXNlVVJMLFxuICAgIGFwcEtleSxcbiAgICBhcHBTZWNyZXQsXG4gICAgYXBpUGF0aCxcbiAgICBhY2Nlc3NUb2tlbixcbiAgICBwYXlsb2FkXG4gICk7XG59O1xuXG4vKipcbiAqIEdldCB2aWRlbyBpbmZvLlxuICogQHBhcmFtIHtPYmplY3R9IHBheWxvYWRcbiAqIHZpZGVvSWRcbiAqL1xuY29uc3QgZ2V0VmlkZW86IEFQSUFjdGlvbiA9IChcbiAgYXBwS2V5OiBzdHJpbmcsXG4gIGFwcFNlY3JldDogc3RyaW5nLFxuICBnYXRld2F5OiBzdHJpbmcsXG4gIGFjY2Vzc1Rva2VuOiA/c3RyaW5nLFxuICBwYXlsb2FkOiB7XG4gICAgdmlkZW9JZDogbnVtYmVyLFxuICB9LFxuICBhY3Rpb24/OiBIdHRwQWN0aW9uID0gSFRUUF9BQ1RJT04uR0VULFxuICBwcm90b2NvbD86IFByb3RvY29sID0gUFJPVE9DT0wuSFRUUFNcbikgPT4ge1xuICBjb25zdCBhcGlQYXRoID0gXCIvbWVkaWEvdmlkZW8vZ2V0XCI7XG4gIGNvbnN0IGJhc2VVUkwgPSBnZXRTY2hlbWUocHJvdG9jb2wpICsgZ2F0ZXdheTtcbiAgcmV0dXJuIExhemFkYVJlcXVlc3QuZ2V0KFxuICAgIGJhc2VVUkwsXG4gICAgYXBwS2V5LFxuICAgIGFwcFNlY3JldCxcbiAgICBhcGlQYXRoLFxuICAgIGFjY2Vzc1Rva2VuLFxuICAgIHBheWxvYWRcbiAgKTtcbn07XG5cbi8qKlxuICogVXNlIHRoaXMgQVBJIHRvIGdldCB0aGUgcmV0dXJuZWQgaW5mb3JtYXRpb24gZnJvbSB0aGUgc3lzdGVtIGZvciB0aGUgTWlncmF0ZUltYWdlcyBBUEkuXG4gKiBAcGFyYW0ge09iamVjdH0gcGF5bG9hZFxuICogYmF0Y2hfaWQgOnJlcXVpcmVcbiAqL1xuY29uc3QgZ2V0UmVzcG9uc2U6IEFQSUFjdGlvbiA9IChcbiAgYXBwS2V5OiBzdHJpbmcsXG4gIGFwcFNlY3JldDogc3RyaW5nLFxuICBnYXRld2F5OiBzdHJpbmcsXG4gIGFjY2Vzc1Rva2VuOiBzdHJpbmcsXG4gIHBheWxvYWQ6IHtcbiAgICBiYXRjaF9pZDogc3RyaW5nLFxuICB9LFxuICBhY3Rpb24/OiBIdHRwQWN0aW9uID0gSFRUUF9BQ1RJT04uR0VULFxuICBwcm90b2NvbD86IFByb3RvY29sID0gUFJPVE9DT0wuSFRUUFNcbikgPT4ge1xuICBjb25zdCBhcGlQYXRoID0gXCIvaW1hZ2UvcmVzcG9uc2UvZ2V0XCI7XG4gIGNvbnN0IGJhc2VVUkwgPSBnZXRTY2hlbWUocHJvdG9jb2wpICsgZ2F0ZXdheTtcbiAgcmV0dXJuIExhemFkYVJlcXVlc3QuZ2V0KFxuICAgIGJhc2VVUkwsXG4gICAgYXBwS2V5LFxuICAgIGFwcFNlY3JldCxcbiAgICBhcGlQYXRoLFxuICAgIGFjY2Vzc1Rva2VuLFxuICAgIHBheWxvYWRcbiAgKTtcbn07XG5cbi8qKlxuICogUmV0cmlldmUgYWxsIHNpemUgY2hhcnQgdGVtcGxhdGUuXG4gKiBAcGFyYW0ge09iamVjdH0gcGF5bG9hZFxuICogcGFnZV9ubyA6cmVxdWlyZVxuICogcGFnZV9zaXplICA6cmVxdWlyZVxuICovXG5jb25zdCBnZXRTaXplQ2hhcnRUZW1wbGF0ZTogQVBJQWN0aW9uID0gKFxuICBhcHBLZXk6IHN0cmluZyxcbiAgYXBwU2VjcmV0OiBzdHJpbmcsXG4gIGdhdGV3YXk6IHN0cmluZyxcbiAgYWNjZXNzVG9rZW46IHN0cmluZyxcbiAgcGF5bG9hZDogeyBwYWdlX25vOiBzdHJpbmcsIHBhZ2Vfc2l6ZTogc3RyaW5nIH0sXG4gIGFjdGlvbj86IEh0dHBBY3Rpb24gPSBIVFRQX0FDVElPTi5HRVQsXG4gIHByb3RvY29sPzogUHJvdG9jb2wgPSBQUk9UT0NPTC5IVFRQU1xuKSA9PiB7XG4gIGNvbnN0IGFwaVBhdGggPSBcIi9zaXplL2NoYXJ0L3RlbXBsYXRlL2dldFwiO1xuICBjb25zdCBiYXNlVVJMID0gZ2V0U2NoZW1lKHByb3RvY29sKSArIGdhdGV3YXk7XG4gIHJldHVybiBMYXphZGFSZXF1ZXN0LmdldChcbiAgICBiYXNlVVJMLFxuICAgIGFwcEtleSxcbiAgICBhcHBTZWNyZXQsXG4gICAgYXBpUGF0aCxcbiAgICBhY2Nlc3NUb2tlbixcbiAgICBwYXlsb2FkXG4gICk7XG59O1xuXG4vKipcbiAqIFJldHJpZXZlIGFsbCBwcm9kdWN0IGJyYW5kcyBpbiB0aGUgc3lzdGVtLlxuICogQHBhcmFtIHtPYmplY3R9IHBheWxvYWRcbiAqIHN0YXJ0Um93IDpyZXF1aXJlXG4gKiBwYWdlU2l6ZSAgOnJlcXVpcmVcbiAqIGxhbmd1YWdlQ29kZSAgOnJlcXVpcmVcbiAqL1xuY29uc3QgZ2V0QnJhbmRzOiBBUElBY3Rpb24gPSAoXG4gIGFwcEtleTogc3RyaW5nLFxuICBhcHBTZWNyZXQ6IHN0cmluZyxcbiAgZ2F0ZXdheTogc3RyaW5nLFxuICBhY2Nlc3NUb2tlbjogP3N0cmluZyxcbiAgcGF5bG9hZDogeyBzdGFydFJvdzogc3RyaW5nLCBwYWdlU2l6ZTogc3RyaW5nLCBsYW5ndWFnZUNvZGU6IHN0cmluZyB9LFxuICBhY3Rpb24/OiBIdHRwQWN0aW9uID0gSFRUUF9BQ1RJT04uR0VULFxuICBwcm90b2NvbD86IFByb3RvY29sID0gUFJPVE9DT0wuSFRUUFNcbikgPT4ge1xuICBjb25zdCBhcGlQYXRoID0gXCIvY2F0ZWdvcnkvYnJhbmRzL3F1ZXJ5XCI7XG4gIGNvbnN0IGJhc2VVUkwgPSBnZXRTY2hlbWUocHJvdG9jb2wpICsgZ2F0ZXdheTtcbiAgcmV0dXJuIExhemFkYVJlcXVlc3QuZ2V0KFxuICAgIGJhc2VVUkwsXG4gICAgYXBwS2V5LFxuICAgIGFwcFNlY3JldCxcbiAgICBhcGlQYXRoLFxuICAgIHVuZGVmaW5lZCxcbiAgICBwYXlsb2FkXG4gICk7XG59O1xuXG4vKipcbiAqIFRPRE86XG4gKiBAcGFyYW0ge09iamVjdH0gcGF5bG9hZCB4bWwgc3RyaW5nXG4gKiBAcmVmIGh0dHBzOi8vb3Blbi5sYXphZGEuY29tL2RvYy9kb2MuaHRtP3NwbT1hMm85bS4xMTE5MzUzNS4wLjAuMmRlMjM4ZTRlZWJZOHYjP25vZGVJZD0xMDU1NyZkb2NJZD0xMDgyNTNcbiAqL1xuY29uc3QgY3JlYXRlUHJvZHVjdDogQVBJQWN0aW9uID0gKFxuICBhcHBLZXk6IHN0cmluZyxcbiAgYXBwU2VjcmV0OiBzdHJpbmcsXG4gIGdhdGV3YXk6IHN0cmluZyxcbiAgYWNjZXNzVG9rZW46ID9zdHJpbmcsXG4gIHBheWxvYWQ6IHtcbiAgICBwYXlsb2FkOiBzdHJpbmcsXG4gIH0sXG4gIGFjdGlvbj86IEh0dHBBY3Rpb24gPSBIVFRQX0FDVElPTi5HRVQsXG4gIHByb3RvY29sPzogUHJvdG9jb2wgPSBQUk9UT0NPTC5IVFRQU1xuKSA9PiB7XG4gIGNvbnN0IGFwaVBhdGggPSBcIi9wcm9kdWN0L2NyZWF0ZVwiO1xuICBjb25zdCBiYXNlVVJMID0gZ2V0U2NoZW1lKHByb3RvY29sKSArIGdhdGV3YXk7XG4gIHJldHVybiBMYXphZGFSZXF1ZXN0LnBvc3QoXG4gICAgYmFzZVVSTCxcbiAgICBhcHBLZXksXG4gICAgYXBwU2VjcmV0LFxuICAgIGFwaVBhdGgsXG4gICAgYWNjZXNzVG9rZW4sXG4gICAgcGF5bG9hZFxuICApO1xufTtcblxuLyoqXG4gKiBpbml0IHZpZGVvIHVwbG9hZFxuICogQHBhcmFtIHtzdHJpbmd9IGZpbGVOYW1lXG4gKiBAcGFyYW0ge3N0cmluZ30gZmlsZUJ5dGVzXG4gKiBAcmVmIGh0dHBzOi8vb3Blbi5sYXphZGEuY29tL2FwcHMvZG9jL2FwaT9wYXRoPSUyRm1lZGlhJTJGdmlkZW8lMkZibG9jayUyRmNyZWF0ZVxuICovXG5jb25zdCBpbml0Q3JlYXRlVmlkZW86IEFQSUFjdGlvbiA9IChcbiAgYXBwS2V5OiBzdHJpbmcsXG4gIGFwcFNlY3JldDogc3RyaW5nLFxuICBnYXRld2F5OiBzdHJpbmcsXG4gIGFjY2Vzc1Rva2VuOiBzdHJpbmcsXG4gIHBheWxvYWQ6IHtcbiAgICBmaWxlTmFtZTogc3RyaW5nLFxuICAgIGZpbGVCeXRlczogbnVtYmVyLFxuICB9LFxuICBhY3Rpb24/OiBIdHRwQWN0aW9uID0gSFRUUF9BQ1RJT04uR0VULFxuICBwcm90b2NvbD86IFByb3RvY29sID0gUFJPVE9DT0wuSFRUUFNcbikgPT4ge1xuICBjb25zdCBhcGlQYXRoID0gXCIvbWVkaWEvdmlkZW8vYmxvY2svY3JlYXRlXCI7XG4gIGNvbnN0IGJhc2VVUkwgPSBnZXRTY2hlbWUocHJvdG9jb2wpICsgZ2F0ZXdheTtcbiAgcmV0dXJuIExhemFkYVJlcXVlc3QucG9zdChcbiAgICBiYXNlVVJMLFxuICAgIGFwcEtleSxcbiAgICBhcHBTZWNyZXQsXG4gICAgYXBpUGF0aCxcbiAgICBhY2Nlc3NUb2tlbixcbiAgICBwYXlsb2FkXG4gICk7XG59O1xuXG4vKipcbiAqIHVwbG9hZCB2aWRlbyBibG9ja1xuICogQHBhcmFtIHtzdHJpbmd9IHVwbG9hZElkXG4gKiBAcGFyYW0ge3N0cmluZ30gYmxvY2tOb1xuICogQHBhcmFtIHtzdHJpbmd9IGJsb2NrQ291bnRcbiAqIEBwYXJhbSB7QXJyYXk8c3RyaW5nPn0gZmlsZVxuICogQHJlZiBodHRwczovL29wZW4ubGF6YWRhLmNvbS9hcHBzL2RvYy9hcGk/cGF0aD0lMkZtZWRpYSUyRnZpZGVvJTJGYmxvY2slMkZ1cGxvYWRcbiAqL1xuY29uc3QgVXBsb2FkVmlkZW9CbG9jazogQVBJQWN0aW9uID0gKFxuICBhcHBLZXk6IHN0cmluZyxcbiAgYXBwU2VjcmV0OiBzdHJpbmcsXG4gIGdhdGV3YXk6IHN0cmluZyxcbiAgYWNjZXNzVG9rZW46IHN0cmluZyxcbiAgcGF5bG9hZDoge1xuICAgIHVwbG9hZElkOiBzdHJpbmcsXG4gICAgYmxvY2tObzogc3RyaW5nLFxuICAgIGJsb2NrQ291bnQ6IHN0cmluZyxcbiAgICBmaWxlUGF0aDogc3RyaW5nLFxuICB9LFxuICBhY3Rpb24/OiBIdHRwQWN0aW9uID0gSFRUUF9BQ1RJT04uR0VULFxuICBwcm90b2NvbD86IFByb3RvY29sID0gUFJPVE9DT0wuSFRUUFNcbikgPT4ge1xuICBjb25zdCBhcGlQYXRoID0gXCIvbWVkaWEvdmlkZW8vYmxvY2svdXBsb2FkXCI7XG4gIGNvbnN0IGJhc2VVUkwgPSBnZXRTY2hlbWUocHJvdG9jb2wpICsgZ2F0ZXdheTtcbiAgY29uc3QgZmlsZVBhdGggPSBwYXlsb2FkLmZpbGVQYXRoO1xuICBkZWxldGUgcGF5bG9hZC5maWxlUGF0aDtcbiAgcmV0dXJuIExhemFkYVJlcXVlc3QudXBsb2FkRmlsZShcbiAgICBiYXNlVVJMLFxuICAgIGFwcEtleSxcbiAgICBhcHBTZWNyZXQsXG4gICAgYXBpUGF0aCxcbiAgICBhY2Nlc3NUb2tlbixcbiAgICBmaWxlUGF0aCxcbiAgICBwYXlsb2FkXG4gICk7XG59O1xuXG4vKipcbiAqIGNvbXBsZXRlIHZpZGVvIHVwbG9hZFxuICogQHBhcmFtIHtzdHJpbmd9IHVwbG9hZElkXG4gKiBAcGFyYW0ge3N0cmluZ30gcGFydHNcbiAqIEBwYXJhbSB7c3RyaW5nfSB0aXRsZVxuICogQHBhcmFtIHtzdHJpbmd9IGNvdmVyVXJsXG4gKiBAcmVmIGh0dHBzOi8vb3Blbi5sYXphZGEuY29tL2FwcHMvZG9jL2FwaT9wYXRoPSUyRm1lZGlhJTJGdmlkZW8lMkZibG9jayUyRmNvbW1pdFxuICovXG5jb25zdCBjb21wbGV0ZUNyZWF0ZVZpZGVvOiBBUElBY3Rpb24gPSAoXG4gIGFwcEtleTogc3RyaW5nLFxuICBhcHBTZWNyZXQ6IHN0cmluZyxcbiAgZ2F0ZXdheTogc3RyaW5nLFxuICBhY2Nlc3NUb2tlbjogc3RyaW5nLFxuICBwYXlsb2FkOiB7XG4gICAgdXBsb2FkSWQ6IHN0cmluZyxcbiAgICBwYXJ0czogc3RyaW5nLFxuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgY292ZXJVcmw6IHN0cmluZyxcbiAgfSxcbiAgYWN0aW9uPzogSHR0cEFjdGlvbiA9IEhUVFBfQUNUSU9OLkdFVCxcbiAgcHJvdG9jb2w/OiBQcm90b2NvbCA9IFBST1RPQ09MLkhUVFBTXG4pID0+IHtcbiAgY29uc3QgYXBpUGF0aCA9IFwiL21lZGlhL3ZpZGVvL2Jsb2NrL2NvbW1pdFwiO1xuICBjb25zdCBiYXNlVVJMID0gZ2V0U2NoZW1lKHByb3RvY29sKSArIGdhdGV3YXk7XG4gIHJldHVybiBMYXphZGFSZXF1ZXN0LnBvc3QoXG4gICAgYmFzZVVSTCxcbiAgICBhcHBLZXksXG4gICAgYXBwU2VjcmV0LFxuICAgIGFwaVBhdGgsXG4gICAgYWNjZXNzVG9rZW4sXG4gICAgcGF5bG9hZFxuICApO1xufTtcblxuLyoqXG4gKiBUT0RPOlxuICogVXNlIHRoaXMgQVBJIHRvIG1pZ3JhdGUgbXVsdGlwbGUgaW1hZ2VzIGZyb20gYW4gZXh0ZXJuYWwgc2l0ZSB0byBMYXphZGEgc2l0ZS4gQWxsb3dlZCBpbWFnZSBmb3JtYXRzIGFyZSBKUEcgYW5kIFBORy4gVGhlIG1heGltdW0gc2l6ZSBvZiBhbiBpbWFnZSBmaWxlIGlzIDFNQi4gQSBzaW5nbGUgY2FsbCBjYW4gbWlncmF0ZSA4IGltYWdlcyBhdCBtb3N0LlxuICogQHBhcmFtIHtPYmplY3R9IHBheWxvYWQgeG1sIHN0cmluZ1xuICogQHJlZiBodHRwczovL29wZW4ubGF6YWRhLmNvbS9kb2MvYXBpLmh0bT9zcG09YTJvOW0uMTExOTM0ODcuMC4wLjNhYzQxM2ZlOGkzYk1JIy9hcGk/Y2lkPTUmcGF0aD0vaW1hZ2VzL21pZ3JhdGVcbiAqL1xuY29uc3QgbWlncmF0ZUltYWdlczogQVBJQWN0aW9uID0gKFxuICBhcHBLZXk6IHN0cmluZyxcbiAgYXBwU2VjcmV0OiBzdHJpbmcsXG4gIGdhdGV3YXk6IHN0cmluZyxcbiAgYWNjZXNzVG9rZW46ID9zdHJpbmcsXG4gIHBheWxvYWQ6IHtcbiAgICBwYXlsb2FkOiBzdHJpbmcsXG4gIH0sXG4gIGFjdGlvbj86IEh0dHBBY3Rpb24gPSBIVFRQX0FDVElPTi5HRVQsXG4gIHByb3RvY29sPzogUHJvdG9jb2wgPSBQUk9UT0NPTC5IVFRQU1xuKSA9PiB7XG4gIGNvbnN0IGFwaVBhdGggPSBcIi9pbWFnZXMvbWlncmF0ZVwiO1xuICBjb25zdCBiYXNlVVJMID0gZ2V0U2NoZW1lKHByb3RvY29sKSArIGdhdGV3YXk7XG4gIHJldHVybiBMYXphZGFSZXF1ZXN0LnBvc3QoXG4gICAgYmFzZVVSTCxcbiAgICBhcHBLZXksXG4gICAgYXBwU2VjcmV0LFxuICAgIGFwaVBhdGgsXG4gICAgYWNjZXNzVG9rZW4sXG4gICAgcGF5bG9hZFxuICApO1xufTtcblxuLyoqXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHBheWxvYWRcbiAqIHBheWxvYWQgeG1sIHN0cmluZ1xuICogQHJlZiBodHRwczovL29wZW4ubGF6YWRhLmNvbS9kb2MvZG9jLmh0bT9zcG09YTJvOW0uMTExOTM1MzUuMC4wLjZlNmUzOGU0NzVaWGxXIz9ub2RlSWQ9MTA1NTcmZG9jSWQ9MTA4MjUyXG4gKi9cbmNvbnN0IHVwZGF0ZVByb2R1Y3Q6IEFQSUFjdGlvbiA9IChcbiAgYXBwS2V5OiBzdHJpbmcsXG4gIGFwcFNlY3JldDogc3RyaW5nLFxuICBnYXRld2F5OiBzdHJpbmcsXG4gIGFjY2Vzc1Rva2VuOiA/c3RyaW5nLFxuICBwYXlsb2FkOiB7XG4gICAgcGF5bG9hZDogc3RyaW5nLFxuICB9LFxuICBhY3Rpb24/OiBIdHRwQWN0aW9uID0gSFRUUF9BQ1RJT04uR0VULFxuICBwcm90b2NvbD86IFByb3RvY29sID0gUFJPVE9DT0wuSFRUUFNcbikgPT4ge1xuICBjb25zdCBhcGlQYXRoID0gXCIvcHJvZHVjdC91cGRhdGVcIjtcbiAgY29uc3QgYmFzZVVSTCA9IGdldFNjaGVtZShwcm90b2NvbCkgKyBnYXRld2F5O1xuICByZXR1cm4gTGF6YWRhUmVxdWVzdC5wb3N0KFxuICAgIGJhc2VVUkwsXG4gICAgYXBwS2V5LFxuICAgIGFwcFNlY3JldCxcbiAgICBhcGlQYXRoLFxuICAgIGFjY2Vzc1Rva2VuLFxuICAgIHBheWxvYWRcbiAgKTtcbn07XG5cbi8qKlxuICogTWlncmF0ZSBhIHNpbmdsZSBpbWFnZSBmcm9tIGFuIGV4dGVybmFsIHNpdGUgdG8gTGF6YWRhIHNpdGUuXG4gKiBBbGxvd2VkIGltYWdlIGZvcm1hdHMgYXJlIEpQRyBhbmQgUE5HLlxuICogVGhlIG1heGltdW0gc2l6ZSBvZiBhbiBpbWFnZSBmaWxlIGlzIDFNQi5cbiAqIEBwYXJhbSB7T2JqZWN0fSBwYXlsb2FkXG4gKiA/P1xuICovXG5jb25zdCBtaWdyYXRlSW1hZ2U6IEFQSUFjdGlvbiA9IChcbiAgYXBwS2V5OiBzdHJpbmcsXG4gIGFwcFNlY3JldDogc3RyaW5nLFxuICBnYXRld2F5OiBzdHJpbmcsXG4gIGFjY2Vzc1Rva2VuOiA/c3RyaW5nLFxuICBwYXlsb2FkOiB7XG4gICAgcGF5bG9hZDogc3RyaW5nLCAvLyB4bWwgc3RyaW5nXG4gIH0sXG4gIGFjdGlvbj86IEh0dHBBY3Rpb24gPSBIVFRQX0FDVElPTi5HRVQsXG4gIHByb3RvY29sPzogUHJvdG9jb2wgPSBQUk9UT0NPTC5IVFRQU1xuKSA9PiB7XG4gIGNvbnN0IGFwaVBhdGggPSBcIi9pbWFnZS9taWdyYXRlXCI7XG4gIGNvbnN0IGJhc2VVUkwgPSBnZXRTY2hlbWUocHJvdG9jb2wpICsgZ2F0ZXdheTtcblxuICByZXR1cm4gTGF6YWRhUmVxdWVzdC5wb3N0KFxuICAgIGJhc2VVUkwsXG4gICAgYXBwS2V5LFxuICAgIGFwcFNlY3JldCxcbiAgICBhcGlQYXRoLFxuICAgIGFjY2Vzc1Rva2VuLFxuICAgIHBheWxvYWRcbiAgKTtcbn07XG5cbi8qKlxuICogU2V0IHRoZSBpbWFnZXMgZm9yIGFuIGV4aXN0aW5nIHByb2R1Y3QgYnkgYXNzb2NpYXRpbmcgb25lIG9yIG1vcmUgaW1hZ2UgVVJMcyB3aXRoIGl0LlxuICogQHBhcmFtIHtPYmplY3R9IHBheWxvYWRcbiAqIEByZWYgaHR0cHM6Ly9vcGVuLmxhemFkYS5jb20vZG9jL2RvYy5odG0/c3BtPWEybzltLjExMTkzNTM1LjAuMC4yZGUyMzhlNGVlYlk4diM/bm9kZUlkPTEwNTU3JmRvY0lkPTEwODI1NFxuICovXG5jb25zdCBzZXRJbWFnZXM6IEFQSUFjdGlvbiA9IChcbiAgYXBwS2V5OiBzdHJpbmcsXG4gIGFwcFNlY3JldDogc3RyaW5nLFxuICBnYXRld2F5OiBzdHJpbmcsXG4gIGFjY2Vzc1Rva2VuOiA/c3RyaW5nLFxuICBwYXlsb2FkOiB7XG4gICAgcGF5bG9hZDogc3RyaW5nLCAvLyB4bWwgc3RyaW5nXG4gIH0sXG4gIGFjdGlvbj86IEh0dHBBY3Rpb24gPSBIVFRQX0FDVElPTi5HRVQsXG4gIHByb3RvY29sPzogUHJvdG9jb2wgPSBQUk9UT0NPTC5IVFRQU1xuKSA9PiB7XG4gIGNvbnN0IGFwaVBhdGggPSBcIi9pbWFnZXMvc2V0XCI7XG4gIGNvbnN0IGJhc2VVUkwgPSBnZXRTY2hlbWUocHJvdG9jb2wpICsgZ2F0ZXdheTtcbiAgcmV0dXJuIExhemFkYVJlcXVlc3QucG9zdChcbiAgICBiYXNlVVJMLFxuICAgIGFwcEtleSxcbiAgICBhcHBTZWNyZXQsXG4gICAgYXBpUGF0aCxcbiAgICBhY2Nlc3NUb2tlbixcbiAgICBwYXlsb2FkXG4gICk7XG59O1xuXG4vKipcbiAqIFVwZGF0ZSB0aGUgcHJpY2UgYW5kIHF1YW50aXR5IG9mIG9uZSBvciBtb3JlIGV4aXN0aW5nIHByb2R1Y3RzLlxuICogVGhlIG1heGltdW0gbnVtYmVyIG9mIHByb2R1Y3RzIHRoYXQgY2FuIGJlIHVwZGF0ZWQgaXMgNTAsIGJ1dCAyMCBpcyByZWNvbW1lbmRlZC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXlsb2FkXG4gKiBAcmVmIGh0dHBzOi8vb3Blbi5sYXphZGEuY29tL2RvYy9kb2MuaHRtP3NwbT1hMm85bS4xMTE5MzUzNS4wLjAuMmRlMjM4ZTRlZWJZOHYjP25vZGVJZD0xMDU1NyZkb2NJZD0xMDgyNTFcbiAqL1xuY29uc3QgdXBkYXRlUHJpY2VRdWFudGl0eTogQVBJQWN0aW9uID0gKFxuICBhcHBLZXk6IHN0cmluZyxcbiAgYXBwU2VjcmV0OiBzdHJpbmcsXG4gIGdhdGV3YXk6IHN0cmluZyxcbiAgYWNjZXNzVG9rZW46ID9zdHJpbmcsXG4gIHBheWxvYWQ6IHtcbiAgICBwYXlsb2FkOiBzdHJpbmcsXG4gIH0sXG4gIGFjdGlvbj86IEh0dHBBY3Rpb24gPSBIVFRQX0FDVElPTi5HRVQsXG4gIHByb3RvY29sPzogUHJvdG9jb2wgPSBQUk9UT0NPTC5IVFRQU1xuKSA9PiB7XG4gIGNvbnN0IGFwaVBhdGggPSBcIi9wcm9kdWN0L3ByaWNlX3F1YW50aXR5L3VwZGF0ZVwiO1xuICBjb25zdCBiYXNlVVJMID0gZ2V0U2NoZW1lKHByb3RvY29sKSArIGdhdGV3YXk7XG4gIHJldHVybiBMYXphZGFSZXF1ZXN0LnBvc3QoXG4gICAgYmFzZVVSTCxcbiAgICBhcHBLZXksXG4gICAgYXBwU2VjcmV0LFxuICAgIGFwaVBhdGgsXG4gICAgYWNjZXNzVG9rZW4sXG4gICAgcGF5bG9hZFxuICApO1xufTtcblxuLyoqXG4gKiBUbyByZW1vdmUgYW4gZXhpc3RpbmcgcHJvZHVjdCwgc29tZSBTS1VzIGluIG9uZSBwcm9kdWN0LCBvciBhbGwgU0tVcyBpbiBvbmUgcHJvZHVjdC5cbiAqIFN5c3RlbSBzdXBwb3J0cyBhIG1heGltdW0gbnVtYmVyIG9mIDUwIFNlbGxlclNrdXMgaW4gb25lIHJlcXVlc3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBwYXlsb2FkXG4gKiBzZWxsZXJfc2t1X2xpc3QgLy8gU2VsbGVyIFNLVSBpbiBhIGpzb24gbGlzdCBlLmcuIFtcImFzZFwiLFwidnZ2XCIsXCJzc3NcIl0sIG1heCA1MCBTZWxsZXJTa3VzXG4gKi9cbmNvbnN0IHJlbW92ZVByb2R1Y3Q6IEFQSUFjdGlvbiA9IChcbiAgYXBwS2V5OiBzdHJpbmcsXG4gIGFwcFNlY3JldDogc3RyaW5nLFxuICBnYXRld2F5OiBzdHJpbmcsXG4gIGFjY2Vzc1Rva2VuOiA/c3RyaW5nLFxuICBwYXlsb2FkOiB7XG4gICAgc2VsbGVyX3NrdV9saXN0OiBzdHJpbmcsXG4gIH0sXG4gIGFjdGlvbj86IEh0dHBBY3Rpb24gPSBIVFRQX0FDVElPTi5HRVQsXG4gIHByb3RvY29sPzogUHJvdG9jb2wgPSBQUk9UT0NPTC5IVFRQU1xuKSA9PiB7XG4gIGNvbnN0IGFwaVBhdGggPSBcIi9wcm9kdWN0L3JlbW92ZVwiO1xuICBjb25zdCBiYXNlVVJMID0gZ2V0U2NoZW1lKHByb3RvY29sKSArIGdhdGV3YXk7XG4gIHJldHVybiBMYXphZGFSZXF1ZXN0LnBvc3QoXG4gICAgYmFzZVVSTCxcbiAgICBhcHBLZXksXG4gICAgYXBwU2VjcmV0LFxuICAgIGFwaVBhdGgsXG4gICAgYWNjZXNzVG9rZW4sXG4gICAgcGF5bG9hZFxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQge1xuICBnZXRQcm9kdWN0cyxcbiAgZ2V0Q2F0ZWdvcnlUcmVlLFxuICBnZXRDYXRlZ29yeUF0dHJpYnV0ZXMsXG4gIGdldEJyYW5kcyxcbiAgY3JlYXRlUHJvZHVjdCxcbiAgdXBkYXRlUHJvZHVjdCxcbiAgbWlncmF0ZUltYWdlLFxuICBzZXRJbWFnZXMsXG4gIHVwZGF0ZVByaWNlUXVhbnRpdHksXG4gIHJlbW92ZVByb2R1Y3QsXG4gIGdldFJlc3BvbnNlLFxuICBtaWdyYXRlSW1hZ2VzLFxuICBnZXRQcm9kdWN0Q3JlYXRlVXJsLFxuICBnZXRQcm9kdWN0VXBkYXRlVXJsLFxuICBnZXRQcm9kdWN0SXRlbSxcbiAgZ2V0Q2F0ZWdvcnlTdWdnZXN0aW9yLFxuICBpbml0Q3JlYXRlVmlkZW8sXG4gIGNvbXBsZXRlQ3JlYXRlVmlkZW8sXG4gIFVwbG9hZFZpZGVvQmxvY2ssXG4gIGdldFZpZGVvLFxuICBnZXRTaXplQ2hhcnRUZW1wbGF0ZSxcbn07XG4iXX0=