@cdktf/provider-aws
Version:
Prebuilt aws Provider for Terraform CDK (cdktf)
369 lines • 52.5 kB
JavaScript
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
var _a;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Lexv2ModelsSlot = void 0;
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
// generated from terraform resource schema
const index_structs_1 = require("./index-structs");
__exportStar(require("./index-structs"), exports);
const cdktf = require("cdktf");
/**
* Represents a {@link https://registry.terraform.io/providers/hashicorp/aws/6.25.0/docs/resources/lexv2models_slot aws_lexv2models_slot}
*/
class Lexv2ModelsSlot extends cdktf.TerraformResource {
// ==============
// STATIC Methods
// ==============
/**
* Generates CDKTF code for importing a Lexv2ModelsSlot resource upon running "cdktf plan <stack-name>"
* @param scope The scope in which to define this construct
* @param importToId The construct id used in the generated config for the Lexv2ModelsSlot to import
* @param importFromId The id of the existing Lexv2ModelsSlot that should be imported. Refer to the {@link https://registry.terraform.io/providers/hashicorp/aws/6.25.0/docs/resources/lexv2models_slot#import import section} in the documentation of this resource for the id to use
* @param provider? Optional instance of the provider where the Lexv2ModelsSlot to import is found
*/
static generateConfigForImport(scope, importToId, importFromId, provider) {
return new cdktf.ImportableResource(scope, importToId, { terraformResourceType: "aws_lexv2models_slot", importId: importFromId, provider });
}
// ===========
// INITIALIZER
// ===========
/**
* Create a new {@link https://registry.terraform.io/providers/hashicorp/aws/6.25.0/docs/resources/lexv2models_slot aws_lexv2models_slot} Resource
*
* @param scope The scope in which to define this construct
* @param id The scoped construct ID. Must be unique amongst siblings in the same scope
* @param options Lexv2ModelsSlotConfig
*/
constructor(scope, id, config) {
super(scope, id, {
terraformResourceType: 'aws_lexv2models_slot',
terraformGeneratorMetadata: {
providerName: 'aws',
providerVersion: '6.25.0',
providerVersionConstraint: '~> 6.0'
},
provider: config.provider,
dependsOn: config.dependsOn,
count: config.count,
lifecycle: config.lifecycle,
provisioners: config.provisioners,
connection: config.connection,
forEach: config.forEach
});
// multiple_values_setting - computed: false, optional: true, required: false
this._multipleValuesSetting = new index_structs_1.Lexv2ModelsSlotMultipleValuesSettingList(this, "multiple_values_setting", false);
// obfuscation_setting - computed: false, optional: true, required: false
this._obfuscationSetting = new index_structs_1.Lexv2ModelsSlotObfuscationSettingList(this, "obfuscation_setting", false);
// sub_slot_setting - computed: false, optional: true, required: false
this._subSlotSetting = new index_structs_1.Lexv2ModelsSlotSubSlotSettingList(this, "sub_slot_setting", false);
// timeouts - computed: false, optional: true, required: false
this._timeouts = new index_structs_1.Lexv2ModelsSlotTimeoutsOutputReference(this, "timeouts");
// value_elicitation_setting - computed: false, optional: true, required: false
this._valueElicitationSetting = new index_structs_1.Lexv2ModelsSlotValueElicitationSettingList(this, "value_elicitation_setting", false);
this._botId = config.botId;
this._botVersion = config.botVersion;
this._description = config.description;
this._intentId = config.intentId;
this._localeId = config.localeId;
this._name = config.name;
this._region = config.region;
this._slotTypeId = config.slotTypeId;
this._multipleValuesSetting.internalValue = config.multipleValuesSetting;
this._obfuscationSetting.internalValue = config.obfuscationSetting;
this._subSlotSetting.internalValue = config.subSlotSetting;
this._timeouts.internalValue = config.timeouts;
this._valueElicitationSetting.internalValue = config.valueElicitationSetting;
}
get botId() {
return this.getStringAttribute('bot_id');
}
set botId(value) {
this._botId = value;
}
// Temporarily expose input value. Use with caution.
get botIdInput() {
return this._botId;
}
get botVersion() {
return this.getStringAttribute('bot_version');
}
set botVersion(value) {
this._botVersion = value;
}
// Temporarily expose input value. Use with caution.
get botVersionInput() {
return this._botVersion;
}
get description() {
return this.getStringAttribute('description');
}
set description(value) {
this._description = value;
}
resetDescription() {
this._description = undefined;
}
// Temporarily expose input value. Use with caution.
get descriptionInput() {
return this._description;
}
// id - computed: true, optional: false, required: false
get id() {
return this.getStringAttribute('id');
}
get intentId() {
return this.getStringAttribute('intent_id');
}
set intentId(value) {
this._intentId = value;
}
// Temporarily expose input value. Use with caution.
get intentIdInput() {
return this._intentId;
}
get localeId() {
return this.getStringAttribute('locale_id');
}
set localeId(value) {
this._localeId = value;
}
// Temporarily expose input value. Use with caution.
get localeIdInput() {
return this._localeId;
}
get name() {
return this.getStringAttribute('name');
}
set name(value) {
this._name = value;
}
// Temporarily expose input value. Use with caution.
get nameInput() {
return this._name;
}
get region() {
return this.getStringAttribute('region');
}
set region(value) {
this._region = value;
}
resetRegion() {
this._region = undefined;
}
// Temporarily expose input value. Use with caution.
get regionInput() {
return this._region;
}
// slot_id - computed: true, optional: false, required: false
get slotId() {
return this.getStringAttribute('slot_id');
}
get slotTypeId() {
return this.getStringAttribute('slot_type_id');
}
set slotTypeId(value) {
this._slotTypeId = value;
}
resetSlotTypeId() {
this._slotTypeId = undefined;
}
// Temporarily expose input value. Use with caution.
get slotTypeIdInput() {
return this._slotTypeId;
}
get multipleValuesSetting() {
return this._multipleValuesSetting;
}
putMultipleValuesSetting(value) {
this._multipleValuesSetting.internalValue = value;
}
resetMultipleValuesSetting() {
this._multipleValuesSetting.internalValue = undefined;
}
// Temporarily expose input value. Use with caution.
get multipleValuesSettingInput() {
return this._multipleValuesSetting.internalValue;
}
get obfuscationSetting() {
return this._obfuscationSetting;
}
putObfuscationSetting(value) {
this._obfuscationSetting.internalValue = value;
}
resetObfuscationSetting() {
this._obfuscationSetting.internalValue = undefined;
}
// Temporarily expose input value. Use with caution.
get obfuscationSettingInput() {
return this._obfuscationSetting.internalValue;
}
get subSlotSetting() {
return this._subSlotSetting;
}
putSubSlotSetting(value) {
this._subSlotSetting.internalValue = value;
}
resetSubSlotSetting() {
this._subSlotSetting.internalValue = undefined;
}
// Temporarily expose input value. Use with caution.
get subSlotSettingInput() {
return this._subSlotSetting.internalValue;
}
get timeouts() {
return this._timeouts;
}
putTimeouts(value) {
this._timeouts.internalValue = value;
}
resetTimeouts() {
this._timeouts.internalValue = undefined;
}
// Temporarily expose input value. Use with caution.
get timeoutsInput() {
return this._timeouts.internalValue;
}
get valueElicitationSetting() {
return this._valueElicitationSetting;
}
putValueElicitationSetting(value) {
this._valueElicitationSetting.internalValue = value;
}
resetValueElicitationSetting() {
this._valueElicitationSetting.internalValue = undefined;
}
// Temporarily expose input value. Use with caution.
get valueElicitationSettingInput() {
return this._valueElicitationSetting.internalValue;
}
// =========
// SYNTHESIS
// =========
synthesizeAttributes() {
return {
bot_id: cdktf.stringToTerraform(this._botId),
bot_version: cdktf.stringToTerraform(this._botVersion),
description: cdktf.stringToTerraform(this._description),
intent_id: cdktf.stringToTerraform(this._intentId),
locale_id: cdktf.stringToTerraform(this._localeId),
name: cdktf.stringToTerraform(this._name),
region: cdktf.stringToTerraform(this._region),
slot_type_id: cdktf.stringToTerraform(this._slotTypeId),
multiple_values_setting: cdktf.listMapper(index_structs_1.lexv2ModelsSlotMultipleValuesSettingToTerraform, true)(this._multipleValuesSetting.internalValue),
obfuscation_setting: cdktf.listMapper(index_structs_1.lexv2ModelsSlotObfuscationSettingToTerraform, true)(this._obfuscationSetting.internalValue),
sub_slot_setting: cdktf.listMapper(index_structs_1.lexv2ModelsSlotSubSlotSettingToTerraform, true)(this._subSlotSetting.internalValue),
timeouts: (0, index_structs_1.lexv2ModelsSlotTimeoutsToTerraform)(this._timeouts.internalValue),
value_elicitation_setting: cdktf.listMapper(index_structs_1.lexv2ModelsSlotValueElicitationSettingToTerraform, true)(this._valueElicitationSetting.internalValue),
};
}
synthesizeHclAttributes() {
const attrs = {
bot_id: {
value: cdktf.stringToHclTerraform(this._botId),
isBlock: false,
type: "simple",
storageClassType: "string",
},
bot_version: {
value: cdktf.stringToHclTerraform(this._botVersion),
isBlock: false,
type: "simple",
storageClassType: "string",
},
description: {
value: cdktf.stringToHclTerraform(this._description),
isBlock: false,
type: "simple",
storageClassType: "string",
},
intent_id: {
value: cdktf.stringToHclTerraform(this._intentId),
isBlock: false,
type: "simple",
storageClassType: "string",
},
locale_id: {
value: cdktf.stringToHclTerraform(this._localeId),
isBlock: false,
type: "simple",
storageClassType: "string",
},
name: {
value: cdktf.stringToHclTerraform(this._name),
isBlock: false,
type: "simple",
storageClassType: "string",
},
region: {
value: cdktf.stringToHclTerraform(this._region),
isBlock: false,
type: "simple",
storageClassType: "string",
},
slot_type_id: {
value: cdktf.stringToHclTerraform(this._slotTypeId),
isBlock: false,
type: "simple",
storageClassType: "string",
},
multiple_values_setting: {
value: cdktf.listMapperHcl(index_structs_1.lexv2ModelsSlotMultipleValuesSettingToHclTerraform, true)(this._multipleValuesSetting.internalValue),
isBlock: true,
type: "list",
storageClassType: "Lexv2ModelsSlotMultipleValuesSettingList",
},
obfuscation_setting: {
value: cdktf.listMapperHcl(index_structs_1.lexv2ModelsSlotObfuscationSettingToHclTerraform, true)(this._obfuscationSetting.internalValue),
isBlock: true,
type: "list",
storageClassType: "Lexv2ModelsSlotObfuscationSettingList",
},
sub_slot_setting: {
value: cdktf.listMapperHcl(index_structs_1.lexv2ModelsSlotSubSlotSettingToHclTerraform, true)(this._subSlotSetting.internalValue),
isBlock: true,
type: "list",
storageClassType: "Lexv2ModelsSlotSubSlotSettingList",
},
timeouts: {
value: (0, index_structs_1.lexv2ModelsSlotTimeoutsToHclTerraform)(this._timeouts.internalValue),
isBlock: true,
type: "struct",
storageClassType: "Lexv2ModelsSlotTimeouts",
},
value_elicitation_setting: {
value: cdktf.listMapperHcl(index_structs_1.lexv2ModelsSlotValueElicitationSettingToHclTerraform, true)(this._valueElicitationSetting.internalValue),
isBlock: true,
type: "list",
storageClassType: "Lexv2ModelsSlotValueElicitationSettingList",
},
};
// remove undefined attributes
return Object.fromEntries(Object.entries(attrs).filter(([_, value]) => value !== undefined && value.value !== undefined));
}
}
exports.Lexv2ModelsSlot = Lexv2ModelsSlot;
_a = JSII_RTTI_SYMBOL_1;
Lexv2ModelsSlot[_a] = { fqn: "@cdktf/provider-aws.lexv2ModelsSlot.Lexv2ModelsSlot", version: "21.22.1" };
// =================
// STATIC PROPERTIES
// =================
Lexv2ModelsSlot.tfResourceType = "aws_lexv2models_slot";
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGV4djJtb2RlbHMtc2xvdC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7OztHQUdHO0FBRUgsMkNBQTJDO0FBRTNDLG1EQW1Ca0U7QUFDbEUsa0RBQStCO0FBRS9CLCtCQUErQjtBQW9FL0I7O0VBRUU7QUFDRixNQUFhLGVBQWdCLFNBQVEsS0FBSyxDQUFDLGlCQUFpQjtJQU8xRCxpQkFBaUI7SUFDakIsaUJBQWlCO0lBQ2pCLGlCQUFpQjtJQUNqQjs7Ozs7O01BTUU7SUFDSyxNQUFNLENBQUMsdUJBQXVCLENBQUMsS0FBZ0IsRUFBRSxVQUFrQixFQUFFLFlBQW9CLEVBQUUsUUFBa0M7UUFDOUgsT0FBTyxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLEVBQUUscUJBQXFCLEVBQUUsc0JBQXNCLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQzlJLENBQUM7SUFFTCxjQUFjO0lBQ2QsY0FBYztJQUNkLGNBQWM7SUFFZDs7Ozs7O01BTUU7SUFDRixZQUFtQixLQUFnQixFQUFFLEVBQVUsRUFBRSxNQUE2QjtRQUM1RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLHFCQUFxQixFQUFFLHNCQUFzQjtZQUM3QywwQkFBMEIsRUFBRTtnQkFDMUIsWUFBWSxFQUFFLEtBQUs7Z0JBQ25CLGVBQWUsRUFBRSxRQUFRO2dCQUN6Qix5QkFBeUIsRUFBRSxRQUFRO2FBQ3BDO1lBQ0QsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRO1lBQ3pCLFNBQVMsRUFBRSxNQUFNLENBQUMsU0FBUztZQUMzQixLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUs7WUFDbkIsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTO1lBQzNCLFlBQVksRUFBRSxNQUFNLENBQUMsWUFB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KipcbiAqIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmMuXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuICovXG5cbi8vIGdlbmVyYXRlZCBmcm9tIHRlcnJhZm9ybSByZXNvdXJjZSBzY2hlbWFcblxuaW1wb3J0IHsgTGV4djJNb2RlbHNTbG90TXVsdGlwbGVWYWx1ZXNTZXR0aW5nLCBcbmxleHYyTW9kZWxzU2xvdE11bHRpcGxlVmFsdWVzU2V0dGluZ1RvVGVycmFmb3JtLCBcbmxleHYyTW9kZWxzU2xvdE11bHRpcGxlVmFsdWVzU2V0dGluZ1RvSGNsVGVycmFmb3JtLCBcbkxleHYyTW9kZWxzU2xvdE11bHRpcGxlVmFsdWVzU2V0dGluZ0xpc3QsIFxuTGV4djJNb2RlbHNTbG90T2JmdXNjYXRpb25TZXR0aW5nLCBcbmxleHYyTW9kZWxzU2xvdE9iZnVzY2F0aW9uU2V0dGluZ1RvVGVycmFmb3JtLCBcbmxleHYyTW9kZWxzU2xvdE9iZnVzY2F0aW9uU2V0dGluZ1RvSGNsVGVycmFmb3JtLCBcbkxleHYyTW9kZWxzU2xvdE9iZnVzY2F0aW9uU2V0dGluZ0xpc3QsIFxuTGV4djJNb2RlbHNTbG90U3ViU2xvdFNldHRpbmcsIFxubGV4djJNb2RlbHNTbG90U3ViU2xvdFNldHRpbmdUb1RlcnJhZm9ybSwgXG5sZXh2Mk1vZGVsc1Nsb3RTdWJTbG90U2V0dGluZ1RvSGNsVGVycmFmb3JtLCBcbkxleHYyTW9kZWxzU2xvdFN1YlNsb3RTZXR0aW5nTGlzdCwgXG5MZXh2Mk1vZGVsc1Nsb3RUaW1lb3V0cywgXG5sZXh2Mk1vZGVsc1Nsb3RUaW1lb3V0c1RvVGVycmFmb3JtLCBcbmxleHYyTW9kZWxzU2xvdFRpbWVvdXRzVG9IY2xUZXJyYWZvcm0sIFxuTGV4djJNb2RlbHNTbG90VGltZW91dHNPdXRwdXRSZWZlcmVuY2UsIFxuTGV4djJNb2RlbHNTbG90VmFsdWVFbGljaXRhdGlvblNldHRpbmcsIFxubGV4djJNb2RlbHNTbG90VmFsdWVFbGljaXRhdGlvblNldHRpbmdUb1RlcnJhZm9ybSwgXG5sZXh2Mk1vZGVsc1Nsb3RWYWx1ZUVsaWNpdGF0aW9uU2V0dGluZ1RvSGNsVGVycmFmb3JtLCBcbkxleHYyTW9kZWxzU2xvdFZhbHVlRWxpY2l0YXRpb25TZXR0aW5nTGlzdH0gZnJvbSAnLi9pbmRleC1zdHJ1Y3RzJ1xuZXhwb3J0ICogZnJvbSAnLi9pbmRleC1zdHJ1Y3RzJ1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgKiBhcyBjZGt0ZiBmcm9tICdjZGt0Zic7XG5leHBvcnQgaW50ZXJmYWNlIExleHYyTW9kZWxzU2xvdENvbmZpZyBleHRlbmRzIGNka3RmLlRlcnJhZm9ybU1ldGFBcmd1bWVudHMge1xuICAvKipcbiAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9oYXNoaWNvcnAvYXdzLzYuMjUuMC9kb2NzL3Jlc291cmNlcy9sZXh2Mm1vZGVsc19zbG90I2JvdF9pZCBMZXh2Mk1vZGVsc1Nsb3QjYm90X2lkfVxuICAqL1xuICByZWFkb25seSBib3RJZDogc3RyaW5nO1xuICAvKipcbiAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9oYXNoaWNvcnAvYXdzLzYuMjUuMC9kb2NzL3Jlc291cmNlcy9sZXh2Mm1vZGVsc19zbG90I2JvdF92ZXJzaW9uIExleHYyTW9kZWxzU2xvdCNib3RfdmVyc2lvbn1cbiAgKi9cbiAgcmVhZG9ubHkgYm90VmVyc2lvbjogc3RyaW5nO1xuICAvKipcbiAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9oYXNoaWNvcnAvYXdzLzYuMjUuMC9kb2NzL3Jlc291cmNlcy9sZXh2Mm1vZGVsc19zbG90I2Rlc2NyaXB0aW9uIExleHYyTW9kZWxzU2xvdCNkZXNjcmlwdGlvbn1cbiAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIC8qKlxuICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2hhc2hpY29ycC9hd3MvNi4yNS4wL2RvY3MvcmVzb3VyY2VzL2xleHYybW9kZWxzX3Nsb3QjaW50ZW50X2lkIExleHYyTW9kZWxzU2xvdCNpbnRlbnRfaWR9XG4gICovXG4gIHJlYWRvbmx5IGludGVudElkOiBzdHJpbmc7XG4gIC8qKlxuICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2hhc2hpY29ycC9hd3MvNi4yNS4wL2RvY3MvcmVzb3VyY2VzL2xleHYybW9kZWxzX3Nsb3QjbG9jYWxlX2lkIExleHYyTW9kZWxzU2xvdCNsb2NhbGVfaWR9XG4gICovXG4gIHJlYWRvbmx5IGxvY2FsZUlkOiBzdHJpbmc7XG4gIC8qKlxuICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2hhc2hpY29ycC9hd3MvNi4yNS4wL2RvY3MvcmVzb3VyY2VzL2xleHYybW9kZWxzX3Nsb3QjbmFtZSBMZXh2Mk1vZGVsc1Nsb3QjbmFtZX1cbiAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICAvKipcbiAgKiBSZWdpb24gd2hlcmUgdGhpcyByZXNvdXJjZSB3aWxsIGJlIFttYW5hZ2VkXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZ2VuZXJhbC9sYXRlc3QvZ3IvcmFuZGUuaHRtbCNyZWdpb25hbC1lbmRwb2ludHMpLiBEZWZhdWx0cyB0byB0aGUgUmVnaW9uIHNldCBpbiB0aGUgW3Byb3ZpZGVyIGNvbmZpZ3VyYXRpb25dKGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9oYXNoaWNvcnAvYXdzL2xhdGVzdC9kb2NzI2F3cy1jb25maWd1cmF0aW9uLXJlZmVyZW5jZSkuXG4gICpcbiAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9oYXNoaWNvcnAvYXdzLzYuMjUuMC9kb2NzL3Jlc291cmNlcy9sZXh2Mm1vZGVsc19zbG90I3JlZ2lvbiBMZXh2Mk1vZGVsc1Nsb3QjcmVnaW9ufVxuICAqL1xuICByZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG4gIC8qKlxuICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2hhc2hpY29ycC9hd3MvNi4yNS4wL2RvY3MvcmVzb3VyY2VzL2xleHYybW9kZWxzX3Nsb3Qjc2xvdF90eXBlX2lkIExleHYyTW9kZWxzU2xvdCNzbG90X3R5cGVfaWR9XG4gICovXG4gIHJlYWRvbmx5IHNsb3RUeXBlSWQ/OiBzdHJpbmc7XG4gIC8qKlxuICAqIG11bHRpcGxlX3ZhbHVlc19zZXR0aW5nIGJsb2NrXG4gICpcbiAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9oYXNoaWNvcnAvYXdzLzYuMjUuMC9kb2NzL3Jlc291cmNlcy9sZXh2Mm1vZGVsc19zbG90I211bHRpcGxlX3ZhbHVlc19zZXR0aW5nIExleHYyTW9kZWxzU2xvdCNtdWx0aXBsZV92YWx1ZXNfc2V0dGluZ31cbiAgKi9cbiAgcmVhZG9ubHkgbXVsdGlwbGVWYWx1ZXNTZXR0aW5nPzogTGV4djJNb2RlbHNTbG90TXVsdGlwbGVWYWx1ZXNTZXR0aW5nW10gfCBjZGt0Zi5JUmVzb2x2YWJsZTtcbiAgLyoqXG4gICogb2JmdXNjYXRpb25fc2V0dGluZyBibG9ja1xuICAqXG4gICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvaGFzaGljb3JwL2F3cy82LjI1LjAvZG9jcy9yZXNvdXJjZXMvbGV4djJtb2RlbHNfc2xvdCNvYmZ1c2NhdGlvbl9zZXR0aW5nIExleHYyTW9kZWxzU2xvdCNvYmZ1c2NhdGlvbl9zZXR0aW5nfVxuICAqL1xuICByZWFkb25seSBvYmZ1c2NhdGlvblNldHRpbmc/OiBMZXh2Mk1vZGVsc1Nsb3RPYmZ1c2NhdGlvblNldHRpbmdbXSB8IGNka3RmLklSZXNvbHZhYmxlO1xuICAvKipcbiAgKiBzdWJfc2xvdF9zZXR0aW5nIGJsb2NrXG4gICpcbiAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9oYXNoaWNvcnAvYXdzLzYuMjUuMC9kb2NzL3Jlc291cmNlcy9sZXh2Mm1vZGVsc19zbG90I3N1Yl9zbG90X3NldHRpbmcgTGV4djJNb2RlbHNTbG90I3N1Yl9zbG90X3NldHRpbmd9XG4gICovXG4gIHJlYWRvbmx5IHN1YlNsb3RTZXR0aW5nPzogTGV4djJNb2RlbHNTbG90U3ViU2xvdFNldHRpbmdbXSB8IGNka3RmLklSZXNvbHZhYmxlO1xuICAvKipcbiAgKiB0aW1lb3V0cyBibG9ja1xuICAqXG4gICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvaGFzaGljb3JwL2F3cy82LjI1LjAvZG9jcy9yZXNvdXJjZXMvbGV4djJtb2RlbHNfc2xvdCN0aW1lb3V0cyBMZXh2Mk1vZGVsc1Nsb3QjdGltZW91dHN9XG4gICovXG4gIHJlYWRvbmx5IHRpbWVvdXRzPzogTGV4djJNb2RlbHNTbG90VGltZW91dHM7XG4gIC8qKlxuICAqIHZhbHVlX2VsaWNpdGF0aW9uX3NldHRpbmcgYmxvY2tcbiAgKlxuICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2hhc2hpY29ycC9hd3MvNi4yNS4wL2RvY3MvcmVzb3VyY2VzL2xleHYybW9kZWxzX3Nsb3QjdmFsdWVfZWxpY2l0YXRpb25fc2V0dGluZyBMZXh2Mk1vZGVsc1Nsb3QjdmFsdWVfZWxpY2l0YXRpb25fc2V0dGluZ31cbiAgKi9cbiAgcmVhZG9ubHkgdmFsdWVFbGljaXRhdGlvblNldHRpbmc/OiBMZXh2Mk1vZGVsc1Nsb3RWYWx1ZUVsaWNpdGF0aW9uU2V0dGluZ1tdIHwgY2RrdGYuSVJlc29sdmFibGU7XG59XG5cbi8qKlxuKiBSZXByZXNlbnRzIGEge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9oYXNoaWNvcnAvYXdzLzYuMjUuMC9kb2NzL3Jlc291cmNlcy9sZXh2Mm1vZGVsc19zbG90IGF3c19sZXh2Mm1vZGVsc19zbG90fVxuKi9cbmV4cG9ydCBjbGFzcyBMZXh2Mk1vZGVsc1Nsb3QgZXh0ZW5kcyBjZGt0Zi5UZXJyYWZvcm1SZXNvdXJjZSB7XG5cbiAgLy8gPT09PT09PT09PT09PT09PT1cbiAgLy8gU1RBVElDIFBST1BFUlRJRVNcbiAgLy8gPT09PT09PT09PT09PT09PT1cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSB0ZlJlc291cmNlVHlwZSA9IFwiYXdzX2xleHYybW9kZWxzX3Nsb3RcIjtcblxuICAvLyA9PT09PT09PT09PT09PVxuICAvLyBTVEFUSUMgTWV0aG9kc1xuICAvLyA9PT09PT09PT09PT09PVxuICAvKipcbiAgKiBHZW5lcmF0ZXMgQ0RLVEYgY29kZSBmb3IgaW1wb3J0aW5nIGEgTGV4djJNb2RlbHNTbG90IHJlc291cmNlIHVwb24gcnVubmluZyBcImNka3RmIHBsYW4gPHN0YWNrLW5hbWU+XCJcbiAgKiBAcGFyYW0gc2NvcGUgVGhlIHNjb3BlIGluIHdoaWNoIHRvIGRlZmluZSB0aGlzIGNvbnN0cnVjdFxuICAqIEBwYXJhbSBpbXBvcnRUb0lkIFRoZSBjb25zdHJ1Y3QgaWQgdXNlZCBpbiB0aGUgZ2VuZXJhdGVkIGNvbmZpZyBmb3IgdGhlIExleHYyTW9kZWxzU2xvdCB0byBpbXBvcnRcbiAgKiBAcGFyYW0gaW1wb3J0RnJvbUlkIFRoZSBpZCBvZiB0aGUgZXhpc3RpbmcgTGV4djJNb2RlbHNTbG90IHRoYXQgc2hvdWxkIGJlIGltcG9ydGVkLiBSZWZlciB0byB0aGUge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9oYXNoaWNvcnAvYXdzLzYuMjUuMC9kb2NzL3Jlc291cmNlcy9sZXh2Mm1vZGVsc19zbG90I2ltcG9ydCBpbXBvcnQgc2VjdGlvbn0gaW4gdGhlIGRvY3VtZW50YXRpb24gb2YgdGhpcyByZXNvdXJjZSBmb3IgdGhlIGlkIHRvIHVzZVxuICAqIEBwYXJhbSBwcm92aWRlcj8gT3B0aW9uYWwgaW5zdGFuY2Ugb2YgdGhlIHByb3ZpZGVyIHdoZXJlIHRoZSBMZXh2Mk1vZGVsc1Nsb3QgdG8gaW1wb3J0IGlzIGZvdW5kXG4gICovXG4gIHB1YmxpYyBzdGF0aWMgZ2VuZXJhdGVDb25maWdGb3JJbXBvcnQoc2NvcGU6IENvbnN0cnVjdCwgaW1wb3J0VG9JZDogc3RyaW5nLCBpbXBvcnRGcm9tSWQ6IHN0cmluZywgcHJvdmlkZXI/OiBjZGt0Zi5UZXJyYWZvcm1Qcm92aWRlcikge1xuICAgICAgICByZXR1cm4gbmV3IGNka3RmLkltcG9ydGFibGVSZXNvdXJjZShzY29wZSwgaW1wb3J0VG9JZCwgeyB0ZXJyYWZvcm1SZXNvdXJjZVR5cGU6IFwiYXdzX2xleHYybW9kZWxzX3Nsb3RcIiwgaW1wb3J0SWQ6IGltcG9ydEZyb21JZCwgcHJvdmlkZXIgfSk7XG4gICAgICB9XG5cbiAgLy8gPT09PT09PT09PT1cbiAgLy8gSU5JVElBTElaRVJcbiAgLy8gPT09PT09PT09PT1cblxuICAvKipcbiAgKiBDcmVhdGUgYSBuZXcge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9oYXNoaWNvcnAvYXdzLzYuMjUuMC9kb2NzL3Jlc291cmNlcy9sZXh2Mm1vZGVsc19zbG90IGF3c19sZXh2Mm1vZGVsc19zbG90fSBSZXNvdXJjZVxuICAqXG4gICogQHBhcmFtIHNjb3BlIFRoZSBzY29wZSBpbiB3aGljaCB0byBkZWZpbmUgdGhpcyBjb25zdHJ1Y3RcbiAgKiBAcGFyYW0gaWQgVGhlIHNjb3BlZCBjb25zdHJ1Y3QgSUQuIE11c3QgYmUgdW5pcXVlIGFtb25nc3Qgc2libGluZ3MgaW4gdGhlIHNhbWUgc2NvcGVcbiAgKiBAcGFyYW0gb3B0aW9ucyBMZXh2Mk1vZGVsc1Nsb3RDb25maWdcbiAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGNvbmZpZzogTGV4djJNb2RlbHNTbG90Q29uZmlnKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICB0ZXJyYWZvcm1SZXNvdXJjZVR5cGU6ICdhd3NfbGV4djJtb2RlbHNfc2xvdCcsXG4gICAgICB0ZXJyYWZvcm1HZW5lcmF0b3JNZXRhZGF0YToge1xuICAgICAgICBwcm92aWRlck5hbWU6ICdhd3MnLFxuICAgICAgICBwcm92aWRlclZlcnNpb246ICc2LjI1LjAnLFxuICAgICAgICBwcm92aWRlclZlcnNpb25Db25zdHJhaW50OiAnfj4gNi4wJ1xuICAgICAgfSxcbiAgICAgIHByb3ZpZGVyOiBjb25maWcucHJvdmlkZXIsXG4gICAgICBkZXBlbmRzT246IGNvbmZpZy5kZXBlbmRzT24sXG4gICAgICBjb3VudDogY29uZmlnLmNvdW50LFxuICAgICAgbGlmZWN5Y2xlOiBjb25maWcubGlmZWN5Y2xlLFxuICAgICAgcHJvdmlzaW9uZXJzOiBjb25maWcucHJvdmlzaW9uZXJzLFxuICAgICAgY29ubmVjdGlvbjogY29uZmlnLmNvbm5lY3Rpb24sXG4gICAgICBmb3JFYWNoOiBjb25maWcuZm9yRWFjaFxuICAgIH0pO1xuICAgIHRoaXMuX2JvdElkID0gY29uZmlnLmJvdElkO1xuICAgIHRoaXMuX2JvdFZlcnNpb24gPSBjb25maWcuYm90VmVyc2lvbjtcbiAgICB0aGlzLl9kZXNjcmlwdGlvbiA9IGNvbmZpZy5kZXNjcmlwdGlvbjtcbiAgICB0aGlzLl9pbnRlbnRJZCA9IGNvbmZpZy5pbnRlbnRJZDtcbiAgICB0aGlzLl9sb2NhbGVJZCA9IGNvbmZpZy5sb2NhbGVJZDtcbiAgICB0aGlzLl9uYW1lID0gY29uZmlnLm5hbWU7XG4gICAgdGhpcy5fcmVnaW9uID0gY29uZmlnLnJlZ2lvbjtcbiAgICB0aGlzLl9zbG90VHlwZUlkID0gY29uZmlnLnNsb3RUeXBlSWQ7XG4gICAgdGhpcy5fbXVsdGlwbGVWYWx1ZXNTZXR0aW5nLmludGVybmFsVmFsdWUgPSBjb25maWcubXVsdGlwbGVWYWx1ZXNTZXR0aW5nO1xuICAgIHRoaXMuX29iZnVzY2F0aW9uU2V0dGluZy5pbnRlcm5hbFZhbHVlID0gY29uZmlnLm9iZnVzY2F0aW9uU2V0dGluZztcbiAgICB0aGlzLl9zdWJTbG90U2V0dGluZy5pbnRlcm5hbFZhbHVlID0gY29uZmlnLnN1YlNsb3RTZXR0aW5nO1xuICAgIHRoaXMuX3RpbWVvdXRzLmludGVybmFsVmFsdWUgPSBjb25maWcudGltZW91dHM7XG4gICAgdGhpcy5fdmFsdWVFbGljaXRhdGlvblNldHRpbmcuaW50ZXJuYWxWYWx1ZSA9IGNvbmZpZy52YWx1ZUVsaWNpdGF0aW9uU2V0dGluZztcbiAgfVxuXG4gIC8vID09PT09PT09PT1cbiAgLy8gQVRUUklCVVRFU1xuICAvLyA9PT09PT09PT09XG5cbiAgLy8gYm90X2lkIC0gY29tcHV0ZWQ6IGZhbHNlLCBvcHRpb25hbDogZmFsc2UsIHJlcXVpcmVkOiB0cnVlXG4gIHByaXZhdGUgX2JvdElkPzogc3RyaW5nOyBcbiAgcHVibGljIGdldCBib3RJZCgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTdHJpbmdBdHRyaWJ1dGUoJ2JvdF9pZCcpO1xuICB9XG4gIHB1YmxpYyBzZXQgYm90SWQodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2JvdElkID0gdmFsdWU7XG4gIH1cbiAgLy8gVGVtcG9yYXJpbHkgZXhwb3NlIGlucHV0IHZhbHVlLiBVc2Ugd2l0aCBjYXV0aW9uLlxuICBwdWJsaWMgZ2V0IGJvdElkSW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2JvdElkO1xuICB9XG5cbiAgLy8gYm90X3ZlcnNpb24gLSBjb21wdXRlZDogZmFsc2UsIG9wdGlvbmFsOiBmYWxzZSwgcmVxdWlyZWQ6IHRydWVcbiAgcHJpdmF0ZSBfYm90VmVyc2lvbj86IHN0cmluZzsgXG4gIHB1YmxpYyBnZXQgYm90VmVyc2lvbigpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTdHJpbmdBdHRyaWJ1dGUoJ2JvdF92ZXJzaW9uJyk7XG4gIH1cbiAgcHVibGljIHNldCBib3RWZXJzaW9uKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9ib3RWZXJzaW9uID0gdmFsdWU7XG4gIH1cbiAgLy8gVGVtcG9yYXJpbHkgZXhwb3NlIGlucHV0IHZhbHVlLiBVc2Ugd2l0aCBjYXV0aW9uLlxuICBwdWJsaWMgZ2V0IGJvdFZlcnNpb25JbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5fYm90VmVyc2lvbjtcbiAgfVxuXG4gIC8vIGRlc2NyaXB0aW9uIC0gY29tcHV0ZWQ6IGZhbHNlLCBvcHRpb25hbDogdHJ1ZSwgcmVxdWlyZWQ6IGZhbHNlXG4gIHByaXZhdGUgX2Rlc2NyaXB0aW9uPzogc3RyaW5nOyBcbiAgcHVibGljIGdldCBkZXNjcmlwdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTdHJpbmdBdHRyaWJ1dGUoJ2Rlc2NyaXB0aW9uJyk7XG4gIH1cbiAgcHVibGljIHNldCBkZXNjcmlwdGlvbih2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fZGVzY3JpcHRpb24gPSB2YWx1ZTtcbiAgfVxuICBwdWJsaWMgcmVzZXREZXNjcmlwdGlvbigpIHtcbiAgICB0aGlzLl9kZXNjcmlwdGlvbiA9IHVuZGVmaW5lZDtcbiAgfVxuICAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uXG4gIHB1YmxpYyBnZXQgZGVzY3JpcHRpb25JbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGVzY3JpcHRpb247XG4gIH1cblxuICAvLyBpZCAtIGNvbXB1dGVkOiB0cnVlLCBvcHRpb25hbDogZmFsc2UsIHJlcXVpcmVkOiBmYWxzZVxuICBwdWJsaWMgZ2V0IGlkKCkge1xuICAgIHJldHVybiB0aGlzLmdldFN0cmluZ0F0dHJpYnV0ZSgnaWQnKTtcbiAgfVxuXG4gIC8vIGludGVudF9pZCAtIGNvbXB1dGVkOiBmYWxzZSwgb3B0aW9uYWw6IGZhbHNlLCByZXF1aXJlZDogdHJ1ZVxuICBwcml2YXRlIF9pbnRlbnRJZD86IHN0cmluZzsgXG4gIHB1YmxpYyBnZXQgaW50ZW50SWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0U3RyaW5nQXR0cmlidXRlKCdpbnRlbnRfaWQnKTtcbiAgfVxuICBwdWJsaWMgc2V0IGludGVudElkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pbnRlbnRJZCA9IHZhbHVlO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCBpbnRlbnRJZElucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9pbnRlbnRJZDtcbiAgfVxuXG4gIC8vIGxvY2FsZV9pZCAtIGNvbXB1dGVkOiBmYWxzZSwgb3B0aW9uYWw6IGZhbHNlLCByZXF1aXJlZDogdHJ1ZVxuICBwcml2YXRlIF9sb2NhbGVJZD86IHN0cmluZzsgXG4gIHB1YmxpYyBnZXQgbG9jYWxlSWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0U3RyaW5nQXR0cmlidXRlKCdsb2NhbGVfaWQnKTtcbiAgfVxuICBwdWJsaWMgc2V0IGxvY2FsZUlkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9sb2NhbGVJZCA9IHZhbHVlO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCBsb2NhbGVJZElucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9sb2NhbGVJZDtcbiAgfVxuXG4gIC8vIG5hbWUgLSBjb21wdXRlZDogZmFsc2UsIG9wdGlvbmFsOiBmYWxzZSwgcmVxdWlyZWQ6IHRydWVcbiAgcHJpdmF0ZSBfbmFtZT86IHN0cmluZzsgXG4gIHB1YmxpYyBnZXQgbmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTdHJpbmdBdHRyaWJ1dGUoJ25hbWUnKTtcbiAgfVxuICBwdWJsaWMgc2V0IG5hbWUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX25hbWUgPSB2YWx1ZTtcbiAgfVxuICAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uXG4gIHB1YmxpYyBnZXQgbmFtZUlucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9uYW1lO1xuICB9XG5cbiAgLy8gcmVnaW9uIC0gY29tcHV0ZWQ6IHRydWUsIG9wdGlvbmFsOiB0cnVlLCByZXF1aXJlZDogZmFsc2VcbiAgcHJpdmF0ZSBfcmVnaW9uPzogc3RyaW5nOyBcbiAgcHVibGljIGdldCByZWdpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0U3RyaW5nQXR0cmlidXRlKCdyZWdpb24nKTtcbiAgfVxuICBwdWJsaWMgc2V0IHJlZ2lvbih2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fcmVnaW9uID0gdmFsdWU7XG4gIH1cbiAgcHVibGljIHJlc2V0UmVnaW9uKCkge1xuICAgIHRoaXMuX3JlZ2lvbiA9IHVuZGVmaW5lZDtcbiAgfVxuICAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uXG4gIHB1YmxpYyBnZXQgcmVnaW9uSW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JlZ2lvbjtcbiAgfVxuXG4gIC8vIHNsb3RfaWQgLSBjb21wdXRlZDogdHJ1ZSwgb3B0aW9uYWw6IGZhbHNlLCByZXF1aXJlZDogZmFsc2VcbiAgcHVibGljIGdldCBzbG90SWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0U3RyaW5nQXR0cmlidXRlKCdzbG90X2lkJyk7XG4gIH1cblxuICAvLyBzbG90X3R5cGVfaWQgLSBjb21wdXRlZDogdHJ1ZSwgb3B0aW9uYWw6IHRydWUsIHJlcXVpcmVkOiBmYWxzZVxuICBwcml2YXRlIF9zbG90VHlwZUlkPzogc3RyaW5nOyBcbiAgcHVibGljIGdldCBzbG90VHlwZUlkKCkge1xuICAgIHJldHVybiB0aGlzLmdldFN0cmluZ0F0dHJpYnV0ZSgnc2xvdF90eXBlX2lkJyk7XG4gIH1cbiAgcHVibGljIHNldCBzbG90VHlwZUlkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9zbG90VHlwZUlkID0gdmFsdWU7XG4gIH1cbiAgcHVibGljIHJlc2V0U2xvdFR5cGVJZCgpIHtcbiAgICB0aGlzLl9zbG90VHlwZUlkID0gdW5kZWZpbmVkO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCBzbG90VHlwZUlkSW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3Nsb3RUeXBlSWQ7XG4gIH1cblxuICAvLyBtdWx0aXBsZV92YWx1ZXNfc2V0dGluZyAtIGNvbXB1dGVkOiBmYWxzZSwgb3B0aW9uYWw6IHRydWUsIHJlcXVpcmVkOiBmYWxzZVxuICBwcml2YXRlIF9tdWx0aXBsZVZhbHVlc1NldHRpbmcgPSBuZXcgTGV4djJNb2RlbHNTbG90TXVsdGlwbGVWYWx1ZXNTZXR0aW5nTGlzdCh0aGlzLCBcIm11bHRpcGxlX3ZhbHVlc19zZXR0aW5nXCIsIGZhbHNlKTtcbiAgcHVibGljIGdldCBtdWx0aXBsZVZhbHVlc1NldHRpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuX211bHRpcGxlVmFsdWVzU2V0dGluZztcbiAgfVxuICBwdWJsaWMgcHV0TXVsdGlwbGVWYWx1ZXNTZXR0aW5nKHZhbHVlOiBMZXh2Mk1vZGVsc1Nsb3RNdWx0aXBsZVZhbHVlc1NldHRpbmdbXSB8IGNka3RmLklSZXNvbHZhYmxlKSB7XG4gICAgdGhpcy5fbXVsdGlwbGVWYWx1ZXNTZXR0aW5nLmludGVybmFsVmFsdWUgPSB2YWx1ZTtcbiAgfVxuICBwdWJsaWMgcmVzZXRNdWx0aXBsZVZhbHVlc1NldHRpbmcoKSB7XG4gICAgdGhpcy5fbXVsdGlwbGVWYWx1ZXNTZXR0aW5nLmludGVybmFsVmFsdWUgPSB1bmRlZmluZWQ7XG4gIH1cbiAgLy8gVGVtcG9yYXJpbHkgZXhwb3NlIGlucHV0IHZhbHVlLiBVc2Ugd2l0aCBjYXV0aW9uLlxuICBwdWJsaWMgZ2V0IG11bHRpcGxlVmFsdWVzU2V0dGluZ0lucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9tdWx0aXBsZVZhbHVlc1NldHRpbmcuaW50ZXJuYWxWYWx1ZTtcbiAgfVxuXG4gIC8vIG9iZnVzY2F0aW9uX3NldHRpbmcgLSBjb21wdXRlZDogZmFsc2UsIG9wdGlvbmFsOiB0cnVlLCByZXF1aXJlZDogZmFsc2VcbiAgcHJpdmF0ZSBfb2JmdXNjYXRpb25TZXR0aW5nID0gbmV3IExleHYyTW9kZWxzU2xvdE9iZnVzY2F0aW9uU2V0dGluZ0xpc3QodGhpcywgXCJvYmZ1c2NhdGlvbl9zZXR0aW5nXCIsIGZhbHNlKTtcbiAgcHVibGljIGdldCBvYmZ1c2NhdGlvblNldHRpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuX29iZnVzY2F0aW9uU2V0dGluZztcbiAgfVxuICBwdWJsaWMgcHV0T2JmdXNjYXRpb25TZXR0aW5nKHZhbHVlOiBMZXh2Mk1vZGVsc1Nsb3RPYmZ1c2NhdGlvblNldHRpbmdbXSB8IGNka3RmLklSZXNvbHZhYmxlKSB7XG4gICAgdGhpcy5fb2JmdXNjYXRpb25TZXR0aW5nLmludGVybmFsVmFsdWUgPSB2YWx1ZTtcbiAgfVxuICBwdWJsaWMgcmVzZXRPYmZ1c2NhdGlvblNldHRpbmcoKSB7XG4gICAgdGhpcy5fb2JmdXNjYXRpb25TZXR0aW5nLmludGVybmFsVmFsdWUgPSB1bmRlZmluZWQ7XG4gIH1cbiAgLy8gVGVtcG9yYXJpbHkgZXhwb3NlIGlucHV0IHZhbHVlLiBVc2Ugd2l0aCBjYXV0aW9uLlxuICBwdWJsaWMgZ2V0IG9iZnVzY2F0aW9uU2V0dGluZ0lucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9vYmZ1c2NhdGlvblNldHRpbmcuaW50ZXJuYWxWYWx1ZTtcbiAgfVxuXG4gIC8vIHN1Yl9zbG90X3NldHRpbmcgLSBjb21wdXRlZDogZmFsc2UsIG9wdGlvbmFsOiB0cnVlLCByZXF1aXJlZDogZmFsc2VcbiAgcHJpdmF0ZSBfc3ViU2xvdFNldHRpbmcgPSBuZXcgTGV4djJNb2RlbHNTbG90U3ViU2xvdFNldHRpbmdMaXN0KHRoaXMsIFwic3ViX3Nsb3Rfc2V0dGluZ1wiLCBmYWxzZSk7XG4gIHB1YmxpYyBnZXQgc3ViU2xvdFNldHRpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N1YlNsb3RTZXR0aW5nO1xuICB9XG4gIHB1YmxpYyBwdXRTdWJTbG90U2V0dGluZyh2YWx1ZTogTGV4djJNb2RlbHNTbG90U3ViU2xvdFNldHRpbmdbXSB8IGNka3RmLklSZXNvbHZhYmxlKSB7XG4gICAgdGhpcy5fc3ViU2xvdFNldHRpbmcuaW50ZXJuYWxWYWx1ZSA9IHZhbHVlO1xuICB9XG4gIHB1YmxpYyByZXNldFN1YlNsb3RTZXR0aW5nKCkge1xuICAgIHRoaXMuX3N1YlNsb3RTZXR0aW5nLmludGVybmFsVmFsdWUgPSB1bmRlZmluZWQ7XG4gIH1cbiAgLy8gVGVtcG9yYXJpbHkgZXhwb3NlIGlucHV0IHZhbHVlLiBVc2Ugd2l0aCBjYXV0aW9uLlxuICBwdWJsaWMgZ2V0IHN1YlNsb3RTZXR0aW5nSW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N1YlNsb3RTZXR0aW5nLmludGVybmFsVmFsdWU7XG4gIH1cblxuICAvLyB0aW1lb3V0cyAtIGNvbXB1dGVkOiBmYWxzZSwgb3B0aW9uYWw6IHRydWUsIHJlcXVpcmVkOiBmYWxzZVxuICBwcml2YXRlIF90aW1lb3V0cyA9IG5ldyBMZXh2Mk1vZGVsc1Nsb3RUaW1lb3V0c091dHB1dFJlZmVyZW5jZSh0aGlzLCBcInRpbWVvdXRzXCIpO1xuICBwdWJsaWMgZ2V0IHRpbWVvdXRzKCkge1xuICAgIHJldHVybiB0aGlzLl90aW1lb3V0cztcbiAgfVxuICBwdWJsaWMgcHV0VGltZW91dHModmFsdWU6IExleHYyTW9kZWxzU2xvdFRpbWVvdXRzKSB7XG4gICAgdGhpcy5fdGltZW91dHMuaW50ZXJuYWxWYWx1ZSA9IHZhbHVlO1xuICB9XG4gIHB1YmxpYyByZXNldFRpbWVvdXRzKCkge1xuICAgIHRoaXMuX3RpbWVvdXRzLmludGVybmFsVmFsdWUgPSB1bmRlZmluZWQ7XG4gIH1cbiAgLy8gVGVtcG9yYXJpbHkgZXhwb3NlIGlucHV0IHZhbHVlLiBVc2Ugd2l0aCBjYXV0aW9uLlxuICBwdWJsaWMgZ2V0IHRpbWVvdXRzSW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3RpbWVvdXRzLmludGVybmFsVmFsdWU7XG4gIH1cblxuICAvLyB2YWx1ZV9lbGljaXRhdGlvbl9zZXR0aW5nIC0gY29tcHV0ZWQ6IGZhbHNlLCBvcHRpb25hbDogdHJ1ZSwgcmVxdWlyZWQ6IGZhbHNlXG4gIHByaXZhdGUgX3ZhbHVlRWxpY2l0YXRpb25TZXR0aW5nID0gbmV3IExleHYyTW9kZWxzU2xvdFZhbHVlRWxpY2l0YXRpb25TZXR0aW5nTGlzdCh0aGlzLCBcInZhbHVlX2VsaWNpdGF0aW9uX3NldHRpbmdcIiwgZmFsc2UpO1xuICBwdWJsaWMgZ2V0IHZhbHVlRWxpY2l0YXRpb25TZXR0aW5nKCkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZUVsaWNpdGF0aW9uU2V0dGluZztcbiAgfVxuICBwdWJsaWMgcHV0VmFsdWVFbGljaXRhdGlvblNldHRpbmcodmFsdWU6IExleHYyTW9kZWxzU2xvdFZhbHVlRWxpY2l0YXRpb25TZXR0aW5nW10gfCBjZGt0Zi5JUmVzb2x2YWJsZSkge1xuICAgIHRoaXMuX3ZhbHVlRWxpY2l0YXRpb25TZXR0aW5nLmludGVybmFsVmFsdWUgPSB2YWx1ZTtcbiAgfVxuICBwdWJsaWMgcmVzZXRWYWx1ZUVsaWNpdGF0aW9uU2V0dGluZygpIHtcbiAgICB0aGlzLl92YWx1ZUVsaWNpdGF0aW9uU2V0dGluZy5pbnRlcm5hbFZhbHVlID0gdW5kZWZpbmVkO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCB2YWx1ZUVsaWNpdGF0aW9uU2V0dGluZ0lucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZUVsaWNpdGF0aW9uU2V0dGluZy5pbnRlcm5hbFZhbHVlO1xuICB9XG5cbiAgLy8gPT09PT09PT09XG4gIC8vIFNZTlRIRVNJU1xuICAvLyA9PT09PT09PT1cblxuICBwcm90ZWN0ZWQgc3ludGhlc2l6ZUF0dHJpYnV0ZXMoKTogeyBbbmFtZTogc3RyaW5nXTogYW55IH0ge1xuICAgIHJldHVybiB7XG4gICAgICBib3RfaWQ6IGNka3RmLnN0cmluZ1RvVGVycmFmb3JtKHRoaXMuX2JvdElkKSxcbiAgICAgIGJvdF92ZXJzaW9uOiBjZGt0Zi5zdHJpbmdUb1RlcnJhZm9ybSh0aGlzLl9ib3RWZXJzaW9uKSxcbiAgICAgIGRlc2NyaXB0aW9uOiBjZGt0Zi5zdHJpbmdUb1RlcnJhZm9ybSh0aGlzLl9kZXNjcmlwdGlvbiksXG4gICAgICBpbnRlbnRfaWQ6IGNka3RmLnN0cmluZ1RvVGVycmFmb3JtKHRoaXMuX2ludGVudElkKSxcbiAgICAgIGxvY2FsZV9pZDogY2RrdGYuc3RyaW5nVG9UZXJyYWZvcm0odGhpcy5fbG9jYWxlSWQpLFxuICAgICAgbmFtZTogY2RrdGYuc3RyaW5nVG9UZXJyYWZvcm0odGhpcy5fbmFtZSksXG4gICAgICByZWdpb246IGNka3RmLnN0cmluZ1RvVGVycmFmb3JtKHRoaXMuX3JlZ2lvbiksXG4gICAgICBzbG90X3R5cGVfaWQ6IGNka3RmLnN0cmluZ1RvVGVycmFmb3JtKHRoaXMuX3Nsb3RUeXBlSWQpLFxuICAgICAgbXVsdGlwbGVfdmFsdWVzX3NldHRpbmc6IGNka3RmLmxpc3RNYXBwZXIobGV4djJNb2RlbHNTbG90TXVsdGlwbGVWYWx1ZXNTZXR0aW5nVG9UZXJyYWZvcm0sIHRydWUpKHRoaXMuX211bHRpcGxlVmFsdWVzU2V0dGluZy5pbnRlcm5hbFZhbHVlKSxcbiAgICAgIG9iZnVzY2F0aW9uX3NldHRpbmc6IGNka3RmLmxpc3RNYXBwZXIobGV4djJNb2RlbHNTbG90T2JmdXNjYXRpb25TZXR0aW5nVG9UZXJyYWZvcm0sIHRydWUpKHRoaXMuX29iZnVzY2F0aW9uU2V0dGluZy5pbnRlcm5hbFZhbHVlKSxcbiAgICAgIHN1Yl9zbG90X3NldHRpbmc6IGNka3RmLmxpc3RNYXBwZXIobGV4djJNb2RlbHNTbG90U3ViU2xvdFNldHRpbmdUb1RlcnJhZm9ybSwgdHJ1ZSkodGhpcy5fc3ViU2xvdFNldHRpbmcuaW50ZXJuYWxWYWx1ZSksXG4gICAgICB0aW1lb3V0czogbGV4djJNb2RlbHNTbG90VGltZW91dHNUb1RlcnJhZm9ybSh0aGlzLl90aW1lb3V0cy5pbnRlcm5hbFZhbHVlKSxcbiAgICAgIHZhbHVlX2VsaWNpdGF0aW9uX3NldHRpbmc6IGNka3RmLmxpc3RNYXBwZXIobGV4djJNb2RlbHNTbG90VmFsdWVFbGljaXRhdGlvblNldHRpbmdUb1RlcnJhZm9ybSwgdHJ1ZSkodGhpcy5fdmFsdWVFbGljaXRhdGlvblNldHRpbmcuaW50ZXJuYWxWYWx1ZSksXG4gICAgfTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzeW50aGVzaXplSGNsQXR0cmlidXRlcygpOiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfSB7XG4gICAgY29uc3QgYXR0cnMgPSB7XG4gICAgICBib3RfaWQ6IHtcbiAgICAgICAgdmFsdWU6IGNka3RmLnN0cmluZ1RvSGNsVGVycmFmb3JtKHRoaXMuX2JvdElkKSxcbiAgICAgICAgaXNCbG9jazogZmFsc2UsXG4gICAgICAgIHR5cGU6IFwic2ltcGxlXCIsXG4gICAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwic3RyaW5nXCIsXG4gICAgICB9LFxuICAgICAgYm90X3ZlcnNpb246IHtcbiAgICAgICAgdmFsdWU6IGNka3RmLnN0cmluZ1RvSGNsVGVycmFmb3JtKHRoaXMuX2JvdFZlcnNpb24pLFxuICAgICAgICBpc0Jsb2NrOiBmYWxzZSxcbiAgICAgICAgdHlwZTogXCJzaW1wbGVcIixcbiAgICAgICAgc3RvcmFnZUNsYXNzVHlwZTogXCJzdHJpbmdcIixcbiAgICAgIH0sXG4gICAgICBkZXNjcmlwdGlvbjoge1xuICAgICAgICB2YWx1ZTogY2RrdGYuc3RyaW5nVG9IY2xUZXJyYWZvcm0odGhpcy5fZGVzY3JpcHRpb24pLFxuICAgICAgICBpc0Jsb2NrOiBmYWxzZSxcbiAgICAgICAgdHlwZTogXCJzaW1wbGVcIixcbiAgICAgICAgc3RvcmFnZUNsYXNzVHlwZTogXCJzdHJpbmdcIixcbiAgICAgIH0sXG4gICAgICBpbnRlbnRfaWQ6IHtcbiAgICAgICAgdmFsdWU6IGNka3RmLnN0cmluZ1RvSGNsVGVycmFmb3JtKHRoaXMuX2ludGVudElkKSxcbiAgICAgICAgaXNCbG9jazogZmFsc2UsXG4gICAgICAgIHR5cGU6IFwic2ltcGxlXCIsXG4gICAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwic3RyaW5nXCIsXG4gICAgICB9LFxuICAgICAgbG9jYWxlX2lkOiB7XG4gICAgICAgIHZhbHVlOiBjZGt0Zi5zdHJpbmdUb0hjbFRlcnJhZm9ybSh0aGlzLl9sb2NhbGVJZCksXG4gICAgICAgIGlzQmxvY2s6IGZhbHNlLFxuICAgICAgICB0eXBlOiBcInNpbXBsZVwiLFxuICAgICAgICBzdG9yYWdlQ2xhc3NUeXBlOiBcInN0cmluZ1wiLFxuICAgICAgfSxcbiAgICAgIG5hbWU6IHtcbiAgICAgICAgdmFsdWU6IGNka3RmLnN0cmluZ1RvSGNsVGVycmFmb3JtKHRoaXMuX25hbWUpLFxuICAgICAgICBpc0Jsb2NrOiBmYWxzZSxcbiAgICAgICAgdHlwZTogXCJzaW1wbGVcIixcbiAgICAgICAgc3RvcmFnZUNsYXNzVHlwZTogXCJzdHJpbmdcIixcbiAgICAgIH0sXG4gICAgICByZWdpb246IHtcbiAgICAgICAgdmFsdWU6IGNka3RmLnN0cmluZ1RvSGNsVGVycmFmb3JtKHRoaXMuX