@aws-cdk/aws-ec2-alpha 2.169.0-alpha.0 → 2.170.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/vpc-v2.js CHANGED
@@ -77,7 +77,7 @@ class IpAddresses {
77
77
  }
78
78
  exports.IpAddresses = IpAddresses;
79
79
  _a = JSII_RTTI_SYMBOL_1;
80
- IpAddresses[_a] = { fqn: "@aws-cdk/aws-ec2-alpha.IpAddresses", version: "2.169.0-alpha.0" };
80
+ IpAddresses[_a] = { fqn: "@aws-cdk/aws-ec2-alpha.IpAddresses", version: "2.170.0-alpha.0" };
81
81
  /**
82
82
  * This class provides a foundation for creating and configuring a VPC with advanced features such as IPAM (IP Address Management) and IPv6 support.
83
83
  *
@@ -273,7 +273,7 @@ class VpcV2 extends vpc_v2_base_1.VpcV2Base {
273
273
  }
274
274
  exports.VpcV2 = VpcV2;
275
275
  _b = JSII_RTTI_SYMBOL_1;
276
- VpcV2[_b] = { fqn: "@aws-cdk/aws-ec2-alpha.VpcV2", version: "2.169.0-alpha.0" };
276
+ VpcV2[_b] = { fqn: "@aws-cdk/aws-ec2-alpha.VpcV2", version: "2.170.0-alpha.0" };
277
277
  /**
278
278
  * Supports assigning IPv4 address to VPC
279
279
  */
@@ -409,4 +409,4 @@ function validateIpv4address(cidr1, cidr2) {
409
409
  (ip1.octet1 === 192 && ip1.octet2 === 168 && ip2.octet1 === 192 && ip2.octet2 === 168) ||
410
410
  (ip1.octet1 === 172 && ip1.octet2 === 16 && ip2.octet1 === 172 && ip2.octet2 === 16); // CIDR ranges belong to same private IP address ranges
411
411
  }
412
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidnBjLXYyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidnBjLXYyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGlEQUEyRztBQUMzRywyQ0FBMkU7QUFDM0UsMkNBQXFFO0FBRXJFLCtDQUFrRDtBQUNsRCwyQ0FBc0U7QUFDdEUsNkNBQTBDO0FBYTFDOztHQUVHO0FBQ0gsTUFBYSxXQUFXO0lBRXRCOztPQUVHO0lBQ0ksTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFnQixFQUFFLEtBQTZCOzs7Ozs7Ozs7O1FBQ2hFLE9BQU8sSUFBSSxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7S0FDaEQ7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxRQUFRLENBQUMsZUFBNEI7Ozs7Ozs7Ozs7UUFDakQsT0FBTyxJQUFJLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQztLQUN0QztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLFFBQVEsQ0FBQyxlQUE0Qjs7Ozs7Ozs7OztRQUNqRCxPQUFPLElBQUksUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0tBQ3RDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsa0JBQWtCLENBQUMsS0FBNEI7Ozs7Ozs7Ozs7UUFDM0QsT0FBTyxJQUFJLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUNsQzs7QUE1Qkgsa0NBNkJDOzs7QUEwTUQ7Ozs7OztHQU1HO0FBQ0gsTUFBYSxLQUFNLFNBQVEsdUJBQVM7SUFFbEM7O09BRUc7SUFDSSxNQUFNLENBQUMsbUJBQW1CLENBQUMsS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBc0I7Ozs7Ozs7Ozs7UUFDcEY7OztVQUdFO1FBQ0YsTUFBTSxhQUFjLFNBQVEsdUJBQVM7WUEyQm5DLFlBQVksU0FBb0IsRUFBRSxXQUFtQixFQUFFLEtBQXNCO2dCQUMzRSxLQUFLLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDO2dCQXhCaEIsa0JBQWEsR0FBZ0IsRUFBRSxDQUFDO2dCQUNoQyxtQkFBYyxHQUFnQixFQUFFLENBQUM7Z0JBQ2pDLG9CQUFlLEdBQWdCLEVBQUUsQ0FBQztnQkFDbEMsb0NBQStCLEdBQWdCLElBQUksNEJBQWUsRUFBRSxDQUFDO2dCQWlCckYsd0VBQXdFO2dCQUN4RCw2QkFBd0IsR0FBYSxFQUFFLENBQUM7Z0JBSXRELElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUs7b0JBQ3hCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU07b0JBQy9DLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU87b0JBQ2hFLElBQUksQ0FBQyxVQUFVLEdBQUcseUJBQVcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTO29CQUNuRSxJQUFJLENBQUMsTUFBTSxHQUFHLFVBQUcsQ0FBQyxNQUFNLENBQUM7d0JBQ3ZCLE9BQU8sRUFBRSxLQUFLO3dCQUNkLFFBQVEsRUFBRSxLQUFLO3dCQUNmLFlBQVksRUFBRSxJQUFJLENBQUMsS0FBSzt3QkFDeEIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO3dCQUNuQixPQUFPLEVBQUUsSUFBSSxDQUFDLGNBQWM7d0JBQzVCLFNBQVMsRUFBRSxJQUFJLENBQUMsVUFBVTtxQkFDM0IsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBRWYsbUZBQW1GO2dCQUNuRixnRkFBZ0Y7Z0JBQ2hGLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2hELDhEQUE4RDtnQkFDOUQsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDO2dCQUN2QywyQ0FBMkM7Z0JBQzNDLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQztnQkFDeEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDO2dCQUV4QyxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDbEIsS0FBSyxNQUFNLE1BQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7d0JBQ25DLElBQUksTUFBTSxDQUFDLFVBQVUsS0FBSyxvQkFBVSxDQUFDLG1CQUFtQixJQUFJLE1BQU0sQ0FBQyxVQUFVLEtBQUssb0JBQVUsQ0FBQyxnQkFBZ0I7NEJBQzNHLE1BQU0sQ0FBQyxVQUFVLEtBQUssb0JBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQzs0QkFDM0MsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsb0JBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLFVBQVUsSUFBRyx1QkFBdUIsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO3dCQUN4SCxDQUFDOzZCQUFNLElBQUksTUFBTSxDQUFDLFVBQVUsS0FBSyxvQkFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDOzRCQUNuRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxvQkFBUSxDQUFDLHNCQUFzQixDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsVUFBVSxJQUFHLHNCQUFzQixFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7d0JBQ3RILENBQUM7NkJBQU0sSUFBSSxNQUFNLENBQUMsVUFBVSxLQUFLLG9CQUFVLENBQUMsUUFBUSxJQUFJLE1BQU0sQ0FBQyxVQUFVLEtBQUssb0JBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDOzRCQUMxRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxvQkFBUSxDQUFDLHNCQUFzQixDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsVUFBVSxJQUFHLHdCQUF3QixFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7d0JBQzFILENBQUM7b0JBQ0gsQ0FBQztnQkFDSCxDQUFDO2dCQUNELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUMsbUJBQW1CLEVBQUUsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLDBCQUEwQixDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsYUFBYSxJQUFJLDRCQUE0QixFQUFFLEVBQUUsR0FBRyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pNLElBQUksS0FBSyxDQUFDLG1CQUFtQixFQUFFLENBQUM7b0JBQzlCLEtBQUssTUFBTSxTQUFTLElBQUksS0FBSyxDQUFDLG1CQUFtQixFQUFFLENBQUM7d0JBQ2xELElBQUksU0FBUyxDQUFDLHdCQUF3QixFQUFFLENBQUM7NEJBQ3ZDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxTQUFTLENBQUMsd0JBQXdCLENBQUMsQ0FBQzt3QkFDNUUsQ0FBQztvQkFDSCxDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1NBQ0Y7UUFDRCxPQUFPLElBQUksYUFBYSxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7S0FDNUM7SUFnR0QsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxRQUFvQixFQUFFO1FBQzlELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2YsWUFBWSxFQUFFLEtBQUssQ0FBQyxPQUFPLElBQUksV0FBSSxDQUFDLE1BQU0sQ0FBQztnQkFDekMsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLFlBQUssQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLHdCQUF3QixFQUFFLEdBQUcsRUFBRSxDQUFDO2FBQ2pHLENBQUM7U0FDSCxDQUFDLENBQUM7UUF0Q0w7O1dBRUc7UUFDYSx1QkFBa0IsR0FBcUIsSUFBSSxLQUFvQixDQUFDO1FBbUJoRjs7Ozs7O1dBTUc7UUFDYSxZQUFPLEdBQVksS0FBSyxDQUFDO1FBRXpCLGtCQUFhLEdBQVcsRUFBRSxDQUFDOzs7Ozs7K0NBbkxoQyxLQUFLOzs7O1FBNExkLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLG1CQUFtQixJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDaEYsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUV0RCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDLGtCQUFrQixJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUM7UUFDOUYsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDO1FBQ3hGLE1BQU0sZUFBZSxHQUFHLEtBQUssQ0FBQyxzQkFBc0IsSUFBSSxTQUFTLENBQUM7UUFDbEUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLGdCQUFNLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUMzQyxTQUFTLEVBQUUsVUFBVSxDQUFDLGFBQWEsRUFBRSwrQkFBK0I7WUFDcEUsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLG1CQUFtQjtZQUM1QyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsaUJBQWlCO1lBQ3hDLGNBQWMsRUFBRSxVQUFVLENBQUMsWUFBWSxFQUFFLFVBQVUsRUFBRSx1QkFBdUI7WUFDNUUsaUJBQWlCLEVBQUUsVUFBVSxDQUFDLGlCQUFpQixFQUFFLHVCQUF1QjtZQUN4RSxlQUFlLEVBQUUsZUFBZTtTQUNqQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUM7UUFDaEQsSUFBSSxVQUFVLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDO1FBQ2hELENBQUM7UUFDRCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUM7UUFDdkQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQztRQUNyQyxJQUFJLENBQUMsTUFBTSxHQUFHLFVBQUcsQ0FBQyxNQUFNLENBQUM7WUFDdkIsT0FBTyxFQUFFLEtBQUs7WUFDZCxRQUFRLEVBQUUsS0FBSztZQUNmLFlBQVksRUFBRSxJQUFJLENBQUMsS0FBSztTQUN6QixFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDaEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUV6QyxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1lBQ2pDLE1BQU0sc0JBQXNCLEdBQW1CLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQztZQUU1RSxLQUFLLE1BQU0scUJBQXFCLElBQUksc0JBQXNCLEVBQUUsQ0FBQztnQkFFM0QsTUFBTSxtQkFBbUIsR0FBbUIscUJBQXFCLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQ3BGLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztvQkFDdkMsTUFBTSxJQUFJLEtBQUssQ0FBQyw0REFBNEQsQ0FBQyxDQUFDO2dCQUNoRixDQUFDO2dCQUVELElBQUksbUJBQW1CLENBQUMsY0FBYyxJQUFJLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUFDO29CQUMzRSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztnQkFDdEIsQ0FBQztnQkFDRCxtQ0FBbUM7Z0JBQ25DLElBQUksbUJBQW1CLENBQUMsYUFBYyxFQUFFLENBQUM7b0JBQ3ZDLE1BQU0sR0FBRyxHQUFHLG1CQUFtQixDQUFDLG1CQUFtQixDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO29CQUM1RixJQUFJLEdBQUcsS0FBSyxLQUFLLEVBQUUsQ0FBQzt3QkFDbEIsTUFBTSxJQUFJLEtBQUssQ0FBQyw0REFBNEQsQ0FBQyxDQUFDO29CQUNoRixDQUFDO2dCQUNILENBQUM7Z0JBQ0QsSUFBSSxtQkFBbUIsQ0FBQyx3QkFBeUIsRUFBRSxDQUFDO29CQUNsRCxJQUFJLENBQUMsd0JBQXdCLEVBQUUsSUFBSSxDQUFDLEdBQUcsbUJBQW1CLENBQUMsd0JBQXdCLENBQUMsQ0FBQztnQkFDdkYsQ0FBQztnQkFDRCxNQUFNLFlBQVksR0FBRyxJQUFJLFlBQVksQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLENBQUMsYUFBYSxFQUFFO29CQUM3RSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7b0JBQ2pCLFNBQVMsRUFBRSxtQkFBbUIsQ0FBQyxhQUFhO29CQUM1QyxjQUFjLEVBQUUsbUJBQW1CLENBQUMsWUFBWSxFQUFFLFVBQVU7b0JBQzVELGlCQUFpQixFQUFFLG1CQUFtQixDQUFDLGlCQUFpQjtvQkFDeEQsaUJBQWlCLEVBQUUsbUJBQW1CLENBQUMsaUJBQWlCO29CQUN4RCxjQUFjLEVBQUUsbUJBQW1CLENBQUMsWUFBWSxFQUFFLFVBQVU7b0JBQzVELDJCQUEyQixFQUFFLG1CQUFtQixDQUFDLGNBQWM7aUJBQ2hFLENBQUMsQ0FBQztnQkFDSCxJQUFJLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUFDO29CQUNyQyxLQUFLLE1BQU0sR0FBRyxJQUFJLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUFDO3dCQUNuRCxZQUFZLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDdkMsQ0FBQztnQkFDSCxDQUFDO2dCQUNELDJDQUEyQztnQkFDM0MsSUFBSSxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUM5QyxDQUFDO1FBQ0gsQ0FBQztRQUVEOztXQUVHO1FBQ0gsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLEtBQWMsQ0FBQztRQUUxQzs7V0FFRztRQUNILElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxLQUFjLENBQUM7UUFFeEM7O1dBRUc7UUFDSCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksS0FBYyxDQUFDO1FBRXpDOzs7V0FHRztRQUNILElBQUksQ0FBQywrQkFBK0IsR0FBRyxJQUFJLENBQUMsZ0NBQWdDLENBQUM7S0FDOUU7O0FBeFJILHNCQXlSQzs7O0FBQ0Q7O0dBRUc7QUFDSCxNQUFNLGtCQUFrQjtJQUV0QixZQUE2QixTQUFpQixFQUFtQixLQUFnQztRQUFwRSxjQUFTLEdBQVQsU0FBUyxDQUFRO1FBQW1CLFVBQUssR0FBTCxLQUFLLENBQTJCO0tBQ2hHO0lBRUQ7O09BRUc7SUFDSCxlQUFlO1FBQ2IsT0FBTztZQUNMLGFBQWEsRUFBRSxJQUFJLENBQUMsU0FBUztZQUM3QixhQUFhLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxhQUFhO1NBQ3pDLENBQUM7S0FDSDtDQUNGO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLGNBQWM7SUFDbEI7Ozs7OztPQU1HO0lBRUgsWUFBNkIsS0FBK0I7UUFBL0IsVUFBSyxHQUFMLEtBQUssQ0FBMEI7S0FBSTtJQUFBLENBQUM7SUFFakUsZUFBZTtRQUNiLE9BQU87WUFDTCxjQUFjLEVBQUUsSUFBSTtZQUNwQixhQUFhLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhO1NBQ3hDLENBQUM7S0FDSDtDQUVGO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxRQUFRO0lBRVosWUFBNkIsS0FBa0I7UUFBbEIsVUFBSyxHQUFMLEtBQUssQ0FBYTtLQUM5QztJQUVELGVBQWU7UUFDYixPQUFPO1lBQ0wsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhO1lBQzNDLFlBQVksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVE7WUFDakMsWUFBWSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFnQixDQUFDO1lBQ3ZFLGFBQWEsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWE7U0FDeEMsQ0FBQztLQUNIO0NBQ0Y7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFFBQVE7SUFFWixZQUE2QixLQUFrQjtRQUFsQixVQUFLLEdBQUwsS0FBSyxDQUFhO0tBQzlDO0lBQ0QsZUFBZTtRQUViLE9BQU87WUFDTCxpQkFBaUIsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWE7WUFDM0MsWUFBWSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUTtZQUNqQyxhQUFhLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxhQUFhO1lBQ3hDLHdCQUF3QixFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLGFBQWE7U0FDN0QsQ0FBQztLQUNIO0NBQ0Y7QUFzR0Q7OztHQUdHO0FBQ0gsTUFBTSxZQUFhLFNBQVEsZUFBUTtJQUVqQzs7T0FFRztJQUNJLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQyxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUE2QjtRQUNsRyxNQUFNLE1BQU8sU0FBUSxlQUFRO1lBQTdCOztnQkFDa0IsY0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7Z0JBQzVCLGdDQUEyQixHQUFjLEtBQUssQ0FBQywyQkFBMkIsQ0FBQztnQkFDM0UsbUJBQWMsR0FBYSxLQUFLLENBQUMsY0FBYyxDQUFDO2dCQUNoRCxtQkFBYyxHQUFhLEtBQUssQ0FBQyxjQUFjLENBQUM7WUFDbEUsQ0FBQztZQUg0RixDQUFDO1NBRzdGO1FBQ0QsT0FBTyxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7S0FDOUI7SUFZRCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXdCO1FBQ2hFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLHlCQUFlLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQztRQUNqQyxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQyxjQUFjLENBQUM7UUFDM0MsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUMsY0FBYyxDQUFDO1FBQzNDLElBQUksQ0FBQywyQkFBMkIsR0FBRyxLQUFLLENBQUMsMkJBQTJCLENBQUM7S0FDdEU7Q0FDRjtBQVFEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBUyxtQkFBbUIsQ0FBQyxLQUFjLEVBQUUsS0FBYztJQUN6RCxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDckIsT0FBTyxLQUFLLENBQUMsQ0FBQyxrREFBa0Q7SUFDbEUsQ0FBQztJQUVELE1BQU0sV0FBVyxHQUFhLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pGLE1BQU0sV0FBVyxHQUFhLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRWpGLElBQUksV0FBVyxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksV0FBVyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN6RCxPQUFPLEtBQUssQ0FBQyxDQUFDLDZCQUE2QjtJQUM3QyxDQUFDO0lBRUQsTUFBTSxHQUFHLEdBQW9CO1FBQzNCLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBQ3RCLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDO0tBQ3ZCLENBQUM7SUFFRixNQUFNLEdBQUcsR0FBb0I7UUFDM0IsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDdEIsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7S0FDdkIsQ0FBQztJQUVGLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxLQUFLLEVBQUUsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLEVBQUUsQ0FBQztRQUM3QyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssR0FBRyxDQUFDO1FBQ3RGLENBQUMsR0FBRyxDQUFDLE1BQU0sS0FBSyxHQUFHLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxFQUFFLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxHQUFHLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLHVEQUF1RDtBQUNqSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2ZuVlBDLCBDZm5WUENDaWRyQmxvY2ssIERlZmF1bHRJbnN0YW5jZVRlbmFuY3ksIElTdWJuZXQsIFN1Ym5ldFR5cGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWMyJztcbmltcG9ydCB7IEFybiwgQ2ZuUmVzb3VyY2UsIExhenksIE5hbWVzLCBSZXNvdXJjZSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUnO1xuaW1wb3J0IHsgQ29uc3RydWN0LCBEZXBlbmRlbmN5R3JvdXAsIElEZXBlbmRhYmxlIH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBJcGFtT3B0aW9ucywgSUlwYW1Qb29sIH0gZnJvbSAnLi9pcGFtJztcbmltcG9ydCB7IElWcGNWMiwgVnBjVjJCYXNlIH0gZnJvbSAnLi92cGMtdjItYmFzZSc7XG5pbXBvcnQgeyBJU3VibmV0VjIsIFN1Ym5ldFYyLCBTdWJuZXRWMkF0dHJpYnV0ZXMgfSBmcm9tICcuL3N1Ym5ldC12Mic7XG5pbXBvcnQgeyByZWdpb25faW5mbyB9IGZyb20gJ2F3cy1jZGstbGliJztcblxuLyoqXG4gKiBBZGRpdGlvbmFsIHByb3BzIG5lZWRlZCBmb3Igc2Vjb25kYXJ5IEFkZHJlc3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZWNvbmRhcnlBZGRyZXNzUHJvcHMge1xuICAvKipcbiAgICogUmVxdWlyZWQgdG8gc2V0IFNlY29uZGFyeSBjaWRyIGJsb2NrIHJlc291cmNlIG5hbWVcbiAgICogaW4gb3JkZXIgdG8gZ2VuZXJhdGUgdW5pcXVlIGxvZ2ljYWwgaWQgZm9yIHRoZSByZXNvdXJjZS5cbiAgICovXG4gIHJlYWRvbmx5IGNpZHJCbG9ja05hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBJcEFkZHJlc3Mgb3B0aW9ucyB0byBkZWZpbmUgVlBDIFYyXG4gKi9cbmV4cG9ydCBjbGFzcyBJcEFkZHJlc3NlcyB7XG5cbiAgLyoqXG4gICAqIEFuIElQdjQgQ0lEUiBSYW5nZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBpcHY0KGlwdjRDaWRyOiBzdHJpbmcsIHByb3BzPzogU2Vjb25kYXJ5QWRkcmVzc1Byb3BzKTogSUlwQWRkcmVzc2VzIHtcbiAgICByZXR1cm4gbmV3IGlwdjRDaWRyQWxsb2NhdGlvbihpcHY0Q2lkciwgcHJvcHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFuIElwdjQgSXBhbSBQb29sXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGlwdjRJcGFtKGlwdjRJcGFtT3B0aW9uczogSXBhbU9wdGlvbnMpOiBJSXBBZGRyZXNzZXMge1xuICAgIHJldHVybiBuZXcgSXBhbUlwdjQoaXB2NElwYW1PcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbiBJcHY2IElwYW0gUG9vbFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBpcHY2SXBhbShpcHY2SXBhbU9wdGlvbnM6IElwYW1PcHRpb25zKTogSUlwQWRkcmVzc2VzIHtcbiAgICByZXR1cm4gbmV3IElwYW1JcHY2KGlwdjZJcGFtT3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogQW1hem9uIFByb3ZpZGVkIElwdjYgcmFuZ2VcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYW1hem9uUHJvdmlkZWRJcHY2KHByb3BzOiBTZWNvbmRhcnlBZGRyZXNzUHJvcHMpIDogSUlwQWRkcmVzc2VzIHtcbiAgICByZXR1cm4gbmV3IEFtYXpvblByb3ZpZGVkKHByb3BzKTtcbiAgfVxufVxuXG4vKipcbiAqIENvbnNvbGlkYXRlZCByZXR1cm4gcGFyYW1ldGVycyB0byBwYXNzIHRvIFZQQyBjb25zdHJ1Y3RcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWcGNDaWRyT3B0aW9ucyB7XG5cbiAgLyoqXG4gICAqIElQdjQgQ0lEUiBCbG9ja1xuICAgKlxuICAgKiBAZGVmYXVsdCAnMTAuMC4wLjAvMTYnXG4gICAqL1xuICByZWFkb25seSBpcHY0Q2lkckJsb2NrPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDSURSIE1hc2sgZm9yIFZwY1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIE9ubHkgcmVxdWlyZWQgd2hlbiB1c2luZyBJUEFNIElwdjRcbiAgICovXG4gIHJlYWRvbmx5IGlwdjROZXRtYXNrTGVuZ3RoPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBJcHY0IElQQU0gUG9vbFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE9ubHkgcmVxdWlyZWQgd2hlbiB1c2luZyBJUEFNIElwdjRcbiAgICovXG4gIHJlYWRvbmx5IGlwdjRJcGFtUG9vbD86IElJcGFtUG9vbDtcblxuICAvKipcbiAgICogQ0lEUiBNYXNrIGZvciBWcGNcbiAgICpcbiAgICogQGRlZmF1bHQgLSBPbmx5IHJlcXVpcmVkIHdoZW4gdXNpbmcgQVdTIElwYW1cbiAgICovXG4gIHJlYWRvbmx5IGlwdjZOZXRtYXNrTGVuZ3RoPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBJcHY2IElQQU0gcG9vbCBpZCBmb3IgVlBDIHJhbmdlLCBjYW4gb25seSBiZSBkZWZpbmVkXG4gICAqIHVuZGVyIHB1YmxpYyBzY29wZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIHBvb2wgaWRcbiAgICovXG4gIHJlYWRvbmx5IGlwdjZJcGFtUG9vbD86IElJcGFtUG9vbDtcblxuICAvKipcbiAgICogVXNlIGFtYXpvbiBwcm92aWRlZCBJUCByYW5nZVxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgYW1hem9uUHJvdmlkZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBEZXBlbmRlbmN5IHRvIGFzc29jaWF0ZSBJcHY2IENJRFIgYmxvY2tcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBkZXBlbmRlbmN5XG4gICAqL1xuICByZWFkb25seSBkZXBlbmRlbmNpZXM/OiBDZm5SZXNvdXJjZVtdO1xuXG4gIC8qKlxuICAgKiBSZXF1aXJlZCB0byBzZXQgU2Vjb25kYXJ5IGNpZHIgYmxvY2sgcmVzb3VyY2UgbmFtZVxuICAgKiBpbiBvcmRlciB0byBnZW5lcmF0ZSB1bmlxdWUgbG9naWNhbCBpZCBmb3IgdGhlIHJlc291cmNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIG5hbWUgZm9yIHByaW1hcnkgYWRkcmVzc2VzXG4gICAqL1xuICByZWFkb25seSBjaWRyQmxvY2tOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJUHY0IENJRFIgcHJvdmlzaW9uZWQgdW5kZXIgcG9vbFxuICAgKiBSZXF1aXJlZCB0byBjaGVjayBmb3Igb3ZlcmxhcHBpbmcgQ0lEUnMgYWZ0ZXIgcHJvdmlzaW9uaW5nXG4gICAqIGlzIGNvbXBsZXRlIHVuZGVyIElQQU0gcG9vbFxuICAgKiBAZGVmYXVsdCAtIG5vIElQQU0gSVB2NCBDSURSIHJhbmdlIGlzIHByb3Zpc2lvbmVkIHVzaW5nIElQQU1cbiAgICovXG4gIHJlYWRvbmx5IGlwdjRJcGFtUHJvdmlzaW9uZWRDaWRycz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEltcGxlbWVudHMgaXAgYWRkcmVzcyBhbGxvY2F0aW9uIGFjY29yZGluZyB0byB0aGUgSVBBZHJlc3MgdHlwZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIElJcEFkZHJlc3NlcyB7XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB0byBkZWZpbmUgdGhlIGltcGxlbWVudGF0aW9uIGxvZ2ljIG9mXG4gICAqIElQIGFkZHJlc3MgYWxsb2NhdGlvblxuICAgKi9cbiAgYWxsb2NhdGVWcGNDaWRyKCkgOiBWcGNDaWRyT3B0aW9ucztcblxufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgdG8gZGVmaW5lIFZQQ1xuICogW2Rpc2FibGUtYXdzbGludDpmcm9tLW1ldGhvZF1cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWcGNWMlByb3BzIHtcblxuICAvKiogQSBtdXN0IElQdjQgQ0lEUiBibG9jayBmb3IgdGhlIFZQQ1xuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS92cGMvbGF0ZXN0L3VzZXJndWlkZS92cGMtY2lkci1ibG9ja3MuaHRtbFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIElwdjQgQ0lEUiBCbG9jayAoJzEwLjAuMC4wLzE2JylcbiAgICovXG4gIHJlYWRvbmx5IHByaW1hcnlBZGRyZXNzQmxvY2s/OiBJSXBBZGRyZXNzZXM7XG5cbiAgLyoqXG4gICAqIFRoZSBzZWNvbmRhcnkgQ0lEUiBibG9ja3MgYXNzb2NpYXRlZCB3aXRoIHRoZSBWUEMuXG4gICAqIENhbiBiZSAgSVB2NCBvciBJUHY2LCB0d28gSVB2NCByYW5nZXMgbXVzdCBmb2xsb3cgUkZDIzE5MTggY29udmVudGlvblxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vdnBjL2xhdGVzdC91c2VyZ3VpZGUvdnBjLWNpZHItYmxvY2tzLmh0bWwjdnBjLXJlc2l6ZX0uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gc2Vjb25kYXJ5IElQIGFkZHJlc3NcbiAgICovXG4gIHJlYWRvbmx5IHNlY29uZGFyeUFkZHJlc3NCbG9ja3M/OiBJSXBBZGRyZXNzZXNbXTtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGluc3RhbmNlcyBsYXVuY2hlZCBpbiB0aGUgVlBDIGdldCBETlMgaG9zdG5hbWVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBlbmFibGVEbnNIb3N0bmFtZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgRE5TIHJlc29sdXRpb24gaXMgc3VwcG9ydGVkIGZvciB0aGUgVlBDLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBlbmFibGVEbnNTdXBwb3J0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGRlZmF1bHQgdGVuYW5jeSBvZiBpbnN0YW5jZXMgbGF1bmNoZWQgaW50byB0aGUgVlBDLlxuICAgKlxuICAgKiBCeSBzZXR0aW5nIHRoaXMgdG8gZGVkaWNhdGVkIHRlbmFuY3ksIGluc3RhbmNlcyB3aWxsIGJlIGxhdW5jaGVkIG9uXG4gICAqIGhhcmR3YXJlIGRlZGljYXRlZCB0byBhIHNpbmdsZSBBV1MgY3VzdG9tZXIsIHVubGVzcyBzcGVjaWZpY2FsbHkgc3BlY2lmaWVkXG4gICAqIGF0IGluc3RhbmNlIGxhdW5jaCB0aW1lLiBQbGVhc2Ugbm90ZSwgbm90IGFsbCBpbnN0YW5jZSB0eXBlcyBhcmUgdXNhYmxlXG4gICAqIHdpdGggRGVkaWNhdGVkIHRlbmFuY3kuXG4gICAqXG4gICAqIEBkZWZhdWx0IERlZmF1bHRJbnN0YW5jZVRlbmFuY3kuRGVmYXVsdCAoc2hhcmVkKSB0ZW5hbmN5XG4gICAqL1xuICByZWFkb25seSBkZWZhdWx0SW5zdGFuY2VUZW5hbmN5PzogRGVmYXVsdEluc3RhbmNlVGVuYW5jeTtcblxuICAvKipcbiAgICogUGh5c2ljYWwgbmFtZSBmb3IgdGhlIFZQQ1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIGF1dG9nZW5lcmF0ZWQgYnkgQ0RLXG4gICAqL1xuICByZWFkb25seSB2cGNOYW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgdG8gaW1wb3J0IGEgVlBDIGNyZWF0ZWQgb3V0c2lkZSBvZiBDREsgc3RhY2tcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWcGNWMkF0dHJpYnV0ZXMge1xuXG4gIC8qKlxuICAgKiBUaGUgVlBDIElEXG4gICAqIFJlZmVycyB0byBwaHlzaWNhbCBJZCBvZiB0aGUgcmVzb3VyY2VcbiAgICovXG4gIHJlYWRvbmx5IHZwY0lkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFJlZ2lvbiBpbiB3aGljaCBpbXBvcnRlZCBWUEMgaXMgaG9zdGVkXG4gICAqIHJlcXVpcmVkIGluIGNhc2Ugb2YgY3Jvc3MgcmVnaW9uIFZQQ1xuICAgKiBhcyBnaXZlbiB2YWx1ZSB3aWxsIGJlIHVzZWQgdG8gc2V0IGZpZWxkIHJlZ2lvbiBmb3IgaW1wb3J0ZWQgVlBDLFxuICAgKiB3aGljaCB0aGVuIGxhdGVyIGNhbiBiZSB1c2VkIGZvciBlc3RhYmxpc2hpbmcgVlBDIHBlZXJpbmcgY29ubmVjdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBjb25zdHJ1Y3RlZCB3aXRoIHN0YWNrIHJlZ2lvbiB2YWx1ZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIEFXUyBhY2NvdW50IHRoYXQgb3ducyB0aGUgaW1wb3J0ZWQgVlBDXG4gICAqIHJlcXVpcmVkIGluIGNhc2Ugb2YgY3Jvc3MgYWNjb3VudCBWUENcbiAgICogYXMgZ2l2ZW4gdmFsdWUgd2lsbCBiZSB1c2VkIHRvIHNldCBmaWVsZCBhY2NvdW50IGZvciBpbXBvcnRlZCBWUEMsXG4gICAqIHdoaWNoIHRoZW4gbGF0ZXIgY2FuIGJlIHVzZWQgZm9yIGVzdGFibGlzaGluZyBWUEMgcGVlcmluZyBjb25uZWN0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGNvbnN0cnVjdGVkIHdpdGggc3RhY2sgYWNjb3VudCB2YWx1ZVxuICAgKi9cbiAgcmVhZG9ubHkgb3duZXJBY2NvdW50SWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFByaW1hcnkgVlBDIENJRFIgQmxvY2sgb2YgdGhlIGltcG9ydGVkIFZQQ1xuICAgKiBDYW4gb25seSBiZSBJUHY0XG4gICAqL1xuICByZWFkb25seSB2cGNDaWRyQmxvY2s6IHN0cmluZztcblxuICAvKipcbiAgICogQSBWUE4gR2F0ZXdheSBpcyBhdHRhY2hlZCB0byB0aGUgVlBDXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gVlBOIEdhdGV3YXlcbiAgICovXG4gIHJlYWRvbmx5IHZwbkdhdGV3YXlJZD86IHN0cmluZztcblxuICAvKipcbiAgICogU3VibmV0cyBhc3NvY2lhdGVkIHdpdGggaW1wb3J0ZWQgVlBDXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gc3VibmV0cyBwcm92aWRlZCB0byBiZSBpbXBvcnRlZFxuICAgKi9cbiAgcmVhZG9ubHkgc3VibmV0cz86IFN1Ym5ldFYyQXR0cmlidXRlc1tdO1xuXG4gIC8qKlxuICAgKiBJbXBvcnQgU2Vjb25kYXJ5IENJRFIgYmxvY2tzIGFzc29jaWF0ZWQgd2l0aCBWUENcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBzZWNvbmRhcnkgSVAgYWRkcmVzc1xuICAgKi9cbiAgcmVhZG9ubHkgc2Vjb25kYXJ5Q2lkckJsb2Nrcz86IFZQQ0NpZHJCbG9ja2F0dHJpYnV0ZXNbXTtcbn1cblxuLyoqXG4gKiBUaGlzIGNsYXNzIHByb3ZpZGVzIGEgZm91bmRhdGlvbiBmb3IgY3JlYXRpbmcgYW5kIGNvbmZpZ3VyaW5nIGEgVlBDIHdpdGggYWR2YW5jZWQgZmVhdHVyZXMgc3VjaCBhcyBJUEFNIChJUCBBZGRyZXNzIE1hbmFnZW1lbnQpIGFuZCBJUHY2IHN1cHBvcnQuXG4gKlxuICogRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUge0BsaW5rIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9jZGsvYXBpL3YyL2RvY3MvYXdzLWNkay1saWIuYXdzX2VjMi5WcGMuaHRtbHxBV1MgQ0RLIERvY3VtZW50YXRpb24gb24gVlBDc30uXG4gKlxuICogQHJlc291cmNlIEFXUzo6RUMyOjpWUENcbiAqL1xuZXhwb3J0IGNsYXNzIFZwY1YyIGV4dGVuZHMgVnBjVjJCYXNlIHtcblxuICAvKipcbiAgICogQ3JlYXRlIGEgVlBDIGZyb20gZXhpc3RpbmcgYXR0cmlidXRlc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tVnBjVjJBdHRyaWJ1dGVzKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGF0dHJzOiBWcGNWMkF0dHJpYnV0ZXMpOiBJVnBjVjIge1xuICAgIC8qKlxuICAgICogSW50ZXJuYWwgY2xhc3MgdG8gYWxsb3cgdXNlcnMgdG8gaW1wb3J0IFZQQ1xuICAgICogQGludGVybmFsXG4gICAgKi9cbiAgICBjbGFzcyBJbXBvcnRlZFZwY1YyIGV4dGVuZHMgVnBjVjJCYXNlIHtcblxuICAgICAgcHVibGljIHJlYWRvbmx5IHZwY0lkOiBzdHJpbmc7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgdnBjQXJuOiBzdHJpbmc7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgcHVibGljU3VibmV0czogSVN1Ym5ldFYyW10gPSBbXTtcbiAgICAgIHB1YmxpYyByZWFkb25seSBwcml2YXRlU3VibmV0czogSVN1Ym5ldFYyW10gPSBbXTtcbiAgICAgIHB1YmxpYyByZWFkb25seSBpc29sYXRlZFN1Ym5ldHM6IElTdWJuZXRWMltdID0gW107XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgaW50ZXJuZXRDb25uZWN0aXZpdHlFc3RhYmxpc2hlZDogSURlcGVuZGFibGUgPSBuZXcgRGVwZW5kZW5jeUdyb3VwKCk7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgaXB2NENpZHJCbG9jazogc3RyaW5nO1xuICAgICAgcHVibGljIHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuICAgICAgcHVibGljIHJlYWRvbmx5IG93bmVyQWNjb3VudElkOiBzdHJpbmc7XG4gICAgICBwcml2YXRlIHJlYWRvbmx5IF9wYXJ0aXRpb24/OiBzdHJpbmc7XG5cbiAgICAgIC8qXG4gICAgICAqIFJlZmVyZW5jZSB0byBhbGwgc2Vjb25kYXJ5IGJsb2NrcyBhdHRhY2hlZFxuICAgICAgKi9cbiAgICAgIHB1YmxpYyByZWFkb25seSBzZWNvbmRhcnlDaWRyQmxvY2s/OiBJVlBDQ2lkckJsb2NrW107XG5cbiAgICAgIC8qKlxuICAgICAgKiBSZWZlcnMgdG8gYWN0dWFsIFZQQyBSZXNvdXJjZSBhdHRyaWJ1dGUgaW4gbm9uLWltcG9ydGVkIFZQQ1xuICAgICAgKiBSZXF1aXJlZCB0byBpbXBsZW1lbnQgaGVyZSBkdWUgdG8gZXh0ZW5zaW9uIGZyb20gQmFzZSBjbGFzc1xuICAgICAgKi9cbiAgICAgIHB1YmxpYyByZWFkb25seSB2cGNDaWRyQmxvY2s6IHN0cmluZztcblxuICAgICAgLy8gUmVxdWlyZWQgdG8gZG8gQ0lEUiByYW5nZSB0ZXN0IG9uIGltcG9ydGVkIFZQQ3MgdG8gY3JlYXRlIG5ldyBzdWJuZXRzXG4gICAgICBwdWJsaWMgcmVhZG9ubHkgaXB2NElwYW1Qcm92aXNpb25lZENpZHJzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgICBjb25zdHJ1Y3Rvcihjb25zdHJ1Y3Q6IENvbnN0cnVjdCwgY29uc3RydWN0SWQ6IHN0cmluZywgcHJvcHM6IFZwY1YyQXR0cmlidXRlcykge1xuICAgICAgICBzdXBlcihjb25zdHJ1Y3QsIGNvbnN0cnVjdElkKTtcbiAgICAgICAgdGhpcy52cGNJZCA9IHByb3BzLnZwY0lkLFxuICAgICAgICB0aGlzLnJlZ2lvbiA9IHByb3BzLnJlZ2lvbiA/PyB0aGlzLnN0YWNrLnJlZ2lvbixcbiAgICAgICAgdGhpcy5vd25lckFjY291bnRJZCA9IHByb3BzLm93bmVyQWNjb3VudElkID8/IHRoaXMuc3RhY2suYWNjb3VudCxcbiAgICAgICAgdGhpcy5fcGFydGl0aW9uID0gcmVnaW9uX2luZm8uUmVnaW9uSW5mby5nZXQodGhpcy5yZWdpb24pLnBhcnRpdGlvbixcbiAgICAgICAgdGhpcy52cGNBcm4gPSBBcm4uZm9ybWF0KHtcbiAgICAgICAgICBzZXJ2aWNlOiAnZWMyJyxcbiAgICAgICAgICByZXNvdXJjZTogJ3ZwYycsXG4gICAgICAgICAgcmVzb3VyY2VOYW1lOiB0aGlzLnZwY0lkLFxuICAgICAgICAgIHJlZ2lvbjogdGhpcy5yZWdpb24sXG4gICAgICAgICAgYWNjb3VudDogdGhpcy5vd25lckFjY291bnRJZCxcbiAgICAgICAgICBwYXJ0aXRpb246IHRoaXMuX3BhcnRpdGlvbixcbiAgICAgICAgfSwgdGhpcy5zdGFjayk7XG5cbiAgICAgICAgLy8gUG9wdWxhdGUgcmVnaW9uIGFuZCBhY2NvdW50IGZpZWxkcyB0aGF0IGNhbiBiZSB1c2VkIHRvIHNldCB1cCBwZWVyaW5nIGNvbm5lY3Rpb25cbiAgICAgICAgLy8gc2FtcGxlIHZwYyBBcm4gLSBhcm46YXdzOmVjMjp1cy13ZXN0LTI6MTIzNDU2Nzg5MDEyOnZwYy92cGMtMDEyMzQ1Njc4OWFiY2RlZjBcbiAgICAgICAgdGhpcy5yZWdpb24gPSB0aGlzLnZwY0Fybi5zcGxpdCgnOicpWzNdO1xuICAgICAgICB0aGlzLm93bmVyQWNjb3VudElkID0gdGhpcy52cGNBcm4uc3BsaXQoJzonKVs0XTtcbiAgICAgICAgLy8gUmVmZXJzIHRvIGFjdHVhbCBWUEMgUmVzb3VyY2UgYXR0cmlidXRlIGluIG5vbi1pbXBvcnRlZCBWUENcbiAgICAgICAgdGhpcy52cGNDaWRyQmxvY2sgPSBwcm9wcy52cGNDaWRyQmxvY2s7XG4gICAgICAgIC8vIFJlcXVpcmVkIGZvciBzdWJuZXQgcmFuZ2UgcmVsYXRlZCBjaGVja3NcbiAgICAgICAgdGhpcy5pcHY0Q2lkckJsb2NrID0gcHJvcHMudnBjQ2lkckJsb2NrO1xuICAgICAgICB0aGlzLl92cG5HYXRld2F5SWQgPSBwcm9wcy52cG5HYXRld2F5SWQ7XG5cbiAgICAgICAgaWYgKHByb3BzLnN1Ym5ldHMpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHN1Ym5ldCBvZiBwcm9wcy5zdWJuZXRzKSB7XG4gICAgICAgICAgICBpZiAoc3VibmV0LnN1Ym5ldFR5cGUgPT09IFN1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX0VHUkVTUyB8fCBzdWJuZXQuc3VibmV0VHlwZSA9PT0gU3VibmV0VHlwZS5QUklWQVRFX1dJVEhfTkFUIHx8XG4gICAgICAgICAgICAgIHN1Ym5ldC5zdWJuZXRUeXBlID09PSBTdWJuZXRUeXBlLlBSSVZBVEUpIHtcbiAgICAgICAgICAgICAgdGhpcy5wcml2YXRlU3VibmV0cy5wdXNoKFN1Ym5ldFYyLmZyb21TdWJuZXRWMkF0dHJpYnV0ZXMoc2NvcGUsIHN1Ym5ldC5zdWJuZXROYW1lPz8gJ0ltcG9ydGVkUHJpdmF0ZVN1Ym5ldCcsIHN1Ym5ldCkpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChzdWJuZXQuc3VibmV0VHlwZSA9PT0gU3VibmV0VHlwZS5QVUJMSUMpIHtcbiAgICAgICAgICAgICAgdGhpcy5wdWJsaWNTdWJuZXRzLnB1c2goU3VibmV0VjIuZnJvbVN1Ym5ldFYyQXR0cmlidXRlcyhzY29wZSwgc3VibmV0LnN1Ym5ldE5hbWU/PyAnSW1wb3J0ZWRQdWJsaWNTdWJuZXQnLCBzdWJuZXQpKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoc3VibmV0LnN1Ym5ldFR5cGUgPT09IFN1Ym5ldFR5cGUuSVNPTEFURUQgfHwgc3VibmV0LnN1Ym5ldFR5cGUgPT09IFN1Ym5ldFR5cGUuUFJJVkFURV9JU09MQVRFRCkge1xuICAgICAgICAgICAgICB0aGlzLmlzb2xhdGVkU3VibmV0cy5wdXNoKFN1Ym5ldFYyLmZyb21TdWJuZXRWMkF0dHJpYnV0ZXMoc2NvcGUsIHN1Ym5ldC5zdWJuZXROYW1lPz8gJ0ltcG9ydGVkSXNvbGF0ZWRTdWJuZXQnLCBzdWJuZXQpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWNvbmRhcnlDaWRyQmxvY2sgPSBwcm9wcy5zZWNvbmRhcnlDaWRyQmxvY2tzPy5tYXAoY2lkckJsb2NrID0+IFZQQ0NpZHJCbG9jay5mcm9tVlBDQ2lkckJsb2NrYXR0cmlidXRlcyhzY29wZSwgY2lkckJsb2NrLmNpZHJCbG9ja05hbWUgPz8gJ0ltcG9ydGVkU2Vjb25kYXJ5Q2lkckJsb2NrJywgeyAuLi5jaWRyQmxvY2sgfSkpO1xuICAgICAgICBpZiAocHJvcHMuc2Vjb25kYXJ5Q2lkckJsb2Nrcykge1xuICAgICAgICAgIGZvciAoY29uc3QgY2lkckJsb2NrIG9mIHByb3BzLnNlY29uZGFyeUNpZHJCbG9ja3MpIHtcbiAgICAgICAgICAgIGlmIChjaWRyQmxvY2suaXB2NElwYW1Qcm92aXNpb25lZENpZHJzKSB7XG4gICAgICAgICAgICAgIHRoaXMuaXB2NElwYW1Qcm92aXNpb25lZENpZHJzLnB1c2goLi4uY2lkckJsb2NrLmlwdjRJcGFtUHJvdmlzaW9uZWRDaWRycyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXcgSW1wb3J0ZWRWcGNWMihzY29wZSwgaWQsIGF0dHJzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZGVudGlmaWVyIGZvciB0aGlzIFZQQ1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHZwY0lkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB2cGNBcm46IHN0cmluZztcblxuICAvKipcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHZwY0NpZHJCbG9jazogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIElQdjYgQ0lEUiBibG9ja3MgZm9yIHRoZSBWUEMuXG4gICAqXG4gICAqIFNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcmVzb3VyY2UtZWMyLXZwYy5odG1sI2F3cy1yZXNvdXJjZS1lYzItdnBjLXJldHVybi12YWx1ZXNcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBpcHY2Q2lkckJsb2Nrczogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBwcm92aWRlciBvZiBpcHY0IGFkZHJlc3Nlc1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGlwQWRkcmVzc2VzOiBJSXBBZGRyZXNzZXM7XG5cbiAgLyoqXG4gICAqIFRoZSBBV1MgQ2xvdWRGb3JtYXRpb24gcmVzb3VyY2UgcmVwcmVzZW50aW5nIHRoZSBWUEMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcmVzb3VyY2U6IENmblZQQztcblxuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIGluc3RhbmNlcyBsYXVuY2hlZCBpbiB0aGlzIFZQQyB3aWxsIGhhdmUgcHVibGljIEROUyBob3N0bmFtZXMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZG5zSG9zdG5hbWVzRW5hYmxlZDogYm9vbGVhbjtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIEROUyBzdXBwb3J0IGlzIGVuYWJsZWQgZm9yIHRoaXMgVlBDLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGRuc1N1cHBvcnRFbmFibGVkOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJc29sYXRlZCBTdWJuZXRzIHRoYXQgYXJlIHBhcnQgb2YgdGhpcyBWUEMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaXNvbGF0ZWRTdWJuZXRzOiBJU3VibmV0W107XG5cbiAgLyoqXG4gICAqIFB1YmxpYyBTdWJuZXRzIHRoYXQgYXJlIHBhcnQgb2YgdGhpcyBWUEMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcHVibGljU3VibmV0czogSVN1Ym5ldFtdO1xuXG4gIC8qKlxuICAgKiBQYnVsaWMgU3VibmV0cyB0aGF0IGFyZSBwYXJ0IG9mIHRoaXMgVlBDLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHByaXZhdGVTdWJuZXRzOiBJU3VibmV0W107XG5cbiAgLyoqXG4gICAqIFRvIGRlZmluZSBkZXBlbmRlbmN5IG9uIGludGVybmV0IGNvbm5lY3Rpdml0eVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGludGVybmV0Q29ubmVjdGl2aXR5RXN0YWJsaXNoZWQ6IElEZXBlbmRhYmxlO1xuXG4gIC8qKlxuICAgKiByZWZlcmVuY2UgdG8gYWxsIHNlY29uZGFyeSBibG9ja3MgYXR0YWNoZWRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzZWNvbmRhcnlDaWRyQmxvY2s/OiBJVlBDQ2lkckJsb2NrW10gPSBuZXcgQXJyYXk8SVZQQ0NpZHJCbG9jaz47XG5cbiAgLyoqXG4gICAqIElQdjQgQ0lEUiBwcm92aXNpb25lZCB1c2luZyBJUEFNIHBvb2xcbiAgICogUmVxdWlyZWQgdG8gY2hlY2sgZm9yIG92ZXJsYXBwaW5nIENJRFJzIGFmdGVyIHByb3Zpc2lvbmluZ1xuICAgKiBpcyBjb21wbGV0ZSB1bmRlciBJUEFNXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaXB2NElwYW1Qcm92aXNpb25lZENpZHJzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFJlZ2lvbiBmb3IgdGhpcyBWUENcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByZWdpb246IHN0cmluZztcblxuICAvKipcbiAgICogSWRlbnRpZmllciBvZiB0aGUgb3duZXIgZm9yIHRoaXMgVlBDXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgb3duZXJBY2NvdW50SWQ6IHN0cmluZztcblxuICAvKipcbiAgICogRm9yIHZhbGlkYXRpb24gdG8gZGVmaW5lIElQdjYgc3VibmV0cywgc2V0IHRvIHRydWUgaW4gY2FzZSBvZlxuICAgKiBBbWF6b24gUHJvdmlkZWQgSVB2NiBjaWRyIHJhbmdlXG4gICAqIGlmIHRydWUsIElQdjYgYWRkcmVzc2VzIGNhbiBiZSBhdHRhY2hlZCB0byB0aGUgc3VibmV0cy5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB1c2VJcHY2OiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHVibGljIHJlYWRvbmx5IGlwdjRDaWRyQmxvY2s6IHN0cmluZyA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBWcGNWMlByb3BzID0ge30pIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHBoeXNpY2FsTmFtZTogcHJvcHMudnBjTmFtZSA/PyBMYXp5LnN0cmluZyh7XG4gICAgICAgIHByb2R1Y2U6ICgpID0+IE5hbWVzLnVuaXF1ZVJlc291cmNlTmFtZSh0aGlzLCB7IG1heExlbmd0aDogMTI4LCBhbGxvd2VkU3BlY2lhbENoYXJhY3RlcnM6ICdfJyB9KSxcbiAgICAgIH0pLFxuICAgIH0pO1xuXG4gICAgdGhpcy5pcEFkZHJlc3NlcyA9IHByb3BzLnByaW1hcnlBZGRyZXNzQmxvY2sgPz8gSXBBZGRyZXNzZXMuaXB2NCgnMTAuMC4wLjAvMTYnKTtcbiAgICBjb25zdCB2cGNPcHRpb25zID0gdGhpcy5pcEFkZHJlc3Nlcy5hbGxvY2F0ZVZwY0NpZHIoKTtcblxuICAgIHRoaXMuZG5zSG9zdG5hbWVzRW5hYmxlZCA9IHByb3BzLmVuYWJsZURuc0hvc3RuYW1lcyA9PSBudWxsID8gdHJ1ZSA6IHByb3BzLmVuYWJsZURuc0hvc3RuYW1lcztcbiAgICB0aGlzLmRuc1N1cHBvcnRFbmFibGVkID0gcHJvcHMuZW5hYmxlRG5zU3VwcG9ydCA9PSBudWxsID8gdHJ1ZSA6IHByb3BzLmVuYWJsZURuc1N1cHBvcnQ7XG4gICAgY29uc3QgaW5zdGFuY2VUZW5hbmN5ID0gcHJvcHMuZGVmYXVsdEluc3RhbmNlVGVuYW5jeSB8fCAnZGVmYXVsdCc7XG4gICAgdGhpcy5yZXNvdXJjZSA9IG5ldyBDZm5WUEModGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgY2lkckJsb2NrOiB2cGNPcHRpb25zLmlwdjRDaWRyQmxvY2ssIC8vZm9yIElwdjQgYWRkcmVzc2VzIENJRFIgYmxvY2tcbiAgICAgIGVuYWJsZURuc0hvc3RuYW1lczogdGhpcy5kbnNIb3N0bmFtZXNFbmFibGVkLFxuICAgICAgZW5hYmxlRG5zU3VwcG9ydDogdGhpcy5kbnNTdXBwb3J0RW5hYmxlZCxcbiAgICAgIGlwdjRJcGFtUG9vbElkOiB2cGNPcHRpb25zLmlwdjRJcGFtUG9vbD8uaXBhbVBvb2xJZCwgLy8gZm9yIElwdjQgaXBhbSBvcHRpb25cbiAgICAgIGlwdjROZXRtYXNrTGVuZ3RoOiB2cGNPcHRpb25zLmlwdjROZXRtYXNrTGVuZ3RoLCAvLyBmb3IgSXB2NCBpcGFtIG9wdGlvblxuICAgICAgaW5zdGFuY2VUZW5hbmN5OiBpbnN0YW5jZVRlbmFuY3ksXG4gICAgfSk7XG5cbiAgICB0aGlzLm5vZGUuZGVmYXVsdENoaWxkID0gdGhpcy5yZXNvdXJjZTtcbiAgICB0aGlzLnZwY0NpZHJCbG9jayA9IHRoaXMucmVzb3VyY2UuYXR0ckNpZHJCbG9jaztcbiAgICBpZiAodnBjT3B0aW9ucy5pcHY0Q2lkckJsb2NrKSB7XG4gICAgICB0aGlzLmlwdjRDaWRyQmxvY2sgPSB2cGNPcHRpb25zLmlwdjRDaWRyQmxvY2s7XG4gICAgfVxuICAgIHRoaXMuaXB2NkNpZHJCbG9ja3MgPSB0aGlzLnJlc291cmNlLmF0dHJJcHY2Q2lkckJsb2NrcztcbiAgICB0aGlzLnZwY0lkID0gdGhpcy5yZXNvdXJjZS5hdHRyVnBjSWQ7XG4gICAgdGhpcy52cGNBcm4gPSBBcm4uZm9ybWF0KHtcbiAgICAgIHNlcnZpY2U6ICdlYzInLFxuICAgICAgcmVzb3VyY2U6ICd2cGMnLFxuICAgICAgcmVzb3VyY2VOYW1lOiB0aGlzLnZwY0lkLFxuICAgIH0sIHRoaXMuc3RhY2spO1xuICAgIHRoaXMucmVnaW9uID0gdGhpcy5zdGFjay5yZWdpb247XG4gICAgdGhpcy5vd25lckFjY291bnRJZCA9IHRoaXMuc3RhY2suYWNjb3VudDtcblxuICAgIGlmIChwcm9wcy5zZWNvbmRhcnlBZGRyZXNzQmxvY2tzKSB7XG4gICAgICBjb25zdCBzZWNvbmRhcnlBZGRyZXNzQmxvY2tzOiBJSXBBZGRyZXNzZXNbXSA9IHByb3BzLnNlY29uZGFyeUFkZHJlc3NCbG9ja3M7XG5cbiAgICAgIGZvciAoY29uc3Qgc2Vjb25kYXJ5QWRkcmVzc0Jsb2NrIG9mIHNlY29uZGFyeUFkZHJlc3NCbG9ja3MpIHtcblxuICAgICAgICBjb25zdCBzZWNvbmRhcnlWcGNPcHRpb25zOiBWcGNDaWRyT3B0aW9ucyA9IHNlY29uZGFyeUFkZHJlc3NCbG9jay5hbGxvY2F0ZVZwY0NpZHIoKTtcbiAgICAgICAgaWYgKCFzZWNvbmRhcnlWcGNPcHRpb25zLmNpZHJCbG9ja05hbWUpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NpZHIgQmxvY2sgTmFtZSBpcyByZXF1aXJlZCB0byBjcmVhdGUgc2Vjb25kYXJ5IElQIGFkZHJlc3MnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzZWNvbmRhcnlWcGNPcHRpb25zLmFtYXpvblByb3ZpZGVkIHx8IHNlY29uZGFyeVZwY09wdGlvbnMuaXB2NklwYW1Qb29sKSB7XG4gICAgICAgICAgdGhpcy51c2VJcHY2ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICAvL3ZhbGlkYXRlIENJRFIgcmFuZ2VzIHBlciBSRkMgMTkxOFxuICAgICAgICBpZiAoc2Vjb25kYXJ5VnBjT3B0aW9ucy5pcHY0Q2lkckJsb2NrISkge1xuICAgICAgICAgIGNvbnN0IHJldCA9IHZhbGlkYXRlSXB2NGFkZHJlc3Moc2Vjb25kYXJ5VnBjT3B0aW9ucy5pcHY0Q2lkckJsb2NrLCB0aGlzLnJlc291cmNlLmNpZHJCbG9jayk7XG4gICAgICAgICAgaWYgKHJldCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ0lEUiBibG9jayBzaG91bGQgYmUgaW4gdGhlIHNhbWUgUkZDIDE5MTggcmFuZ2UgaW4gdGhlIFZQQycpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoc2Vjb25kYXJ5VnBjT3B0aW9ucy5pcHY0SXBhbVByb3Zpc2lvbmVkQ2lkcnMhKSB7XG4gICAgICAgICAgdGhpcy5pcHY0SXBhbVByb3Zpc2lvbmVkQ2lkcnM/LnB1c2goLi4uc2Vjb25kYXJ5VnBjT3B0aW9ucy5pcHY0SXBhbVByb3Zpc2lvbmVkQ2lkcnMpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHZwY0NpZHJCbG9jayA9IG5ldyBWUENDaWRyQmxvY2sodGhpcywgc2Vjb25kYXJ5VnBjT3B0aW9ucy5jaWRyQmxvY2tOYW1lLCB7XG4gICAgICAgICAgdnBjSWQ6IHRoaXMudnBjSWQsXG4gICAgICAgICAgY2lkckJsb2NrOiBzZWNvbmRhcnlWcGNPcHRpb25zLmlwdjRDaWRyQmxvY2ssXG4gICAgICAgICAgaXB2NElwYW1Qb29sSWQ6IHNlY29uZGFyeVZwY09wdGlvbnMuaXB2NElwYW1Qb29sPy5pcGFtUG9vbElkLFxuICAgICAgICAgIGlwdjROZXRtYXNrTGVuZ3RoOiBzZWNvbmRhcnlWcGNPcHRpb25zLmlwdjROZXRtYXNrTGVuZ3RoLFxuICAgICAgICAgIGlwdjZOZXRtYXNrTGVuZ3RoOiBzZWNvbmRhcnlWcGNPcHRpb25zLmlwdjZOZXRtYXNrTGVuZ3RoLFxuICAgICAgICAgIGlwdjZJcGFtUG9vbElkOiBzZWNvbmRhcnlWcGNPcHRpb25zLmlwdjZJcGFtUG9vbD8uaXBhbVBvb2xJZCxcbiAgICAgICAgICBhbWF6b25Qcm92aWRlZElwdjZDaWRyQmxvY2s6IHNlY29uZGFyeVZwY09wdGlvbnMuYW1hem9uUHJvdmlkZWQsXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoc2Vjb25kYXJ5VnBjT3B0aW9ucy5kZXBlbmRlbmNpZXMpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IGRlcCBvZiBzZWNvbmRhcnlWcGNPcHRpb25zLmRlcGVuZGVuY2llcykge1xuICAgICAgICAgICAgdnBjQ2lkckJsb2NrLm5vZGUuYWRkRGVwZW5kZW5jeShkZXApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvL0NyZWF0ZSBzZWNvbmRhcnkgYmxvY2tzIGZvciBJcHY0IGFuZCBJcHY2XG4gICAgICAgIHRoaXMuc2Vjb25kYXJ5Q2lkckJsb2NrPy5wdXNoKHZwY0NpZHJCbG9jayk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRW1wdHkgYXJyYXkgZm9yIGlzb2xhdGVkIHN1Ym5ldHNcbiAgICAgKi9cbiAgICB0aGlzLmlzb2xhdGVkU3VibmV0cyA9IG5ldyBBcnJheTxJU3VibmV0PjtcblxuICAgIC8qKlxuICAgICAqIEVtcHR5IGFycmF5IGZvciBwdWJsaWMgc3VibmV0c1xuICAgICAqL1xuICAgIHRoaXMucHVibGljU3VibmV0cyA9IG5ldyBBcnJheTxJU3VibmV0PjtcblxuICAgIC8qKlxuICAgICAqIEVtcHR5IGFycmF5IGZvciBwcml2YXRlIHN1Ym5ldHNcbiAgICAgKi9cbiAgICB0aGlzLnByaXZhdGVTdWJuZXRzID0gbmV3IEFycmF5PElTdWJuZXQ+O1xuXG4gICAgLyoqXG4gICAgICogRGVwZW5kYWJsZSB0aGF0IGNhbiBiZSBkZXBlbmRlZCB1cG9uIHRvIGZvcmNlIGludGVybmV0IGNvbm5lY3Rpdml0eSBlc3RhYmxpc2hlZCBvbiB0aGUgVlBDXG4gICAgICogQWRkIGlndyB0byB0aGlzIGlmIGl0cyBhIHB1YmxpYyBzdWJuZXRcbiAgICAgKi9cbiAgICB0aGlzLmludGVybmV0Q29ubmVjdGl2aXR5RXN0YWJsaXNoZWQgPSB0aGlzLl9pbnRlcm5ldENvbm5lY3Rpdml0eUVzdGFibGlzaGVkO1xuICB9XG59XG4vKipcbiAqIFN1cHBvcnRzIGFzc2lnbmluZyBJUHY0IGFkZHJlc3MgdG8gVlBDXG4gKi9cbmNsYXNzIGlwdjRDaWRyQWxsb2NhdGlvbiBpbXBsZW1lbnRzIElJcEFkZHJlc3NlcyB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBjaWRyQmxvY2s6IHN0cmluZywgcHJpdmF0ZSByZWFkb25seSBwcm9wcz86IHsgY2lkckJsb2NrTmFtZTogc3RyaW5nfSkge1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIENJRFIgYmxvY2sgcHJvdmlkZWQgYnkgdGhlIHVzZXIgdG8gc2V0IElQdjRcbiAgICovXG4gIGFsbG9jYXRlVnBjQ2lkcigpOiBWcGNDaWRyT3B0aW9ucyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlwdjRDaWRyQmxvY2s6IHRoaXMuY2lkckJsb2NrLFxuICAgICAgY2lkckJsb2NrTmFtZTogdGhpcy5wcm9wcz8uY2lkckJsb2NrTmFtZSxcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogU3VwcG9ydHMgQW1hem9uIFByb3ZpZGVkIElwdjYgcmFuZ2VzXG4gKi9cbmNsYXNzIEFtYXpvblByb3ZpZGVkIGltcGxlbWVudHMgSUlwQWRkcmVzc2VzIHtcbiAgLyoqXG4gICAqIFJlcHJlc2VudHMgYW4gQW1hem9uLXByb3ZpZGVkIElQdjYgQ0lEUiByYW5nZSBmb3IgYSBWUEMuXG4gICAqXG4gICAqIFRoaXMgY2xhc3MgaW1wbGVtZW50cyB0aGUgSUlwQWRkcmVzc2VzIGludGVyZmFjZSBhbmQgaXMgdXNlZCB0byBhbGxvY2F0ZSBhbiBBbWF6b24tcHJvdmlkZWRcbiAgICogSVB2NiBDSURSIHJhbmdlIGZvciBhIFZQQy4gV2hlbiBhbiBpbnN0YW5jZSBvZiB0aGlzIGNsYXNzIGlzIHVzZWQgdG8gYWxsb2NhdGUgdGhlIFZQQyBDSURSLFxuICAgKiBBbWF6b24gd2lsbCBhdXRvbWF0aWNhbGx5IGFzc2lnbiBhbiBJUHY2IENJRFIgcmFuZ2UgZnJvbSBpdHMgcG9vbCBvZiBhdmFpbGFibGUgYWRkcmVzc2VzLlxuICAgKi9cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHByb3BzOiB7IGNpZHJCbG9ja05hbWU6IHN0cmluZ30pIHt9O1xuXG4gIGFsbG9jYXRlVnBjQ2lkcigpOiBWcGNDaWRyT3B0aW9ucyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFtYXpvblByb3ZpZGVkOiB0cnVlLFxuICAgICAgY2lkckJsb2NrTmFtZTogdGhpcy5wcm9wcy5jaWRyQmxvY2tOYW1lLFxuICAgIH07XG4gIH1cblxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYW4gSVB2NCBhZGRyZXNzIHJhbmdlIG1hbmFnZWQgYnkgQVdTIElQIEFkZHJlc3MgTWFuYWdlciAoSVBBTSkuXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1yZXNvdXJjZS1lYzItaXBhbS5odG1sXG4gKi9cbmNsYXNzIElwYW1JcHY2IGltcGxlbWVudHMgSUlwQWRkcmVzc2VzIHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHByb3BzOiBJcGFtT3B0aW9ucykge1xuICB9XG5cbiAgYWxsb2NhdGVWcGNDaWRyKCk6IFZwY0NpZHJPcHRpb25zIHtcbiAgICByZXR1cm4ge1xuICAgICAgaXB2Nk5ldG1hc2tMZW5ndGg6IHRoaXMucHJvcHMubmV0bWFza0xlbmd0aCxcbiAgICAgIGlwdjZJcGFtUG9vbDogdGhpcy5wcm9wcy5pcGFtUG9vbCxcbiAgICAgIGRlcGVuZGVuY2llczogdGhpcy5wcm9wcy5pcGFtUG9vbD8uaXBhbUNpZHJzLm1hcChjID0+IGMgYXMgQ2ZuUmVzb3VyY2UpLFxuICAgICAgY2lkckJsb2NrTmFtZTogdGhpcy5wcm9wcy5jaWRyQmxvY2tOYW1lLFxuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIElQdjQgYWRkcmVzcyByYW5nZSBtYW5hZ2VkIGJ5IEFXUyBJUCBBZGRyZXNzIE1hbmFnZXIgKElQQU0pLlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcmVzb3VyY2UtZWMyLWlwYW0uaHRtbFxuICovXG5jbGFzcyBJcGFtSXB2NCBpbXBsZW1lbnRzIElJcEFkZHJlc3NlcyB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBwcm9wczogSXBhbU9wdGlvbnMpIHtcbiAgfVxuICBhbGxvY2F0ZVZwY0NpZHIoKTogVnBjQ2lkck9wdGlvbnMge1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGlwdjROZXRtYXNrTGVuZ3RoOiB0aGlzLnByb3BzLm5ldG1hc2tMZW5ndGgsXG4gICAgICBpcHY0SXBhbVBvb2w6IHRoaXMucHJvcHMuaXBhbVBvb2wsXG4gICAgICBjaWRyQmxvY2tOYW1lOiB0aGlzLnByb3BzPy5jaWRyQmxvY2tOYW1lLFxuICAgICAgaXB2NElwYW1Qcm92aXNpb25lZENpZHJzOiB0aGlzLnByb3BzLmlwYW1Qb29sPy5pcGFtSXB2NENpZHJzLFxuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiBJbnRlcmZhY2UgdG8gY3JlYXRlIEwyIGZvciBWUEMgQ2lkciBCbG9ja1xuICovXG5leHBvcnQgaW50ZXJmYWNlIElWUENDaWRyQmxvY2sge1xuICAvKipcbiAgICogQW1hem9uIFByb3ZpZGVkIElwdjZcbiAgICovXG4gIHJlYWRvbmx5IGFtYXpvblByb3ZpZGVkSXB2NkNpZHJCbG9jaz8gOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgc2Vjb25kYXJ5IElQdjQgQ0lEUiBCbG9ja1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIENJRFIgYmxvY2sgcHJvdmlkZWRcbiAgICovXG4gIHJlYWRvbmx5IGNpZHJCbG9jaz86IHN0cmluZztcblxuICAvKipcbiAgICogSVBBTSBwb29sIGZvciBJUHY2IGFkZHJlc3MgdHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgaXB2NklwYW1Qb29sSWQgPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJUEFNIHBvb2wgZm9yIElQdjQgYWRkcmVzcyB0eXBlXG4gICAqL1xuICByZWFkb25seSBpcHY0SXBhbVBvb2xJZCA/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQXR0cmlidXRlcyBmb3IgVlBDQ2lkckJsb2NrIHVzZWQgZm9yIGRlZmluaW5nIGEgbmV3IENJRFIgQmxvY2tcbiAqIGFuZCBhbHNvIGZvciBpbXBvcnRpbmcgYW4gZXhpc3RpbmcgQ0lEUlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZQQ0NpZHJCbG9ja2F0dHJpYnV0ZXMge1xuICAvKipcbiAgICogQW1hem9uIFByb3ZpZGVkIElwdjZcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGFtYXpvblByb3ZpZGVkSXB2NkNpZHJCbG9jaz8gOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgc2Vjb25kYXJ5IElQdjQgQ0lEUiBCbG9ja1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIENJRFIgYmxvY2sgcHJvdmlkZWRcbiAgICovXG4gIHJlYWRvbmx5IGNpZHJCbG9jaz86IHN0cmluZztcblxuICAvKipcbiAgKiBUaGUgc2Vjb25kYXJ5IElQdjQgQ0lEUiBCbG9ja1xuICAqXG4gICogQGRlZmF1bHQgLSBubyBDSURSIGJsb2NrIHByb3ZpZGVkXG4gICovXG4gIHJlYWRvbmx5IGNpZHJCbG9ja05hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE5ldCBtYXNrIGxlbmd0aCBmb3IgSVB2NiBhZGRyZXNzIHR5cGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBOZXQgbWFzayBsZW5ndGggY29uZmlndXJlZCBmb3IgSVB2NlxuICAgKi9cbiAgcmVhZG9ubHkgaXB2Nk5ldG1hc2tMZW5ndGg/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE5ldCBtYXNrIGxlbmd0aCBmb3IgSVB2NCBhZGRyZXNzIHR5cGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBOZXQgbWFzayBsZW5ndGggY29uZmlndXJlZCBmb3IgSVB2NFxuICAgKi9cbiAgcmVhZG9ubHkgaXB2NE5ldG1hc2tMZW5ndGg/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIElQQU0gcG9vbCBmb3IgSVB2NiBhZGRyZXNzIHR5cGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBJUEFNIHBvb2wgSWQgcHJvdmlkZWQgZm9yIElQdjZcbiAgICovXG4gIHJlYWRvbmx5IGlwdjZJcGFtUG9vbElkID86IHN0cmluZztcblxuICAvKipcbiAgICogSVBBTSBwb29sIGZvciBJUHY0IGFkZHJlc3MgdHlwZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIElQQU0gcG9vbCBJZCBwcm92aWRlZCBmb3IgSVB2NFxuICAgKi9cbiAgcmVhZG9ubHkgaXB2NElwYW1Qb29sSWQgPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJUHY0IENJRFIgcHJvdmlzaW9uZWQgdW5kZXIgcG9vbFxuICAgKiBSZXF1aXJlZCB0byBjaGVjayBmb3Igb3ZlcmxhcHBpbmcgQ0lEUnMgYWZ0ZXIgcHJvdmlzaW9uaW5nXG4gICAqIGlzIGNvbXBsZXRlIHVuZGVyIElQQU0gcG9vbFxuICAgKiBAZGVmYXVsdCAtIG5vIElQQU0gSVB2NCBDSURSIHJhbmdlIGlzIHByb3Zpc2lvbmVkIHVzaW5nIElQQU1cbiAgICovXG4gIHJlYWRvbmx5IGlwdjRJcGFtUHJvdmlzaW9uZWRDaWRycz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEludGVyZmFjZSBWUENDaWRyQmxvY2tcbiAqL1xuaW50ZXJmYWNlIFZQQ0NpZHJCbG9ja1Byb3BzIGV4dGVuZHMgVlBDQ2lkckJsb2NrYXR0cmlidXRlcyB7XG4gIC8qKlxuICAgKiBUaGUgVlBDIElkIGZvciBhc3NvY2lhdGluZyBDSURSIEJsb2NrIGFzIGEgc2Vjb25kYXJ5IGFkZHJlc3NcbiAgICovXG4gIHJlYWRvbmx5IHZwY0lkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogSW50ZXJuYWwgTDIgdG8gZGVmaW5lIGEgbmV3IFZQQyBDSURSIEJsb2NrXG4gKiBAaW50ZXJuYWxcbiAqL1xuY2xhc3MgVlBDQ2lkckJsb2NrIGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJVlBDQ2lkckJsb2NrIHtcblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIFZQQyBDSURSIEJsb2NrXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21WUENDaWRyQmxvY2thdHRyaWJ1dGVzKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBWUENDaWRyQmxvY2thdHRyaWJ1dGVzKSA6IElWUENDaWRyQmxvY2sge1xuICAgIGNsYXNzIEltcG9ydCBleHRlbmRzIFJlc291cmNlIGltcGxlbWVudHMgSVZQQ0NpZHJCbG9jayB7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgY2lkckJsb2NrID0gcHJvcHMuY2lkckJsb2NrO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGFtYXpvblByb3ZpZGVkSXB2NkNpZHJCbG9jayA/OiBib29sZWFuID0gcHJvcHMuYW1hem9uUHJvdmlkZWRJcHY2Q2lkckJsb2NrOztcbiAgICAgIHB1YmxpYyByZWFkb25seSBpcHY2SXBhbVBvb2xJZCA/OiBzdHJpbmcgPSBwcm9wcy5pcHY2SXBhbVBvb2xJZDtcbiAgICAgIHB1YmxpYyByZWFkb25seSBpcHY0SXBhbVBvb2xJZCA/OiBzdHJpbmcgPSBwcm9wcy5pcHY0SXBhbVBvb2xJZDtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoc2NvcGUsIGlkKTtcbiAgfVxuXG4gIHB1YmxpYyByZWFkb25seSByZXNvdXJjZTogQ2ZuVlBDQ2lkckJsb2NrO1xuXG4gIHB1YmxpYyByZWFkb25seSBjaWRyQmxvY2s/OiBzdHJpbmc7XG5cbiAgcHVibGljIHJlYWRvbmx5IGFtYXpvblByb3ZpZGVkSXB2NkNpZHJCbG9jaz86IGJvb2xlYW47XG5cbiAgcHVibGljIHJlYWRvbmx5IGlwdjZJcGFtUG9vbElkPzogc3RyaW5nO1xuXG4gIHB1YmxpYyByZWFkb25seSBpcHY0SXBhbVBvb2xJZD86IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogVlBDQ2lkckJsb2NrUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIHRoaXMucmVzb3VyY2UgPSBuZXcgQ2ZuVlBDQ2lkckJsb2NrKHRoaXMsIGlkLCBwcm9wcyk7XG4gICAgdGhpcy5ub2RlLmRlZmF1bHRDaGlsZCA9IHRoaXMucmVzb3VyY2U7XG4gICAgdGhpcy5jaWRyQmxvY2sgPSBwcm9wcy5jaWRyQmxvY2s7XG4gICAgdGhpcy5pcHY2SXBhbVBvb2xJZCA9IHByb3BzLmlwdjZJcGFtUG9vbElkO1xuICAgIHRoaXMuaXB2NElwYW1Qb29sSWQgPSBwcm9wcy5pcHY0SXBhbVBvb2xJZDtcbiAgICB0aGlzLmFtYXpvblByb3ZpZGVkSXB2NkNpZHJCbG9jayA9IHByb3BzLmFtYXpvblByb3ZpZGVkSXB2NkNpZHJCbG9jaztcbiAgfVxufVxuXG4vL0BpbnRlcm5hbCBGaXJzdCB0d28gT2N0ZXQgdG8gdmVyaWZ5IFJGQyAxOTE4XG5pbnRlcmZhY2UgSVBhZGRyZXNzQ29uZmlnIHtcbiAgb2N0ZXQxOiBudW1iZXI7XG4gIG9jdGV0MjogbnVtYmVyO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlcyB3aGV0aGVyIGEgc2Vjb25kYXJ5IElQdjQgYWRkcmVzcyBpcyB3aXRoaW4gdGhlIHNhbWUgcHJpdmF0ZSBJUCBhZGRyZXNzIHJhbmdlIGFzIHRoZSBwcmltYXJ5IElQdjQgYWRkcmVzcy5cbiAqXG4gKiBAcGFyYW0gY2lkcjEgVGhlIHNlY29uZGFyeSBJUHY0IENJRFIgYmxvY2sgdG8gYmUgdmFsaWRhdGVkLlxuICogQHBhcmFtIGNpZHIyIFRoZSBwcmltYXJ5IElQdjQgQ0lEUiBibG9jayB0byB2YWxpZGF0ZSBhZ2FpbnN0LlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgc2Vjb25kYXJ5IElQdjQgQ0lEUiBibG9jayBpcyB3aXRoaW4gdGhlIHNhbWUgcHJpdmF0ZSBJUCBhZGRyZXNzIHJhbmdlIGFzIHRoZSBwcmltYXJ5IElQdjQgQ0lEUiBibG9jaywgZmFsc2Ugb3RoZXJ3aXNlLlxuICogQGludGVybmFsXG4gKiBUaGUgcHJpdmF0ZSBJUCBhZGRyZXNzIHJhbmdlcyBhcmUgZGVmaW5lZCBieSBSRkMgMTkxOCBhcyAxMC4wLjAuMC84LCAxNzIuMTYuMC4wLzEyLCBhbmQgMTkyLjE2OC4wLjAvMTYuXG4gKi9cbmZ1bmN0aW9uIHZhbGlkYXRlSXB2NGFkZHJlc3MoY2lkcjE/OiBzdHJpbmcsIGNpZHIyPzogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmICghY2lkcjEgfHwgIWNpZHIyKSB7XG4gICAgcmV0dXJuIGZhbHNlOyAvLyBIYW5kbGUgY2FzZXMgd2hlcmUgQ0lEUiByYW5nZXMgYXJlIG5vdCBwcm92aWRlZFxuICB9XG5cbiAgY29uc3Qgb2N0ZXRzQ2lkcjE6IG51bWJlcltdID0gY2lkcjEuc3BsaXQoJy4nKS5tYXAob2N0ZXQgPT4gcGFyc2VJbnQob2N0ZXQsIDEwKSk7XG4gIGNvbnN0IG9jdGV0c0NpZHIyOiBudW1iZXJbXSA9IGNpZHIyLnNwbGl0KCcuJykubWFwKG9jdGV0ID0+IHBhcnNlSW50KG9jdGV0LCAxMCkpO1xuXG4gIGlmIChvY3RldHNDaWRyMS5sZW5ndGggIT09IDQgfHwgb2N0ZXRzQ2lkcjIubGVuZ3RoICE9PSA0KSB7XG4gICAgcmV0dXJuIGZhbHNlOyAvLyBIYW5kbGUgaW52YWxpZCBDSURSIHJhbmdlc1xuICB9XG5cbiAgY29uc3QgaXAxOiBJUGFkZHJlc3NDb25maWcgPSB7XG4gICAgb2N0ZXQxOiBvY3RldHNDaWRyMVswXSxcbiAgICBvY3RldDI6IG9jdGV0c0NpZHIxWzFdLFxuICB9O1xuXG4gIGNvbnN0IGlwMjogSVBhZGRyZXNzQ29uZmlnID0ge1xuICAgIG9jdGV0MTogb2N0ZXRzQ2lkcjJbMF0sXG4gICAgb2N0ZXQyOiBvY3RldHNDaWRyMlsxXSxcbiAgfTtcblxuICByZXR1cm4gKGlwMS5vY3RldDEgPT09IDEwICYmIGlwMi5vY3RldDEgPT09IDEwKSB8fFxuICAgIChpcDEub2N0ZXQxID09PSAxOTIgJiYgaXAxLm9jdGV0MiA9PT0gMTY4ICYmIGlwMi5vY3RldDEgPT09IDE5MiAmJiBpcDIub2N0ZXQyID09PSAxNjgpIHx8XG4gICAgKGlwMS5vY3RldDEgPT09IDE3MiAmJiBpcDEub2N0ZXQyID09PSAxNiAmJiBpcDIub2N0ZXQxID09PSAxNzIgJiYgaXAyLm9jdGV0MiA9PT0gMTYpOyAvLyBDSURSIHJhbmdlcyBiZWxvbmcgdG8gc2FtZSBwcml2YXRlIElQIGFkZHJlc3MgcmFuZ2VzXG59Il19
412
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidnBjLXYyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidnBjLXYyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGlEQUEyRztBQUMzRywyQ0FBMkU7QUFDM0UsMkNBQXFFO0FBRXJFLCtDQUFrRDtBQUNsRCwyQ0FBc0U7QUFDdEUsNkNBQTBDO0FBYTFDOztHQUVHO0FBQ0gsTUFBYSxXQUFXO0lBRXRCOztPQUVHO0lBQ0ksTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFnQixFQUFFLEtBQTZCOzs7Ozs7Ozs7O1FBQ2hFLE9BQU8sSUFBSSxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7S0FDaEQ7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxRQUFRLENBQUMsZUFBNEI7Ozs7Ozs7Ozs7UUFDakQsT0FBTyxJQUFJLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQztLQUN0QztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLFFBQVEsQ0FBQyxlQUE0Qjs7Ozs7Ozs7OztRQUNqRCxPQUFPLElBQUksUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0tBQ3RDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsa0JBQWtCLENBQUMsS0FBNEI7Ozs7Ozs7Ozs7UUFDM0QsT0FBTyxJQUFJLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUNsQzs7QUE1Qkgsa0NBNkJDOzs7QUEwTUQ7Ozs7OztHQU1HO0FBQ0gsTUFBYSxLQUFNLFNBQVEsdUJBQVM7SUFFbEM7O09BRUc7SUFDSSxNQUFNLENBQUMsbUJBQW1CLENBQUMsS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBc0I7Ozs7Ozs7Ozs7UUFDcEY7OztVQUdFO1FBQ0YsTUFBTSxhQUFjLFNBQVEsdUJBQVM7WUEyQm5DLFlBQVksU0FBb0IsRUFBRSxXQUFtQixFQUFFLEtBQXNCO2dCQUMzRSxLQUFLLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDO2dCQXhCaEIsa0JBQWEsR0FBZ0IsRUFBRSxDQUFDO2dCQUNoQyxtQkFBYyxHQUFnQixFQUFFLENBQUM7Z0JBQ2pDLG9CQUFlLEdBQWdCLEVBQUUsQ0FBQztnQkFDbEMsb0NBQStCLEdBQWdCLElBQUksNEJBQWUsRUFBRSxDQUFDO2dCQWlCckYsd0VBQXdFO2dCQUN4RCw2QkFBd0IsR0FBYSxFQUFFLENBQUM7Z0JBSXRELElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUs7b0JBQ3hCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU07b0JBQy9DLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU87b0JBQ2hFLElBQUksQ0FBQyxVQUFVLEdBQUcseUJBQVcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTO29CQUNuRSxJQUFJLENBQUMsTUFBTSxHQUFHLFVBQUcsQ0FBQyxNQUFNLENBQUM7d0JBQ3ZCLE9BQU8sRUFBRSxLQUFLO3dCQUNkLFFBQVEsRUFBRSxLQUFLO3dCQUNmLFlBQVksRUFBRSxJQUFJLENBQUMsS0FBSzt3QkFDeEIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO3dCQUNuQixPQUFPLEVBQUUsSUFBSSxDQUFDLGNBQWM7d0JBQzVCLFNBQVMsRUFBRSxJQUFJLENBQUMsVUFBVTtxQkFDM0IsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBRWYsbUZBQW1GO2dCQUNuRixnRkFBZ0Y7Z0JBQ2hGLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2hELDhEQUE4RDtnQkFDOUQsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDO2dCQUN2QywyQ0FBMkM7Z0JBQzNDLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQztnQkFDeEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDO2dCQUV4QyxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDbEIsS0FBSyxNQUFNLE1BQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7d0JBQ25DLElBQUksTUFBTSxDQUFDLFVBQVUsS0FBSyxvQkFBVSxDQUFDLG1CQUFtQixJQUFJLE1BQU0sQ0FBQyxVQUFVLEtBQUssb0JBQVUsQ0FBQyxnQkFBZ0I7NEJBQzNHLE1BQU0sQ0FBQyxVQUFVLEtBQUssb0JBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQzs0QkFDM0MsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsb0JBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLFVBQVUsSUFBRyx1QkFBdUIsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO3dCQUN4SCxDQUFDOzZCQUFNLElBQUksTUFBTSxDQUFDLFVBQVUsS0FBSyxvQkFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDOzRCQUNuRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxvQkFBUSxDQUFDLHNCQUFzQixDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsVUFBVSxJQUFHLHNCQUFzQixFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7d0JBQ3RILENBQUM7NkJBQU0sSUFBSSxNQUFNLENBQUMsVUFBVSxLQUFLLG9CQUFVLENBQUMsUUFBUSxJQUFJLE1BQU0sQ0FBQyxVQUFVLEtBQUssb0JBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDOzRCQUMxRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxvQkFBUSxDQUFDLHNCQUFzQixDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsVUFBVSxJQUFHLHdCQUF3QixFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7d0JBQzFILENBQUM7b0JBQ0gsQ0FBQztnQkFDSCxDQUFDO2dCQUNELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUMsbUJBQW1CLEVBQUUsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLDBCQUEwQixDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsYUFBYSxJQUFJLDRCQUE0QixFQUFFLEVBQUUsR0FBRyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pNLElBQUksS0FBSyxDQUFDLG1CQUFtQixFQUFFLENBQUM7b0JBQzlCLEtBQUssTUFBTSxTQUFTLElBQUksS0FBSyxDQUFDLG1CQUFtQixFQUFFLENBQUM7d0JBQ2xELElBQUksU0FBUyxDQUFDLHdCQUF3QixFQUFFLENBQUM7NEJBQ3ZDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxTQUFTLENBQUMsd0JBQXdCLENBQUMsQ0FBQzt3QkFDNUUsQ0FBQztvQkFDSCxDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1NBQ0Y7UUFDRCxPQUFPLElBQUksYUFBYSxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7S0FDNUM7SUFnR0QsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxRQUFvQixFQUFFO1FBQzlELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2YsWUFBWSxFQUFFLEtBQUssQ0FBQyxPQUFPLElBQUksV0FBSSxDQUFDLE1BQU0sQ0FBQztnQkFDekMsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLFlBQUssQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLHdCQUF3QixFQUFFLEdBQUcsRUFBRSxDQUFDO2FBQ2pHLENBQUM7U0FDSCxDQUFDLENBQUM7UUF0Q0w7O1dBRUc7UUFDYSx1QkFBa0IsR0FBcUIsSUFBSSxLQUFvQixDQUFDO1FBbUJoRjs7Ozs7O1dBTUc7UUFDYSxZQUFPLEdBQVksS0FBSyxDQUFDO1FBRXpCLGtCQUFhLEdBQVcsRUFBRSxDQUFDOzs7Ozs7K0NBbkxoQyxLQUFLOzs7O1FBNExkLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLG1CQUFtQixJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDaEYsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUV0RCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDLGtCQUFrQixJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUM7UUFDOUYsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDO1FBQ3hGLE1BQU0sZUFBZSxHQUFHLEtBQUssQ0FBQyxzQkFBc0IsSUFBSSxTQUFTLENBQUM7UUFDbEUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLGdCQUFNLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUMzQyxTQUFTLEVBQUUsVUFBVSxDQUFDLGFBQWEsRUFBRSwrQkFBK0I7WUFDcEUsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLG1CQUFtQjtZQUM1QyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsaUJBQWlCO1lBQ3hDLGNBQWMsRUFBRSxVQUFVLENBQUMsWUFBWSxFQUFFLFVBQVUsRUFBRSx1QkFBdUI7WUFDNUUsaUJBQWlCLEVBQUUsVUFBVSxDQUFDLGlCQUFpQixFQUFFLHVCQUF1QjtZQUN4RSxlQUFlLEVBQUUsZUFBZTtTQUNqQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUM7UUFDaEQsSUFBSSxVQUFVLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDO1FBQ2hELENBQUM7UUFDRCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUM7UUFDdkQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQztRQUNyQyxJQUFJLENBQUMsTUFBTSxHQUFHLFVBQUcsQ0FBQyxNQUFNLENBQUM7WUFDdkIsT0FBTyxFQUFFLEtBQUs7WUFDZCxRQUFRLEVBQUUsS0FBSztZQUNmLFlBQVksRUFBRSxJQUFJLENBQUMsS0FBSztTQUN6QixFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDaEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUV6QyxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1lBQ2pDLE1BQU0sc0JBQXNCLEdBQW1CLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQztZQUU1RSxLQUFLLE1BQU0scUJBQXFCLElBQUksc0JBQXNCLEVBQUUsQ0FBQztnQkFFM0QsTUFBTSxtQkFBbUIsR0FBbUIscUJBQXFCLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQ3BGLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztvQkFDdkMsTUFBTSxJQUFJLEtBQUssQ0FBQyw0REFBNEQsQ0FBQyxDQUFDO2dCQUNoRixDQUFDO2dCQUVELElBQUksbUJBQW1CLENBQUMsY0FBYyxJQUFJLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUFDO29CQUMzRSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztnQkFDdEIsQ0FBQztnQkFDRCxtQ0FBbUM7Z0JBQ25DLElBQUksbUJBQW1CLENBQUMsYUFBYyxFQUFFLENBQUM7b0JBQ3ZDLE1BQU0sR0FBRyxHQUFHLG1CQUFtQixDQUFDLG1CQUFtQixDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO29CQUM1RixJQUFJLEdBQUcsS0FBSyxLQUFLLEVBQUUsQ0FBQzt3QkFDbEIsTUFBTSxJQUFJLEtBQUssQ0FBQyw0REFBNEQsQ0FBQyxDQUFDO29CQUNoRixDQUFDO2dCQUNILENBQUM7Z0JBQ0QsSUFBSSxtQkFBbUIsQ0FBQyx3QkFBeUIsRUFBRSxDQUFDO29CQUNsRCxJQUFJLENBQUMsd0JBQXdCLEVBQUUsSUFBSSxDQUFDLEdBQUcsbUJBQW1CLENBQUMsd0JBQXdCLENBQUMsQ0FBQztnQkFDdkYsQ0FBQztnQkFDRCxNQUFNLFlBQVksR0FBRyxJQUFJLFlBQVksQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLENBQUMsYUFBYSxFQUFFO29CQUM3RSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7b0JBQ2pCLFNBQVMsRUFBRSxtQkFBbUIsQ0FBQyxhQUFhO29CQUM1QyxjQUFjLEVBQUUsbUJBQW1CLENBQUMsWUFBWSxFQUFFLFVBQVU7b0JBQzVELGlCQUFpQixFQUFFLG1CQUFtQixDQUFDLGlCQUFpQjtvQkFDeEQsaUJBQWlCLEVBQUUsbUJBQW1CLENBQUMsaUJBQWlCO29CQUN4RCxjQUFjLEVBQUUsbUJBQW1CLENBQUMsWUFBWSxFQUFFLFVBQVU7b0JBQzVELDJCQUEyQixFQUFFLG1CQUFtQixDQUFDLGNBQWM7aUJBQ2hFLENBQUMsQ0FBQztnQkFDSCxJQUFJLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUFDO29CQUNyQyxLQUFLLE1BQU0sR0FBRyxJQUFJLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUFDO3dCQUNuRCxZQUFZLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDdkMsQ0FBQztnQkFDSCxDQUFDO2dCQUNELDJDQUEyQztnQkFDM0MsSUFBSSxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUM5QyxDQUFDO1FBQ0gsQ0FBQztRQUVEOztXQUVHO1FBQ0gsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLEtBQWMsQ0FBQztRQUUxQzs7V0FFRztRQUNILElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxLQUFjLENBQUM7UUFFeEM7O1dBRUc7UUFDSCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksS0FBYyxDQUFDO1FBRXpDOzs7V0FHRztRQUNILElBQUksQ0FBQywrQkFBK0IsR0FBRyxJQUFJLENBQUMsZ0NBQWdDLENBQUM7S0FDOUU7O0FBeFJILHNCQXlSQzs7O0FBQ0Q7O0dBRUc7QUFDSCxNQUFNLGtCQUFrQjtJQUV0QixZQUE2QixTQUFpQixFQUFtQixLQUFnQztRQUFwRSxjQUFTLEdBQVQsU0FBUyxDQUFRO1FBQW1CLFVBQUssR0FBTCxLQUFLLENBQTJCO0tBQ2hHO0lBRUQ7O09BRUc7SUFDSCxlQUFlO1FBQ2IsT0FBTztZQUNMLGFBQWEsRUFBRSxJQUFJLENBQUMsU0FBUztZQUM3QixhQUFhLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxhQUFhO1NBQ3pDLENBQUM7S0FDSDtDQUNGO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLGNBQWM7SUFDbEI7Ozs7OztPQU1HO0lBRUgsWUFBNkIsS0FBK0I7UUFBL0IsVUFBSyxHQUFMLEtBQUssQ0FBMEI7S0FBSTtJQUFBLENBQUM7SUFFakUsZUFBZTtRQUNiLE9BQU87WUFDTCxjQUFjLEVBQUUsSUFBSTtZQUNwQixhQUFhLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhO1NBQ3hDLENBQUM7S0FDSDtDQUVGO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxRQUFRO0lBRVosWUFBNkIsS0FBa0I7UUFBbEIsVUFBSyxHQUFMLEtBQUssQ0FBYTtLQUM5QztJQUVELGVBQWU7UUFDYixPQUFPO1lBQ0wsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhO1lBQzNDLFlBQVksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVE7WUFDakMsWUFBWSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFnQixDQUFDO1lBQ3ZFLGFBQWEsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWE7U0FDeEMsQ0FBQztLQUNIO0NBQ0Y7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFFBQVE7SUFFWixZQUE2QixLQUFrQjtRQUFsQixVQUFLLEdBQUwsS0FBSyxDQUFhO0tBQzlDO0lBQ0QsZUFBZTtRQUViLE9BQU87WUFDTCxpQkFBaUIsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWE7WUFDM0MsWUFBWSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUTtZQUNqQyxhQUFhLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxhQUFhO1lBQ3hDLHdCQUF3QixFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLGFBQWE7U0FDN0QsQ0FBQztLQUNIO0NBQ0Y7QUFzR0Q7OztHQUdHO0FBQ0gsTUFBTSxZQUFhLFNBQVEsZUFBUTtJQUVqQzs7T0FFRztJQUNJLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQyxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUE2QjtRQUNsRyxNQUFNLE1BQU8sU0FBUSxlQUFRO1lBQTdCOztnQkFDa0IsY0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7Z0JBQzVCLGdDQUEyQixHQUFjLEtBQUssQ0FBQywyQkFBMkIsQ0FBQztnQkFDM0UsbUJBQWMsR0FBYSxLQUFLLENBQUMsY0FBYyxDQUFDO2dCQUNoRCxtQkFBYyxHQUFhLEtBQUssQ0FBQyxjQUFjLENBQUM7WUFDbEUsQ0FBQztZQUg0RixDQUFDO1NBRzdGO1FBQ0QsT0FBTyxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7S0FDOUI7SUFZRCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXdCO1FBQ2hFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLHlCQUFlLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQztRQUNqQyxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQyxjQUFjLENBQUM7UUFDM0MsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUMsY0FBYyxDQUFDO1FBQzNDLElBQUksQ0FBQywyQkFBMkIsR0FBRyxLQUFLLENBQUMsMkJBQTJCLENBQUM7S0FDdEU7Q0FDRjtBQVFEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBUyxtQkFBbUIsQ0FBQyxLQUFjLEVBQUUsS0FBYztJQUN6RCxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDckIsT0FBTyxLQUFLLENBQUMsQ0FBQyxrREFBa0Q7SUFDbEUsQ0FBQztJQUVELE1BQU0sV0FBVyxHQUFhLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pGLE1BQU0sV0FBVyxHQUFhLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRWpGLElBQUksV0FBVyxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksV0FBVyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN6RCxPQUFPLEtBQUssQ0FBQyxDQUFDLDZCQUE2QjtJQUM3QyxDQUFDO0lBRUQsTUFBTSxHQUFHLEdBQW9CO1FBQzNCLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBQ3RCLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDO0tBQ3ZCLENBQUM7SUFFRixNQUFNLEdBQUcsR0FBb0I7UUFDM0IsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDdEIsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7S0FDdkIsQ0FBQztJQUVGLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxLQUFLLEVBQUUsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLEVBQUUsQ0FBQztRQUM3QyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssR0FBRyxDQUFDO1FBQ3RGLENBQUMsR0FBRyxDQUFDLE1BQU0sS0FBSyxHQUFHLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxFQUFFLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxHQUFHLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLHVEQUF1RDtBQUNqSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2ZuVlBDLCBDZm5WUENDaWRyQmxvY2ssIERlZmF1bHRJbnN0YW5jZVRlbmFuY3ksIElTdWJuZXQsIFN1Ym5ldFR5cGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWMyJztcbmltcG9ydCB7IEFybiwgQ2ZuUmVzb3VyY2UsIExhenksIE5hbWVzLCBSZXNvdXJjZSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUnO1xuaW1wb3J0IHsgQ29uc3RydWN0LCBEZXBlbmRlbmN5R3JvdXAsIElEZXBlbmRhYmxlIH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBJcGFtT3B0aW9ucywgSUlwYW1Qb29sIH0gZnJvbSAnLi9pcGFtJztcbmltcG9ydCB7IElWcGNWMiwgVnBjVjJCYXNlIH0gZnJvbSAnLi92cGMtdjItYmFzZSc7XG5pbXBvcnQgeyBJU3VibmV0VjIsIFN1Ym5ldFYyLCBTdWJuZXRWMkF0dHJpYnV0ZXMgfSBmcm9tICcuL3N1Ym5ldC12Mic7XG5pbXBvcnQgeyByZWdpb25faW5mbyB9IGZyb20gJ2F3cy1jZGstbGliJztcblxuLyoqXG4gKiBBZGRpdGlvbmFsIHByb3BzIG5lZWRlZCBmb3Igc2Vjb25kYXJ5IEFkZHJlc3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZWNvbmRhcnlBZGRyZXNzUHJvcHMge1xuICAvKipcbiAgICogUmVxdWlyZWQgdG8gc2V0IFNlY29uZGFyeSBjaWRyIGJsb2NrIHJlc291cmNlIG5hbWVcbiAgICogaW4gb3JkZXIgdG8gZ2VuZXJhdGUgdW5pcXVlIGxvZ2ljYWwgaWQgZm9yIHRoZSByZXNvdXJjZS5cbiAgICovXG4gIHJlYWRvbmx5IGNpZHJCbG9ja05hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBJcEFkZHJlc3Mgb3B0aW9ucyB0byBkZWZpbmUgVlBDIFYyXG4gKi9cbmV4cG9ydCBjbGFzcyBJcEFkZHJlc3NlcyB7XG5cbiAgLyoqXG4gICAqIEFuIElQdjQgQ0lEUiBSYW5nZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBpcHY0KGlwdjRDaWRyOiBzdHJpbmcsIHByb3BzPzogU2Vjb25kYXJ5QWRkcmVzc1Byb3BzKTogSUlwQWRkcmVzc2VzIHtcbiAgICByZXR1cm4gbmV3IGlwdjRDaWRyQWxsb2NhdGlvbihpcHY0Q2lkciwgcHJvcHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFuIElwdjQgSXBhbSBQb29sXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGlwdjRJcGFtKGlwdjRJcGFtT3B0aW9uczogSXBhbU9wdGlvbnMpOiBJSXBBZGRyZXNzZXMge1xuICAgIHJldHVybiBuZXcgSXBhbUlwdjQoaXB2NElwYW1PcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbiBJcHY2IElwYW0gUG9vbFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBpcHY2SXBhbShpcHY2SXBhbU9wdGlvbnM6IElwYW1PcHRpb25zKTogSUlwQWRkcmVzc2VzIHtcbiAgICByZXR1cm4gbmV3IElwYW1JcHY2KGlwdjZJcGFtT3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogQW1hem9uIFByb3ZpZGVkIElwdjYgcmFuZ2VcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYW1hem9uUHJvdmlkZWRJcHY2KHByb3BzOiBTZWNvbmRhcnlBZGRyZXNzUHJvcHMpIDogSUlwQWRkcmVzc2VzIHtcbiAgICByZXR1cm4gbmV3IEFtYXpvblByb3ZpZGVkKHByb3BzKTtcbiAgfVxufVxuXG4vKipcbiAqIENvbnNvbGlkYXRlZCByZXR1cm4gcGFyYW1ldGVycyB0byBwYXNzIHRvIFZQQyBjb25zdHJ1Y3RcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWcGNDaWRyT3B0aW9ucyB7XG5cbiAgLyoqXG4gICAqIElQdjQgQ0lEUiBCbG9ja1xuICAgKlxuICAgKiBAZGVmYXVsdCAnMTAuMC4wLjAvMTYnXG4gICAqL1xuICByZWFkb25seSBpcHY0Q2lkckJsb2NrPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDSURSIE1hc2sgZm9yIFZwY1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIE9ubHkgcmVxdWlyZWQgd2hlbiB1c2luZyBJUEFNIElwdjRcbiAgICovXG4gIHJlYWRvbmx5IGlwdjROZXRtYXNrTGVuZ3RoPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBJcHY0IElQQU0gUG9vbFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE9ubHkgcmVxdWlyZWQgd2hlbiB1c2luZyBJUEFNIElwdjRcbiAgICovXG4gIHJlYWRvbmx5IGlwdjRJcGFtUG9vbD86IElJcGFtUG9vbDtcblxuICAvKipcbiAgICogQ0lEUiBNYXNrIGZvciBWcGNcbiAgICpcbiAgICogQGRlZmF1bHQgLSBPbmx5IHJlcXVpcmVkIHdoZW4gdXNpbmcgQVdTIElwYW1cbiAgICovXG4gIHJlYWRvbmx5IGlwdjZOZXRtYXNrTGVuZ3RoPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBJcHY2IElQQU0gcG9vbCBpZCBmb3IgVlBDIHJhbmdlLCBjYW4gb25seSBiZSBkZWZpbmVkXG4gICAqIHVuZGVyIHB1YmxpYyBzY29wZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIHBvb2wgaWRcbiAgICovXG4gIHJlYWRvbmx5IGlwdjZJcGFtUG9vbD86IElJcGFtUG9vbDtcblxuICAvKipcbiAgICogVXNlIGFtYXpvbiBwcm92aWRlZCBJUCByYW5nZVxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgYW1hem9uUHJvdmlkZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBEZXBlbmRlbmN5IHRvIGFzc29jaWF0ZSBJcHY2IENJRFIgYmxvY2tcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBkZXBlbmRlbmN5XG4gICAqL1xuICByZWFkb25seSBkZXBlbmRlbmNpZXM/OiBDZm5SZXNvdXJjZVtdO1xuXG4gIC8qKlxuICAgKiBSZXF1aXJlZCB0byBzZXQgU2Vjb25kYXJ5IGNpZHIgYmxvY2sgcmVzb3VyY2UgbmFtZVxuICAgKiBpbiBvcmRlciB0byBnZW5lcmF0ZSB1bmlxdWUgbG9naWNhbCBpZCBmb3IgdGhlIHJlc291cmNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIG5hbWUgZm9yIHByaW1hcnkgYWRkcmVzc2VzXG4gICAqL1xuICByZWFkb25seSBjaWRyQmxvY2tOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJUHY0IENJRFIgcHJvdmlzaW9uZWQgdW5kZXIgcG9vbFxuICAgKiBSZXF1aXJlZCB0byBjaGVjayBmb3Igb3ZlcmxhcHBpbmcgQ0lEUnMgYWZ0ZXIgcHJvdmlzaW9uaW5nXG4gICAqIGlzIGNvbXBsZXRlIHVuZGVyIElQQU0gcG9vbFxuICAgKiBAZGVmYXVsdCAtIG5vIElQQU0gSVB2NCBDSURSIHJhbmdlIGlzIHByb3Zpc2lvbmVkIHVzaW5nIElQQU1cbiAgICovXG4gIHJlYWRvbmx5IGlwdjRJcGFtUHJvdmlzaW9uZWRDaWRycz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEltcGxlbWVudHMgaXAgYWRkcmVzcyBhbGxvY2F0aW9uIGFjY29yZGluZyB0byB0aGUgSVBBZHJlc3MgdHlwZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIElJcEFkZHJlc3NlcyB7XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB0byBkZWZpbmUgdGhlIGltcGxlbWVudGF0aW9uIGxvZ2ljIG9mXG4gICAqIElQIGFkZHJlc3MgYWxsb2NhdGlvblxuICAgKi9cbiAgYWxsb2NhdGVWcGNDaWRyKCkgOiBWcGNDaWRyT3B0aW9ucztcblxufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgdG8gZGVmaW5lIFZQQ1xuICogW2Rpc2FibGUtYXdzbGludDpmcm9tLW1ldGhvZF1cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWcGNWMlByb3BzIHtcblxuICAvKiogQSBtdXN0IElQdjQgQ0lEUiBibG9jayBmb3IgdGhlIFZQQ1xuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS92cGMvbGF0ZXN0L3VzZXJndWlkZS92cGMtY2lkci1ibG9ja3MuaHRtbFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIElwdjQgQ0lEUiBCbG9jayAoJzEwLjAuMC4wLzE2JylcbiAgICovXG4gIHJlYWRvbmx5IHByaW1hcnlBZGRyZXNzQmxvY2s/OiBJSXBBZGRyZXNzZXM7XG5cbiAgLyoqXG4gICAqIFRoZSBzZWNvbmRhcnkgQ0lEUiBibG9ja3MgYXNzb2NpYXRlZCB3aXRoIHRoZSBWUEMuXG4gICAqIENhbiBiZSAgSVB2NCBvciBJUHY2LCB0d28gSVB2NCByYW5nZXMgbXVzdCBmb2xsb3cgUkZDIzE5MTggY29udmVudGlvblxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vdnBjL2xhdGVzdC91c2VyZ3VpZGUvdnBjLWNpZHItYmxvY2tzLmh0bWwjdnBjLXJlc2l6ZX0uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gc2Vjb25kYXJ5IElQIGFkZHJlc3NcbiAgICovXG4gIHJlYWRvbmx5IHNlY29uZGFyeUFkZHJlc3NCbG9ja3M/OiBJSXBBZGRyZXNzZXNbXTtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGluc3RhbmNlcyBsYXVuY2hlZCBpbiB0aGUgVlBDIGdldCBETlMgaG9zdG5hbWVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBlbmFibGVEbnNIb3N0bmFtZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgRE5TIHJlc29sdXRpb24gaXMgc3VwcG9ydGVkIGZvciB0aGUgVlBDLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBlbmFibGVEbnNTdXBwb3J0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGRlZmF1bHQgdGVuYW5jeSBvZiBpbnN0YW5jZXMgbGF1bmNoZWQgaW50byB0aGUgVlBDLlxuICAgKlxuICAgKiBCeSBzZXR0aW5nIHRoaXMgdG8gZGVkaWNhdGVkIHRlbmFuY3ksIGluc3RhbmNlcyB3aWxsIGJlIGxhdW5jaGVkIG9uXG4gICAqIGhhcmR3YXJlIGRlZGljYXRlZCB0byBhIHNpbmdsZSBBV1MgY3VzdG9tZXIsIHVubGVzcyBzcGVjaWZpY2FsbHkgc3BlY2lmaWVkXG4gICAqIGF0IGluc3RhbmNlIGxhdW5jaCB0aW1lLiBQbGVhc2Ugbm90ZSwgbm90IGFsbCBpbnN0YW5jZSB0eXBlcyBhcmUgdXNhYmxlXG4gICAqIHdpdGggRGVkaWNhdGVkIHRlbmFuY3kuXG4gICAqXG4gICAqIEBkZWZhdWx0IERlZmF1bHRJbnN0YW5jZVRlbmFuY3kuRGVmYXVsdCAoc2hhcmVkKSB0ZW5hbmN5XG4gICAqL1xuICByZWFkb25seSBkZWZhdWx0SW5zdGFuY2VUZW5hbmN5PzogRGVmYXVsdEluc3RhbmNlVGVuYW5jeTtcblxuICAvKipcbiAgICogUGh5c2ljYWwgbmFtZSBmb3IgdGhlIFZQQ1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIGF1dG9nZW5lcmF0ZWQgYnkgQ0RLXG4gICAqL1xuICByZWFkb25seSB2cGNOYW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgdG8gaW1wb3J0IGEgVlBDIGNyZWF0ZWQgb3V0c2lkZSBvZiBDREsgc3RhY2tcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWcGNWMkF0dHJpYnV0ZXMge1xuXG4gIC8qKlxuICAgKiBUaGUgVlBDIElEXG4gICAqIFJlZmVycyB0byBwaHlzaWNhbCBJZCBvZiB0aGUgcmVzb3VyY2VcbiAgICovXG4gIHJlYWRvbmx5IHZwY0lkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFJlZ2lvbiBpbiB3aGljaCBpbXBvcnRlZCBWUEMgaXMgaG9zdGVkXG4gICAqIHJlcXVpcmVkIGluIGNhc2Ugb2YgY3Jvc3MgcmVnaW9uIFZQQ1xuICAgKiBhcyBnaXZlbiB2YWx1ZSB3aWxsIGJlIHVzZWQgdG8gc2V0IGZpZWxkIHJlZ2lvbiBmb3IgaW1wb3J0ZWQgVlBDLFxuICAgKiB3aGljaCB0aGVuIGxhdGVyIGNhbiBiZSB1c2VkIGZvciBlc3RhYmxpc2hpbmcgVlBDIHBlZXJpbmcgY29ubmVjdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBjb25zdHJ1Y3RlZCB3aXRoIHN0YWNrIHJlZ2lvbiB2YWx1ZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIEFXUyBhY2NvdW50IHRoYXQgb3ducyB0aGUgaW1wb3J0ZWQgVlBDXG4gICAqIHJlcXVpcmVkIGluIGNhc2Ugb2YgY3Jvc3MgYWNjb3VudCBWUENcbiAgICogYXMgZ2l2ZW4gdmFsdWUgd2lsbCBiZSB1c2VkIHRvIHNldCBmaWVsZCBhY2NvdW50IGZvciBpbXBvcnRlZCBWUEMsXG4gICAqIHdoaWNoIHRoZW4gbGF0ZXIgY2FuIGJlIHVzZWQgZm9yIGVzdGFibGlzaGluZyBWUEMgcGVlcmluZyBjb25uZWN0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGNvbnN0cnVjdGVkIHdpdGggc3RhY2sgYWNjb3VudCB2YWx1ZVxuICAgKi9cbiAgcmVhZG9ubHkgb3duZXJBY2NvdW50SWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFByaW1hcnkgVlBDIENJRFIgQmxvY2sgb2YgdGhlIGltcG9ydGVkIFZQQ1xuICAgKiBDYW4gb25seSBiZSBJUHY0XG4gICAqL1xuICByZWFkb25seSB2cGNDaWRyQmxvY2s6IHN0cmluZztcblxuICAvKipcbiAgICogQSBWUE4gR2F0ZXdheSBpcyBhdHRhY2hlZCB0byB0aGUgVlBDXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gVlBOIEdhdGV3YXlcbiAgICovXG4gIHJlYWRvbmx5IHZwbkdhdGV3YXlJZD86IHN0cmluZztcblxuICAvKipcbiAgICogU3VibmV0cyBhc3NvY2lhdGVkIHdpdGggaW1wb3J0ZWQgVlBDXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gc3VibmV0cyBwcm92aWRlZCB0byBiZSBpbXBvcnRlZFxuICAgKi9cbiAgcmVhZG9ubHkgc3VibmV0cz86IFN1Ym5ldFYyQXR0cmlidXRlc1tdO1xuXG4gIC8qKlxuICAgKiBJbXBvcnQgU2Vjb25kYXJ5IENJRFIgYmxvY2tzIGFzc29jaWF0ZWQgd2l0aCBWUENcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBzZWNvbmRhcnkgSVAgYWRkcmVzc1xuICAgKi9cbiAgcmVhZG9ubHkgc2Vjb25kYXJ5Q2lkckJsb2Nrcz86IFZQQ0NpZHJCbG9ja2F0dHJpYnV0ZXNbXTtcbn1cblxuLyoqXG4gKiBUaGlzIGNsYXNzIHByb3ZpZGVzIGEgZm91bmRhdGlvbiBmb3IgY3JlYXRpbmcgYW5kIGNvbmZpZ3VyaW5nIGEgVlBDIHdpdGggYWR2YW5jZWQgZmVhdHVyZXMgc3VjaCBhcyBJUEFNIChJUCBBZGRyZXNzIE1hbmFnZW1lbnQpIGFuZCBJUHY2IHN1cHBvcnQuXG4gKlxuICogRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUge0BsaW5rIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9jZGsvYXBpL3YyL2RvY3MvYXdzLWNkay1saWIuYXdzX2VjMi5WcGMuaHRtbHxBV1MgQ0RLIERvY3VtZW50YXRpb24gb24gVlBDc30uXG4gKlxuICogQHJlc291cmNlIEFXUzo6RUMyOjpWUENcbiAqL1xuZXhwb3J0IGNsYXNzIFZwY1YyIGV4dGVuZHMgVnBjVjJCYXNlIHtcblxuICAvKipcbiAgICogQ3JlYXRlIGEgVlBDIGZyb20gZXhpc3RpbmcgYXR0cmlidXRlc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tVnBjVjJBdHRyaWJ1dGVzKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGF0dHJzOiBWcGNWMkF0dHJpYnV0ZXMpOiBJVnBjVjIge1xuICAgIC8qKlxuICAgICogSW50ZXJuYWwgY2xhc3MgdG8gYWxsb3cgdXNlcnMgdG8gaW1wb3J0IFZQQ1xuICAgICogQGludGVybmFsXG4gICAgKi9cbiAgICBjbGFzcyBJbXBvcnRlZFZwY1YyIGV4dGVuZHMgVnBjVjJCYXNlIHtcblxuICAgICAgcHVibGljIHJlYWRvbmx5IHZwY0lkOiBzdHJpbmc7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgdnBjQXJuOiBzdHJpbmc7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgcHVibGljU3VibmV0czogSVN1Ym5ldFYyW10gPSBbXTtcbiAgICAgIHB1YmxpYyByZWFkb25seSBwcml2YXRlU3VibmV0czogSVN1Ym5ldFYyW10gPSBbXTtcbiAgICAgIHB1YmxpYyByZWFkb25seSBpc29sYXRlZFN1Ym5ldHM6IElTdWJuZXRWMltdID0gW107XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgaW50ZXJuZXRDb25uZWN0aXZpdHlFc3RhYmxpc2hlZDogSURlcGVuZGFibGUgPSBuZXcgRGVwZW5kZW5jeUdyb3VwKCk7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgaXB2NENpZHJCbG9jazogc3RyaW5nO1xuICAgICAgcHVibGljIHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuICAgICAgcHVibGljIHJlYWRvbmx5IG93bmVyQWNjb3VudElkOiBzdHJpbmc7XG4gICAgICBwcml2YXRlIHJlYWRvbmx5IF9wYXJ0aXRpb24/OiBzdHJpbmc7XG5cbiAgICAgIC8qXG4gICAgICAqIFJlZmVyZW5jZSB0byBhbGwgc2Vjb25kYXJ5IGJsb2NrcyBhdHRhY2hlZFxuICAgICAgKi9cbiAgICAgIHB1YmxpYyByZWFkb25seSBzZWNvbmRhcnlDaWRyQmxvY2s/OiBJVlBDQ2lkckJsb2NrW107XG5cbiAgICAgIC8qKlxuICAgICAgKiBSZWZlcnMgdG8gYWN0dWFsIFZQQyBSZXNvdXJjZSBhdHRyaWJ1dGUgaW4gbm9uLWltcG9ydGVkIFZQQ1xuICAgICAgKiBSZXF1aXJlZCB0byBpbXBsZW1lbnQgaGVyZSBkdWUgdG8gZXh0ZW5zaW9uIGZyb20gQmFzZSBjbGFzc1xuICAgICAgKi9cbiAgICAgIHB1YmxpYyByZWFkb25seSB2cGNDaWRyQmxvY2s6IHN0cmluZztcblxuICAgICAgLy8gUmVxdWlyZWQgdG8gZG8gQ0lEUiByYW5nZSB0ZXN0IG9uIGltcG9ydGVkIFZQQ3MgdG8gY3JlYXRlIG5ldyBzdWJuZXRzXG4gICAgICBwdWJsaWMgcmVhZG9ubHkgaXB2NElwYW1Qcm92aXNpb25lZENpZHJzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgICBjb25zdHJ1Y3Rvcihjb25zdHJ1Y3Q6IENvbnN0cnVjdCwgY29uc3RydWN0SWQ6IHN0cmluZywgcHJvcHM6IFZwY1YyQXR0cmlidXRlcykge1xuICAgICAgICBzdXBlcihjb25zdHJ1Y3QsIGNvbnN0cnVjdElkKTtcbiAgICAgICAgdGhpcy52cGNJZCA9IHByb3BzLnZwY0lkLFxuICAgICAgICB0aGlzLnJlZ2lvbiA9IHByb3BzLnJlZ2lvbiA/PyB0aGlzLnN0YWNrLnJlZ2lvbixcbiAgICAgICAgdGhpcy5vd25lckFjY291bnRJZCA9IHByb3BzLm93bmVyQWNjb3VudElkID8/IHRoaXMuc3RhY2suYWNjb3VudCxcbiAgICAgICAgdGhpcy5fcGFydGl0aW9uID0gcmVnaW9uX2luZm8uUmVnaW9uSW5mby5nZXQodGhpcy5yZWdpb24pLnBhcnRpdGlvbixcbiAgICAgICAgdGhpcy52cGNBcm4gPSBBcm4uZm9ybWF0KHtcbiAgICAgICAgICBzZXJ2aWNlOiAnZWMyJyxcbiAgICAgICAgICByZXNvdXJjZTogJ3ZwYycsXG4gICAgICAgICAgcmVzb3VyY2VOYW1lOiB0aGlzLnZwY0lkLFxuICAgICAgICAgIHJlZ2lvbjogdGhpcy5yZWdpb24sXG4gICAgICAgICAgYWNjb3VudDogdGhpcy5vd25lckFjY291bnRJZCxcbiAgICAgICAgICBwYXJ0aXRpb246IHRoaXMuX3BhcnRpdGlvbixcbiAgICAgICAgfSwgdGhpcy5zdGFjayk7XG5cbiAgICAgICAgLy8gUG9wdWxhdGUgcmVnaW9uIGFuZCBhY2NvdW50IGZpZWxkcyB0aGF0IGNhbiBiZSB1c2VkIHRvIHNldCB1cCBwZWVyaW5nIGNvbm5lY3Rpb25cbiAgICAgICAgLy8gc2FtcGxlIHZwYyBBcm4gLSBhcm46YXdzOmVjMjp1cy13ZXN0LTI6MTIzNDU2Nzg5MDEyOnZwYy92cGMtMDEyMzQ1Njc4OWFiY2RlZjBcbiAgICAgICAgdGhpcy5yZWdpb24gPSB0aGlzLnZwY0Fybi5zcGxpdCgnOicpWzNdO1xuICAgICAgICB0aGlzLm93bmVyQWNjb3VudElkID0gdGhpcy52cGNBcm4uc3BsaXQoJzonKVs0XTtcbiAgICAgICAgLy8gUmVmZXJzIHRvIGFjdHVhbCBWUEMgUmVzb3VyY2UgYXR0cmlidXRlIGluIG5vbi1pbXBvcnRlZCBWUENcbiAgICAgICAgdGhpcy52cGNDaWRyQmxvY2sgPSBwcm9wcy52cGNDaWRyQmxvY2s7XG4gICAgICAgIC8vIFJlcXVpcmVkIGZvciBzdWJuZXQgcmFuZ2UgcmVsYXRlZCBjaGVja3NcbiAgICAgICAgdGhpcy5pcHY0Q2lkckJsb2NrID0gcHJvcHMudnBjQ2lkckJsb2NrO1xuICAgICAgICB0aGlzLl92cG5HYXRld2F5SWQgPSBwcm9wcy52cG5HYXRld2F5SWQ7XG5cbiAgICAgICAgaWYgKHByb3BzLnN1Ym5ldHMpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHN1Ym5ldCBvZiBwcm9wcy5zdWJuZXRzKSB7XG4gICAgICAgICAgICBpZiAoc3VibmV0LnN1Ym5ldFR5cGUgPT09IFN1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX0VHUkVTUyB8fCBzdWJuZXQuc3VibmV0VHlwZSA9PT0gU3VibmV0VHlwZS5QUklWQVRFX1dJVEhfTkFUIHx8XG4gICAgICAgICAgICAgIHN1Ym5ldC5zdWJuZXRUeXBlID09PSBTdWJuZXRUeXBlLlBSSVZBVEUpIHtcbiAgICAgICAgICAgICAgdGhpcy5wcml2YXRlU3VibmV0cy5wdXNoKFN1Ym5ldFYyLmZyb21TdWJuZXRWMkF0dHJpYnV0ZXMoc2NvcGUsIHN1Ym5ldC5zdWJuZXROYW1lPz8gJ0ltcG9ydGVkUHJpdmF0ZVN1Ym5ldCcsIHN1Ym5ldCkpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChzdWJuZXQuc3VibmV0VHlwZSA9PT0gU3VibmV0VHlwZS5QVUJMSUMpIHtcbiAgICAgICAgICAgICAgdGhpcy5wdWJsaWNTdWJuZXRzLnB1c2goU3VibmV0VjIuZnJvbVN1Ym5ldFYyQXR0cmlidXRlcyhzY29wZSwgc3VibmV0LnN1Ym5ldE5hbWU/PyAnSW1wb3J0ZWRQdWJsaWNTdWJuZXQnLCBzdWJuZXQpKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoc3VibmV0LnN1Ym5ldFR5cGUgPT09IFN1Ym5ldFR5cGUuSVNPTEFURUQgfHwgc3VibmV0LnN1Ym5ldFR5cGUgPT09IFN1Ym5ldFR5cGUuUFJJVkFURV9JU09MQVRFRCkge1xuICAgICAgICAgICAgICB0aGlzLmlzb2xhdGVkU3VibmV0cy5wdXNoKFN1Ym5ldFYyLmZyb21TdWJuZXRWMkF0dHJpYnV0ZXMoc2NvcGUsIHN1Ym5ldC5zdWJuZXROYW1lPz8gJ0ltcG9ydGVkSXNvbGF0ZWRTdWJuZXQnLCBzdWJuZXQpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWNvbmRhcnlDaWRyQmxvY2sgPSBwcm9wcy5zZWNvbmRhcnlDaWRyQmxvY2tzPy5tYXAoY2lkckJsb2NrID0+IFZQQ0NpZHJCbG9jay5mcm9tVlBDQ2lkckJsb2NrYXR0cmlidXRlcyhzY29wZSwgY2lkckJsb2NrLmNpZHJCbG9ja05hbWUgPz8gJ0ltcG9ydGVkU2Vjb25kYXJ5Q2lkckJsb2NrJywgeyAuLi5jaWRyQmxvY2sgfSkpO1xuICAgICAgICBpZiAocHJvcHMuc2Vjb25kYXJ5Q2lkckJsb2Nrcykge1xuICAgICAgICAgIGZvciAoY29uc3QgY2lkckJsb2NrIG9mIHByb3BzLnNlY29uZGFyeUNpZHJCbG9ja3MpIHtcbiAgICAgICAgICAgIGlmIChjaWRyQmxvY2suaXB2NElwYW1Qcm92aXNpb25lZENpZHJzKSB7XG4gICAgICAgICAgICAgIHRoaXMuaXB2NElwYW1Qcm92aXNpb25lZENpZHJzLnB1c2goLi4uY2lkckJsb2NrLmlwdjRJcGFtUHJvdmlzaW9uZWRDaWRycyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXcgSW1wb3J0ZWRWcGNWMihzY29wZSwgaWQsIGF0dHJzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZGVudGlmaWVyIGZvciB0aGlzIFZQQ1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHZwY0lkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB2cGNBcm46IHN0cmluZztcblxuICAvKipcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHZwY0NpZHJCbG9jazogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIElQdjYgQ0lEUiBibG9ja3MgZm9yIHRoZSBWUEMuXG4gICAqXG4gICAqIFNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcmVzb3VyY2UtZWMyLXZwYy5odG1sI2F3cy1yZXNvdXJjZS1lYzItdnBjLXJldHVybi12YWx1ZXNcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBpcHY2Q2lkckJsb2Nrczogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBwcm92aWRlciBvZiBpcHY0IGFkZHJlc3Nlc1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGlwQWRkcmVzc2VzOiBJSXBBZGRyZXNzZXM7XG5cbiAgLyoqXG4gICAqIFRoZSBBV1MgQ2xvdWRGb3JtYXRpb24gcmVzb3VyY2UgcmVwcmVzZW50aW5nIHRoZSBWUEMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcmVzb3VyY2U6IENmblZQQztcblxuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIGluc3RhbmNlcyBsYXVuY2hlZCBpbiB0aGlzIFZQQyB3aWxsIGhhdmUgcHVibGljIEROUyBob3N0bmFtZXMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZG5zSG9zdG5hbWVzRW5hYmxlZDogYm9vbGVhbjtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIEROUyBzdXBwb3J0IGlzIGVuYWJsZWQgZm9yIHRoaXMgVlBDLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGRuc1N1cHBvcnRFbmFibGVkOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJc29sYXRlZCBTdWJuZXRzIHRoYXQgYXJlIHBhcnQgb2YgdGhpcyBWUEMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaXNvbGF0ZWRTdWJuZXRzOiBJU3VibmV0W107XG5cbiAgLyoqXG4gICAqIFB1YmxpYyBTdWJuZXRzIHRoYXQgYXJlIHBhcnQgb2YgdGhpcyBWUEMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcHVibGljU3VibmV0czogSVN1Ym5ldFtdO1xuXG4gIC8qKlxuICAgKiBQdWJsaWMgU3VibmV0cyB0aGF0IGFyZSBwYXJ0IG9mIHRoaXMgVlBDLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHByaXZhdGVTdWJuZXRzOiBJU3VibmV0W107XG5cbiAgLyoqXG4gICAqIFRvIGRlZmluZSBkZXBlbmRlbmN5IG9uIGludGVybmV0IGNvbm5lY3Rpdml0eVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGludGVybmV0Q29ubmVjdGl2aXR5RXN0YWJsaXNoZWQ6IElEZXBlbmRhYmxlO1xuXG4gIC8qKlxuICAgKiByZWZlcmVuY2UgdG8gYWxsIHNlY29uZGFyeSBibG9ja3MgYXR0YWNoZWRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzZWNvbmRhcnlDaWRyQmxvY2s/OiBJVlBDQ2lkckJsb2NrW10gPSBuZXcgQXJyYXk8SVZQQ0NpZHJCbG9jaz47XG5cbiAgLyoqXG4gICAqIElQdjQgQ0lEUiBwcm92aXNpb25lZCB1c2luZyBJUEFNIHBvb2xcbiAgICogUmVxdWlyZWQgdG8gY2hlY2sgZm9yIG92ZXJsYXBwaW5nIENJRFJzIGFmdGVyIHByb3Zpc2lvbmluZ1xuICAgKiBpcyBjb21wbGV0ZSB1bmRlciBJUEFNXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaXB2NElwYW1Qcm92aXNpb25lZENpZHJzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFJlZ2lvbiBmb3IgdGhpcyBWUENcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByZWdpb246IHN0cmluZztcblxuICAvKipcbiAgICogSWRlbnRpZmllciBvZiB0aGUgb3duZXIgZm9yIHRoaXMgVlBDXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgb3duZXJBY2NvdW50SWQ6IHN0cmluZztcblxuICAvKipcbiAgICogRm9yIHZhbGlkYXRpb24gdG8gZGVmaW5lIElQdjYgc3VibmV0cywgc2V0IHRvIHRydWUgaW4gY2FzZSBvZlxuICAgKiBBbWF6b24gUHJvdmlkZWQgSVB2NiBjaWRyIHJhbmdlXG4gICAqIGlmIHRydWUsIElQdjYgYWRkcmVzc2VzIGNhbiBiZSBhdHRhY2hlZCB0byB0aGUgc3VibmV0cy5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB1c2VJcHY2OiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHVibGljIHJlYWRvbmx5IGlwdjRDaWRyQmxvY2s6IHN0cmluZyA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBWcGNWMlByb3BzID0ge30pIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHBoeXNpY2FsTmFtZTogcHJvcHMudnBjTmFtZSA/PyBMYXp5LnN0cmluZyh7XG4gICAgICAgIHByb2R1Y2U6ICgpID0+IE5hbWVzLnVuaXF1ZVJlc291cmNlTmFtZSh0aGlzLCB7IG1heExlbmd0aDogMTI4LCBhbGxvd2VkU3BlY2lhbENoYXJhY3RlcnM6ICdfJyB9KSxcbiAgICAgIH0pLFxuICAgIH0pO1xuXG4gICAgdGhpcy5pcEFkZHJlc3NlcyA9IHByb3BzLnByaW1hcnlBZGRyZXNzQmxvY2sgPz8gSXBBZGRyZXNzZXMuaXB2NCgnMTAuMC4wLjAvMTYnKTtcbiAgICBjb25zdCB2cGNPcHRpb25zID0gdGhpcy5pcEFkZHJlc3Nlcy5hbGxvY2F0ZVZwY0NpZHIoKTtcblxuICAgIHRoaXMuZG5zSG9zdG5hbWVzRW5hYmxlZCA9IHByb3BzLmVuYWJsZURuc0hvc3RuYW1lcyA9PSBudWxsID8gdHJ1ZSA6IHByb3BzLmVuYWJsZURuc0hvc3RuYW1lcztcbiAgICB0aGlzLmRuc1N1cHBvcnRFbmFibGVkID0gcHJvcHMuZW5hYmxlRG5zU3VwcG9ydCA9PSBudWxsID8gdHJ1ZSA6IHByb3BzLmVuYWJsZURuc1N1cHBvcnQ7XG4gICAgY29uc3QgaW5zdGFuY2VUZW5hbmN5ID0gcHJvcHMuZGVmYXVsdEluc3RhbmNlVGVuYW5jeSB8fCAnZGVmYXVsdCc7XG4gICAgdGhpcy5yZXNvdXJjZSA9IG5ldyBDZm5WUEModGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgY2lkckJsb2NrOiB2cGNPcHRpb25zLmlwdjRDaWRyQmxvY2ssIC8vZm9yIElwdjQgYWRkcmVzc2VzIENJRFIgYmxvY2tcbiAgICAgIGVuYWJsZURuc0hvc3RuYW1lczogdGhpcy5kbnNIb3N0bmFtZXNFbmFibGVkLFxuICAgICAgZW5hYmxlRG5zU3VwcG9ydDogdGhpcy5kbnNTdXBwb3J0RW5hYmxlZCxcbiAgICAgIGlwdjRJcGFtUG9vbElkOiB2cGNPcHRpb25zLmlwdjRJcGFtUG9vbD8uaXBhbVBvb2xJZCwgLy8gZm9yIElwdjQgaXBhbSBvcHRpb25cbiAgICAgIGlwdjROZXRtYXNrTGVuZ3RoOiB2cGNPcHRpb25zLmlwdjROZXRtYXNrTGVuZ3RoLCAvLyBmb3IgSXB2NCBpcGFtIG9wdGlvblxuICAgICAgaW5zdGFuY2VUZW5hbmN5OiBpbnN0YW5jZVRlbmFuY3ksXG4gICAgfSk7XG5cbiAgICB0aGlzLm5vZGUuZGVmYXVsdENoaWxkID0gdGhpcy5yZXNvdXJjZTtcbiAgICB0aGlzLnZwY0NpZHJCbG9jayA9IHRoaXMucmVzb3VyY2UuYXR0ckNpZHJCbG9jaztcbiAgICBpZiAodnBjT3B0aW9ucy5pcHY0Q2lkckJsb2NrKSB7XG4gICAgICB0aGlzLmlwdjRDaWRyQmxvY2sgPSB2cGNPcHRpb25zLmlwdjRDaWRyQmxvY2s7XG4gICAgfVxuICAgIHRoaXMuaXB2NkNpZHJCbG9ja3MgPSB0aGlzLnJlc291cmNlLmF0dHJJcHY2Q2lkckJsb2NrcztcbiAgICB0aGlzLnZwY0lkID0gdGhpcy5yZXNvdXJjZS5hdHRyVnBjSWQ7XG4gICAgdGhpcy52cGNBcm4gPSBBcm4uZm9ybWF0KHtcbiAgICAgIHNlcnZpY2U6ICdlYzInLFxuICAgICAgcmVzb3VyY2U6ICd2cGMnLFxuICAgICAgcmVzb3VyY2VOYW1lOiB0aGlzLnZwY0lkLFxuICAgIH0sIHRoaXMuc3RhY2spO1xuICAgIHRoaXMucmVnaW9uID0gdGhpcy5zdGFjay5yZWdpb247XG4gICAgdGhpcy5vd25lckFjY291bnRJZCA9IHRoaXMuc3RhY2suYWNjb3VudDtcblxuICAgIGlmIChwcm9wcy5zZWNvbmRhcnlBZGRyZXNzQmxvY2tzKSB7XG4gICAgICBjb25zdCBzZWNvbmRhcnlBZGRyZXNzQmxvY2tzOiBJSXBBZGRyZXNzZXNbXSA9IHByb3BzLnNlY29uZGFyeUFkZHJlc3NCbG9ja3M7XG5cbiAgICAgIGZvciAoY29uc3Qgc2Vjb25kYXJ5QWRkcmVzc0Jsb2NrIG9mIHNlY29uZGFyeUFkZHJlc3NCbG9ja3MpIHtcblxuICAgICAgICBjb25zdCBzZWNvbmRhcnlWcGNPcHRpb25zOiBWcGNDaWRyT3B0aW9ucyA9IHNlY29uZGFyeUFkZHJlc3NCbG9jay5hbGxvY2F0ZVZwY0NpZHIoKTtcbiAgICAgICAgaWYgKCFzZWNvbmRhcnlWcGNPcHRpb25zLmNpZHJCbG9ja05hbWUpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NpZHIgQmxvY2sgTmFtZSBpcyByZXF1aXJlZCB0byBjcmVhdGUgc2Vjb25kYXJ5IElQIGFkZHJlc3MnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzZWNvbmRhcnlWcGNPcHRpb25zLmFtYXpvblByb3ZpZGVkIHx8IHNlY29uZGFyeVZwY09wdGlvbnMuaXB2NklwYW1Qb29sKSB7XG4gICAgICAgICAgdGhpcy51c2VJcHY2ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICAvL3ZhbGlkYXRlIENJRFIgcmFuZ2VzIHBlciBSRkMgMTkxOFxuICAgICAgICBpZiAoc2Vjb25kYXJ5VnBjT3B0aW9ucy5pcHY0Q2lkckJsb2NrISkge1xuICAgICAgICAgIGNvbnN0IHJldCA9IHZhbGlkYXRlSXB2NGFkZHJlc3Moc2Vjb25kYXJ5VnBjT3B0aW9ucy5pcHY0Q2lkckJsb2NrLCB0aGlzLnJlc291cmNlLmNpZHJCbG9jayk7XG4gICAgICAgICAgaWYgKHJldCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ0lEUiBibG9jayBzaG91bGQgYmUgaW4gdGhlIHNhbWUgUkZDIDE5MTggcmFuZ2UgaW4gdGhlIFZQQycpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoc2Vjb25kYXJ5VnBjT3B0aW9ucy5pcHY0SXBhbVByb3Zpc2lvbmVkQ2lkcnMhKSB7XG4gICAgICAgICAgdGhpcy5pcHY0SXBhbVByb3Zpc2lvbmVkQ2lkcnM/LnB1c2goLi4uc2Vjb25kYXJ5VnBjT3B0aW9ucy5pcHY0SXBhbVByb3Zpc2lvbmVkQ2lkcnMpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHZwY0NpZHJCbG9jayA9IG5ldyBWUENDaWRyQmxvY2sodGhpcywgc2Vjb25kYXJ5VnBjT3B0aW9ucy5jaWRyQmxvY2tOYW1lLCB7XG4gICAgICAgICAgdnBjSWQ6IHRoaXMudnBjSWQsXG4gICAgICAgICAgY2lkckJsb2NrOiBzZWNvbmRhcnlWcGNPcHRpb25zLmlwdjRDaWRyQmxvY2ssXG4gICAgICAgICAgaXB2NElwYW1Qb29sSWQ6IHNlY29uZGFyeVZwY09wdGlvbnMuaXB2NElwYW1Qb29sPy5pcGFtUG9vbElkLFxuICAgICAgICAgIGlwdjROZXRtYXNrTGVuZ3RoOiBzZWNvbmRhcnlWcGNPcHRpb25zLmlwdjROZXRtYXNrTGVuZ3RoLFxuICAgICAgICAgIGlwdjZOZXRtYXNrTGVuZ3RoOiBzZWNvbmRhcnlWcGNPcHRpb25zLmlwdjZOZXRtYXNrTGVuZ3RoLFxuICAgICAgICAgIGlwdjZJcGFtUG9vbElkOiBzZWNvbmRhcnlWcGNPcHRpb25zLmlwdjZJcGFtUG9vbD8uaXBhbVBvb2xJZCxcbiAgICAgICAgICBhbWF6b25Qcm92aWRlZElwdjZDaWRyQmxvY2s6IHNlY29uZGFyeVZwY09wdGlvbnMuYW1hem9uUHJvdmlkZWQsXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoc2Vjb25kYXJ5VnBjT3B0aW9ucy5kZXBlbmRlbmNpZXMpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IGRlcCBvZiBzZWNvbmRhcnlWcGNPcHRpb25zLmRlcGVuZGVuY2llcykge1xuICAgICAgICAgICAgdnBjQ2lkckJsb2NrLm5vZGUuYWRkRGVwZW5kZW5jeShkZXApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvL0NyZWF0ZSBzZWNvbmRhcnkgYmxvY2tzIGZvciBJcHY0IGFuZCBJcHY2XG4gICAgICAgIHRoaXMuc2Vjb25kYXJ5Q2lkckJsb2NrPy5wdXNoKHZwY0NpZHJCbG9jayk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRW1wdHkgYXJyYXkgZm9yIGlzb2xhdGVkIHN1Ym5ldHNcbiAgICAgKi9cbiAgICB0aGlzLmlzb2xhdGVkU3VibmV0cyA9IG5ldyBBcnJheTxJU3VibmV0PjtcblxuICAgIC8qKlxuICAgICAqIEVtcHR5IGFycmF5IGZvciBwdWJsaWMgc3VibmV0c1xuICAgICAqL1xuICAgIHRoaXMucHVibGljU3VibmV0cyA9IG5ldyBBcnJheTxJU3VibmV0PjtcblxuICAgIC8qKlxuICAgICAqIEVtcHR5IGFycmF5IGZvciBwcml2YXRlIHN1Ym5ldHNcbiAgICAgKi9cbiAgICB0aGlzLnByaXZhdGVTdWJuZXRzID0gbmV3IEFycmF5PElTdWJuZXQ+O1xuXG4gICAgLyoqXG4gICAgICogRGVwZW5kYWJsZSB0aGF0IGNhbiBiZSBkZXBlbmRlZCB1cG9uIHRvIGZvcmNlIGludGVybmV0IGNvbm5lY3Rpdml0eSBlc3RhYmxpc2hlZCBvbiB0aGUgVlBDXG4gICAgICogQWRkIGlndyB0byB0aGlzIGlmIGl0cyBhIHB1YmxpYyBzdWJuZXRcbiAgICAgKi9cbiAgICB0aGlzLmludGVybmV0Q29ubmVjdGl2aXR5RXN0YWJsaXNoZWQgPSB0aGlzLl9pbnRlcm5ldENvbm5lY3Rpdml0eUVzdGFibGlzaGVkO1xuICB9XG59XG4vKipcbiAqIFN1cHBvcnRzIGFzc2lnbmluZyBJUHY0IGFkZHJlc3MgdG8gVlBDXG4gKi9cbmNsYXNzIGlwdjRDaWRyQWxsb2NhdGlvbiBpbXBsZW1lbnRzIElJcEFkZHJlc3NlcyB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBjaWRyQmxvY2s6IHN0cmluZywgcHJpdmF0ZSByZWFkb25seSBwcm9wcz86IHsgY2lkckJsb2NrTmFtZTogc3RyaW5nfSkge1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIENJRFIgYmxvY2sgcHJvdmlkZWQgYnkgdGhlIHVzZXIgdG8gc2V0IElQdjRcbiAgICovXG4gIGFsbG9jYXRlVnBjQ2lkcigpOiBWcGNDaWRyT3B0aW9ucyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlwdjRDaWRyQmxvY2s6IHRoaXMuY2lkckJsb2NrLFxuICAgICAgY2lkckJsb2NrTmFtZTogdGhpcy5wcm9wcz8uY2lkckJsb2NrTmFtZSxcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogU3VwcG9ydHMgQW1hem9uIFByb3ZpZGVkIElwdjYgcmFuZ2VzXG4gKi9cbmNsYXNzIEFtYXpvblByb3ZpZGVkIGltcGxlbWVudHMgSUlwQWRkcmVzc2VzIHtcbiAgLyoqXG4gICAqIFJlcHJlc2VudHMgYW4gQW1hem9uLXByb3ZpZGVkIElQdjYgQ0lEUiByYW5nZSBmb3IgYSBWUEMuXG4gICAqXG4gICAqIFRoaXMgY2xhc3MgaW1wbGVtZW50cyB0aGUgSUlwQWRkcmVzc2VzIGludGVyZmFjZSBhbmQgaXMgdXNlZCB0byBhbGxvY2F0ZSBhbiBBbWF6b24tcHJvdmlkZWRcbiAgICogSVB2NiBDSURSIHJhbmdlIGZvciBhIFZQQy4gV2hlbiBhbiBpbnN0YW5jZSBvZiB0aGlzIGNsYXNzIGlzIHVzZWQgdG8gYWxsb2NhdGUgdGhlIFZQQyBDSURSLFxuICAgKiBBbWF6b24gd2lsbCBhdXRvbWF0aWNhbGx5IGFzc2lnbiBhbiBJUHY2IENJRFIgcmFuZ2UgZnJvbSBpdHMgcG9vbCBvZiBhdmFpbGFibGUgYWRkcmVzc2VzLlxuICAgKi9cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHByb3BzOiB7IGNpZHJCbG9ja05hbWU6IHN0cmluZ30pIHt9O1xuXG4gIGFsbG9jYXRlVnBjQ2lkcigpOiBWcGNDaWRyT3B0aW9ucyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFtYXpvblByb3ZpZGVkOiB0cnVlLFxuICAgICAgY2lkckJsb2NrTmFtZTogdGhpcy5wcm9wcy5jaWRyQmxvY2tOYW1lLFxuICAgIH07XG4gIH1cblxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYW4gSVB2NCBhZGRyZXNzIHJhbmdlIG1hbmFnZWQgYnkgQVdTIElQIEFkZHJlc3MgTWFuYWdlciAoSVBBTSkuXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1yZXNvdXJjZS1lYzItaXBhbS5odG1sXG4gKi9cbmNsYXNzIElwYW1JcHY2IGltcGxlbWVudHMgSUlwQWRkcmVzc2VzIHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHByb3BzOiBJcGFtT3B0aW9ucykge1xuICB9XG5cbiAgYWxsb2NhdGVWcGNDaWRyKCk6IFZwY0NpZHJPcHRpb25zIHtcbiAgICByZXR1cm4ge1xuICAgICAgaXB2Nk5ldG1hc2tMZW5ndGg6IHRoaXMucHJvcHMubmV0bWFza0xlbmd0aCxcbiAgICAgIGlwdjZJcGFtUG9vbDogdGhpcy5wcm9wcy5pcGFtUG9vbCxcbiAgICAgIGRlcGVuZGVuY2llczogdGhpcy5wcm9wcy5pcGFtUG9vbD8uaXBhbUNpZHJzLm1hcChjID0+IGMgYXMgQ2ZuUmVzb3VyY2UpLFxuICAgICAgY2lkckJsb2NrTmFtZTogdGhpcy5wcm9wcy5jaWRyQmxvY2tOYW1lLFxuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIElQdjQgYWRkcmVzcyByYW5nZSBtYW5hZ2VkIGJ5IEFXUyBJUCBBZGRyZXNzIE1hbmFnZXIgKElQQU0pLlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcmVzb3VyY2UtZWMyLWlwYW0uaHRtbFxuICovXG5jbGFzcyBJcGFtSXB2NCBpbXBsZW1lbnRzIElJcEFkZHJlc3NlcyB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBwcm9wczogSXBhbU9wdGlvbnMpIHtcbiAgfVxuICBhbGxvY2F0ZVZwY0NpZHIoKTogVnBjQ2lkck9wdGlvbnMge1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGlwdjROZXRtYXNrTGVuZ3RoOiB0aGlzLnByb3BzLm5ldG1hc2tMZW5ndGgsXG4gICAgICBpcHY0SXBhbVBvb2w6IHRoaXMucHJvcHMuaXBhbVBvb2wsXG4gICAgICBjaWRyQmxvY2tOYW1lOiB0aGlzLnByb3BzPy5jaWRyQmxvY2tOYW1lLFxuICAgICAgaXB2NElwYW1Qcm92aXNpb25lZENpZHJzOiB0aGlzLnByb3BzLmlwYW1Qb29sPy5pcGFtSXB2NENpZHJzLFxuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiBJbnRlcmZhY2UgdG8gY3JlYXRlIEwyIGZvciBWUEMgQ2lkciBCbG9ja1xuICovXG5leHBvcnQgaW50ZXJmYWNlIElWUENDaWRyQmxvY2sge1xuICAvKipcbiAgICogQW1hem9uIFByb3ZpZGVkIElwdjZcbiAgICovXG4gIHJlYWRvbmx5IGFtYXpvblByb3ZpZGVkSXB2NkNpZHJCbG9jaz8gOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgc2Vjb25kYXJ5IElQdjQgQ0lEUiBCbG9ja1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIENJRFIgYmxvY2sgcHJvdmlkZWRcbiAgICovXG4gIHJlYWRvbmx5IGNpZHJCbG9jaz86IHN0cmluZztcblxuICAvKipcbiAgICogSVBBTSBwb29sIGZvciBJUHY2IGFkZHJlc3MgdHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgaXB2NklwYW1Qb29sSWQgPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJUEFNIHBvb2wgZm9yIElQdjQgYWRkcmVzcyB0eXBlXG4gICAqL1xuICByZWFkb25seSBpcHY0SXBhbVBvb2xJZCA/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQXR0cmlidXRlcyBmb3IgVlBDQ2lkckJsb2NrIHVzZWQgZm9yIGRlZmluaW5nIGEgbmV3IENJRFIgQmxvY2tcbiAqIGFuZCBhbHNvIGZvciBpbXBvcnRpbmcgYW4gZXhpc3RpbmcgQ0lEUlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZQQ0NpZHJCbG9ja2F0dHJpYnV0ZXMge1xuICAvKipcbiAgICogQW1hem9uIFByb3ZpZGVkIElwdjZcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGFtYXpvblByb3ZpZGVkSXB2NkNpZHJCbG9jaz8gOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgc2Vjb25kYXJ5IElQdjQgQ0lEUiBCbG9ja1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIENJRFIgYmxvY2sgcHJvdmlkZWRcbiAgICovXG4gIHJlYWRvbmx5IGNpZHJCbG9jaz86IHN0cmluZztcblxuICAvKipcbiAgKiBUaGUgc2Vjb25kYXJ5IElQdjQgQ0lEUiBCbG9ja1xuICAqXG4gICogQGRlZmF1bHQgLSBubyBDSURSIGJsb2NrIHByb3ZpZGVkXG4gICovXG4gIHJlYWRvbmx5IGNpZHJCbG9ja05hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE5ldCBtYXNrIGxlbmd0aCBmb3IgSVB2NiBhZGRyZXNzIHR5cGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBOZXQgbWFzayBsZW5ndGggY29uZmlndXJlZCBmb3IgSVB2NlxuICAgKi9cbiAgcmVhZG9ubHkgaXB2Nk5ldG1hc2tMZW5ndGg/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE5ldCBtYXNrIGxlbmd0aCBmb3IgSVB2NCBhZGRyZXNzIHR5cGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBOZXQgbWFzayBsZW5ndGggY29uZmlndXJlZCBmb3IgSVB2NFxuICAgKi9cbiAgcmVhZG9ubHkgaXB2NE5ldG1hc2tMZW5ndGg/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIElQQU0gcG9vbCBmb3IgSVB2NiBhZGRyZXNzIHR5cGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBJUEFNIHBvb2wgSWQgcHJvdmlkZWQgZm9yIElQdjZcbiAgICovXG4gIHJlYWRvbmx5IGlwdjZJcGFtUG9vbElkID86IHN0cmluZztcblxuICAvKipcbiAgICogSVBBTSBwb29sIGZvciBJUHY0IGFkZHJlc3MgdHlwZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIElQQU0gcG9vbCBJZCBwcm92aWRlZCBmb3IgSVB2NFxuICAgKi9cbiAgcmVhZG9ubHkgaXB2NElwYW1Qb29sSWQgPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJUHY0IENJRFIgcHJvdmlzaW9uZWQgdW5kZXIgcG9vbFxuICAgKiBSZXF1aXJlZCB0byBjaGVjayBmb3Igb3ZlcmxhcHBpbmcgQ0lEUnMgYWZ0ZXIgcHJvdmlzaW9uaW5nXG4gICAqIGlzIGNvbXBsZXRlIHVuZGVyIElQQU0gcG9vbFxuICAgKiBAZGVmYXVsdCAtIG5vIElQQU0gSVB2NCBDSURSIHJhbmdlIGlzIHByb3Zpc2lvbmVkIHVzaW5nIElQQU1cbiAgICovXG4gIHJlYWRvbmx5IGlwdjRJcGFtUHJvdmlzaW9uZWRDaWRycz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEludGVyZmFjZSBWUENDaWRyQmxvY2tcbiAqL1xuaW50ZXJmYWNlIFZQQ0NpZHJCbG9ja1Byb3BzIGV4dGVuZHMgVlBDQ2lkckJsb2NrYXR0cmlidXRlcyB7XG4gIC8qKlxuICAgKiBUaGUgVlBDIElkIGZvciBhc3NvY2lhdGluZyBDSURSIEJsb2NrIGFzIGEgc2Vjb25kYXJ5IGFkZHJlc3NcbiAgICovXG4gIHJlYWRvbmx5IHZwY0lkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogSW50ZXJuYWwgTDIgdG8gZGVmaW5lIGEgbmV3IFZQQyBDSURSIEJsb2NrXG4gKiBAaW50ZXJuYWxcbiAqL1xuY2xhc3MgVlBDQ2lkckJsb2NrIGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJVlBDQ2lkckJsb2NrIHtcblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIFZQQyBDSURSIEJsb2NrXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21WUENDaWRyQmxvY2thdHRyaWJ1dGVzKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBWUENDaWRyQmxvY2thdHRyaWJ1dGVzKSA6IElWUENDaWRyQmxvY2sge1xuICAgIGNsYXNzIEltcG9ydCBleHRlbmRzIFJlc291cmNlIGltcGxlbWVudHMgSVZQQ0NpZHJCbG9jayB7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgY2lkckJsb2NrID0gcHJvcHMuY2lkckJsb2NrO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGFtYXpvblByb3ZpZGVkSXB2NkNpZHJCbG9jayA/OiBib29sZWFuID0gcHJvcHMuYW1hem9uUHJvdmlkZWRJcHY2Q2lkckJsb2NrOztcbiAgICAgIHB1YmxpYyByZWFkb25seSBpcHY2SXBhbVBvb2xJZCA/OiBzdHJpbmcgPSBwcm9wcy5pcHY2SXBhbVBvb2xJZDtcbiAgICAgIHB1YmxpYyByZWFkb25seSBpcHY0SXBhbVBvb2xJZCA/OiBzdHJpbmcgPSBwcm9wcy5pcHY0SXBhbVBvb2xJZDtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoc2NvcGUsIGlkKTtcbiAgfVxuXG4gIHB1YmxpYyByZWFkb25seSByZXNvdXJjZTogQ2ZuVlBDQ2lkckJsb2NrO1xuXG4gIHB1YmxpYyByZWFkb25seSBjaWRyQmxvY2s/OiBzdHJpbmc7XG5cbiAgcHVibGljIHJlYWRvbmx5IGFtYXpvblByb3ZpZGVkSXB2NkNpZHJCbG9jaz86IGJvb2xlYW47XG5cbiAgcHVibGljIHJlYWRvbmx5IGlwdjZJcGFtUG9vbElkPzogc3RyaW5nO1xuXG4gIHB1YmxpYyByZWFkb25seSBpcHY0SXBhbVBvb2xJZD86IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogVlBDQ2lkckJsb2NrUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIHRoaXMucmVzb3VyY2UgPSBuZXcgQ2ZuVlBDQ2lkckJsb2NrKHRoaXMsIGlkLCBwcm9wcyk7XG4gICAgdGhpcy5ub2RlLmRlZmF1bHRDaGlsZCA9IHRoaXMucmVzb3VyY2U7XG4gICAgdGhpcy5jaWRyQmxvY2sgPSBwcm9wcy5jaWRyQmxvY2s7XG4gICAgdGhpcy5pcHY2SXBhbVBvb2xJZCA9IHByb3BzLmlwdjZJcGFtUG9vbElkO1xuICAgIHRoaXMuaXB2NElwYW1Qb29sSWQgPSBwcm9wcy5pcHY0SXBhbVBvb2xJZDtcbiAgICB0aGlzLmFtYXpvblByb3ZpZGVkSXB2NkNpZHJCbG9jayA9IHByb3BzLmFtYXpvblByb3ZpZGVkSXB2NkNpZHJCbG9jaztcbiAgfVxufVxuXG4vL0BpbnRlcm5hbCBGaXJzdCB0d28gT2N0ZXQgdG8gdmVyaWZ5IFJGQyAxOTE4XG5pbnRlcmZhY2UgSVBhZGRyZXNzQ29uZmlnIHtcbiAgb2N0ZXQxOiBudW1iZXI7XG4gIG9jdGV0MjogbnVtYmVyO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlcyB3aGV0aGVyIGEgc2Vjb25kYXJ5IElQdjQgYWRkcmVzcyBpcyB3aXRoaW4gdGhlIHNhbWUgcHJpdmF0ZSBJUCBhZGRyZXNzIHJhbmdlIGFzIHRoZSBwcmltYXJ5IElQdjQgYWRkcmVzcy5cbiAqXG4gKiBAcGFyYW0gY2lkcjEgVGhlIHNlY29uZGFyeSBJUHY0IENJRFIgYmxvY2sgdG8gYmUgdmFsaWRhdGVkLlxuICogQHBhcmFtIGNpZHIyIFRoZSBwcmltYXJ5IElQdjQgQ0lEUiBibG9jayB0byB2YWxpZGF0ZSBhZ2FpbnN0LlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgc2Vjb25kYXJ5IElQdjQgQ0lEUiBibG9jayBpcyB3aXRoaW4gdGhlIHNhbWUgcHJpdmF0ZSBJUCBhZGRyZXNzIHJhbmdlIGFzIHRoZSBwcmltYXJ5IElQdjQgQ0lEUiBibG9jaywgZmFsc2Ugb3RoZXJ3aXNlLlxuICogQGludGVybmFsXG4gKiBUaGUgcHJpdmF0ZSBJUCBhZGRyZXNzIHJhbmdlcyBhcmUgZGVmaW5lZCBieSBSRkMgMTkxOCBhcyAxMC4wLjAuMC84LCAxNzIuMTYuMC4wLzEyLCBhbmQgMTkyLjE2OC4wLjAvMTYuXG4gKi9cbmZ1bmN0aW9uIHZhbGlkYXRlSXB2NGFkZHJlc3MoY2lkcjE/OiBzdHJpbmcsIGNpZHIyPzogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmICghY2lkcjEgfHwgIWNpZHIyKSB7XG4gICAgcmV0dXJuIGZhbHNlOyAvLyBIYW5kbGUgY2FzZXMgd2hlcmUgQ0lEUiByYW5nZXMgYXJlIG5vdCBwcm92aWRlZFxuICB9XG5cbiAgY29uc3Qgb2N0ZXRzQ2lkcjE6IG51bWJlcltdID0gY2lkcjEuc3BsaXQoJy4nKS5tYXAob2N0ZXQgPT4gcGFyc2VJbnQob2N0ZXQsIDEwKSk7XG4gIGNvbnN0IG9jdGV0c0NpZHIyOiBudW1iZXJbXSA9IGNpZHIyLnNwbGl0KCcuJykubWFwKG9jdGV0ID0+IHBhcnNlSW50KG9jdGV0LCAxMCkpO1xuXG4gIGlmIChvY3RldHNDaWRyMS5sZW5ndGggIT09IDQgfHwgb2N0ZXRzQ2lkcjIubGVuZ3RoICE9PSA0KSB7XG4gICAgcmV0dXJuIGZhbHNlOyAvLyBIYW5kbGUgaW52YWxpZCBDSURSIHJhbmdlc1xuICB9XG5cbiAgY29uc3QgaXAxOiBJUGFkZHJlc3NDb25maWcgPSB7XG4gICAgb2N0ZXQxOiBvY3RldHNDaWRyMVswXSxcbiAgICBvY3RldDI6IG9jdGV0c0NpZHIxWzFdLFxuICB9O1xuXG4gIGNvbnN0IGlwMjogSVBhZGRyZXNzQ29uZmlnID0ge1xuICAgIG9jdGV0MTogb2N0ZXRzQ2lkcjJbMF0sXG4gICAgb2N0ZXQyOiBvY3RldHNDaWRyMlsxXSxcbiAgfTtcblxuICByZXR1cm4gKGlwMS5vY3RldDEgPT09IDEwICYmIGlwMi5vY3RldDEgPT09IDEwKSB8fFxuICAgIChpcDEub2N0ZXQxID09PSAxOTIgJiYgaXAxLm9jdGV0MiA9PT0gMTY4ICYmIGlwMi5vY3RldDEgPT09IDE5MiAmJiBpcDIub2N0ZXQyID09PSAxNjgpIHx8XG4gICAgKGlwMS5vY3RldDEgPT09IDE3MiAmJiBpcDEub2N0ZXQyID09PSAxNiAmJiBpcDIub2N0ZXQxID09PSAxNzIgJiYgaXAyLm9jdGV0MiA9PT0gMTYpOyAvLyBDSURSIHJhbmdlcyBiZWxvbmcgdG8gc2FtZSBwcml2YXRlIElQIGFkZHJlc3MgcmFuZ2VzXG59Il19
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@aws-cdk/aws-ec2-alpha",
3
3
  "private": false,
4
- "version": "2.169.0-alpha.0",
4
+ "version": "2.170.0-alpha.0",
5
5
  "description": "The CDK construct library for VPC V2",
6
6
  "main": "lib/index.js",
7
7
  "types": "lib/index.d.ts",
@@ -77,17 +77,17 @@
77
77
  },
78
78
  "license": "Apache-2.0",
79
79
  "devDependencies": {
80
- "@aws-cdk/cdk-build-tools": "2.169.0-alpha.0",
81
- "@aws-cdk/integ-runner": "2.169.0-alpha.0",
82
- "@aws-cdk/integ-tests-alpha": "^2.169.0-alpha.0",
83
- "@aws-cdk/pkglint": "2.169.0-alpha.0",
80
+ "@aws-cdk/cdk-build-tools": "2.170.0-alpha.0",
81
+ "@aws-cdk/integ-runner": "2.170.0-alpha.0",
82
+ "@aws-cdk/integ-tests-alpha": "^2.170.0-alpha.0",
83
+ "@aws-cdk/pkglint": "2.170.0-alpha.0",
84
84
  "@types/jest": "^29.5.14",
85
- "aws-cdk-lib": "2.169.0",
85
+ "aws-cdk-lib": "2.170.0",
86
86
  "jest": "^29.7.0"
87
87
  },
88
88
  "homepage": "https://github.com/aws/aws-cdk",
89
89
  "peerDependencies": {
90
- "aws-cdk-lib": "^2.169.0",
90
+ "aws-cdk-lib": "^2.170.0",
91
91
  "constructs": "^10.0.0"
92
92
  },
93
93
  "separate-module": false,
@@ -1,7 +1,7 @@
1
1
  // Fixture with packages imported, but nothing else
2
2
  import { Construct } from 'constructs';
3
3
  import { Stack, App, Fn } from 'aws-cdk-lib';
4
- import { VpcV2, SubnetV2, IpAddresses, IpamPoolPublicIpSource, RouteTable, InternetGateway, Route, NatGateway, EgressOnlyInternetGateway } from '@aws-cdk/aws-ec2-alpha';
4
+ import { VpcV2, SubnetV2, IpAddresses, IpamPoolPublicIpSource, RouteTable, InternetGateway, Route, NatGateway, EgressOnlyInternetGateway, VPCPeeringConnection } from '@aws-cdk/aws-ec2-alpha';
5
5
  import { Ipam, AwsServiceName, IpCidr, AddressFamily } from '@aws-cdk/aws-ec2-alpha';
6
6
  import { NatConnectivityType } from '@aws-cdk/aws-ec2-alpha';
7
7
  import { SubnetType, VpnConnectionType } from 'aws-cdk-lib/aws-ec2';