@awesome-cordova-plugins/urbanairship 5.43.0 → 6.0.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/index.js CHANGED
@@ -6,6 +6,8 @@ var __extends = (this && this.__extends) || (function () {
6
6
  return extendStatics(d, b);
7
7
  };
8
8
  return function (d, b) {
9
+ if (typeof b !== "function" && b !== null)
10
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
9
11
  extendStatics(d, b);
10
12
  function __() { this.constructor = d; }
11
13
  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
@@ -141,4 +143,4 @@ var UrbanAirShipOriginal = /** @class */ (function (_super) {
141
143
  }(AwesomeCordovaNativePlugin));
142
144
  var UrbanAirShip = new UrbanAirShipOriginal();
143
145
  export { UrbanAirShip };
144
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvQGF3ZXNvbWUtY29yZG92YS1wbHVnaW5zL3BsdWdpbnMvdXJiYW5haXJzaGlwL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFDQSxPQUFPLHVDQUErQyxNQUFNLCtCQUErQixDQUFDO0FBQzVGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFzQ2xDOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFOLElBQVksZ0JBS1g7QUFMRCxXQUFZLGdCQUFnQjtJQUMxQix1REFBUSxDQUFBO0lBQ1IseURBQVMsQ0FBQTtJQUNULHlEQUFTLENBQUE7SUFDVCx5REFBUyxDQUFBO0FBQ1gsQ0FBQyxFQUxXLGdCQUFnQixLQUFoQixnQkFBZ0IsUUFLM0I7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBTixJQUFZLG1CQUtYO0FBTEQsV0FBWSxtQkFBbUI7SUFDN0IsNkRBQVEsQ0FBQTtJQUNSLCtEQUFTLENBQUE7SUFDVCwrREFBUyxDQUFBO0lBQ1QsK0RBQVMsQ0FBQTtBQUNYLENBQUMsRUFMVyxtQkFBbUIsS0FBbkIsbUJBQW1CLFFBSzlCOztJQStCaUMsZ0NBQTBCOzs7O0lBYTFELGlDQUFVO0lBa0JWLHFDQUFjO0lBY2QscUNBQWM7SUFpQmQsa0NBQVc7SUFzQlgscUNBQWM7SUFxQmQsMkNBQW9CO0lBdUJwQixnREFBeUI7SUFVekIsK0JBQVE7SUFzQlIsOEJBQU8sYUFBQyxNQUFXO0lBYW5CLG1EQUE0QixhQUFDLE1BQVc7SUFjeEMsd0RBQWlDLGFBQUMsT0FBZ0I7SUFhbEQsa0RBQTJCLGFBQUMsT0FBZ0I7SUFhNUMsaURBQTBCO0lBYzFCLGdEQUF5QjtJQWF6QixtQ0FBWTtJQWlCWiw0Q0FBcUIsYUFBQyxLQUFjO0lBY3BDLGtDQUFXLGFBQUMsS0FBYztJQWExQiw4QkFBTztJQWFQLDhCQUFPLGFBQUMsSUFBYztJQWN0QiwrQkFBUTtJQWNSLCtCQUFRLGFBQUMsS0FBYTtJQWF0Qix5Q0FBa0I7SUFhbEIsMENBQW1CLGFBQUMsT0FBZ0I7SUFhcEMsb0NBQWE7SUFrQmIsbUNBQVk7SUFnQlosbUNBQVksYUFBQyxTQUFpQixFQUFFLFdBQW1CLEVBQUUsT0FBZSxFQUFFLFNBQWlCO0lBa0J2RiwwQ0FBbUIsYUFBQyxPQUFnQjtJQWFwQyx5Q0FBa0I7SUFhbEIsbUNBQVk7SUFhWixtQ0FBWSxhQUFDLFNBQWlCO0lBZTlCLGdDQUFTLGFBQUMsVUFBa0IsRUFBRSxXQUFnQjtJQVE5Qyw2Q0FBc0I7SUFRdEIsMkNBQW9CO0lBUXBCLDRDQUFxQjtJQVFyQiw4Q0FBdUI7SUFXdkIsbURBQTRCO0lBVzVCLG1EQUE0QjtJQWdCNUIsa0RBQTJCO0lBZ0IzQixrREFBMkI7SUFjM0IsOENBQXVCLGFBQUMsR0FBVyxFQUFFLFVBQWtCO0lBZXZELHlDQUFrQixhQUFDLE9BQWdCO0lBY25DLHdDQUFpQjtJQWNqQixtREFBNEIsYUFBQyxPQUFnQjtJQWM3QyxrREFBMkI7SUFZM0IsMkNBQW9CO0lBWXBCLDJDQUFvQjtJQVlwQiwwQ0FBbUI7SUFhbkIsaURBQTBCO0lBbUIxQix1Q0FBZ0I7SUFhaEIsMkNBQW9CLGFBQUMsU0FBaUI7SUFhdEMseUNBQWtCLGFBQUMsU0FBaUI7SUFhcEMsMENBQW1CLGFBQUMsU0FBaUI7SUFlckMsbUNBQVk7SUFjWiwwQ0FBbUIsYUFBQyxTQUFpQjtJQVlyQyx3Q0FBaUIsYUFBQyxVQUFrQjtJQVlwQyx5Q0FBa0I7SUFhbEIsNkNBQXNCO0lBZXRCLDBDQUFtQixhQUFDLE9BQWdCO0lBYXBDLHFDQUFjLGFBQUMsS0FBYTtJQWE1QixxQ0FBYztJQVlkLGlDQUFVO0lBY1YsMkNBQW9CLGFBQUMsS0FBdUI7SUFjNUMsNkNBQXNCLGFBQUMsT0FBNEI7SUFlbkQscUNBQWM7SUFhZCxzQ0FBZSxhQUFDLE9BQWdCO0lBYWhDLHVDQUFnQjtJQWFoQix3Q0FBaUIsYUFBQyxPQUFnQjtJQWlCbEMscUNBQWMsYUFBQyxLQUFhO0lBaUI1QixrQ0FBVyxhQUFDLE1BQWM7SUFpQjFCLG9DQUFhLGFBQUMsUUFBa0I7SUFpQmhDLHFDQUFjLGFBQUMsUUFBa0I7SUFJakM7Ozs7Ozs7O09BUUc7SUFDSCx5Q0FBa0IsR0FBbEIsVUFBbUIsUUFBa0I7UUFDbkMsT0FBTztJQUNULENBQUM7SUFjRCx5Q0FBa0I7SUFpQmxCLHVDQUFnQixhQUFDLFFBQWtCO0lBaUJuQyxnREFBeUIsYUFBQyxrQkFBMEI7SUFpQnBELDJDQUFvQixhQUFDLG1CQUEyQjs7Ozs7Ozt1QkExcENsRDtFQStGa0MsMEJBQTBCO1NBQS9DLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQbHVnaW4sIENvcmRvdmEsIEF3ZXNvbWVDb3Jkb3ZhTmF0aXZlUGx1Z2luIH0gZnJvbSAnQGF3ZXNvbWUtY29yZG92YS1wbHVnaW5zL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG4vKipcbiAqIEludGVyZmFjZSBmb3IgVUFpcnNoaXAgVGFnIEVkaXRvclxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhZ0dyb3VwRWRpdG9yIHtcbiAgYWRkVGFncyh0YWdHcm91cDogc3RyaW5nLCB0YWdzOiBzdHJpbmdbXSk6IFRhZ0dyb3VwRWRpdG9yO1xuICByZW1vdmVUYWdzKHRhZ0dyb3VwOiBzdHJpbmcsIHRhZ3M6IHN0cmluZ1tdKTogVGFnR3JvdXBFZGl0b3I7XG4gIGFwcGx5KHN1Y2Nlc3M6ICgpID0+IHZvaWQsIGZhaWx1cmU6IChtZXNzYWdlOiBzdHJpbmcpID0+IHZvaWQpOiBUYWdHcm91cEVkaXRvcjtcbn1cblxuLyoqXG4gKiBJbnRlcmZhY2UgZm9yIFVBaXJzaGlwIEF0dHJpYnV0ZXMgRWRpdG9yXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXR0cmlidXRlc0VkaXRvciB7XG4gIHNldEF0dHJpYnV0ZShuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgRGF0ZSk6IEF0dHJpYnV0ZXNFZGl0b3I7XG4gIHJlbW92ZUF0dHJpYnV0ZShuYW1lOiBzdHJpbmcpOiBBdHRyaWJ1dGVzRWRpdG9yO1xuICBhcHBseShzdWNjZXNzOiAoKSA9PiB2b2lkLCBmYWlsdXJlOiAobWVzc2FnZTogc3RyaW5nKSA9PiB2b2lkKTogQXR0cmlidXRlc0VkaXRvcjtcbn1cblxuLyoqXG4gKiBJbnRlcmZhY2UgZm9yIFVBaXJzaGlwIENoYW5uZWxTdWJzY3JpcHRpb25MaXN0IEVkaXRvclxuICovXG5leHBvcnQgaW50ZXJmYWNlIENoYW5uZWxTdWJzY3JpcHRpb25MaXN0RWRpdG9yIHtcbiAgc3Vic2NyaWJlKHN1YnNjcmlwdGlvbkxpc3RJRDogc3RyaW5nKTogQ2hhbm5lbFN1YnNjcmlwdGlvbkxpc3RFZGl0b3I7XG4gIHVuc3Vic2NyaWJlKHN1YnNjcmlwdGlvbkxpc3RJRDogc3RyaW5nKTogQ2hhbm5lbFN1YnNjcmlwdGlvbkxpc3RFZGl0b3I7XG4gIGFwcGx5KHN1Y2Nlc3M6ICgpID0+IHZvaWQsIGZhaWx1cmU6IChtZXNzYWdlOiBzdHJpbmcpID0+IHZvaWQpOiBDaGFubmVsU3Vic2NyaXB0aW9uTGlzdEVkaXRvcjtcbn1cblxuLyoqXG4gKiBJbnRlcmZhY2UgZm9yIFVBaXJzaGlwIENvbnRhY3RTdWJzY3JpcHRpb25MaXN0IEVkaXRvclxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnRhY3RTdWJzY3JpcHRpb25MaXN0RWRpdG9yIHtcbiAgc3Vic2NyaWJlKHN1YnNjcmlwdGlvbkxpc3RJRDogc3RyaW5nLCBjb250YWN0U2NvcGU6ICdBUFAnIHwgJ0VNQUlMJyk6IENvbnRhY3RTdWJzY3JpcHRpb25MaXN0RWRpdG9yO1xuICB1bnN1YnNjcmliZShzdWJzY3JpcHRpb25MaXN0SUQ6IHN0cmluZywgY29udGFjdFNjb3BlOiAnQVBQJyB8ICdFTUFJTCcpOiBDb250YWN0U3Vic2NyaXB0aW9uTGlzdEVkaXRvcjtcbiAgYXBwbHkoc3VjY2VzczogKCkgPT4gdm9pZCwgZmFpbHVyZTogKG1lc3NhZ2U6IHN0cmluZykgPT4gdm9pZCk6IENvbnRhY3RTdWJzY3JpcHRpb25MaXN0RWRpdG9yO1xufVxuXG4vKipcbiAqIEVudW0gZm9yIG5vdGlmaWNhdGlvbiB0eXBlcy5cbiAqXG4gKiBAcmVhZG9ubHlcbiAqIEBlbnVtIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBlbnVtIE5vdGlmaWNhdGlvblR5cGUge1xuICBub25lID0gMCxcbiAgYmFkZ2UgPSAxLFxuICBzb3VuZCA9IDIsXG4gIGFsZXJ0ID0gNCxcbn1cblxuLyoqXG4gKiBFbnVtIGZvciBwcmVzZW50YXRpb24gb3B0aW9ucy5cbiAqXG4gKiBAcmVhZG9ubHlcbiAqIEBlbnVtIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBlbnVtIFByZXNlbnRhdGlvbk9wdGlvbnMge1xuICBub25lID0gMCxcbiAgYmFkZ2UgPSAxLFxuICBzb3VuZCA9IDIsXG4gIGFsZXJ0ID0gNCxcbn1cblxuLyoqXG4gKiBAbmFtZSBVcmJhbkFpclNoaXBcbiAqIEBkZXNjcmlwdGlvblxuICogVGhpcyBwbHVnaW4gZG9lcyBzb21ldGhpbmdcbiAqIEB1c2FnZVxuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHsgVXJiYW5BaXJTaGlwIH0gZnJvbSAnQGF3ZXNvbWUtY29yZG92YS1wbHVnaW5zL3VyYmFuYWlyc2hpcC9uZ3gnO1xuICpcbiAqXG4gKiBjb25zdHJ1Y3Rvcihwcml2YXRlIHVyYmFuQWlyU2hpcDogVXJiYW5BaXJTaGlwKSB7IH1cbiAqXG4gKiAuLi5cbiAqXG4gKlxuICogdGhpcy51cmJhbkFpclNoaXAudGFrZU9mZihjb25maWcpXG4gKiAgIC50aGVuKChyZXM6IGFueSkgPT4gY29uc29sZS5sb2cocmVzKSlcbiAqICAgLmNhdGNoKChlcnJvcjogYW55KSA9PiBjb25zb2xlLmVycm9yKGVycm9yKSk7XG4gKlxuICogYGBgXG4gKi9cbkBQbHVnaW4oe1xuICBwbHVnaW5OYW1lOiAnVXJiYW5BaXJTaGlwJyxcbiAgcGx1Z2luOiAndXJiYW5haXJzaGlwLWNvcmRvdmEnLFxuICBwbHVnaW5SZWY6ICd3aW5kb3cuVUFpcnNoaXAnLFxuICByZXBvOiAnaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvdXJiYW5haXJzaGlwLWNvcmRvdmEnLFxuICBpbnN0YWxsOiAnaW9uaWMgY29yZG92YSBwbHVnaW4gYWRkIHVyYmFuYWlyc2hpcC1jb3Jkb3ZhJyxcbiAgcGxhdGZvcm1zOiBbJ0FuZHJvaWQnLCAnaU9TJ10sXG59KVxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFVyYmFuQWlyU2hpcCBleHRlbmRzIEF3ZXNvbWVDb3Jkb3ZhTmF0aXZlUGx1Z2luIHtcbiAgLyoqXG4gICAqIEV2ZW50IGZpcmVkIHdoZW4gYSBuZXcgZGVlcCBsaW5rIGlzIHJlY2VpdmVkLlxuICAgKlxuICAgKiBAZXZlbnQgZGVlcF9saW5rXG4gICAqIEB0eXBlIHtvYmplY3R9XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbZGVlcExpbmtdIFRoZSBkZWVwIGxpbmsuXG4gICAqL1xuICBAQ29yZG92YSh7XG4gICAgZXZlbnRPYnNlcnZhYmxlOiB0cnVlLFxuICAgIGV2ZW50OiAndXJiYW5haXJzaGlwLmRlZXBfbGluaycsXG4gICAgZWxlbWVudDogJ2RvY3VtZW50JyxcbiAgfSlcbiAgb25EZWVwTGluaygpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBFdmVudCBmaXJlZCB3aGVuIGEgY2hhbm5lbCByZWdpc3RyYXRpb24gb2NjdXJzLlxuICAgKlxuICAgKiBAZXZlbnQgcmVnaXN0cmF0aW9uXG4gICAqIEB0eXBlIHtvYmplY3R9XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbY2hhbm5lbElEXSBUaGUgY2hhbm5lbCBJRC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtyZWdpc3RyYXRpb25Ub2tlbl0gVGhlIGRldmljZVRva2VuIG9uIGlPUywgYW5kIHRoZSBGQ00vQURNIHRva2VuIG9uIEFuZHJvaWQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbZXJyb3JdIEVycm9yIG1lc3NhZ2UgaWYgYW4gZXJyb3Igb2NjdXJyZWQuXG4gICAqL1xuICBAQ29yZG92YSh7XG4gICAgZXZlbnRPYnNlcnZhYmxlOiB0cnVlLFxuICAgIGV2ZW50OiAndXJiYW5haXJzaGlwLnJlZ2lzdHJhdGlvbicsXG4gICAgZWxlbWVudDogJ2RvY3VtZW50JyxcbiAgfSlcbiAgb25SZWdpc3RyYXRpb24oKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogRXZlbnQgZmlyZWQgd2hlbiB0aGUgaW5ib3ggaXMgdXBkYXRlZC5cbiAgICpcbiAgICogQGV2ZW50IGluYm94X3VwZGF0ZWRcbiAgICovXG4gIEBDb3Jkb3ZhKHtcbiAgICBldmVudE9ic2VydmFibGU6IHRydWUsXG4gICAgZXZlbnQ6ICd1cmJhbmFpcnNoaXAuaW5ib3hfdXBkYXRlZCcsXG4gICAgZWxlbWVudDogJ2RvY3VtZW50JyxcbiAgfSlcbiAgb25JbmJveFVwZGF0ZWQoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogRXZlbnQgZmlyZWQgd2hlbiB0aGUgaW5ib3ggbmVlZHMgdG8gYmUgZGlzcGxheWVkLiBUaGlzIGV2ZW50IGlzIG9ubHkgZW1pdHRlZCBpZiBhdXRvXG4gICAqIGxhdW5jaCBtZXNzYWdlIGNlbnRlciBpcyBkaXNhYmxlZC5cbiAgICpcbiAgICogQGV2ZW50IHNob3dfaW5ib3hcbiAgICogQHR5cGUge29iamVjdH1cbiAgICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlSWRdIFRoZSBvcHRpb25hbCBtZXNzYWdlIElELlxuICAgKi9cbiAgQENvcmRvdmEoe1xuICAgIGV2ZW50T2JzZXJ2YWJsZTogdHJ1ZSxcbiAgICBldmVudDogJ3VyYmFuYWlyc2hpcC5zaG93X2luYm94JyxcbiAgICBlbGVtZW50OiAnZG9jdW1lbnQnLFxuICB9KVxuICBvblNob3dJbmJveCgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBFdmVudCBmaXJlZCB3aGVuIGEgcHVzaCBpcyByZWNlaXZlZC5cbiAgICpcbiAgICogQGV2ZW50IHB1c2hcbiAgICogQHR5cGUge29iamVjdH1cbiAgICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2UgVGhlIHB1c2ggYWxlcnQgbWVzc2FnZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHRpdGxlIFRoZSBwdXNoIHRpdGxlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3VidGl0bGUgVGhlIHB1c2ggc3VidGl0bGUuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBleHRyYXMgQW55IHB1c2ggZXh0cmFzLlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXBzIFRoZSByYXcgYXBzIGRpY3Rpb25hcnkgKGlPUyBvbmx5KVxuICAgKiBAcGFyYW0ge251bWJlcn0gW25vdGlmaWNhdGlvbl9pZF0gVGhlIEFuZHJvaWQgbm90aWZpY2F0aW9uIElELiBEZXByZWNhdGVkIGluIGZhdm9yIG9mIG5vdGlmaWNhdGlvbklkLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW25vdGlmaWNhdGlvbklkXSBUaGUgbm90aWZpY2F0aW9uIElELlxuICAgKi9cbiAgQENvcmRvdmEoe1xuICAgIGV2ZW50T2JzZXJ2YWJsZTogdHJ1ZSxcbiAgICBldmVudDogJ3VyYmFuYWlyc2hpcC5wdXNoJyxcbiAgICBlbGVtZW50OiAnZG9jdW1lbnQnLFxuICB9KVxuICBvblB1c2hSZWNlaXZlZCgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBFdmVudCBmaXJlZCB3aGVuIG5vdGlmaWNhdGlvbiBvcGVuZWQuXG4gICAqXG4gICAqIEBldmVudCBub3RpZmljYXRpb25fb3BlbmVkXG4gICAqIEB0eXBlIHtvYmplY3R9XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlIFRoZSBwdXNoIGFsZXJ0IG1lc3NhZ2UuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBleHRyYXMgQW55IHB1c2ggZXh0cmFzLlxuICAgKiBAcGFyYW0ge251bWJlcn0gW25vdGlmaWNhdGlvbl9pZF0gVGhlIEFuZHJvaWQgbm90aWZpY2F0aW9uIElELiBEZXByZWNhdGVkIGluIGZhdm9yIG9mIG5vdGlmaWNhdGlvbklkLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW25vdGlmaWNhdGlvbklkXSBUaGUgbm90aWZpY2F0aW9uIElELlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2FjdGlvbklEXSBUaGUgSUQgb2YgdGhlIG5vdGlmaWNhdGlvbiBhY3Rpb24gYnV0dG9uIGlmIGF2YWlsYWJsZS5cbiAgICogQHBhcmFtIHtib29sZWFufSBpc0ZvcmVncm91bmQgV2lsbCBhbHdheXMgYmUgdHJ1ZSBpZiB0aGUgdXNlciB0YXBzIHRoZSBtYWluIG5vdGlmaWNhdGlvbi4gT3RoZXJ3aXNlIGl0cyBkZWZpbmVkIGJ5IHRoZSBub3RpZmljYXRpb24gYWN0aW9uIGJ1dHRvbi5cbiAgICovXG4gIEBDb3Jkb3ZhKHtcbiAgICBldmVudE9ic2VydmFibGU6IHRydWUsXG4gICAgZXZlbnQ6ICd1cmJhbmFpcnNoaXAubm90aWZpY2F0aW9uX29wZW5lZCcsXG4gICAgZWxlbWVudDogJ2RvY3VtZW50JyxcbiAgfSlcbiAgb25Ob3RpZmljYXRpb25PcGVuZWQoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogRXZlbnQgZmlyZWQgd2hlbiB0aGUgdXNlciBub3RpZmljYXRpb24gb3B0LWluIHN0YXR1cyBjaGFuZ2VzLlxuICAgKlxuICAgKiBAZXZlbnQgbm90aWZpY2F0aW9uX29wdF9pbl9zdGF0dXNcbiAgICogQHR5cGUge29iamVjdH1cbiAgICogQHBhcmFtIHtib29sZWFufSBvcHRJbiBJZiB0aGUgdXNlciBpcyBvcHRlZCBpbiBvciBub3QgdG8gdXNlciBub3RpZmljYXRpb25zLlxuICAgKiBAcGFyYW0ge29iamVjdH0gW2F1dGhvcml6ZWROb3RpZmljYXRpb25TZXR0aW5nc10gaU9TIG9ubHkuIEEgbWFwIG9mIGF1dGhvcml6ZWQgc2V0dGluZ3MuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gYXV0aG9yaXplZE5vdGlmaWNhdGlvblNldHRpbmdzLmFsZXJ0IElmIGFsZXJ0cyBhcmUgYXV0aG9yaXplZC5cbiAgICogQHBhcmFtIHtib29sZWFufSBhdXRob3JpemVkTm90aWZpY2F0aW9uU2V0dGluZ3Muc291bmQgSWYgc291bmRzIGFyZSBhdXRob3JpemVkLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGF1dGhvcml6ZWROb3RpZmljYXRpb25TZXR0aW5ncy5iYWRnZSBJZiBiYWRnZXMgYXJlIGF1dGhvcml6ZWQuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gYXV0aG9yaXplZE5vdGlmaWNhdGlvblNldHRpbmdzLmNhclBsYXkgSWYgY2FyIHBsYXkgaXMgYXV0aG9yaXplZC5cbiAgICogQHBhcmFtIHtib29sZWFufSBhdXRob3JpemVkTm90aWZpY2F0aW9uU2V0dGluZ3MubG9ja1NjcmVlbiBJZiB0aGUgbG9jayBzY3JlZW4gaXMgYXV0aG9yaXplZC5cbiAgICogQHBhcmFtIHtib29sZWFufSBhdXRob3JpemVkTm90aWZpY2F0aW9uU2V0dGluZ3Mubm90aWZpY2F0aW9uQ2VudGVyIElmIHRoZSBub3RpZmljYXRpb24gY2VudGVyIGlzIGF1dGhvcml6ZWQuXG4gICAqL1xuICBAQ29yZG92YSh7XG4gICAgZXZlbnRPYnNlcnZhYmxlOiB0cnVlLFxuICAgIGV2ZW50OiAndXJiYW5haXJzaGlwLm5vdGlmaWNhdGlvbl9vcHRfaW5fc3RhdHVzJyxcbiAgICBlbGVtZW50OiAnZG9jdW1lbnQnLFxuICB9KVxuICBvbk5vdGlmaWNhdGlvbk9wdEluU3RhdHVzKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlLWF0dGFjaGVzIGRvY3VtZW50IGV2ZW50IGxpc3RlbmVycyBpbiB0aGlzIHdlYnZpZXdcbiAgICovXG4gIEBDb3Jkb3ZhKHtcbiAgICBzeW5jOiB0cnVlLFxuICB9KVxuICByZWF0dGFjaCgpOiB2b2lkIHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogSW5pdGFpbGl6ZXMgVXJiYW4gQWlyc2hpcC5cbiAgICpcbiAgICogVGhlIHBsdWdpbiB3aWxsIGF1dG9tYXRpY2FsbHkgY2FsbCB0YWtlT2ZmIGR1cmluZyB0aGUgbmV4dCBhcHAgaW5pdCBpblxuICAgKiBvcmRlciB0byBwcm9wZXJseSBoYW5kbGUgaW5jb21pbmcgcHVzaC4gSWYgdGFrZU9mZiBpcyBjYWxsZWQgbXVsdGlwbGUgdGltZXNcbiAgICogaW4gYSBzZXNzaW9uLCBvciBpZiB0aGUgY29uZmlnIGlzIGRpZmZlcmVudCB0aGFuIHRoZSBwcmV2aW91cyBzZXNzc2lvbiwgdGhlXG4gICAqIG5ldyBjb25maWcgd2lsbCBub3QgYmUgdXNlZCB1bnRpbCB0aGUgbmV4dCBhcHAgc3RhcnQuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSAgY29uZmlnIFRoZSBVcmJhbiBBaXJzaGlwIGNvbmZpZy5cbiAgICogQHBhcmFtIHtzdHJpbmd9ICBjb25maWcuc2l0ZSBTZXRzIHRoZSBjbG91ZCBzaXRlLCBtdXN0IGJlIGVpdGhlciBFVSBvciBVUy5cbiAgICogQHBhcmFtIHtvYmplY3R9ICBjb25maWcuZGV2ZWxvcG1lbnQgVGhlIFVyYmFuIEFpcnNoaXAgZGV2ZWxvcG1lbnQgY29uZmlnLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gIGNvbmZpZy5kZXZlbG9wbWVudC5hcHBLZXkgVGhlIGRldmVsb3BtZW50IGFwcEtleS5cbiAgICogQHBhcmFtIHtzdHJpbmd9ICBjb25maWcuZGV2ZWxvcG1lbnQuYXBwU2VjcmV0IFRoZSBkZXZlbG9wbWVudCBhcHBTZWNyZXQuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSAgY29uZmlnLnByb2R1Y3Rpb24gVGhlIFVyYmFuIEFpcnNoaXAgcHJvZHVjdGlvbiBjb25maWcuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSAgY29uZmlnLnByb2R1Y3Rpb24uYXBwS2V5IFRoZSBwcm9kdWN0aW9uIGFwcEtleS5cbiAgICogQHBhcmFtIHtzdHJpbmd9ICBjb25maWcucHJvZHVjdGlvbi5hcHBTZWNyZXQgVGhlIHByb2R1Y3Rpb24gYXBwU2VjcmV0LlxuICAgKi9cbiAgQENvcmRvdmEoKVxuICB0YWtlT2ZmKGNvbmZpZzogYW55KTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgQW5kcm9pZCBub3RpZmljYXRpb24gY29uZmlnLiBWYWx1ZXMgbm90IHNldCB3aWxsIGZhbGxiYWNrIHRvIGFueSB2YWx1ZXMgc2V0IGluIHRoZSBjb25maWcueG1sLlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gIGNvbmZpZyBUaGUgbm90aWZpY2F0aW9uIGNvbmZpZy5cbiAgICogQHBhcmFtIHtzdHJpbmd9ICBbY29uZmlnLmljb25dIFRoZSBuYW1lIG9mIHRoZSBkcmF3YWJsZSByZXNvdXJjZSB0byB1c2UgYXMgdGhlIG5vdGlmaWNhdGlvbiBpY29uLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gIFtjb25maWcubGFyZ2VJY29uXSBUaGUgbmFtZSBvZiB0aGUgZHJhd2FibGUgcmVzb3VyY2UgdG8gdXNlIGFzIHRoZSBub3RpZmljYXRpb24gbGFyZ2UgaWNvbi5cbiAgICogQHBhcmFtIHtzdHJpbmd9ICBbY29uZmlnLmFjY2VudENvbG9yXSBUaGUgbm90aWZpY2F0aW9uIGFjY2VudCBjb2xvci4gRm9ybWF0IGlzICNBQVJSR0dCQi5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgc2V0QW5kcm9pZE5vdGlmaWNhdGlvbkNvbmZpZyhjb25maWc6IGFueSk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGRlZmF1bHQgYmVoYXZpb3Igd2hlbiB0aGUgbWVzc2FnZSBjZW50ZXIgaXMgbGF1bmNoZWQgZnJvbSBhIHB1c2hcbiAgICogbm90aWZpY2F0aW9uLiBJZiBzZXQgdG8gZmFsc2UgdGhlIG1lc3NhZ2UgY2VudGVyIG11c3QgYmUgbWFudWFsbHkgbGF1bmNoZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZW5hYmxlZCB0cnVlIHRvIGF1dG9tYXRpY2FsbHkgbGF1bmNoIHRoZSBkZWZhdWx0IG1lc3NhZ2UgY2VudGVyLCBmYWxzZSB0byBkaXNhYmxlLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbc3VjY2Vzc10gU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIHNldEF1dG9MYXVuY2hEZWZhdWx0TWVzc2FnZUNlbnRlcihlbmFibGVkOiBib29sZWFuKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogRW5hYmxlcyBvciBkaXNhYmxlcyB1c2VyIG5vdGlmaWNhdGlvbnMuXG4gICAqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZW5hYmxlZCB0cnVlIHRvIGVuYWJsZSBub3RpZmljYXRpb25zLCBmYWxzZSB0byBkaXNhYmxlLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbc3VjY2Vzc10gU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIHNldFVzZXJOb3RpZmljYXRpb25zRW5hYmxlZChlbmFibGVkOiBib29sZWFuKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHVzZXIgbm90aWZpY2F0aW9ucyBhcmUgZW5hYmxlZCBvciBub3QuXG4gICAqXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24oZW5hYmxlZCl9IHN1Y2Nlc3MgU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtib29sZWFufSBzdWNjZXNzLmVuYWJsZWQgRmxhZyBpbmRpY2F0aW5nIGlmIHVzZXIgbm90aWZpY2F0aW9ucyBpcyBlbmFibGVkIG9yIG5vdC5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGlzVXNlck5vdGlmaWNhdGlvbnNFbmFibGVkKCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBhcHAgbm90aWZpY2F0aW9ucyBhcmUgZW5hYmxlZCBvciBub3QuIEl0cyBwb3NzaWJsZSB0byBoYXZlIGB1c2VyTm90aWZpY2F0aW9uc0VuYWJsZWRgXG4gICAqIGJ1dCBhcHAgbm90aWZpY2F0aW9ucyBiZWluZyBkaXNhYmxlZCBpZiB0aGUgdXNlciBvcHRlZCBvdXQgb2Ygbm90aWZpY2F0aW9ucy5cbiAgICpcbiAgICogQHBhcmFtIHtmdW5jdGlvbihlbmFibGVkKX0gc3VjY2VzcyBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHN1Y2Nlc3MuZW5hYmxlZCBGbGFnIGluZGljYXRpbmcgaWYgYXBwIG5vdGlmaWNhdGlvbnMgaXMgZW5hYmxlZCBvciBub3QuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24obWVzc2FnZSl9IFtmYWlsdXJlXSBGYWlsdXJlIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmFpbHVyZS5tZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBpc0FwcE5vdGlmaWNhdGlvbnNFbmFibGVkKCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGNoYW5uZWwgSUQuXG4gICAqXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24oSUQpfSBzdWNjZXNzIFRoZSBmdW5jdGlvbiB0byBjYWxsIG9uIHN1Y2Nlc3MuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdWNjZXNzLklEIFRoZSBjaGFubmVsIElEIHN0cmluZ1xuICAgKiBAcGFyYW0ge2ZhaWx1cmVDYWxsYmFja30gW2ZhaWx1cmVdIFRoZSBmdW5jdGlvbiB0byBjYWxsIG9uIGZhaWx1cmUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGdldENoYW5uZWxJRCgpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBsYXN0IG5vdGlmaWNhdGlvbiB0aGF0IGxhdW5jaGVkIHRoZSBhcHBsaWNhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtib29sZWFufSBjbGVhciB0cnVlIHRvIGNsZWFyIHRoZSBub3RpZmljYXRpb24uXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24ocHVzaCl9IHN1Y2Nlc3MgVGhlIGZ1bmN0aW9uIHRvIGNhbGwgb24gc3VjY2Vzcy5cbiAgICogQHBhcmFtIHtvYmplY3R9IHN1Y2Nlc3MucHVzaCBUaGUgcHVzaCBtZXNzYWdlIG9iamVjdCBjb250YWluaW5nIGRhdGEgYXNzb2NpYXRlZCB3aXRoIGEgcHVzaCBub3RpZmljYXRpb24uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdWNjZXNzLnB1c2gubWVzc2FnZSBUaGUgcHVzaCBhbGVydCBtZXNzYWdlLlxuICAgKiBAcGFyYW0ge29iamVjdH0gc3VjY2Vzcy5wdXNoLmV4dHJhcyBBbnkgcHVzaCBleHRyYXMuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbc3VjY2Vzcy5wdXNoLm5vdGlmaWNhdGlvbl9pZF0gVGhlIEFuZHJvaWQgbm90aWZpY2F0aW9uIElELlxuICAgKiBAcGFyYW0ge2ZhaWx1cmVDYWxsYmFja30gW2ZhaWx1cmVdIFRoZSBmdW5jdGlvbiB0byBjYWxsIG9uIGZhaWx1cmUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGdldExhdW5jaE5vdGlmaWNhdGlvbihjbGVhcjogYm9vbGVhbik6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGxhc3QgcmVjZWl2ZWQgZGVlcCBsaW5rLlxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGNsZWFyIHRydWUgdG8gY2xlYXIgdGhlIGRlZXAgbGluay5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihwdXNoKX0gc3VjY2VzcyBUaGUgZnVuY3Rpb24gdG8gY2FsbCBvbiBzdWNjZXNzLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3VjY2Vzcy5kZWVwTGluayBUaGUgZGVlcCBsaW5rLlxuICAgKiBAcGFyYW0ge2ZhaWx1cmVDYWxsYmFja30gW2ZhaWx1cmVdIFRoZSBmdW5jdGlvbiB0byBjYWxsIG9uIGZhaWx1cmUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGdldERlZXBMaW5rKGNsZWFyOiBib29sZWFuKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgdGFncyBhcyBhbiBhcnJheS5cbiAgICpcbiAgICogQHBhcmFtIHtmdW5jdGlvbih0YWdzKX0gc3VjY2VzcyBUaGUgZnVuY3Rpb24gdG8gY2FsbCBvbiBzdWNjZXNzLlxuICAgKiBAcGFyYW0ge0FycmF5fSBzdWNjZXNzLnRhZ3MgVGhlIHRhZ3MgYXMgYW4gYXJyYXkuXG4gICAqIEBwYXJhbSB7ZmFpbHVyZUNhbGxiYWNrfSBbZmFpbHVyZV0gVGhlIGZ1bmN0aW9uIHRvIGNhbGwgb24gZmFpbHVyZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgZ2V0VGFncygpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB0YWdzLlxuICAgKlxuICAgKiBAcGFyYW0ge0FycmF5fSB0YWdzIGFuIGFycmF5IG9mIHN0cmluZ3MuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtzdWNjZXNzXSBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgc2V0VGFncyh0YWdzOiBzdHJpbmdbXSk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGFsaWFzLlxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCBEZXByZWNhdGVkIHNpbmNlIDYuNy4wIC0gdG8gYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSB2ZXJzaW9uIG9mIHRoZSBwbHVnaW4gLSBwbGVhc2UgdXNlIGdldE5hbWVkVXNlclxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKGN1cnJlbnRBbGlhcyl9IHN1Y2Nlc3MgVGhlIGZ1bmN0aW9uIHRvIGNhbGwgb24gc3VjY2Vzcy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHN1Y2Nlc3MuY3VycmVudEFsaWFzIFRoZSBhbGlhcyBhcyBhIHN0cmluZy5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGdldEFsaWFzKCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGFsaWFzLlxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCBEZXByZWNhdGVkIHNpbmNlIDYuNy4wICAtIHRvIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgdmVyc2lvbiBvZiB0aGUgcGx1Z2luIC0gcGxlYXNlIHVzZSBzZXROYW1lZFVzZXJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFsaWFzIHN0cmluZ1xuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbc3VjY2Vzc10gU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIHNldEFsaWFzKGFsaWFzOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgcXVpZXQgdGltZSBpcyBlbmFibGVkIG9yIG5vdC5cbiAgICpcbiAgICogQHBhcmFtIHtmdW5jdGlvbihlbmFibGVkKX0gc3VjY2VzcyBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHN1Y2Nlc3MuZW5hYmxlZCBGbGFnIGluZGljYXRpbmcgaWYgcXVpZXQgdGltZSBpcyBlbmFibGVkIG9yIG5vdC5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGlzUXVpZXRUaW1lRW5hYmxlZCgpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmFibGVzIG9yIGRpc2FibGVzIHF1aWV0IHRpbWUuXG4gICAqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZW5hYmxlZCB0cnVlIHRvIGVuYWJsZSBxdWlldCB0aW1lLCBmYWxzZSB0byBkaXNhYmxlLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbc3VjY2Vzc10gU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIHNldFF1aWV0VGltZUVuYWJsZWQoZW5hYmxlZDogYm9vbGVhbik6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGUgZGV2aWNlIGlzIGN1cnJlbnRseSBpbiBxdWlldCB0aW1lLlxuICAgKlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKGluUXVpZXRUaW1lKX0gc3VjY2VzcyBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHN1Y2Nlc3MuaW5RdWlldFRpbWUgRmxhZyBpbmRpY2F0aW5nIGlmIHF1aWV0IHRpbWUgaXMgY3VycmVudGx5IGluIGVmZmVjdC5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGlzSW5RdWlldFRpbWUoKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgcXVpZXQgdGltZSBhcyBhbiBvYmplY3Qgd2l0aCB0aGUgZm9sbG93aW5nOlxuICAgKiBcInN0YXJ0SG91clwiOiBOdW1iZXIsXG4gICAqIFwic3RhcnRNaW51dGVcIjogTnVtYmVyLFxuICAgKiBcImVuZEhvdXJcIjogTnVtYmVyLFxuICAgKiBcImVuZE1pbnV0ZVwiOiBOdW1iZXJcbiAgICpcbiAgICogQHBhcmFtIHtmdW5jdGlvbihxdWlldFRpbWUpfSBzdWNjZXNzIFRoZSBmdW5jdGlvbiB0byBjYWxsIG9uIHN1Y2Nlc3MuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBzdWNjZXNzLnF1aWV0VGltZSBUaGUgcXVpZXRUaW1lIG9iamVjdCByZXByZXNlbnRzIGEgdGltZXNwYW4gZHVyaW5nXG4gICAqICAgICAgICB3aGljaCBub3RpZmljYXRpb25zIHNob3VsZCBiZSBzaWxlbmNlZC5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGdldFF1aWV0VGltZSgpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBxdWlldCB0aW1lLlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gc3RhcnRIb3VyIGZvciBxdWlldCB0aW1lLlxuICAgKiBAcGFyYW0ge251bWJlcn0gc3RhcnRNaW51dGUgZm9yIHF1aWV0IHRpbWUuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBlbmRIb3VyIGZvciBxdWlldCB0aW1lLlxuICAgKiBAcGFyYW0ge251bWJlcn0gZW5kTWludXRlIGZvciBxdWlldCB0aW1lLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbc3VjY2Vzc10gU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIHNldFF1aWV0VGltZShzdGFydEhvdXI6IG51bWJlciwgc3RhcnRNaW51dGU6IG51bWJlciwgZW5kSG91cjogbnVtYmVyLCBlbmRNaW51dGU6IG51bWJlcik6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgb3IgZGlzYWJsZXMgYW5hbHl0aWNzLlxuICAgKlxuICAgKiBEaXNhYmxpbmcgYW5hbHl0aWNzIHdpbGwgZGVsZXRlIGFueSBsb2NhbGx5IHN0b3JlZCBldmVudHNcbiAgICogYW5kIHByZXZlbnQgYW55IGV2ZW50cyBmcm9tIHVwbG9hZGluZy4gRmVhdHVyZXMgdGhhdCBkZXBlbmQgb24gYW5hbHl0aWNzIGJlaW5nXG4gICAqIGVuYWJsZWQgbWF5IG5vdCB3b3JrIHByb3Blcmx5IGlmIGl0J3MgZGlzYWJsZWQgKHJlcG9ydHMsIHJlZ2lvbiB0cmlnZ2VycyxcbiAgICogbG9jYXRpb24gc2VnbWVudGF0aW9uLCBwdXNoIHRvIGxvY2FsIHRpbWUpLlxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGVuYWJsZWQgdHJ1ZSB0byBlbmFibGUgYW5hbHl0aWNzLCBmYWxzZSB0byBkaXNhYmxlLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbc3VjY2Vzc10gU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIHNldEFuYWx5dGljc0VuYWJsZWQoZW5hYmxlZDogYm9vbGVhbik6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBhbmFseXRpY3MgaXMgZW5hYmxlZCBvciBub3QuXG4gICAqXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24oZW5hYmxlZCl9IHN1Y2Nlc3MgU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtib29sZWFufSBzdWNjZXNzLmVuYWJsZWQgRmxhZyBpbmRpY2F0aW5nIGlmIGFuYWx5dGljcyBpcyBlbmFibGVkIG9yIG5vdC5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGlzQW5hbHl0aWNzRW5hYmxlZCgpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBuYW1lZCB1c2VyIElELlxuICAgKlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG5hbWVkVXNlcil9IHN1Y2Nlc3MgVGhlIGZ1bmN0aW9uIHRvIGNhbGwgb24gc3VjY2Vzcy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHN1Y2Nlc3MubmFtZWRVc2VyIFRoZSBuYW1lZCB1c2VyIElEIGFzIGEgc3RyaW5nLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgZ2V0TmFtZWRVc2VyKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIG5hbWVkIHVzZXIgSUQuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lZFVzZXIgaWRlbnRpZmllciBzdHJpbmcuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtzdWNjZXNzXSBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgc2V0TmFtZWRVc2VyKG5hbWVkVXNlcjogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogUnVucyBhbiBVcmJhbiBBaXJzaGlwIGFjdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFjdGlvbk5hbWUgYWN0aW9uIGFzIGEgc3RyaW5nLlxuICAgKiBAcGFyYW0geyp9IGFjdGlvblZhbHVlXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24ocmVzdWx0KX0gW3N1Y2Nlc3NdIFRoZSBmdW5jdGlvbiB0byBjYWxsIG9uIHN1Y2Nlc3MuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBzdWNjZXNzLnJlc3VsdCBUaGUgcmVzdWx0J3MgdmFsdWUuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24obWVzc2FnZSl9IFtmYWlsdXJlXSBGYWlsdXJlIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmFpbHVyZS5tZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBydW5BY3Rpb24oYWN0aW9uTmFtZTogc3RyaW5nLCBhY3Rpb25WYWx1ZTogYW55KTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBlZGl0b3IgdG8gbW9kaWZ5IHRoZSBuYW1lZCB1c2VyIHRhZyBncm91cHMuXG4gICAqL1xuICBAQ29yZG92YSh7IHN5bmM6IHRydWUgfSlcbiAgZWRpdE5hbWVkVXNlclRhZ0dyb3VwcygpOiBUYWdHcm91cEVkaXRvciB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gZWRpdG9yIHRvIG1vZGlmeSB0aGUgY2hhbm5lbCB0YWcgZ3JvdXBzLlxuICAgKi9cbiAgQENvcmRvdmEoeyBzeW5jOiB0cnVlIH0pXG4gIGVkaXRDaGFubmVsVGFnR3JvdXBzKCk6IFRhZ0dyb3VwRWRpdG9yIHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBlZGl0b3IgdG8gbW9kaWZ5IHRoZSBjaGFubmVsIGF0dHJpYnV0ZXMuXG4gICAqL1xuICBAQ29yZG92YSh7IHN5bmM6IHRydWUgfSlcbiAgZWRpdENoYW5uZWxBdHRyaWJ1dGVzKCk6IEF0dHJpYnV0ZXNFZGl0b3Ige1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGVkaXRvciB0byBtb2RpZnkgdGhlIG5hbWVkIHVzZXIgYXR0cmlidXRlcy5cbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSB9KVxuICBlZGl0TmFtZWRVc2VyQXR0cmlidXRlcygpOiBBdHRyaWJ1dGVzRWRpdG9yIHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBlZGl0b3IgdG8gbW9kaWZ5IHRoZSBjaGFubmVsIHN1YnNjcmlwdGlvbiBsaXN0cy5cbiAgICpcbiAgICogQHJldHVybnMge0NoYW5uZWxTdWJzY3JpcHRpb25MaXN0RWRpdG9yfSBBIHN1YnNjcmlwdGlvbiBsaXN0IGVkaXRvciBpbnN0YW5jZS5cbiAgICogQHNpbmNlIDEzLjMuMFxuICAgKi9cbiAgQENvcmRvdmEoeyBzeW5jOiB0cnVlIH0pXG4gIGVkaXRDaGFubmVsU3Vic2NyaXB0aW9uTGlzdHMoKTogQ2hhbm5lbFN1YnNjcmlwdGlvbkxpc3RFZGl0b3Ige1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGVkaXRvciB0byBtb2RpZnkgdGhlIGNvbnRhY3Qgc3Vic2NyaXB0aW9uIGxpc3RzLlxuICAgKlxuICAgKiBAcmV0dXJucyB7Q29udGFjdFN1YnNjcmlwdGlvbkxpc3RFZGl0b3J9IEEgc3Vic2NyaXB0aW9uIGxpc3QgZWRpdG9yIGluc3RhbmNlLlxuICAgKiBAc2luY2UgMTMuMy4wXG4gICAqL1xuICBAQ29yZG92YSh7IHN5bmM6IHRydWUgfSlcbiAgZWRpdENvbnRhY3RTdWJzY3JpcHRpb25MaXN0cygpOiBDb250YWN0U3Vic2NyaXB0aW9uTGlzdEVkaXRvciB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGN1cnJlbnQgc2V0IG9mIHN1YnNjcmlwdGlvbiBsaXN0cyBmb3IgdGhlIGN1cnJlbnQgY2hhbm5lbCxcbiAgICogb3B0aW9uYWxseSBhcHBseWluZyBwZW5kaW5nIHN1YnNjcmlwdGlvbiBsaXN0IGNoYW5nZXMgdGhhdCB3aWxsIGJlIGFwcGxpZWQgZHVyaW5nIHRoZSBuZXh0IGNoYW5uZWwgdXBkYXRlLlxuICAgKiBBbiBlbXB0eSBzZXQgaW5kaWNhdGVzIHRoYXQgdGhpcyBjb250YWN0IGlzIG5vdCBzdWJzY3JpYmVkIHRvIGFueSBsaXN0cy5cbiAgICpcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3N1Y2Nlc3NdIFN1Y2Nlc3MgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSh7XG4gICAgc3VjY2Vzc0luZGV4OiAxLFxuICAgIGVycm9ySW5kZXg6IDIsXG4gIH0pXG4gIGdldENoYW5uZWxTdWJzY3JpcHRpb25MaXN0cygpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBjdXJyZW50IHNldCBvZiBzdWJzY3JpcHRpb24gbGlzdHMgZm9yIHRoZSBjdXJyZW50IGNvbnRhY3QsXG4gICAqIG9wdGlvbmFsbHkgYXBwbHlpbmcgcGVuZGluZyBzdWJzY3JpcHRpb24gbGlzdCBjaGFuZ2VzIHRoYXQgd2lsbCBiZSBhcHBsaWVkIGR1cmluZyB0aGUgbmV4dCBjb250YWN0IHVwZGF0ZS5cbiAgICogQW4gZW1wdHkgc2V0IGluZGljYXRlcyB0aGF0IHRoaXMgY29udGFjdCBpcyBub3Qgc3Vic2NyaWJlZCB0byBhbnkgbGlzdHMuXG4gICAqXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtzdWNjZXNzXSBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmFpbHVyZS5tZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICAgKi9cbiAgQENvcmRvdmEoe1xuICAgIHN1Y2Nlc3NJbmRleDogMSxcbiAgICBlcnJvckluZGV4OiAyLFxuICB9KVxuICBnZXRDb250YWN0U3Vic2NyaXB0aW9uTGlzdHMoKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogU2V0cyBhbiBhc3NvY2lhdGVkIGlkZW50aWZpZXIgZm9yIHRoZSBDb25uZWN0IGRhdGEgc3RyZWFtLlxuICAgKlxuICAgKiBAcGFyYW0ga2V5IEN1c3RvbSBrZXkgZm9yIGlkZW50aWZpZXIuXG4gICAqIEBwYXJhbSBpZGVudGlmaWVyIFRoZSBpZGVudGlmaWVyIHZhbHVlLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbc3VjY2Vzc10gU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIHNldEFzc29jaWF0ZWRJZGVudGlmaWVyKGtleTogc3RyaW5nLCBpZGVudGlmaWVyOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIExvY2F0aW9uXG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgb3IgZGlzYWJsZXMgVXJiYW4gQWlyc2hpcCBsb2NhdGlvbiBzZXJ2aWNlcy5cbiAgICpcbiAgICogQHBhcmFtIHtib29sZWFufSBlbmFibGVkIHRydWUgdG8gZW5hYmxlIGxvY2F0aW9uLCBmYWxzZSB0byBkaXNhYmxlLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbc3VjY2Vzc10gU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIHNldExvY2F0aW9uRW5hYmxlZChlbmFibGVkOiBib29sZWFuKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGxvY2F0aW9uIGlzIGVuYWJsZWQgb3Igbm90LlxuICAgKlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKGVuYWJsZWQpfSBzdWNjZXNzIFN1Y2Nlc3MgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gc3VjY2Vzcy5lbmFibGVkIEZsYWcgaW5kaWNhdGluZyBpZiBsb2NhdGlvbiBpcyBlbmFibGVkIG9yIG5vdC5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqIEBkZXByZWNhdGVkIHJlbW92ZWQgaW4gdmVyc2lvbiA4LjBcbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgaXNMb2NhdGlvbkVuYWJsZWQoKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogRW5hYmxlcyBvciBkaXNhYmxlcyBiYWNrZ3JvdW5kIGxvY2F0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGVuYWJsZWQgdHJ1ZSB0byBlbmFibGUgYmFja2dyb3VuZCBsb2NhdGlvbiwgZmFsc2UgdG8gZGlzYWJsZS5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3N1Y2Nlc3NdIFN1Y2Nlc3MgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24obWVzc2FnZSl9IFtmYWlsdXJlXSBGYWlsdXJlIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmFpbHVyZS5tZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICAgKiBAZGVwcmVjYXRlZCByZW1vdmVkIGluIHZlcnNpb24gOC4wXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIHNldEJhY2tncm91bmRMb2NhdGlvbkVuYWJsZWQoZW5hYmxlZDogYm9vbGVhbik6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBiYWNrZ3JvdW5kIGxvY2F0aW9uIGlzIGVuYWJsZWQgb3Igbm90LlxuICAgKlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKGVuYWJsZWQpfSBzdWNjZXNzIFN1Y2Nlc3MgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gc3VjY2Vzcy5lbmFibGVkIEZsYWcgaW5kaWNhdGluZyBpZiBiYWNrZ3JvdW5kIGxvY2F0aW9uIHVwZGF0ZXMgYXJlIGVuYWJsZWQgb3Igbm90LlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICogQGRlcHJlY2F0ZWQgcmVtb3ZlZCBpbiB2ZXJzaW9uIDguMFxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBpc0JhY2tncm91bmRMb2NhdGlvbkVuYWJsZWQoKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogRGlzcGxheXMgdGhlIG1lc3NhZ2UgY2VudGVyLlxuICAgKlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbc3VjY2Vzc10gU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGRpc3BsYXlNZXNzYWdlQ2VudGVyKCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIERpc21pc3MgdGhlIG1lc3NhZ2UgY2VudGVyLlxuICAgKlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbc3VjY2Vzc10gU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGRpc21pc3NNZXNzYWdlQ2VudGVyKCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIERpc21pc3MgdGhlIGluYm94IG1lc3NhZ2UuXG4gICAqXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtzdWNjZXNzXSBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgZGlzbWlzc0luYm94TWVzc2FnZSgpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNtaXNzIHRoZSBpbmJveCBtZXNzYWdlIGluIHRoZSBvdmVybGF5LlxuICAgKlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbc3VjY2Vzc10gU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqIEBkZXByZWNhdGVkIHJlbW92ZWQgaW4gdmVyc2lvbiAxMC4wXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGRpc21pc3NPdmVybGF5SW5ib3hNZXNzYWdlKCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGFycmF5IG9mIGluYm94IG1lc3NhZ2VzLiBFYWNoIG1lc3NhZ2Ugd2lsbCBoYXZlIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAgICogXCJpZFwiOiBzdHJpbmcgLSBUaGUgbWVzc2FnZXMgSUQuIE5lZWRlZCB0byBkaXNwbGF5LCBtYXJrIGFzIHJlYWQsIG9yIGRlbGV0ZSB0aGUgbWVzc2FnZS5cbiAgICogXCJ0aXRsZVwiOiBzdHJpbmcgLSBUaGUgbWVzc2FnZSB0aXRsZS5cbiAgICogXCJzZW50RGF0ZVwiOiBudW1iZXIgLSBUaGUgbWVzc2FnZSBzZW50IGRhdGUgaW4gbWlsbGlzZWNvbmRzLlxuICAgKiBcImxpc3RJY29uVXJsXCI6IHN0cmluZywgb3B0aW9uYWwgLSBUaGUgaWNvbiB1cmwgZm9yIHRoZSBtZXNzYWdlLlxuICAgKiBcImlzUmVhZFwiOiBib29sZWFuIC0gVGhlIHVucmVhZC9yZWFkIHN0YXR1cyBvZiB0aGUgbWVzc2FnZS5cbiAgICogXCJleHRyYXNcIjogb2JqZWN0IC0gU3RyaW5nIHRvIFN0cmluZyBtYXAgb2YgYW55IG1lc3NhZ2UgZXh0cmFzLlxuICAgKlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2VzKX0gc3VjY2VzcyBUaGUgZnVuY3Rpb24gdG8gY2FsbCBvbiBzdWNjZXNzLlxuICAgKiBAcGFyYW0ge0FycmF5fSBzdWNjZXNzLm1lc3NhZ2VzIFRoZSBhcnJheSBvZiBpbmJveCBtZXNzYWdlcy5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGdldEluYm94TWVzc2FnZXMoKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogTWFya3MgYW4gaW5ib3ggbWVzc2FnZSByZWFkLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZUlkIFRoZSBJRCBvZiB0aGUgbWVzc2FnZSB0byBtYXJrIGFzIHJlYWQuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtzdWNjZXNzXSBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgbWFya0luYm94TWVzc2FnZVJlYWQobWVzc2FnZUlkOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGVzIGFuIGluYm94IG1lc3NhZ2UuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlSWQgVGhlIElEIG9mIHRoZSBtZXNzYWdlIHRvIGRlbGV0ZS5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3N1Y2Nlc3NdIFN1Y2Nlc3MgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24obWVzc2FnZSl9IFtmYWlsdXJlXSBGYWlsdXJlIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmFpbHVyZS5tZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBkZWxldGVJbmJveE1lc3NhZ2UobWVzc2FnZUlkOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNwbGF5cyB0aGUgaW5ib3ggbWVzc2FnZSB1c2luZyBhIGZ1bGwgc2NyZWVuIHZpZXcuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlSWQgVGhlIElEIG9mIHRoZSBtZXNzYWdlIHRvIGRpc3BsYXkuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtzdWNjZXNzXSBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgZGlzcGxheUluYm94TWVzc2FnZShtZXNzYWdlSWQ6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvcmNlcyB0aGUgaW5ib3ggdG8gcmVmcmVzaC4gVGhpcyBpcyBub3JtYWxseSBub3QgbmVlZGVkIGFzIHRoZSBpbmJveFxuICAgKiB3aWxsIGF1dG9tYXRpY2FsbHkgcmVmcmVzaCBvbiBmb3JlZ3JvdW5kIG9yIHdoZW4gYSBwdXNoIGFycml2ZXMgdGhhdHNcbiAgICogYXNzb2NpYXRlZCB3aXRoIGEgbWVzc2FnZSwgYnV0IGl0IGNhbiBiZSB1c2VmdWwgd2hlbiBwcm92aWRpbmcgYSByZWZyZXNoXG4gICAqIGJ1dHRvbiBmb3IgdGhlIG1lc3NhZ2UgbGlzdGluZy5cbiAgICpcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3N1Y2Nlc3NdIFN1Y2Nlc3MgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24obWVzc2FnZSl9IFtmYWlsdXJlXSBGYWlsdXJlIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmFpbHVyZS5tZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICAgKi9cbiAgQENvcmRvdmEoKVxuICByZWZyZXNoSW5ib3goKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogRGlzcGxheXMgdGhlIGluYm94IG1lc3NhZ2UgdXNpbmcgYW4gb3ZlcmxheSBkaXNwbGF5LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZUlkIFRoZSBJRCBvZiB0aGUgbWVzc2FnZSB0byBkaXNwbGF5LlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbc3VjY2Vzc10gU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqIEBkZXByZWNhdGVkIHJlbW92ZWQgaW4gdmVyc2lvbiAxMC4wXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIG92ZXJsYXlJbmJveE1lc3NhZ2UobWVzc2FnZUlkOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhcnMgYSBub3RpZmljYXRpb24gYnkgaWRlbnRpZmllci5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGlkZW50aWZpZXIgVGhlIG5vdGlmaWNhdGlvbiBpZGVudGlmaWVyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbc3VjY2Vzc10gU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGNsZWFyTm90aWZpY2F0aW9uKGlkZW50aWZpZXI6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFycyBhbGwgbm90aWZpY2F0aW9ucyBwb3N0ZWQgYnkgdGhlIGFwcGxpY2F0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbc3VjY2Vzc10gU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGNsZWFyTm90aWZpY2F0aW9ucygpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGN1cnJlbnRseSBhY3RpdmUgbm90aWZpY2F0aW9ucy5cbiAgICpcbiAgICogTm90ZTogT24gQW5kcm9pZCB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgb25seSBzdXBwb3J0ZWQgb24gQW5kcm9pZCBNIG9yIGhpZ2hlci5cbiAgICpcbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlcyl9IFtzdWNjZXNzXSBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgZ2V0QWN0aXZlTm90aWZpY2F0aW9ucygpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIGlPUyBvbmx5XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgb3IgZGlzYWJsZXMgYXV0byBiYWRnZS4gRGVmYXVsdHMgdG8gYE5PYC5cbiAgICpcbiAgICogQHBhcmFtIHtib29sZWFufSBlbmFibGVkIHRydWUgdG8gZW5hYmxlIGF1dG8gYmFkZ2UsIGZhbHNlIHRvIGRpc2FibGUuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtzdWNjZXNzXSBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgc2V0QXV0b2JhZGdlRW5hYmxlZChlbmFibGVkOiBib29sZWFuKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgYmFkZ2UgbnVtYmVyLlxuICAgKlxuICAgKiBAcGFyYW0gY291bnQgbnVtYmVyIHNwZWNpZmllZCBiYWRnZSB0byBzZXQuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtzdWNjZXNzXSBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgc2V0QmFkZ2VOdW1iZXIoY291bnQ6IG51bWJlcik6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGN1cnJlbnQgYmFkZ2UgbnVtYmVyLlxuICAgKlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKGJhZGdlTnVtYmVyKX0gc3VjY2VzcyBUaGUgZnVuY3Rpb24gdG8gY2FsbCBvbiBzdWNjZXNzLlxuICAgKiBAcGFyYW0ge2ludH0gc3VjY2Vzcy5iYWRnZU51bWJlciBUaGUgY3VycmVudCBhcHBsaWNhdGlvbiBiYWRnZSBudW1iZXIuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24obWVzc2FnZSl9IFtmYWlsdXJlXSBGYWlsdXJlIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmFpbHVyZS5tZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBnZXRCYWRnZU51bWJlcigpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhcnMgdGhlIGJhZGdlLlxuICAgKlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbc3VjY2Vzc10gU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIHJlc2V0QmFkZ2UoKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgaU9TIG5vdGlmaWNhdGlvbiB0eXBlcy4gU3BlY2lmeSB0aGUgY29tYmluYXRpb24gb2ZcbiAgICogYmFkZ2VzLCBzb3VuZCBhbmQgYWxlcnRzIHRoYXQgYXJlIGRlc2lyZWQuXG4gICAqXG4gICAqIEBwYXJhbSB0eXBlcyBzcGVjaWZpZWQgbm90aWZpY2F0aW9uIHR5cGVzLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbc3VjY2Vzc10gU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIHNldE5vdGlmaWNhdGlvblR5cGVzKHR5cGVzOiBOb3RpZmljYXRpb25UeXBlKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgaU9TIHByZXNlbnRhdGlvbiBvcHRpb25zLiBTcGVjaWZ5IHRoZSBjb21iaW5hdGlvbiBvZlxuICAgKiBiYWRnZXMsIHNvdW5kIGFuZCBhbGVydHMgdGhhdCBhcmUgZGVzaXJlZC5cbiAgICpcbiAgICogQHBhcmFtIG9wdGlvbnMgdHlwZXMgc3BlY2lmaWVkIHByZXNlbnRhdGlvbiBvcHRpb25zLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbc3VjY2Vzc10gU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIHNldFByZXNlbnRhdGlvbk9wdGlvbnMob3B0aW9uczogUHJlc2VudGF0aW9uT3B0aW9ucyk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gQW5kcm9pZCBvbmx5XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBub3RpZmljYXRpb24gc291bmQgaXMgZW5hYmxlZCBvciBub3QuXG4gICAqXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24oZW5hYmxlZCl9IHN1Y2Nlc3MgU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtib29sZWFufSBzdWNjZXNzLmVuYWJsZWQgRmxhZyBpbmRpY2F0aW5nIGlmIHNvdW5kIGlzIGVuYWJsZWQgb3Igbm90LlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgaXNTb3VuZEVuYWJsZWQoKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogRW5hYmxlcyBvciBkaXNhYmxlcyBub3RpZmljYXRpb24gc291bmQuXG4gICAqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZW5hYmxlZCB0cnVlIHRvIGVuYWJsZSBzb3VuZCwgZmFsc2UgdG8gZGlzYWJsZS5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3N1Y2Nlc3NdIFN1Y2Nlc3MgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24obWVzc2FnZSl9IFtmYWlsdXJlXSBGYWlsdXJlIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmFpbHVyZS5tZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBzZXRTb3VuZEVuYWJsZWQoZW5hYmxlZDogYm9vbGVhbik6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBub3RpZmljYXRpb24gdmlicmF0aW9uIGlzIGVuYWJsZWQgb3Igbm90LlxuICAgKlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKGVuYWJsZWQpfSBzdWNjZXNzIFN1Y2Nlc3MgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gc3VjY2Vzcy5lbmFibGVkIEZsYWcgaW5kaWNhdGluZyBpZiB2aWJyYXRpb24gaXMgZW5hYmxlZCBvciBub3QuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24obWVzc2FnZSl9IFtmYWlsdXJlXSBGYWlsdXJlIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmFpbHVyZS5tZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBpc1ZpYnJhdGVFbmFibGVkKCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgb3IgZGlzYWJsZXMgbm90aWZpY2F0aW9uIHZpYnJhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtib29sZWFufSBlbmFibGVkIHRydWUgdG8gZW5hYmxlIHZpYnJhdGlvbiwgZmFsc2UgdG8gZGlzYWJsZS5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3N1Y2Nlc3NdIFN1Y2Nlc3MgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24obWVzc2FnZSl9IFtmYWlsdXJlXSBGYWlsdXJlIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmFpbHVyZS5tZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBzZXRWaWJyYXRlRW5hYmxlZChlbmFibGVkOiBib29sZWFuKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIGN1c3RvbSBldmVudC5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGV2ZW50IFRoZSBjdXN0b20gZXZlbnQgb2JqZWN0LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZXZlbnQubmFtZSBUaGUgZXZlbnQncyBuYW1lLlxuICAgKiBAcGFyYW0ge251bWJlcn0gW2V2ZW50LnZhbHVlXSBUaGUgZXZlbnQncyB2YWx1ZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtldmVudC50cmFuc2FjdGlvbklkXSBUaGUgZXZlbnQncyB0cmFuc2FjdGlvbiBJRC5cbiAgICogQHBhcmFtIHtvYmplY3R9IFtldmVudC5wcm9wZXJ0aWVzXSBUaGUgZXZlbnQncyBwcm9wZXJ0aWVzLiBPbmx5IG51bWJlcnMsIGJvb2xlYW5zLCBzdHJpbmdzLCBhbmQgYXJyYXkgb2Ygc3RyaW5ncyBhcmUgc3VwcG9ydGVkLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbc3VjY2Vzc10gU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGFkZEN1c3RvbUV2ZW50KGV2ZW50OiBvYmplY3QpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWF0ZXMgc2NyZWVuIHRyYWNraW5nIGZvciBhIHNwZWNpZmljIGFwcCBzY3JlZW4sIG11c3QgYmUgY2FsbGVkIG9uY2UgcGVyIHRyYWNrZWQgc2NyZWVuLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2NyZWVuIFRoZSBzY3JlZW4ncyBzdHJpbmcgaWRlbnRpZmllci5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3N1Y2Nlc3NdIFN1Y2Nlc3MgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24obWVzc2FnZSl9IFtmYWlsdXJlXSBGYWlsdXJlIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmFpbHVyZS5tZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICAgKiBAc2luY2UgMTEuMC4wXG4gICAqL1xuICBAQ29yZG92YSh7XG4gICAgc3VjY2Vzc0luZGV4OiAxLFxuICAgIGVycm9ySW5kZXg6IDIsXG4gIH0pXG4gIHRyYWNrU2NyZWVuKHNjcmVlbjogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogRW5hYmxlcyBmZWF0dXJlcywgYWRkaW5nIHRoZW0gdG8gdGhlIHNldCBvZiBjdXJyZW50bHkgZW5hYmxlZCBmZWF0dXJlcy5cbiAgICpcbiAgICogQHBhcmFtIHtBcnJheTxzdHJpbmc+fSBmZWF0dXJlcyBUaGUgZmVhdHVyZXMgdG8gZW5hYmxlLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbc3VjY2Vzc10gU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqIEBzaW5jZSAxMy4wLjBcbiAgICovXG4gIEBDb3Jkb3ZhKHtcbiAgICBzdWNjZXNzSW5kZXg6IDEsXG4gICAgZXJyb3JJbmRleDogMixcbiAgfSlcbiAgZW5hYmxlRmVhdHVyZShmZWF0dXJlczogc3RyaW5nW10pOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNhYmxlcyBmZWF0dXJlcywgcmVtb3ZpbmcgdGhlbSBmcm9tIHRoZSBzZXQgb2YgY3VycmVudGx5IGVuYWJsZWQgZmVhdHVyZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7QXJyYXk8c3RyaW5nPn0gZmVhdHVyZXMgVGhlIGZlYXR1cmVzIHRvIGRpc2FibGUuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtzdWNjZXNzXSBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICogQHNpbmNlIDEzLjAuMFxuICAgKi9cbiAgQENvcmRvdmEoe1xuICAgIHN1Y2Nlc3NJbmRleDogMSxcbiAgICBlcnJvckluZGV4OiAyLFxuICB9KVxuICBkaXNhYmxlRmVhdHVyZShmZWF0dXJlczogc3RyaW5nW10pOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBjdXJyZW50IGVuYWJsZWQgZmVhdHVyZXMsIHJlcGxhY2luZyBhbnkgY3VycmVudGx5IGVuYWJsZWQgZmVhdHVyZXMgd2l0aCB0aGUgZ2l2ZW4gc2V0LlxuICAgKlxuICAgKiBAcGFyYW0ge0FycmF5PHN0cmluZz59IGZlYXR1cmVzIFRoZSBmZWF0dXJlcyB0byBzZXQgYXMgZW5hYmxlZC5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3N1Y2Nlc3NdIFN1Y2Nlc3MgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24obWVzc2FnZSl9IFtmYWlsdXJlXSBGYWlsdXJlIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmFpbHVyZS5tZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICAgKiBAc2luY2UgMTMuMC4wXG4gICAqL1xuICBzZXRFbmFibGVkRmVhdHVyZXMoZmVhdHVyZXM6IHN0cmluZ1tdKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgY3VycmVudCBlbmFibGVkIGZlYXR1cmVzLlxuICAgKlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbc3VjY2Vzc10gU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqIEBzaW5jZSAxMy4wLjBcbiAgICovXG4gIEBDb3Jkb3ZhKHtcbiAgICBzdWNjZXNzSW5kZXg6IDAsXG4gICAgZXJyb3JJbmRleDogMSxcbiAgfSlcbiAgZ2V0RW5hYmxlZEZlYXR1cmVzKCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBhbGwgb2YgdGhlIGdpdmVuIGZlYXR1cmVzIGFyZSBlbmFibGVkLlxuICAgKlxuICAgKiBAcGFyYW0ge0FycmF5PHN0cmluZz59IGZlYXR1cmVzIFRoZSBmZWF0dXJlcyB0byBjaGVjay5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3N1Y2Nlc3NdIFN1Y2Nlc3MgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24obWVzc2FnZSl9IFtmYWlsdXJlXSBGYWlsdXJlIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmFpbHVyZS5tZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICAgKiBAc2luY2UgMTMuMC4wXG4gICAqL1xuICBAQ29yZG92YSh7XG4gICAgc3VjY2Vzc0luZGV4OiAxLFxuICAgIGVycm9ySW5kZXg6IDIsXG4gIH0pXG4gIGlzRmVhdHVyZUVuYWJsZWQoZmVhdHVyZXM6IHN0cmluZ1tdKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgY29uZmlndXJhdGlvbiBvZiB0aGUgUHJlZmVyZW5jZSBDZW50ZXIgd2l0aCB0aGUgZ2l2ZW4gSUQgdHJvdWdoIGEgY2FsbGJhY2sgbWV0aG9kLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcHJlZmVyZW5jZUNlbnRlcklkIFRoZSBwcmVmZXJlbmNlIGNlbnRlciBJRC5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3N1Y2Nlc3NdIFN1Y2Nlc3MgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24obWVzc2FnZSl9IFtmYWlsdXJlXSBGYWlsdXJlIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmFpbHVyZS5tZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICAgKiBAc2luY2UgMTMuMy4wXG4gICAqL1xuICBAQ29yZG92YSh7XG4gICAgc3VjY2Vzc0luZGV4OiAxLFxuICAgIGVycm9ySW5kZXg6IDIsXG4gIH0pXG4gIGdldFByZWZlcmVuY2VDZW50ZXJDb25maWcocHJlZmVyZW5jZUNlbnRlcklkOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBPcGVucyB0aGUgUHJlZmVyZW5jZSBDZW50ZXIgd2l0aCB0aGUgZ2l2ZW4gcHJlZmVyZW5jZUNlbnRlcklkLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcHJlbmZlcmVuY2VDZW50ZXJJZCBUaGUgcHJlZmVyZW5jZSBjZW50ZXIgSUQuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtzdWNjZXNzXSBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICogQHNpbmNlIDEzLjAuMFxuICAgKi9cbiAgQENvcmRvdmEoe1xuICAgIHN1Y2Nlc3NJbmRleDogMSxcbiAgICBlcnJvckluZGV4OiAyLFxuICB9KVxuICBvcGVuUHJlZmVyZW5jZUNlbnRlcihwcmVuZmVyZW5jZUNlbnRlcklkOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxufVxuIl19
146
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvQGF3ZXNvbWUtY29yZG92YS1wbHVnaW5zL3BsdWdpbnMvdXJiYW5haXJzaGlwL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUNBLE9BQU8sdUNBQStDLE1BQU0sK0JBQStCLENBQUM7QUFDNUYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQXNDbEM7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQU4sSUFBWSxnQkFLWDtBQUxELFdBQVksZ0JBQWdCO0lBQzFCLHVEQUFRLENBQUE7SUFDUix5REFBUyxDQUFBO0lBQ1QseURBQVMsQ0FBQTtJQUNULHlEQUFTLENBQUE7QUFDWCxDQUFDLEVBTFcsZ0JBQWdCLEtBQWhCLGdCQUFnQixRQUszQjtBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFOLElBQVksbUJBS1g7QUFMRCxXQUFZLG1CQUFtQjtJQUM3Qiw2REFBUSxDQUFBO0lBQ1IsK0RBQVMsQ0FBQTtJQUNULCtEQUFTLENBQUE7SUFDVCwrREFBUyxDQUFBO0FBQ1gsQ0FBQyxFQUxXLG1CQUFtQixLQUFuQixtQkFBbUIsUUFLOUI7O0lBK0JpQyxnQ0FBMEI7Ozs7SUFhMUQsaUNBQVU7SUFrQlYscUNBQWM7SUFjZCxxQ0FBYztJQWlCZCxrQ0FBVztJQXNCWCxxQ0FBYztJQXFCZCwyQ0FBb0I7SUF1QnBCLGdEQUF5QjtJQVV6QiwrQkFBUTtJQXNCUiw4QkFBTyxhQUFDLE1BQVc7SUFhbkIsbURBQTRCLGFBQUMsTUFBVztJQWN4Qyx3REFBaUMsYUFBQyxPQUFnQjtJQWFsRCxrREFBMkIsYUFBQyxPQUFnQjtJQWE1QyxpREFBMEI7SUFjMUIsZ0RBQXlCO0lBYXpCLG1DQUFZO0lBaUJaLDRDQUFxQixhQUFDLEtBQWM7SUFjcEMsa0NBQVcsYUFBQyxLQUFjO0lBYTFCLDhCQUFPO0lBYVAsOEJBQU8sYUFBQyxJQUFjO0lBY3RCLCtCQUFRO0lBY1IsK0JBQVEsYUFBQyxLQUFhO0lBYXRCLHlDQUFrQjtJQWFsQiwwQ0FBbUIsYUFBQyxPQUFnQjtJQWFwQyxvQ0FBYTtJQWtCYixtQ0FBWTtJQWdCWixtQ0FBWSxhQUFDLFNBQWlCLEVBQUUsV0FBbUIsRUFBRSxPQUFlLEVBQUUsU0FBaUI7SUFrQnZGLDBDQUFtQixhQUFDLE9BQWdCO0lBYXBDLHlDQUFrQjtJQWFsQixtQ0FBWTtJQWFaLG1DQUFZLGFBQUMsU0FBaUI7SUFlOUIsZ0NBQVMsYUFBQyxVQUFrQixFQUFFLFdBQWdCO0lBUTlDLDZDQUFzQjtJQVF0QiwyQ0FBb0I7SUFRcEIsNENBQXFCO0lBUXJCLDhDQUF1QjtJQVd2QixtREFBNEI7SUFXNUIsbURBQTRCO0lBZ0I1QixrREFBMkI7SUFnQjNCLGtEQUEyQjtJQWMzQiw4Q0FBdUIsYUFBQyxHQUFXLEVBQUUsVUFBa0I7SUFldkQseUNBQWtCLGFBQUMsT0FBZ0I7SUFjbkMsd0NBQWlCO0lBY2pCLG1EQUE0QixhQUFDLE9BQWdCO0lBYzdDLGtEQUEyQjtJQVkzQiwyQ0FBb0I7SUFZcEIsMkNBQW9CO0lBWXBCLDBDQUFtQjtJQWFuQixpREFBMEI7SUFtQjFCLHVDQUFnQjtJQWFoQiwyQ0FBb0IsYUFBQyxTQUFpQjtJQWF0Qyx5Q0FBa0IsYUFBQyxTQUFpQjtJQWFwQywwQ0FBbUIsYUFBQyxTQUFpQjtJQWVyQyxtQ0FBWTtJQWNaLDBDQUFtQixhQUFDLFNBQWlCO0lBWXJDLHdDQUFpQixhQUFDLFVBQWtCO0lBWXBDLHlDQUFrQjtJQWFsQiw2Q0FBc0I7SUFldEIsMENBQW1CLGFBQUMsT0FBZ0I7SUFhcEMscUNBQWMsYUFBQyxLQUFhO0lBYTVCLHFDQUFjO0lBWWQsaUNBQVU7SUFjViwyQ0FBb0IsYUFBQyxLQUF1QjtJQWM1Qyw2Q0FBc0IsYUFBQyxPQUE0QjtJQWVuRCxxQ0FBYztJQWFkLHNDQUFlLGFBQUMsT0FBZ0I7SUFhaEMsdUNBQWdCO0lBYWhCLHdDQUFpQixhQUFDLE9BQWdCO0lBaUJsQyxxQ0FBYyxhQUFDLEtBQWE7SUFpQjVCLGtDQUFXLGFBQUMsTUFBYztJQWlCMUIsb0NBQWEsYUFBQyxRQUFrQjtJQWlCaEMscUNBQWMsYUFBQyxRQUFrQjtJQUlqQzs7Ozs7Ozs7T0FRRztJQUNILHlDQUFrQixHQUFsQixVQUFtQixRQUFrQjtRQUNuQyxPQUFPO0lBQ1QsQ0FBQztJQWNELHlDQUFrQjtJQWlCbEIsdUNBQWdCLGFBQUMsUUFBa0I7SUFpQm5DLGdEQUF5QixhQUFDLGtCQUEwQjtJQWlCcEQsMkNBQW9CLGFBQUMsbUJBQTJCOzs7Ozs7O3VCQTFwQ2xEO0VBK0ZrQywwQkFBMEI7U0FBL0MsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFBsdWdpbiwgQ29yZG92YSwgQXdlc29tZUNvcmRvdmFOYXRpdmVQbHVnaW4gfSBmcm9tICdAYXdlc29tZS1jb3Jkb3ZhLXBsdWdpbnMvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICogSW50ZXJmYWNlIGZvciBVQWlyc2hpcCBUYWcgRWRpdG9yXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFnR3JvdXBFZGl0b3Ige1xuICBhZGRUYWdzKHRhZ0dyb3VwOiBzdHJpbmcsIHRhZ3M6IHN0cmluZ1tdKTogVGFnR3JvdXBFZGl0b3I7XG4gIHJlbW92ZVRhZ3ModGFnR3JvdXA6IHN0cmluZywgdGFnczogc3RyaW5nW10pOiBUYWdHcm91cEVkaXRvcjtcbiAgYXBwbHkoc3VjY2VzczogKCkgPT4gdm9pZCwgZmFpbHVyZTogKG1lc3NhZ2U6IHN0cmluZykgPT4gdm9pZCk6IFRhZ0dyb3VwRWRpdG9yO1xufVxuXG4vKipcbiAqIEludGVyZmFjZSBmb3IgVUFpcnNoaXAgQXR0cmlidXRlcyBFZGl0b3JcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdHRyaWJ1dGVzRWRpdG9yIHtcbiAgc2V0QXR0cmlidXRlKG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBEYXRlKTogQXR0cmlidXRlc0VkaXRvcjtcbiAgcmVtb3ZlQXR0cmlidXRlKG5hbWU6IHN0cmluZyk6IEF0dHJpYnV0ZXNFZGl0b3I7XG4gIGFwcGx5KHN1Y2Nlc3M6ICgpID0+IHZvaWQsIGZhaWx1cmU6IChtZXNzYWdlOiBzdHJpbmcpID0+IHZvaWQpOiBBdHRyaWJ1dGVzRWRpdG9yO1xufVxuXG4vKipcbiAqIEludGVyZmFjZSBmb3IgVUFpcnNoaXAgQ2hhbm5lbFN1YnNjcmlwdGlvbkxpc3QgRWRpdG9yXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhbm5lbFN1YnNjcmlwdGlvbkxpc3RFZGl0b3Ige1xuICBzdWJzY3JpYmUoc3Vic2NyaXB0aW9uTGlzdElEOiBzdHJpbmcpOiBDaGFubmVsU3Vic2NyaXB0aW9uTGlzdEVkaXRvcjtcbiAgdW5zdWJzY3JpYmUoc3Vic2NyaXB0aW9uTGlzdElEOiBzdHJpbmcpOiBDaGFubmVsU3Vic2NyaXB0aW9uTGlzdEVkaXRvcjtcbiAgYXBwbHkoc3VjY2VzczogKCkgPT4gdm9pZCwgZmFpbHVyZTogKG1lc3NhZ2U6IHN0cmluZykgPT4gdm9pZCk6IENoYW5uZWxTdWJzY3JpcHRpb25MaXN0RWRpdG9yO1xufVxuXG4vKipcbiAqIEludGVyZmFjZSBmb3IgVUFpcnNoaXAgQ29udGFjdFN1YnNjcmlwdGlvbkxpc3QgRWRpdG9yXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGFjdFN1YnNjcmlwdGlvbkxpc3RFZGl0b3Ige1xuICBzdWJzY3JpYmUoc3Vic2NyaXB0aW9uTGlzdElEOiBzdHJpbmcsIGNvbnRhY3RTY29wZTogJ0FQUCcgfCAnRU1BSUwnKTogQ29udGFjdFN1YnNjcmlwdGlvbkxpc3RFZGl0b3I7XG4gIHVuc3Vic2NyaWJlKHN1YnNjcmlwdGlvbkxpc3RJRDogc3RyaW5nLCBjb250YWN0U2NvcGU6ICdBUFAnIHwgJ0VNQUlMJyk6IENvbnRhY3RTdWJzY3JpcHRpb25MaXN0RWRpdG9yO1xuICBhcHBseShzdWNjZXNzOiAoKSA9PiB2b2lkLCBmYWlsdXJlOiAobWVzc2FnZTogc3RyaW5nKSA9PiB2b2lkKTogQ29udGFjdFN1YnNjcmlwdGlvbkxpc3RFZGl0b3I7XG59XG5cbi8qKlxuICogRW51bSBmb3Igbm90aWZpY2F0aW9uIHR5cGVzLlxuICpcbiAqIEByZWFkb25seVxuICogQGVudW0ge251bWJlcn1cbiAqL1xuZXhwb3J0IGVudW0gTm90aWZpY2F0aW9uVHlwZSB7XG4gIG5vbmUgPSAwLFxuICBiYWRnZSA9IDEsXG4gIHNvdW5kID0gMixcbiAgYWxlcnQgPSA0LFxufVxuXG4vKipcbiAqIEVudW0gZm9yIHByZXNlbnRhdGlvbiBvcHRpb25zLlxuICpcbiAqIEByZWFkb25seVxuICogQGVudW0ge251bWJlcn1cbiAqL1xuZXhwb3J0IGVudW0gUHJlc2VudGF0aW9uT3B0aW9ucyB7XG4gIG5vbmUgPSAwLFxuICBiYWRnZSA9IDEsXG4gIHNvdW5kID0gMixcbiAgYWxlcnQgPSA0LFxufVxuXG4vKipcbiAqIEBuYW1lIFVyYmFuQWlyU2hpcFxuICogQGRlc2NyaXB0aW9uXG4gKiBUaGlzIHBsdWdpbiBkb2VzIHNvbWV0aGluZ1xuICogQHVzYWdlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyBVcmJhbkFpclNoaXAgfSBmcm9tICdAYXdlc29tZS1jb3Jkb3ZhLXBsdWdpbnMvdXJiYW5haXJzaGlwL25neCc7XG4gKlxuICpcbiAqIGNvbnN0cnVjdG9yKHByaXZhdGUgdXJiYW5BaXJTaGlwOiBVcmJhbkFpclNoaXApIHsgfVxuICpcbiAqIC4uLlxuICpcbiAqXG4gKiB0aGlzLnVyYmFuQWlyU2hpcC50YWtlT2ZmKGNvbmZpZylcbiAqICAgLnRoZW4oKHJlczogYW55KSA9PiBjb25zb2xlLmxvZyhyZXMpKVxuICogICAuY2F0Y2goKGVycm9yOiBhbnkpID0+IGNvbnNvbGUuZXJyb3IoZXJyb3IpKTtcbiAqXG4gKiBgYGBcbiAqL1xuQFBsdWdpbih7XG4gIHBsdWdpbk5hbWU6ICdVcmJhbkFpclNoaXAnLFxuICBwbHVnaW46ICd1cmJhbmFpcnNoaXAtY29yZG92YScsXG4gIHBsdWdpblJlZjogJ3dpbmRvdy5VQWlyc2hpcCcsXG4gIHJlcG86ICdodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS91cmJhbmFpcnNoaXAtY29yZG92YScsXG4gIGluc3RhbGw6ICdpb25pYyBjb3Jkb3ZhIHBsdWdpbiBhZGQgdXJiYW5haXJzaGlwLWNvcmRvdmEnLFxuICBwbGF0Zm9ybXM6IFsnQW5kcm9pZCcsICdpT1MnXSxcbn0pXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVXJiYW5BaXJTaGlwIGV4dGVuZHMgQXdlc29tZUNvcmRvdmFOYXRpdmVQbHVnaW4ge1xuICAvKipcbiAgICogRXZlbnQgZmlyZWQgd2hlbiBhIG5ldyBkZWVwIGxpbmsgaXMgcmVjZWl2ZWQuXG4gICAqXG4gICAqIEBldmVudCBkZWVwX2xpbmtcbiAgICogQHR5cGUge29iamVjdH1cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtkZWVwTGlua10gVGhlIGRlZXAgbGluay5cbiAgICovXG4gIEBDb3Jkb3ZhKHtcbiAgICBldmVudE9ic2VydmFibGU6IHRydWUsXG4gICAgZXZlbnQ6ICd1cmJhbmFpcnNoaXAuZGVlcF9saW5rJyxcbiAgICBlbGVtZW50OiAnZG9jdW1lbnQnLFxuICB9KVxuICBvbkRlZXBMaW5rKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIEV2ZW50IGZpcmVkIHdoZW4gYSBjaGFubmVsIHJlZ2lzdHJhdGlvbiBvY2N1cnMuXG4gICAqXG4gICAqIEBldmVudCByZWdpc3RyYXRpb25cbiAgICogQHR5cGUge29iamVjdH1cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtjaGFubmVsSURdIFRoZSBjaGFubmVsIElELlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3JlZ2lzdHJhdGlvblRva2VuXSBUaGUgZGV2aWNlVG9rZW4gb24gaU9TLCBhbmQgdGhlIEZDTS9BRE0gdG9rZW4gb24gQW5kcm9pZC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtlcnJvcl0gRXJyb3IgbWVzc2FnZSBpZiBhbiBlcnJvciBvY2N1cnJlZC5cbiAgICovXG4gIEBDb3Jkb3ZhKHtcbiAgICBldmVudE9ic2VydmFibGU6IHRydWUsXG4gICAgZXZlbnQ6ICd1cmJhbmFpcnNoaXAucmVnaXN0cmF0aW9uJyxcbiAgICBlbGVtZW50OiAnZG9jdW1lbnQnLFxuICB9KVxuICBvblJlZ2lzdHJhdGlvbigpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBFdmVudCBmaXJlZCB3aGVuIHRoZSBpbmJveCBpcyB1cGRhdGVkLlxuICAgKlxuICAgKiBAZXZlbnQgaW5ib3hfdXBkYXRlZFxuICAgKi9cbiAgQENvcmRvdmEoe1xuICAgIGV2ZW50T2JzZXJ2YWJsZTogdHJ1ZSxcbiAgICBldmVudDogJ3VyYmFuYWlyc2hpcC5pbmJveF91cGRhdGVkJyxcbiAgICBlbGVtZW50OiAnZG9jdW1lbnQnLFxuICB9KVxuICBvbkluYm94VXBkYXRlZCgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBFdmVudCBmaXJlZCB3aGVuIHRoZSBpbmJveCBuZWVkcyB0byBiZSBkaXNwbGF5ZWQuIFRoaXMgZXZlbnQgaXMgb25seSBlbWl0dGVkIGlmIGF1dG9cbiAgICogbGF1bmNoIG1lc3NhZ2UgY2VudGVyIGlzIGRpc2FibGVkLlxuICAgKlxuICAgKiBAZXZlbnQgc2hvd19pbmJveFxuICAgKiBAdHlwZSB7b2JqZWN0fVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW21lc3NhZ2VJZF0gVGhlIG9wdGlvbmFsIG1lc3NhZ2UgSUQuXG4gICAqL1xuICBAQ29yZG92YSh7XG4gICAgZXZlbnRPYnNlcnZhYmxlOiB0cnVlLFxuICAgIGV2ZW50OiAndXJiYW5haXJzaGlwLnNob3dfaW5ib3gnLFxuICAgIGVsZW1lbnQ6ICdkb2N1bWVudCcsXG4gIH0pXG4gIG9uU2hvd0luYm94KCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIEV2ZW50IGZpcmVkIHdoZW4gYSBwdXNoIGlzIHJlY2VpdmVkLlxuICAgKlxuICAgKiBAZXZlbnQgcHVzaFxuICAgKiBAdHlwZSB7b2JqZWN0fVxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSBUaGUgcHVzaCBhbGVydCBtZXNzYWdlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGl0bGUgVGhlIHB1c2ggdGl0bGUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdWJ0aXRsZSBUaGUgcHVzaCBzdWJ0aXRsZS5cbiAgICogQHBhcmFtIHtvYmplY3R9IGV4dHJhcyBBbnkgcHVzaCBleHRyYXMuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcHMgVGhlIHJhdyBhcHMgZGljdGlvbmFyeSAoaU9TIG9ubHkpXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbbm90aWZpY2F0aW9uX2lkXSBUaGUgQW5kcm9pZCBub3RpZmljYXRpb24gSUQuIERlcHJlY2F0ZWQgaW4gZmF2b3Igb2Ygbm90aWZpY2F0aW9uSWQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbbm90aWZpY2F0aW9uSWRdIFRoZSBub3RpZmljYXRpb24gSUQuXG4gICAqL1xuICBAQ29yZG92YSh7XG4gICAgZXZlbnRPYnNlcnZhYmxlOiB0cnVlLFxuICAgIGV2ZW50OiAndXJiYW5haXJzaGlwLnB1c2gnLFxuICAgIGVsZW1lbnQ6ICdkb2N1bWVudCcsXG4gIH0pXG4gIG9uUHVzaFJlY2VpdmVkKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIEV2ZW50IGZpcmVkIHdoZW4gbm90aWZpY2F0aW9uIG9wZW5lZC5cbiAgICpcbiAgICogQGV2ZW50IG5vdGlmaWNhdGlvbl9vcGVuZWRcbiAgICogQHR5cGUge29iamVjdH1cbiAgICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2UgVGhlIHB1c2ggYWxlcnQgbWVzc2FnZS5cbiAgICogQHBhcmFtIHtvYmplY3R9IGV4dHJhcyBBbnkgcHVzaCBleHRyYXMuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbbm90aWZpY2F0aW9uX2lkXSBUaGUgQW5kcm9pZCBub3RpZmljYXRpb24gSUQuIERlcHJlY2F0ZWQgaW4gZmF2b3Igb2Ygbm90aWZpY2F0aW9uSWQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbbm90aWZpY2F0aW9uSWRdIFRoZSBub3RpZmljYXRpb24gSUQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbYWN0aW9uSURdIFRoZSBJRCBvZiB0aGUgbm90aWZpY2F0aW9uIGFjdGlvbiBidXR0b24gaWYgYXZhaWxhYmxlLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlzRm9yZWdyb3VuZCBXaWxsIGFsd2F5cyBiZSB0cnVlIGlmIHRoZSB1c2VyIHRhcHMgdGhlIG1haW4gbm90aWZpY2F0aW9uLiBPdGhlcndpc2UgaXRzIGRlZmluZWQgYnkgdGhlIG5vdGlmaWNhdGlvbiBhY3Rpb24gYnV0dG9uLlxuICAgKi9cbiAgQENvcmRvdmEoe1xuICAgIGV2ZW50T2JzZXJ2YWJsZTogdHJ1ZSxcbiAgICBldmVudDogJ3VyYmFuYWlyc2hpcC5ub3RpZmljYXRpb25fb3BlbmVkJyxcbiAgICBlbGVtZW50OiAnZG9jdW1lbnQnLFxuICB9KVxuICBvbk5vdGlmaWNhdGlvbk9wZW5lZCgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBFdmVudCBmaXJlZCB3aGVuIHRoZSB1c2VyIG5vdGlmaWNhdGlvbiBvcHQtaW4gc3RhdHVzIGNoYW5nZXMuXG4gICAqXG4gICAqIEBldmVudCBub3RpZmljYXRpb25fb3B0X2luX3N0YXR1c1xuICAgKiBAdHlwZSB7b2JqZWN0fVxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IG9wdEluIElmIHRoZSB1c2VyIGlzIG9wdGVkIGluIG9yIG5vdCB0byB1c2VyIG5vdGlmaWNhdGlvbnMuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBbYXV0aG9yaXplZE5vdGlmaWNhdGlvblNldHRpbmdzXSBpT1Mgb25seS4gQSBtYXAgb2YgYXV0aG9yaXplZCBzZXR0aW5ncy5cbiAgICogQHBhcmFtIHtib29sZWFufSBhdXRob3JpemVkTm90aWZpY2F0aW9uU2V0dGluZ3MuYWxlcnQgSWYgYWxlcnRzIGFyZSBhdXRob3JpemVkLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGF1dGhvcml6ZWROb3RpZmljYXRpb25TZXR0aW5ncy5zb3VuZCBJZiBzb3VuZHMgYXJlIGF1dGhvcml6ZWQuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gYXV0aG9yaXplZE5vdGlmaWNhdGlvblNldHRpbmdzLmJhZGdlIElmIGJhZGdlcyBhcmUgYXV0aG9yaXplZC5cbiAgICogQHBhcmFtIHtib29sZWFufSBhdXRob3JpemVkTm90aWZpY2F0aW9uU2V0dGluZ3MuY2FyUGxheSBJZiBjYXIgcGxheSBpcyBhdXRob3JpemVkLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGF1dGhvcml6ZWROb3RpZmljYXRpb25TZXR0aW5ncy5sb2NrU2NyZWVuIElmIHRoZSBsb2NrIHNjcmVlbiBpcyBhdXRob3JpemVkLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGF1dGhvcml6ZWROb3RpZmljYXRpb25TZXR0aW5ncy5ub3RpZmljYXRpb25DZW50ZXIgSWYgdGhlIG5vdGlmaWNhdGlvbiBjZW50ZXIgaXMgYXV0aG9yaXplZC5cbiAgICovXG4gIEBDb3Jkb3ZhKHtcbiAgICBldmVudE9ic2VydmFibGU6IHRydWUsXG4gICAgZXZlbnQ6ICd1cmJhbmFpcnNoaXAubm90aWZpY2F0aW9uX29wdF9pbl9zdGF0dXMnLFxuICAgIGVsZW1lbnQ6ICdkb2N1bWVudCcsXG4gIH0pXG4gIG9uTm90aWZpY2F0aW9uT3B0SW5TdGF0dXMoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogUmUtYXR0YWNoZXMgZG9jdW1lbnQgZXZlbnQgbGlzdGVuZXJzIGluIHRoaXMgd2Vidmlld1xuICAgKi9cbiAgQENvcmRvdmEoe1xuICAgIHN5bmM6IHRydWUsXG4gIH0pXG4gIHJlYXR0YWNoKCk6IHZvaWQge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0YWlsaXplcyBVcmJhbiBBaXJzaGlwLlxuICAgKlxuICAgKiBUaGUgcGx1Z2luIHdpbGwgYXV0b21hdGljYWxseSBjYWxsIHRha2VPZmYgZHVyaW5nIHRoZSBuZXh0IGFwcCBpbml0IGluXG4gICAqIG9yZGVyIHRvIHByb3Blcmx5IGhhbmRsZSBpbmNvbWluZyBwdXNoLiBJZiB0YWtlT2ZmIGlzIGNhbGxlZCBtdWx0aXBsZSB0aW1lc1xuICAgKiBpbiBhIHNlc3Npb24sIG9yIGlmIHRoZSBjb25maWcgaXMgZGlmZmVyZW50IHRoYW4gdGhlIHByZXZpb3VzIHNlc3NzaW9uLCB0aGVcbiAgICogbmV3IGNvbmZpZyB3aWxsIG5vdCBiZSB1c2VkIHVudGlsIHRoZSBuZXh0IGFwcCBzdGFydC5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9ICBjb25maWcgVGhlIFVyYmFuIEFpcnNoaXAgY29uZmlnLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gIGNvbmZpZy5zaXRlIFNldHMgdGhlIGNsb3VkIHNpdGUsIG11c3QgYmUgZWl0aGVyIEVVIG9yIFVTLlxuICAgKiBAcGFyYW0ge29iamVjdH0gIGNvbmZpZy5kZXZlbG9wbWVudCBUaGUgVXJiYW4gQWlyc2hpcCBkZXZlbG9wbWVudCBjb25maWcuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSAgY29uZmlnLmRldmVsb3BtZW50LmFwcEtleSBUaGUgZGV2ZWxvcG1lbnQgYXBwS2V5LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gIGNvbmZpZy5kZXZlbG9wbWVudC5hcHBTZWNyZXQgVGhlIGRldmVsb3BtZW50IGFwcFNlY3JldC5cbiAgICogQHBhcmFtIHtvYmplY3R9ICBjb25maWcucHJvZHVjdGlvbiBUaGUgVXJiYW4gQWlyc2hpcCBwcm9kdWN0aW9uIGNvbmZpZy5cbiAgICogQHBhcmFtIHtzdHJpbmd9ICBjb25maWcucHJvZHVjdGlvbi5hcHBLZXkgVGhlIHByb2R1Y3Rpb24gYXBwS2V5LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gIGNvbmZpZy5wcm9kdWN0aW9uLmFwcFNlY3JldCBUaGUgcHJvZHVjdGlvbiBhcHBTZWNyZXQuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIHRha2VPZmYoY29uZmlnOiBhbnkpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBBbmRyb2lkIG5vdGlmaWNhdGlvbiBjb25maWcuIFZhbHVlcyBub3Qgc2V0IHdpbGwgZmFsbGJhY2sgdG8gYW55IHZhbHVlcyBzZXQgaW4gdGhlIGNvbmZpZy54bWwuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSAgY29uZmlnIFRoZSBub3RpZmljYXRpb24gY29uZmlnLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gIFtjb25maWcuaWNvbl0gVGhlIG5hbWUgb2YgdGhlIGRyYXdhYmxlIHJlc291cmNlIHRvIHVzZSBhcyB0aGUgbm90aWZpY2F0aW9uIGljb24uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSAgW2NvbmZpZy5sYXJnZUljb25dIFRoZSBuYW1lIG9mIHRoZSBkcmF3YWJsZSByZXNvdXJjZSB0byB1c2UgYXMgdGhlIG5vdGlmaWNhdGlvbiBsYXJnZSBpY29uLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gIFtjb25maWcuYWNjZW50Q29sb3JdIFRoZSBub3RpZmljYXRpb24gYWNjZW50IGNvbG9yLiBGb3JtYXQgaXMgI0FBUlJHR0JCLlxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBzZXRBbmRyb2lkTm90aWZpY2F0aW9uQ29uZmlnKGNvbmZpZzogYW55KTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgZGVmYXVsdCBiZWhhdmlvciB3aGVuIHRoZSBtZXNzYWdlIGNlbnRlciBpcyBsYXVuY2hlZCBmcm9tIGEgcHVzaFxuICAgKiBub3RpZmljYXRpb24uIElmIHNldCB0byBmYWxzZSB0aGUgbWVzc2FnZSBjZW50ZXIgbXVzdCBiZSBtYW51YWxseSBsYXVuY2hlZC5cbiAgICpcbiAgICogQHBhcmFtIHtib29sZWFufSBlbmFibGVkIHRydWUgdG8gYXV0b21hdGljYWxseSBsYXVuY2ggdGhlIGRlZmF1bHQgbWVzc2FnZSBjZW50ZXIsIGZhbHNlIHRvIGRpc2FibGUuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtzdWNjZXNzXSBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgc2V0QXV0b0xhdW5jaERlZmF1bHRNZXNzYWdlQ2VudGVyKGVuYWJsZWQ6IGJvb2xlYW4pOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmFibGVzIG9yIGRpc2FibGVzIHVzZXIgbm90aWZpY2F0aW9ucy5cbiAgICpcbiAgICogQHBhcmFtIHtib29sZWFufSBlbmFibGVkIHRydWUgdG8gZW5hYmxlIG5vdGlmaWNhdGlvbnMsIGZhbHNlIHRvIGRpc2FibGUuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtzdWNjZXNzXSBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgc2V0VXNlck5vdGlmaWNhdGlvbnNFbmFibGVkKGVuYWJsZWQ6IGJvb2xlYW4pOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdXNlciBub3RpZmljYXRpb25zIGFyZSBlbmFibGVkIG9yIG5vdC5cbiAgICpcbiAgICogQHBhcmFtIHtmdW5jdGlvbihlbmFibGVkKX0gc3VjY2VzcyBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHN1Y2Nlc3MuZW5hYmxlZCBGbGFnIGluZGljYXRpbmcgaWYgdXNlciBub3RpZmljYXRpb25zIGlzIGVuYWJsZWQgb3Igbm90LlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgaXNVc2VyTm90aWZpY2F0aW9uc0VuYWJsZWQoKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGFwcCBub3RpZmljYXRpb25zIGFyZSBlbmFibGVkIG9yIG5vdC4gSXRzIHBvc3NpYmxlIHRvIGhhdmUgYHVzZXJOb3RpZmljYXRpb25zRW5hYmxlZGBcbiAgICogYnV0IGFwcCBub3RpZmljYXRpb25zIGJlaW5nIGRpc2FibGVkIGlmIHRoZSB1c2VyIG9wdGVkIG91dCBvZiBub3RpZmljYXRpb25zLlxuICAgKlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKGVuYWJsZWQpfSBzdWNjZXNzIFN1Y2Nlc3MgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gc3VjY2Vzcy5lbmFibGVkIEZsYWcgaW5kaWNhdGluZyBpZiBhcHAgbm90aWZpY2F0aW9ucyBpcyBlbmFibGVkIG9yIG5vdC5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGlzQXBwTm90aWZpY2F0aW9uc0VuYWJsZWQoKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgY2hhbm5lbCBJRC5cbiAgICpcbiAgICogQHBhcmFtIHtmdW5jdGlvbihJRCl9IHN1Y2Nlc3MgVGhlIGZ1bmN0aW9uIHRvIGNhbGwgb24gc3VjY2Vzcy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHN1Y2Nlc3MuSUQgVGhlIGNoYW5uZWwgSUQgc3RyaW5nXG4gICAqIEBwYXJhbSB7ZmFpbHVyZUNhbGxiYWNrfSBbZmFpbHVyZV0gVGhlIGZ1bmN0aW9uIHRvIGNhbGwgb24gZmFpbHVyZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgZ2V0Q2hhbm5lbElEKCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGxhc3Qgbm90aWZpY2F0aW9uIHRoYXQgbGF1bmNoZWQgdGhlIGFwcGxpY2F0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGNsZWFyIHRydWUgdG8gY2xlYXIgdGhlIG5vdGlmaWNhdGlvbi5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihwdXNoKX0gc3VjY2VzcyBUaGUgZnVuY3Rpb24gdG8gY2FsbCBvbiBzdWNjZXNzLlxuICAgKiBAcGFyYW0ge29iamVjdH0gc3VjY2Vzcy5wdXNoIFRoZSBwdXNoIG1lc3NhZ2Ugb2JqZWN0IGNvbnRhaW5pbmcgZGF0YSBhc3NvY2lhdGVkIHdpdGggYSBwdXNoIG5vdGlmaWNhdGlvbi5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHN1Y2Nlc3MucHVzaC5tZXNzYWdlIFRoZSBwdXNoIGFsZXJ0IG1lc3NhZ2UuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBzdWNjZXNzLnB1c2guZXh0cmFzIEFueSBwdXNoIGV4dHJhcy5cbiAgICogQHBhcmFtIHtudW1iZXJ9IFtzdWNjZXNzLnB1c2gubm90aWZpY2F0aW9uX2lkXSBUaGUgQW5kcm9pZCBub3RpZmljYXRpb24gSUQuXG4gICAqIEBwYXJhbSB7ZmFpbHVyZUNhbGxiYWNrfSBbZmFpbHVyZV0gVGhlIGZ1bmN0aW9uIHRvIGNhbGwgb24gZmFpbHVyZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgZ2V0TGF1bmNoTm90aWZpY2F0aW9uKGNsZWFyOiBib29sZWFuKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgbGFzdCByZWNlaXZlZCBkZWVwIGxpbmsuXG4gICAqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gY2xlYXIgdHJ1ZSB0byBjbGVhciB0aGUgZGVlcCBsaW5rLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKHB1c2gpfSBzdWNjZXNzIFRoZSBmdW5jdGlvbiB0byBjYWxsIG9uIHN1Y2Nlc3MuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdWNjZXNzLmRlZXBMaW5rIFRoZSBkZWVwIGxpbmsuXG4gICAqIEBwYXJhbSB7ZmFpbHVyZUNhbGxiYWNrfSBbZmFpbHVyZV0gVGhlIGZ1bmN0aW9uIHRvIGNhbGwgb24gZmFpbHVyZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgZ2V0RGVlcExpbmsoY2xlYXI6IGJvb2xlYW4pOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB0YWdzIGFzIGFuIGFycmF5LlxuICAgKlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKHRhZ3MpfSBzdWNjZXNzIFRoZSBmdW5jdGlvbiB0byBjYWxsIG9uIHN1Y2Nlc3MuXG4gICAqIEBwYXJhbSB7QXJyYXl9IHN1Y2Nlc3MudGFncyBUaGUgdGFncyBhcyBhbiBhcnJheS5cbiAgICogQHBhcmFtIHtmYWlsdXJlQ2FsbGJhY2t9IFtmYWlsdXJlXSBUaGUgZnVuY3Rpb24gdG8gY2FsbCBvbiBmYWlsdXJlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmFpbHVyZS5tZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBnZXRUYWdzKCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHRhZ3MuXG4gICAqXG4gICAqIEBwYXJhbSB7QXJyYXl9IHRhZ3MgYW4gYXJyYXkgb2Ygc3RyaW5ncy5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3N1Y2Nlc3NdIFN1Y2Nlc3MgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24obWVzc2FnZSl9IFtmYWlsdXJlXSBGYWlsdXJlIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmFpbHVyZS5tZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBzZXRUYWdzKHRhZ3M6IHN0cmluZ1tdKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgYWxpYXMuXG4gICAqXG4gICAqIEBkZXByZWNhdGVkIERlcHJlY2F0ZWQgc2luY2UgNi43LjAgLSB0byBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHZlcnNpb24gb2YgdGhlIHBsdWdpbiAtIHBsZWFzZSB1c2UgZ2V0TmFtZWRVc2VyXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24oY3VycmVudEFsaWFzKX0gc3VjY2VzcyBUaGUgZnVuY3Rpb24gdG8gY2FsbCBvbiBzdWNjZXNzLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3VjY2Vzcy5jdXJyZW50QWxpYXMgVGhlIGFsaWFzIGFzIGEgc3RyaW5nLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgZ2V0QWxpYXMoKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgYWxpYXMuXG4gICAqXG4gICAqIEBkZXByZWNhdGVkIERlcHJlY2F0ZWQgc2luY2UgNi43LjAgIC0gdG8gYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSB2ZXJzaW9uIG9mIHRoZSBwbHVnaW4gLSBwbGVhc2UgdXNlIHNldE5hbWVkVXNlclxuICAgKiBAcGFyYW0ge3N0cmluZ30gYWxpYXMgc3RyaW5nXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtzdWNjZXNzXSBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgc2V0QWxpYXMoYWxpYXM6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBxdWlldCB0aW1lIGlzIGVuYWJsZWQgb3Igbm90LlxuICAgKlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKGVuYWJsZWQpfSBzdWNjZXNzIFN1Y2Nlc3MgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gc3VjY2Vzcy5lbmFibGVkIEZsYWcgaW5kaWNhdGluZyBpZiBxdWlldCB0aW1lIGlzIGVuYWJsZWQgb3Igbm90LlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgaXNRdWlldFRpbWVFbmFibGVkKCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgb3IgZGlzYWJsZXMgcXVpZXQgdGltZS5cbiAgICpcbiAgICogQHBhcmFtIHtib29sZWFufSBlbmFibGVkIHRydWUgdG8gZW5hYmxlIHF1aWV0IHRpbWUsIGZhbHNlIHRvIGRpc2FibGUuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtzdWNjZXNzXSBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgc2V0UXVpZXRUaW1lRW5hYmxlZChlbmFibGVkOiBib29sZWFuKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBkZXZpY2UgaXMgY3VycmVudGx5IGluIHF1aWV0IHRpbWUuXG4gICAqXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24oaW5RdWlldFRpbWUpfSBzdWNjZXNzIFN1Y2Nlc3MgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gc3VjY2Vzcy5pblF1aWV0VGltZSBGbGFnIGluZGljYXRpbmcgaWYgcXVpZXQgdGltZSBpcyBjdXJyZW50bHkgaW4gZWZmZWN0LlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgaXNJblF1aWV0VGltZSgpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBxdWlldCB0aW1lIGFzIGFuIG9iamVjdCB3aXRoIHRoZSBmb2xsb3dpbmc6XG4gICAqIFwic3RhcnRIb3VyXCI6IE51bWJlcixcbiAgICogXCJzdGFydE1pbnV0ZVwiOiBOdW1iZXIsXG4gICAqIFwiZW5kSG91clwiOiBOdW1iZXIsXG4gICAqIFwiZW5kTWludXRlXCI6IE51bWJlclxuICAgKlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKHF1aWV0VGltZSl9IHN1Y2Nlc3MgVGhlIGZ1bmN0aW9uIHRvIGNhbGwgb24gc3VjY2Vzcy5cbiAgICogQHBhcmFtIHtvYmplY3R9IHN1Y2Nlc3MucXVpZXRUaW1lIFRoZSBxdWlldFRpbWUgb2JqZWN0IHJlcHJlc2VudHMgYSB0aW1lc3BhbiBkdXJpbmdcbiAgICogICAgICAgIHdoaWNoIG5vdGlmaWNhdGlvbnMgc2hvdWxkIGJlIHNpbGVuY2VkLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgZ2V0UXVpZXRUaW1lKCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHF1aWV0IHRpbWUuXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBzdGFydEhvdXIgZm9yIHF1aWV0IHRpbWUuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBzdGFydE1pbnV0ZSBmb3IgcXVpZXQgdGltZS5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGVuZEhvdXIgZm9yIHF1aWV0IHRpbWUuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBlbmRNaW51dGUgZm9yIHF1aWV0IHRpbWUuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtzdWNjZXNzXSBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgc2V0UXVpZXRUaW1lKHN0YXJ0SG91cjogbnVtYmVyLCBzdGFydE1pbnV0ZTogbnVtYmVyLCBlbmRIb3VyOiBudW1iZXIsIGVuZE1pbnV0ZTogbnVtYmVyKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogRW5hYmxlcyBvciBkaXNhYmxlcyBhbmFseXRpY3MuXG4gICAqXG4gICAqIERpc2FibGluZyBhbmFseXRpY3Mgd2lsbCBkZWxldGUgYW55IGxvY2FsbHkgc3RvcmVkIGV2ZW50c1xuICAgKiBhbmQgcHJldmVudCBhbnkgZXZlbnRzIGZyb20gdXBsb2FkaW5nLiBGZWF0dXJlcyB0aGF0IGRlcGVuZCBvbiBhbmFseXRpY3MgYmVpbmdcbiAgICogZW5hYmxlZCBtYXkgbm90IHdvcmsgcHJvcGVybHkgaWYgaXQncyBkaXNhYmxlZCAocmVwb3J0cywgcmVnaW9uIHRyaWdnZXJzLFxuICAgKiBsb2NhdGlvbiBzZWdtZW50YXRpb24sIHB1c2ggdG8gbG9jYWwgdGltZSkuXG4gICAqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZW5hYmxlZCB0cnVlIHRvIGVuYWJsZSBhbmFseXRpY3MsIGZhbHNlIHRvIGRpc2FibGUuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtzdWNjZXNzXSBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgc2V0QW5hbHl0aWNzRW5hYmxlZChlbmFibGVkOiBib29sZWFuKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGFuYWx5dGljcyBpcyBlbmFibGVkIG9yIG5vdC5cbiAgICpcbiAgICogQHBhcmFtIHtmdW5jdGlvbihlbmFibGVkKX0gc3VjY2VzcyBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHN1Y2Nlc3MuZW5hYmxlZCBGbGFnIGluZGljYXRpbmcgaWYgYW5hbHl0aWNzIGlzIGVuYWJsZWQgb3Igbm90LlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgaXNBbmFseXRpY3NFbmFibGVkKCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIG5hbWVkIHVzZXIgSUQuXG4gICAqXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24obmFtZWRVc2VyKX0gc3VjY2VzcyBUaGUgZnVuY3Rpb24gdG8gY2FsbCBvbiBzdWNjZXNzLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3VjY2Vzcy5uYW1lZFVzZXIgVGhlIG5hbWVkIHVzZXIgSUQgYXMgYSBzdHJpbmcuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24obWVzc2FnZSl9IFtmYWlsdXJlXSBGYWlsdXJlIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmFpbHVyZS5tZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBnZXROYW1lZFVzZXIoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgbmFtZWQgdXNlciBJRC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVkVXNlciBpZGVudGlmaWVyIHN0cmluZy5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3N1Y2Nlc3NdIFN1Y2Nlc3MgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24obWVzc2FnZSl9IFtmYWlsdXJlXSBGYWlsdXJlIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmFpbHVyZS5tZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBzZXROYW1lZFVzZXIobmFtZWRVc2VyOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGFuIFVyYmFuIEFpcnNoaXAgYWN0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYWN0aW9uTmFtZSBhY3Rpb24gYXMgYSBzdHJpbmcuXG4gICAqIEBwYXJhbSB7Kn0gYWN0aW9uVmFsdWVcbiAgICogQHBhcmFtIHtmdW5jdGlvbihyZXN1bHQpfSBbc3VjY2Vzc10gVGhlIGZ1bmN0aW9uIHRvIGNhbGwgb24gc3VjY2Vzcy5cbiAgICogQHBhcmFtIHtvYmplY3R9IHN1Y2Nlc3MucmVzdWx0IFRoZSByZXN1bHQncyB2YWx1ZS5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIHJ1bkFjdGlvbihhY3Rpb25OYW1lOiBzdHJpbmcsIGFjdGlvblZhbHVlOiBhbnkpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGVkaXRvciB0byBtb2RpZnkgdGhlIG5hbWVkIHVzZXIgdGFnIGdyb3Vwcy5cbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSB9KVxuICBlZGl0TmFtZWRVc2VyVGFnR3JvdXBzKCk6IFRhZ0dyb3VwRWRpdG9yIHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBlZGl0b3IgdG8gbW9kaWZ5IHRoZSBjaGFubmVsIHRhZyBncm91cHMuXG4gICAqL1xuICBAQ29yZG92YSh7IHN5bmM6IHRydWUgfSlcbiAgZWRpdENoYW5uZWxUYWdHcm91cHMoKTogVGFnR3JvdXBFZGl0b3Ige1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGVkaXRvciB0byBtb2RpZnkgdGhlIGNoYW5uZWwgYXR0cmlidXRlcy5cbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSB9KVxuICBlZGl0Q2hhbm5lbEF0dHJpYnV0ZXMoKTogQXR0cmlidXRlc0VkaXRvciB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gZWRpdG9yIHRvIG1vZGlmeSB0aGUgbmFtZWQgdXNlciBhdHRyaWJ1dGVzLlxuICAgKi9cbiAgQENvcmRvdmEoeyBzeW5jOiB0cnVlIH0pXG4gIGVkaXROYW1lZFVzZXJBdHRyaWJ1dGVzKCk6IEF0dHJpYnV0ZXNFZGl0b3Ige1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGVkaXRvciB0byBtb2RpZnkgdGhlIGNoYW5uZWwgc3Vic2NyaXB0aW9uIGxpc3RzLlxuICAgKlxuICAgKiBAcmV0dXJucyB7Q2hhbm5lbFN1YnNjcmlwdGlvbkxpc3RFZGl0b3J9IEEgc3Vic2NyaXB0aW9uIGxpc3QgZWRpdG9yIGluc3RhbmNlLlxuICAgKiBAc2luY2UgMTMuMy4wXG4gICAqL1xuICBAQ29yZG92YSh7IHN5bmM6IHRydWUgfSlcbiAgZWRpdENoYW5uZWxTdWJzY3JpcHRpb25MaXN0cygpOiBDaGFubmVsU3Vic2NyaXB0aW9uTGlzdEVkaXRvciB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gZWRpdG9yIHRvIG1vZGlmeSB0aGUgY29udGFjdCBzdWJzY3JpcHRpb24gbGlzdHMuXG4gICAqXG4gICAqIEByZXR1cm5zIHtDb250YWN0U3Vic2NyaXB0aW9uTGlzdEVkaXRvcn0gQSBzdWJzY3JpcHRpb24gbGlzdCBlZGl0b3IgaW5zdGFuY2UuXG4gICAqIEBzaW5jZSAxMy4zLjBcbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSB9KVxuICBlZGl0Q29udGFjdFN1YnNjcmlwdGlvbkxpc3RzKCk6IENvbnRhY3RTdWJzY3JpcHRpb25MaXN0RWRpdG9yIHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgY3VycmVudCBzZXQgb2Ygc3Vic2NyaXB0aW9uIGxpc3RzIGZvciB0aGUgY3VycmVudCBjaGFubmVsLFxuICAgKiBvcHRpb25hbGx5IGFwcGx5aW5nIHBlbmRpbmcgc3Vic2NyaXB0aW9uIGxpc3QgY2hhbmdlcyB0aGF0IHdpbGwgYmUgYXBwbGllZCBkdXJpbmcgdGhlIG5leHQgY2hhbm5lbCB1cGRhdGUuXG4gICAqIEFuIGVtcHR5IHNldCBpbmRpY2F0ZXMgdGhhdCB0aGlzIGNvbnRhY3QgaXMgbm90IHN1YnNjcmliZWQgdG8gYW55IGxpc3RzLlxuICAgKlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbc3VjY2Vzc10gU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKHtcbiAgICBzdWNjZXNzSW5kZXg6IDEsXG4gICAgZXJyb3JJbmRleDogMixcbiAgfSlcbiAgZ2V0Q2hhbm5lbFN1YnNjcmlwdGlvbkxpc3RzKCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGN1cnJlbnQgc2V0IG9mIHN1YnNjcmlwdGlvbiBsaXN0cyBmb3IgdGhlIGN1cnJlbnQgY29udGFjdCxcbiAgICogb3B0aW9uYWxseSBhcHBseWluZyBwZW5kaW5nIHN1YnNjcmlwdGlvbiBsaXN0IGNoYW5nZXMgdGhhdCB3aWxsIGJlIGFwcGxpZWQgZHVyaW5nIHRoZSBuZXh0IGNvbnRhY3QgdXBkYXRlLlxuICAgKiBBbiBlbXB0eSBzZXQgaW5kaWNhdGVzIHRoYXQgdGhpcyBjb250YWN0IGlzIG5vdCBzdWJzY3JpYmVkIHRvIGFueSBsaXN0cy5cbiAgICpcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3N1Y2Nlc3NdIFN1Y2Nlc3MgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSh7XG4gICAgc3VjY2Vzc0luZGV4OiAxLFxuICAgIGVycm9ySW5kZXg6IDIsXG4gIH0pXG4gIGdldENvbnRhY3RTdWJzY3JpcHRpb25MaXN0cygpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIGFuIGFzc29jaWF0ZWQgaWRlbnRpZmllciBmb3IgdGhlIENvbm5lY3QgZGF0YSBzdHJlYW0uXG4gICAqXG4gICAqIEBwYXJhbSBrZXkgQ3VzdG9tIGtleSBmb3IgaWRlbnRpZmllci5cbiAgICogQHBhcmFtIGlkZW50aWZpZXIgVGhlIGlkZW50aWZpZXIgdmFsdWUuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtzdWNjZXNzXSBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgc2V0QXNzb2NpYXRlZElkZW50aWZpZXIoa2V5OiBzdHJpbmcsIGlkZW50aWZpZXI6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gTG9jYXRpb25cblxuICAvKipcbiAgICogRW5hYmxlcyBvciBkaXNhYmxlcyBVcmJhbiBBaXJzaGlwIGxvY2F0aW9uIHNlcnZpY2VzLlxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGVuYWJsZWQgdHJ1ZSB0byBlbmFibGUgbG9jYXRpb24sIGZhbHNlIHRvIGRpc2FibGUuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtzdWNjZXNzXSBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgc2V0TG9jYXRpb25FbmFibGVkKGVuYWJsZWQ6IGJvb2xlYW4pOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgbG9jYXRpb24gaXMgZW5hYmxlZCBvciBub3QuXG4gICAqXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24oZW5hYmxlZCl9IHN1Y2Nlc3MgU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtib29sZWFufSBzdWNjZXNzLmVuYWJsZWQgRmxhZyBpbmRpY2F0aW5nIGlmIGxvY2F0aW9uIGlzIGVuYWJsZWQgb3Igbm90LlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICogQGRlcHJlY2F0ZWQgcmVtb3ZlZCBpbiB2ZXJzaW9uIDguMFxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBpc0xvY2F0aW9uRW5hYmxlZCgpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmFibGVzIG9yIGRpc2FibGVzIGJhY2tncm91bmQgbG9jYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZW5hYmxlZCB0cnVlIHRvIGVuYWJsZSBiYWNrZ3JvdW5kIGxvY2F0aW9uLCBmYWxzZSB0byBkaXNhYmxlLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbc3VjY2Vzc10gU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqIEBkZXByZWNhdGVkIHJlbW92ZWQgaW4gdmVyc2lvbiA4LjBcbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgc2V0QmFja2dyb3VuZExvY2F0aW9uRW5hYmxlZChlbmFibGVkOiBib29sZWFuKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGJhY2tncm91bmQgbG9jYXRpb24gaXMgZW5hYmxlZCBvciBub3QuXG4gICAqXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24oZW5hYmxlZCl9IHN1Y2Nlc3MgU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtib29sZWFufSBzdWNjZXNzLmVuYWJsZWQgRmxhZyBpbmRpY2F0aW5nIGlmIGJhY2tncm91bmQgbG9jYXRpb24gdXBkYXRlcyBhcmUgZW5hYmxlZCBvciBub3QuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24obWVzc2FnZSl9IFtmYWlsdXJlXSBGYWlsdXJlIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmFpbHVyZS5tZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICAgKiBAZGVwcmVjYXRlZCByZW1vdmVkIGluIHZlcnNpb24gOC4wXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGlzQmFja2dyb3VuZExvY2F0aW9uRW5hYmxlZCgpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNwbGF5cyB0aGUgbWVzc2FnZSBjZW50ZXIuXG4gICAqXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtzdWNjZXNzXSBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgZGlzcGxheU1lc3NhZ2VDZW50ZXIoKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogRGlzbWlzcyB0aGUgbWVzc2FnZSBjZW50ZXIuXG4gICAqXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtzdWNjZXNzXSBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgZGlzbWlzc01lc3NhZ2VDZW50ZXIoKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogRGlzbWlzcyB0aGUgaW5ib3ggbWVzc2FnZS5cbiAgICpcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3N1Y2Nlc3NdIFN1Y2Nlc3MgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24obWVzc2FnZSl9IFtmYWlsdXJlXSBGYWlsdXJlIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmFpbHVyZS5tZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBkaXNtaXNzSW5ib3hNZXNzYWdlKCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIERpc21pc3MgdGhlIGluYm94IG1lc3NhZ2UgaW4gdGhlIG92ZXJsYXkuXG4gICAqXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtzdWNjZXNzXSBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICogQGRlcHJlY2F0ZWQgcmVtb3ZlZCBpbiB2ZXJzaW9uIDEwLjBcbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgZGlzbWlzc092ZXJsYXlJbmJveE1lc3NhZ2UoKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgYXJyYXkgb2YgaW5ib3ggbWVzc2FnZXMuIEVhY2ggbWVzc2FnZSB3aWxsIGhhdmUgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuICAgKiBcImlkXCI6IHN0cmluZyAtIFRoZSBtZXNzYWdlcyBJRC4gTmVlZGVkIHRvIGRpc3BsYXksIG1hcmsgYXMgcmVhZCwgb3IgZGVsZXRlIHRoZSBtZXNzYWdlLlxuICAgKiBcInRpdGxlXCI6IHN0cmluZyAtIFRoZSBtZXNzYWdlIHRpdGxlLlxuICAgKiBcInNlbnREYXRlXCI6IG51bWJlciAtIFRoZSBtZXNzYWdlIHNlbnQgZGF0ZSBpbiBtaWxsaXNlY29uZHMuXG4gICAqIFwibGlzdEljb25VcmxcIjogc3RyaW5nLCBvcHRpb25hbCAtIFRoZSBpY29uIHVybCBmb3IgdGhlIG1lc3NhZ2UuXG4gICAqIFwiaXNSZWFkXCI6IGJvb2xlYW4gLSBUaGUgdW5yZWFkL3JlYWQgc3RhdHVzIG9mIHRoZSBtZXNzYWdlLlxuICAgKiBcImV4dHJhc1wiOiBvYmplY3QgLSBTdHJpbmcgdG8gU3RyaW5nIG1hcCBvZiBhbnkgbWVzc2FnZSBleHRyYXMuXG4gICAqXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24obWVzc2FnZXMpfSBzdWNjZXNzIFRoZSBmdW5jdGlvbiB0byBjYWxsIG9uIHN1Y2Nlc3MuXG4gICAqIEBwYXJhbSB7QXJyYXl9IHN1Y2Nlc3MubWVzc2FnZXMgVGhlIGFycmF5IG9mIGluYm94IG1lc3NhZ2VzLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgZ2V0SW5ib3hNZXNzYWdlcygpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXJrcyBhbiBpbmJveCBtZXNzYWdlIHJlYWQuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlSWQgVGhlIElEIG9mIHRoZSBtZXNzYWdlIHRvIG1hcmsgYXMgcmVhZC5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3N1Y2Nlc3NdIFN1Y2Nlc3MgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24obWVzc2FnZSl9IFtmYWlsdXJlXSBGYWlsdXJlIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmFpbHVyZS5tZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBtYXJrSW5ib3hNZXNzYWdlUmVhZChtZXNzYWdlSWQ6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZXMgYW4gaW5ib3ggbWVzc2FnZS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2VJZCBUaGUgSUQgb2YgdGhlIG1lc3NhZ2UgdG8gZGVsZXRlLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbc3VjY2Vzc10gU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGRlbGV0ZUluYm94TWVzc2FnZShtZXNzYWdlSWQ6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIERpc3BsYXlzIHRoZSBpbmJveCBtZXNzYWdlIHVzaW5nIGEgZnVsbCBzY3JlZW4gdmlldy5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2VJZCBUaGUgSUQgb2YgdGhlIG1lc3NhZ2UgdG8gZGlzcGxheS5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3N1Y2Nlc3NdIFN1Y2Nlc3MgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24obWVzc2FnZSl9IFtmYWlsdXJlXSBGYWlsdXJlIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmFpbHVyZS5tZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBkaXNwbGF5SW5ib3hNZXNzYWdlKG1lc3NhZ2VJZDogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogRm9yY2VzIHRoZSBpbmJveCB0byByZWZyZXNoLiBUaGlzIGlzIG5vcm1hbGx5IG5vdCBuZWVkZWQgYXMgdGhlIGluYm94XG4gICAqIHdpbGwgYXV0b21hdGljYWxseSByZWZyZXNoIG9uIGZvcmVncm91bmQgb3Igd2hlbiBhIHB1c2ggYXJyaXZlcyB0aGF0c1xuICAgKiBhc3NvY2lhdGVkIHdpdGggYSBtZXNzYWdlLCBidXQgaXQgY2FuIGJlIHVzZWZ1bCB3aGVuIHByb3ZpZGluZyBhIHJlZnJlc2hcbiAgICogYnV0dG9uIGZvciB0aGUgbWVzc2FnZSBsaXN0aW5nLlxuICAgKlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbc3VjY2Vzc10gU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIHJlZnJlc2hJbmJveCgpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNwbGF5cyB0aGUgaW5ib3ggbWVzc2FnZSB1c2luZyBhbiBvdmVybGF5IGRpc3BsYXkuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlSWQgVGhlIElEIG9mIHRoZSBtZXNzYWdlIHRvIGRpc3BsYXkuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtzdWNjZXNzXSBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICogQGRlcHJlY2F0ZWQgcmVtb3ZlZCBpbiB2ZXJzaW9uIDEwLjBcbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgb3ZlcmxheUluYm94TWVzc2FnZShtZXNzYWdlSWQ6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFycyBhIG5vdGlmaWNhdGlvbiBieSBpZGVudGlmaWVyLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gaWRlbnRpZmllciBUaGUgbm90aWZpY2F0aW9uIGlkZW50aWZpZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtzdWNjZXNzXSBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgY2xlYXJOb3RpZmljYXRpb24oaWRlbnRpZmllcjogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXJzIGFsbCBub3RpZmljYXRpb25zIHBvc3RlZCBieSB0aGUgYXBwbGljYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtzdWNjZXNzXSBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgY2xlYXJOb3RpZmljYXRpb25zKCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgY3VycmVudGx5IGFjdGl2ZSBub3RpZmljYXRpb25zLlxuICAgKlxuICAgKiBOb3RlOiBPbiBBbmRyb2lkIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyBvbmx5IHN1cHBvcnRlZCBvbiBBbmRyb2lkIE0gb3IgaGlnaGVyLlxuICAgKlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2VzKX0gW3N1Y2Nlc3NdIFN1Y2Nlc3MgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24obWVzc2FnZSl9IFtmYWlsdXJlXSBGYWlsdXJlIGNhbGxiYWNrLlxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBnZXRBY3RpdmVOb3RpZmljYXRpb25zKCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gaU9TIG9ubHlcblxuICAvKipcbiAgICogRW5hYmxlcyBvciBkaXNhYmxlcyBhdXRvIGJhZGdlLiBEZWZhdWx0cyB0byBgTk9gLlxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGVuYWJsZWQgdHJ1ZSB0byBlbmFibGUgYXV0byBiYWRnZSwgZmFsc2UgdG8gZGlzYWJsZS5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3N1Y2Nlc3NdIFN1Y2Nlc3MgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24obWVzc2FnZSl9IFtmYWlsdXJlXSBGYWlsdXJlIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmFpbHVyZS5tZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBzZXRBdXRvYmFkZ2VFbmFibGVkKGVuYWJsZWQ6IGJvb2xlYW4pOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBiYWRnZSBudW1iZXIuXG4gICAqXG4gICAqIEBwYXJhbSBjb3VudCBudW1iZXIgc3BlY2lmaWVkIGJhZGdlIHRvIHNldC5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3N1Y2Nlc3NdIFN1Y2Nlc3MgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24obWVzc2FnZSl9IFtmYWlsdXJlXSBGYWlsdXJlIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmFpbHVyZS5tZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBzZXRCYWRnZU51bWJlcihjb3VudDogbnVtYmVyKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgY3VycmVudCBiYWRnZSBudW1iZXIuXG4gICAqXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24oYmFkZ2VOdW1iZXIpfSBzdWNjZXNzIFRoZSBmdW5jdGlvbiB0byBjYWxsIG9uIHN1Y2Nlc3MuXG4gICAqIEBwYXJhbSB7aW50fSBzdWNjZXNzLmJhZGdlTnVtYmVyIFRoZSBjdXJyZW50IGFwcGxpY2F0aW9uIGJhZGdlIG51bWJlci5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGdldEJhZGdlTnVtYmVyKCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFycyB0aGUgYmFkZ2UuXG4gICAqXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtzdWNjZXNzXSBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgcmVzZXRCYWRnZSgpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBpT1Mgbm90aWZpY2F0aW9uIHR5cGVzLiBTcGVjaWZ5IHRoZSBjb21iaW5hdGlvbiBvZlxuICAgKiBiYWRnZXMsIHNvdW5kIGFuZCBhbGVydHMgdGhhdCBhcmUgZGVzaXJlZC5cbiAgICpcbiAgICogQHBhcmFtIHR5cGVzIHNwZWNpZmllZCBub3RpZmljYXRpb24gdHlwZXMuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtzdWNjZXNzXSBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgc2V0Tm90aWZpY2F0aW9uVHlwZXModHlwZXM6IE5vdGlmaWNhdGlvblR5cGUpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBpT1MgcHJlc2VudGF0aW9uIG9wdGlvbnMuIFNwZWNpZnkgdGhlIGNvbWJpbmF0aW9uIG9mXG4gICAqIGJhZGdlcywgc291bmQgYW5kIGFsZXJ0cyB0aGF0IGFyZSBkZXNpcmVkLlxuICAgKlxuICAgKiBAcGFyYW0gb3B0aW9ucyB0eXBlcyBzcGVjaWZpZWQgcHJlc2VudGF0aW9uIG9wdGlvbnMuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtzdWNjZXNzXSBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgc2V0UHJlc2VudGF0aW9uT3B0aW9ucyhvcHRpb25zOiBQcmVzZW50YXRpb25PcHRpb25zKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBBbmRyb2lkIG9ubHlcblxuICAvKipcbiAgICogQ2hlY2tzIGlmIG5vdGlmaWNhdGlvbiBzb3VuZCBpcyBlbmFibGVkIG9yIG5vdC5cbiAgICpcbiAgICogQHBhcmFtIHtmdW5jdGlvbihlbmFibGVkKX0gc3VjY2VzcyBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHN1Y2Nlc3MuZW5hYmxlZCBGbGFnIGluZGljYXRpbmcgaWYgc291bmQgaXMgZW5hYmxlZCBvciBub3QuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24obWVzc2FnZSl9IFtmYWlsdXJlXSBGYWlsdXJlIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmFpbHVyZS5tZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBpc1NvdW5kRW5hYmxlZCgpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmFibGVzIG9yIGRpc2FibGVzIG5vdGlmaWNhdGlvbiBzb3VuZC5cbiAgICpcbiAgICogQHBhcmFtIHtib29sZWFufSBlbmFibGVkIHRydWUgdG8gZW5hYmxlIHNvdW5kLCBmYWxzZSB0byBkaXNhYmxlLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbc3VjY2Vzc10gU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIHNldFNvdW5kRW5hYmxlZChlbmFibGVkOiBib29sZWFuKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIG5vdGlmaWNhdGlvbiB2aWJyYXRpb24gaXMgZW5hYmxlZCBvciBub3QuXG4gICAqXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24oZW5hYmxlZCl9IHN1Y2Nlc3MgU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtib29sZWFufSBzdWNjZXNzLmVuYWJsZWQgRmxhZyBpbmRpY2F0aW5nIGlmIHZpYnJhdGlvbiBpcyBlbmFibGVkIG9yIG5vdC5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGlzVmlicmF0ZUVuYWJsZWQoKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogRW5hYmxlcyBvciBkaXNhYmxlcyBub3RpZmljYXRpb24gdmlicmF0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGVuYWJsZWQgdHJ1ZSB0byBlbmFibGUgdmlicmF0aW9uLCBmYWxzZSB0byBkaXNhYmxlLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbc3VjY2Vzc10gU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIHNldFZpYnJhdGVFbmFibGVkKGVuYWJsZWQ6IGJvb2xlYW4pOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgY3VzdG9tIGV2ZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gZXZlbnQgVGhlIGN1c3RvbSBldmVudCBvYmplY3QuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBldmVudC5uYW1lIFRoZSBldmVudCdzIG5hbWUuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbZXZlbnQudmFsdWVdIFRoZSBldmVudCdzIHZhbHVlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2V2ZW50LnRyYW5zYWN0aW9uSWRdIFRoZSBldmVudCdzIHRyYW5zYWN0aW9uIElELlxuICAgKiBAcGFyYW0ge29iamVjdH0gW2V2ZW50LnByb3BlcnRpZXNdIFRoZSBldmVudCdzIHByb3BlcnRpZXMuIE9ubHkgbnVtYmVycywgYm9vbGVhbnMsIHN0cmluZ3MsIGFuZCBhcnJheSBvZiBzdHJpbmdzIGFyZSBzdXBwb3J0ZWQuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtzdWNjZXNzXSBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgYWRkQ3VzdG9tRXZlbnQoZXZlbnQ6IG9iamVjdCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYXRlcyBzY3JlZW4gdHJhY2tpbmcgZm9yIGEgc3BlY2lmaWMgYXBwIHNjcmVlbiwgbXVzdCBiZSBjYWxsZWQgb25jZSBwZXIgdHJhY2tlZCBzY3JlZW4uXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzY3JlZW4gVGhlIHNjcmVlbidzIHN0cmluZyBpZGVudGlmaWVyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbc3VjY2Vzc10gU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqIEBzaW5jZSAxMS4wLjBcbiAgICovXG4gIEBDb3Jkb3ZhKHtcbiAgICBzdWNjZXNzSW5kZXg6IDEsXG4gICAgZXJyb3JJbmRleDogMixcbiAgfSlcbiAgdHJhY2tTY3JlZW4oc2NyZWVuOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmFibGVzIGZlYXR1cmVzLCBhZGRpbmcgdGhlbSB0byB0aGUgc2V0IG9mIGN1cnJlbnRseSBlbmFibGVkIGZlYXR1cmVzLlxuICAgKlxuICAgKiBAcGFyYW0ge0FycmF5PHN0cmluZz59IGZlYXR1cmVzIFRoZSBmZWF0dXJlcyB0byBlbmFibGUuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtzdWNjZXNzXSBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICogQHNpbmNlIDEzLjAuMFxuICAgKi9cbiAgQENvcmRvdmEoe1xuICAgIHN1Y2Nlc3NJbmRleDogMSxcbiAgICBlcnJvckluZGV4OiAyLFxuICB9KVxuICBlbmFibGVGZWF0dXJlKGZlYXR1cmVzOiBzdHJpbmdbXSk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIERpc2FibGVzIGZlYXR1cmVzLCByZW1vdmluZyB0aGVtIGZyb20gdGhlIHNldCBvZiBjdXJyZW50bHkgZW5hYmxlZCBmZWF0dXJlcy5cbiAgICpcbiAgICogQHBhcmFtIHtBcnJheTxzdHJpbmc+fSBmZWF0dXJlcyBUaGUgZmVhdHVyZXMgdG8gZGlzYWJsZS5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3N1Y2Nlc3NdIFN1Y2Nlc3MgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24obWVzc2FnZSl9IFtmYWlsdXJlXSBGYWlsdXJlIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmFpbHVyZS5tZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICAgKiBAc2luY2UgMTMuMC4wXG4gICAqL1xuICBAQ29yZG92YSh7XG4gICAgc3VjY2Vzc0luZGV4OiAxLFxuICAgIGVycm9ySW5kZXg6IDIsXG4gIH0pXG4gIGRpc2FibGVGZWF0dXJlKGZlYXR1cmVzOiBzdHJpbmdbXSk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGN1cnJlbnQgZW5hYmxlZCBmZWF0dXJlcywgcmVwbGFjaW5nIGFueSBjdXJyZW50bHkgZW5hYmxlZCBmZWF0dXJlcyB3aXRoIHRoZSBnaXZlbiBzZXQuXG4gICAqXG4gICAqIEBwYXJhbSB7QXJyYXk8c3RyaW5nPn0gZmVhdHVyZXMgVGhlIGZlYXR1cmVzIHRvIHNldCBhcyBlbmFibGVkLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbc3VjY2Vzc10gU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqIEBzaW5jZSAxMy4wLjBcbiAgICovXG4gIHNldEVuYWJsZWRGZWF0dXJlcyhmZWF0dXJlczogc3RyaW5nW10pOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBjdXJyZW50IGVuYWJsZWQgZmVhdHVyZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtzdWNjZXNzXSBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICogQHNpbmNlIDEzLjAuMFxuICAgKi9cbiAgQENvcmRvdmEoe1xuICAgIHN1Y2Nlc3NJbmRleDogMCxcbiAgICBlcnJvckluZGV4OiAxLFxuICB9KVxuICBnZXRFbmFibGVkRmVhdHVyZXMoKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGFsbCBvZiB0aGUgZ2l2ZW4gZmVhdHVyZXMgYXJlIGVuYWJsZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7QXJyYXk8c3RyaW5nPn0gZmVhdHVyZXMgVGhlIGZlYXR1cmVzIHRvIGNoZWNrLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbc3VjY2Vzc10gU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqIEBzaW5jZSAxMy4wLjBcbiAgICovXG4gIEBDb3Jkb3ZhKHtcbiAgICBzdWNjZXNzSW5kZXg6IDEsXG4gICAgZXJyb3JJbmRleDogMixcbiAgfSlcbiAgaXNGZWF0dXJlRW5hYmxlZChmZWF0dXJlczogc3RyaW5nW10pOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBjb25maWd1cmF0aW9uIG9mIHRoZSBQcmVmZXJlbmNlIENlbnRlciB3aXRoIHRoZSBnaXZlbiBJRCB0cm91Z2ggYSBjYWxsYmFjayBtZXRob2QuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwcmVmZXJlbmNlQ2VudGVySWQgVGhlIHByZWZlcmVuY2UgY2VudGVyIElELlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbc3VjY2Vzc10gU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqIEBzaW5jZSAxMy4zLjBcbiAgICovXG4gIEBDb3Jkb3ZhKHtcbiAgICBzdWNjZXNzSW5kZXg6IDEsXG4gICAgZXJyb3JJbmRleDogMixcbiAgfSlcbiAgZ2V0UHJlZmVyZW5jZUNlbnRlckNvbmZpZyhwcmVmZXJlbmNlQ2VudGVySWQ6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIE9wZW5zIHRoZSBQcmVmZXJlbmNlIENlbnRlciB3aXRoIHRoZSBnaXZlbiBwcmVmZXJlbmNlQ2VudGVySWQuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwcmVuZmVyZW5jZUNlbnRlcklkIFRoZSBwcmVmZXJlbmNlIGNlbnRlciBJRC5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3N1Y2Nlc3NdIFN1Y2Nlc3MgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24obWVzc2FnZSl9IFtmYWlsdXJlXSBGYWlsdXJlIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmFpbHVyZS5tZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICAgKiBAc2luY2UgMTMuMC4wXG4gICAqL1xuICBAQ29yZG92YSh7XG4gICAgc3VjY2Vzc0luZGV4OiAxLFxuICAgIGVycm9ySW5kZXg6IDIsXG4gIH0pXG4gIG9wZW5QcmVmZXJlbmNlQ2VudGVyKHByZW5mZXJlbmNlQ2VudGVySWQ6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG59XG4iXX0=
package/ngx/bundle.js CHANGED
@@ -2,9 +2,8 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var tslib = require('tslib');
6
- var core$1 = require('@angular/core');
7
- var core = require('@awesome-cordova-plugins/core');
5
+ var core = require('@angular/core');
6
+ var core$1 = require('@awesome-cordova-plugins/core');
8
7
  require('rxjs');
9
8
 
10
9
  /**
@@ -33,82 +32,78 @@ exports.PresentationOptions = void 0;
33
32
  PresentationOptions[PresentationOptions["sound"] = 2] = "sound";
34
33
  PresentationOptions[PresentationOptions["alert"] = 4] = "alert";
35
34
  })(exports.PresentationOptions || (exports.PresentationOptions = {}));
36
- var UrbanAirShip = /** @class */ (function (_super) {
37
- tslib.__extends(UrbanAirShip, _super);
38
- function UrbanAirShip() {
39
- return _super !== null && _super.apply(this, arguments) || this;
40
- }
41
- UrbanAirShip.prototype.onDeepLink = function () { return core.cordova(this, "onDeepLink", { "eventObservable": true, "event": "urbanairship.deep_link", "element": "document" }, arguments); };
42
- UrbanAirShip.prototype.onRegistration = function () { return core.cordova(this, "onRegistration", { "eventObservable": true, "event": "urbanairship.registration", "element": "document" }, arguments); };
43
- UrbanAirShip.prototype.onInboxUpdated = function () { return core.cordova(this, "onInboxUpdated", { "eventObservable": true, "event": "urbanairship.inbox_updated", "element": "document" }, arguments); };
44
- UrbanAirShip.prototype.onShowInbox = function () { return core.cordova(this, "onShowInbox", { "eventObservable": true, "event": "urbanairship.show_inbox", "element": "document" }, arguments); };
45
- UrbanAirShip.prototype.onPushReceived = function () { return core.cordova(this, "onPushReceived", { "eventObservable": true, "event": "urbanairship.push", "element": "document" }, arguments); };
46
- UrbanAirShip.prototype.onNotificationOpened = function () { return core.cordova(this, "onNotificationOpened", { "eventObservable": true, "event": "urbanairship.notification_opened", "element": "document" }, arguments); };
47
- UrbanAirShip.prototype.onNotificationOptInStatus = function () { return core.cordova(this, "onNotificationOptInStatus", { "eventObservable": true, "event": "urbanairship.notification_opt_in_status", "element": "document" }, arguments); };
48
- UrbanAirShip.prototype.reattach = function () { return core.cordova(this, "reattach", { "sync": true }, arguments); };
49
- UrbanAirShip.prototype.takeOff = function (config) { return core.cordova(this, "takeOff", {}, arguments); };
50
- UrbanAirShip.prototype.setAndroidNotificationConfig = function (config) { return core.cordova(this, "setAndroidNotificationConfig", {}, arguments); };
51
- UrbanAirShip.prototype.setAutoLaunchDefaultMessageCenter = function (enabled) { return core.cordova(this, "setAutoLaunchDefaultMessageCenter", {}, arguments); };
52
- UrbanAirShip.prototype.setUserNotificationsEnabled = function (enabled) { return core.cordova(this, "setUserNotificationsEnabled", {}, arguments); };
53
- UrbanAirShip.prototype.isUserNotificationsEnabled = function () { return core.cordova(this, "isUserNotificationsEnabled", {}, arguments); };
54
- UrbanAirShip.prototype.isAppNotificationsEnabled = function () { return core.cordova(this, "isAppNotificationsEnabled", {}, arguments); };
55
- UrbanAirShip.prototype.getChannelID = function () { return core.cordova(this, "getChannelID", {}, arguments); };
56
- UrbanAirShip.prototype.getLaunchNotification = function (clear) { return core.cordova(this, "getLaunchNotification", {}, arguments); };
57
- UrbanAirShip.prototype.getDeepLink = function (clear) { return core.cordova(this, "getDeepLink", {}, arguments); };
58
- UrbanAirShip.prototype.getTags = function () { return core.cordova(this, "getTags", {}, arguments); };
59
- UrbanAirShip.prototype.setTags = function (tags) { return core.cordova(this, "setTags", {}, arguments); };
60
- UrbanAirShip.prototype.getAlias = function () { return core.cordova(this, "getAlias", {}, arguments); };
61
- UrbanAirShip.prototype.setAlias = function (alias) { return core.cordova(this, "setAlias", {}, arguments); };
62
- UrbanAirShip.prototype.isQuietTimeEnabled = function () { return core.cordova(this, "isQuietTimeEnabled", {}, arguments); };
63
- UrbanAirShip.prototype.setQuietTimeEnabled = function (enabled) { return core.cordova(this, "setQuietTimeEnabled", {}, arguments); };
64
- UrbanAirShip.prototype.isInQuietTime = function () { return core.cordova(this, "isInQuietTime", {}, arguments); };
65
- UrbanAirShip.prototype.getQuietTime = function () { return core.cordova(this, "getQuietTime", {}, arguments); };
66
- UrbanAirShip.prototype.setQuietTime = function (startHour, startMinute, endHour, endMinute) { return core.cordova(this, "setQuietTime", {}, arguments); };
67
- UrbanAirShip.prototype.setAnalyticsEnabled = function (enabled) { return core.cordova(this, "setAnalyticsEnabled", {}, arguments); };
68
- UrbanAirShip.prototype.isAnalyticsEnabled = function () { return core.cordova(this, "isAnalyticsEnabled", {}, arguments); };
69
- UrbanAirShip.prototype.getNamedUser = function () { return core.cordova(this, "getNamedUser", {}, arguments); };
70
- UrbanAirShip.prototype.setNamedUser = function (namedUser) { return core.cordova(this, "setNamedUser", {}, arguments); };
71
- UrbanAirShip.prototype.runAction = function (actionName, actionValue) { return core.cordova(this, "runAction", {}, arguments); };
72
- UrbanAirShip.prototype.editNamedUserTagGroups = function () { return core.cordova(this, "editNamedUserTagGroups", { "sync": true }, arguments); };
73
- UrbanAirShip.prototype.editChannelTagGroups = function () { return core.cordova(this, "editChannelTagGroups", { "sync": true }, arguments); };
74
- UrbanAirShip.prototype.editChannelAttributes = function () { return core.cordova(this, "editChannelAttributes", { "sync": true }, arguments); };
75
- UrbanAirShip.prototype.editNamedUserAttributes = function () { return core.cordova(this, "editNamedUserAttributes", { "sync": true }, arguments); };
76
- UrbanAirShip.prototype.editChannelSubscriptionLists = function () { return core.cordova(this, "editChannelSubscriptionLists", { "sync": true }, arguments); };
77
- UrbanAirShip.prototype.editContactSubscriptionLists = function () { return core.cordova(this, "editContactSubscriptionLists", { "sync": true }, arguments); };
78
- UrbanAirShip.prototype.getChannelSubscriptionLists = function () { return core.cordova(this, "getChannelSubscriptionLists", { "successIndex": 1, "errorIndex": 2 }, arguments); };
79
- UrbanAirShip.prototype.getContactSubscriptionLists = function () { return core.cordova(this, "getContactSubscriptionLists", { "successIndex": 1, "errorIndex": 2 }, arguments); };
80
- UrbanAirShip.prototype.setAssociatedIdentifier = function (key, identifier) { return core.cordova(this, "setAssociatedIdentifier", {}, arguments); };
81
- UrbanAirShip.prototype.setLocationEnabled = function (enabled) { return core.cordova(this, "setLocationEnabled", {}, arguments); };
82
- UrbanAirShip.prototype.isLocationEnabled = function () { return core.cordova(this, "isLocationEnabled", {}, arguments); };
83
- UrbanAirShip.prototype.setBackgroundLocationEnabled = function (enabled) { return core.cordova(this, "setBackgroundLocationEnabled", {}, arguments); };
84
- UrbanAirShip.prototype.isBackgroundLocationEnabled = function () { return core.cordova(this, "isBackgroundLocationEnabled", {}, arguments); };
85
- UrbanAirShip.prototype.displayMessageCenter = function () { return core.cordova(this, "displayMessageCenter", {}, arguments); };
86
- UrbanAirShip.prototype.dismissMessageCenter = function () { return core.cordova(this, "dismissMessageCenter", {}, arguments); };
87
- UrbanAirShip.prototype.dismissInboxMessage = function () { return core.cordova(this, "dismissInboxMessage", {}, arguments); };
88
- UrbanAirShip.prototype.dismissOverlayInboxMessage = function () { return core.cordova(this, "dismissOverlayInboxMessage", {}, arguments); };
89
- UrbanAirShip.prototype.getInboxMessages = function () { return core.cordova(this, "getInboxMessages", {}, arguments); };
90
- UrbanAirShip.prototype.markInboxMessageRead = function (messageId) { return core.cordova(this, "markInboxMessageRead", {}, arguments); };
91
- UrbanAirShip.prototype.deleteInboxMessage = function (messageId) { return core.cordova(this, "deleteInboxMessage", {}, arguments); };
92
- UrbanAirShip.prototype.displayInboxMessage = function (messageId) { return core.cordova(this, "displayInboxMessage", {}, arguments); };
93
- UrbanAirShip.prototype.refreshInbox = function () { return core.cordova(this, "refreshInbox", {}, arguments); };
94
- UrbanAirShip.prototype.overlayInboxMessage = function (messageId) { return core.cordova(this, "overlayInboxMessage", {}, arguments); };
95
- UrbanAirShip.prototype.clearNotification = function (identifier) { return core.cordova(this, "clearNotification", {}, arguments); };
96
- UrbanAirShip.prototype.clearNotifications = function () { return core.cordova(this, "clearNotifications", {}, arguments); };
97
- UrbanAirShip.prototype.getActiveNotifications = function () { return core.cordova(this, "getActiveNotifications", {}, arguments); };
98
- UrbanAirShip.prototype.setAutobadgeEnabled = function (enabled) { return core.cordova(this, "setAutobadgeEnabled", {}, arguments); };
99
- UrbanAirShip.prototype.setBadgeNumber = function (count) { return core.cordova(this, "setBadgeNumber", {}, arguments); };
100
- UrbanAirShip.prototype.getBadgeNumber = function () { return core.cordova(this, "getBadgeNumber", {}, arguments); };
101
- UrbanAirShip.prototype.resetBadge = function () { return core.cordova(this, "resetBadge", {}, arguments); };
102
- UrbanAirShip.prototype.setNotificationTypes = function (types) { return core.cordova(this, "setNotificationTypes", {}, arguments); };
103
- UrbanAirShip.prototype.setPresentationOptions = function (options) { return core.cordova(this, "setPresentationOptions", {}, arguments); };
104
- UrbanAirShip.prototype.isSoundEnabled = function () { return core.cordova(this, "isSoundEnabled", {}, arguments); };
105
- UrbanAirShip.prototype.setSoundEnabled = function (enabled) { return core.cordova(this, "setSoundEnabled", {}, arguments); };
106
- UrbanAirShip.prototype.isVibrateEnabled = function () { return core.cordova(this, "isVibrateEnabled", {}, arguments); };
107
- UrbanAirShip.prototype.setVibrateEnabled = function (enabled) { return core.cordova(this, "setVibrateEnabled", {}, arguments); };
108
- UrbanAirShip.prototype.addCustomEvent = function (event) { return core.cordova(this, "addCustomEvent", {}, arguments); };
109
- UrbanAirShip.prototype.trackScreen = function (screen) { return core.cordova(this, "trackScreen", { "successIndex": 1, "errorIndex": 2 }, arguments); };
110
- UrbanAirShip.prototype.enableFeature = function (features) { return core.cordova(this, "enableFeature", { "successIndex": 1, "errorIndex": 2 }, arguments); };
111
- UrbanAirShip.prototype.disableFeature = function (features) { return core.cordova(this, "disableFeature", { "successIndex": 1, "errorIndex": 2 }, arguments); };
35
+ class UrbanAirShip extends core$1.AwesomeCordovaNativePlugin {
36
+ onDeepLink() { return core$1.cordova(this, "onDeepLink", { "eventObservable": true, "event": "urbanairship.deep_link", "element": "document" }, arguments); }
37
+ onRegistration() { return core$1.cordova(this, "onRegistration", { "eventObservable": true, "event": "urbanairship.registration", "element": "document" }, arguments); }
38
+ onInboxUpdated() { return core$1.cordova(this, "onInboxUpdated", { "eventObservable": true, "event": "urbanairship.inbox_updated", "element": "document" }, arguments); }
39
+ onShowInbox() { return core$1.cordova(this, "onShowInbox", { "eventObservable": true, "event": "urbanairship.show_inbox", "element": "document" }, arguments); }
40
+ onPushReceived() { return core$1.cordova(this, "onPushReceived", { "eventObservable": true, "event": "urbanairship.push", "element": "document" }, arguments); }
41
+ onNotificationOpened() { return core$1.cordova(this, "onNotificationOpened", { "eventObservable": true, "event": "urbanairship.notification_opened", "element": "document" }, arguments); }
42
+ onNotificationOptInStatus() { return core$1.cordova(this, "onNotificationOptInStatus", { "eventObservable": true, "event": "urbanairship.notification_opt_in_status", "element": "document" }, arguments); }
43
+ reattach() { return core$1.cordova(this, "reattach", { "sync": true }, arguments); }
44
+ takeOff(config) { return core$1.cordova(this, "takeOff", {}, arguments); }
45
+ setAndroidNotificationConfig(config) { return core$1.cordova(this, "setAndroidNotificationConfig", {}, arguments); }
46
+ setAutoLaunchDefaultMessageCenter(enabled) { return core$1.cordova(this, "setAutoLaunchDefaultMessageCenter", {}, arguments); }
47
+ setUserNotificationsEnabled(enabled) { return core$1.cordova(this, "setUserNotificationsEnabled", {}, arguments); }
48
+ isUserNotificationsEnabled() { return core$1.cordova(this, "isUserNotificationsEnabled", {}, arguments); }
49
+ isAppNotificationsEnabled() { return core$1.cordova(this, "isAppNotificationsEnabled", {}, arguments); }
50
+ getChannelID() { return core$1.cordova(this, "getChannelID", {}, arguments); }
51
+ getLaunchNotification(clear) { return core$1.cordova(this, "getLaunchNotification", {}, arguments); }
52
+ getDeepLink(clear) { return core$1.cordova(this, "getDeepLink", {}, arguments); }
53
+ getTags() { return core$1.cordova(this, "getTags", {}, arguments); }
54
+ setTags(tags) { return core$1.cordova(this, "setTags", {}, arguments); }
55
+ getAlias() { return core$1.cordova(this, "getAlias", {}, arguments); }
56
+ setAlias(alias) { return core$1.cordova(this, "setAlias", {}, arguments); }
57
+ isQuietTimeEnabled() { return core$1.cordova(this, "isQuietTimeEnabled", {}, arguments); }
58
+ setQuietTimeEnabled(enabled) { return core$1.cordova(this, "setQuietTimeEnabled", {}, arguments); }
59
+ isInQuietTime() { return core$1.cordova(this, "isInQuietTime", {}, arguments); }
60
+ getQuietTime() { return core$1.cordova(this, "getQuietTime", {}, arguments); }
61
+ setQuietTime(startHour, startMinute, endHour, endMinute) { return core$1.cordova(this, "setQuietTime", {}, arguments); }
62
+ setAnalyticsEnabled(enabled) { return core$1.cordova(this, "setAnalyticsEnabled", {}, arguments); }
63
+ isAnalyticsEnabled() { return core$1.cordova(this, "isAnalyticsEnabled", {}, arguments); }
64
+ getNamedUser() { return core$1.cordova(this, "getNamedUser", {}, arguments); }
65
+ setNamedUser(namedUser) { return core$1.cordova(this, "setNamedUser", {}, arguments); }
66
+ runAction(actionName, actionValue) { return core$1.cordova(this, "runAction", {}, arguments); }
67
+ editNamedUserTagGroups() { return core$1.cordova(this, "editNamedUserTagGroups", { "sync": true }, arguments); }
68
+ editChannelTagGroups() { return core$1.cordova(this, "editChannelTagGroups", { "sync": true }, arguments); }
69
+ editChannelAttributes() { return core$1.cordova(this, "editChannelAttributes", { "sync": true }, arguments); }
70
+ editNamedUserAttributes() { return core$1.cordova(this, "editNamedUserAttributes", { "sync": true }, arguments); }
71
+ editChannelSubscriptionLists() { return core$1.cordova(this, "editChannelSubscriptionLists", { "sync": true }, arguments); }
72
+ editContactSubscriptionLists() { return core$1.cordova(this, "editContactSubscriptionLists", { "sync": true }, arguments); }
73
+ getChannelSubscriptionLists() { return core$1.cordova(this, "getChannelSubscriptionLists", { "successIndex": 1, "errorIndex": 2 }, arguments); }
74
+ getContactSubscriptionLists() { return core$1.cordova(this, "getContactSubscriptionLists", { "successIndex": 1, "errorIndex": 2 }, arguments); }
75
+ setAssociatedIdentifier(key, identifier) { return core$1.cordova(this, "setAssociatedIdentifier", {}, arguments); }
76
+ setLocationEnabled(enabled) { return core$1.cordova(this, "setLocationEnabled", {}, arguments); }
77
+ isLocationEnabled() { return core$1.cordova(this, "isLocationEnabled", {}, arguments); }
78
+ setBackgroundLocationEnabled(enabled) { return core$1.cordova(this, "setBackgroundLocationEnabled", {}, arguments); }
79
+ isBackgroundLocationEnabled() { return core$1.cordova(this, "isBackgroundLocationEnabled", {}, arguments); }
80
+ displayMessageCenter() { return core$1.cordova(this, "displayMessageCenter", {}, arguments); }
81
+ dismissMessageCenter() { return core$1.cordova(this, "dismissMessageCenter", {}, arguments); }
82
+ dismissInboxMessage() { return core$1.cordova(this, "dismissInboxMessage", {}, arguments); }
83
+ dismissOverlayInboxMessage() { return core$1.cordova(this, "dismissOverlayInboxMessage", {}, arguments); }
84
+ getInboxMessages() { return core$1.cordova(this, "getInboxMessages", {}, arguments); }
85
+ markInboxMessageRead(messageId) { return core$1.cordova(this, "markInboxMessageRead", {}, arguments); }
86
+ deleteInboxMessage(messageId) { return core$1.cordova(this, "deleteInboxMessage", {}, arguments); }
87
+ displayInboxMessage(messageId) { return core$1.cordova(this, "displayInboxMessage", {}, arguments); }
88
+ refreshInbox() { return core$1.cordova(this, "refreshInbox", {}, arguments); }
89
+ overlayInboxMessage(messageId) { return core$1.cordova(this, "overlayInboxMessage", {}, arguments); }
90
+ clearNotification(identifier) { return core$1.cordova(this, "clearNotification", {}, arguments); }
91
+ clearNotifications() { return core$1.cordova(this, "clearNotifications", {}, arguments); }
92
+ getActiveNotifications() { return core$1.cordova(this, "getActiveNotifications", {}, arguments); }
93
+ setAutobadgeEnabled(enabled) { return core$1.cordova(this, "setAutobadgeEnabled", {}, arguments); }
94
+ setBadgeNumber(count) { return core$1.cordova(this, "setBadgeNumber", {}, arguments); }
95
+ getBadgeNumber() { return core$1.cordova(this, "getBadgeNumber", {}, arguments); }
96
+ resetBadge() { return core$1.cordova(this, "resetBadge", {}, arguments); }
97
+ setNotificationTypes(types) { return core$1.cordova(this, "setNotificationTypes", {}, arguments); }
98
+ setPresentationOptions(options) { return core$1.cordova(this, "setPresentationOptions", {}, arguments); }
99
+ isSoundEnabled() { return core$1.cordova(this, "isSoundEnabled", {}, arguments); }
100
+ setSoundEnabled(enabled) { return core$1.cordova(this, "setSoundEnabled", {}, arguments); }
101
+ isVibrateEnabled() { return core$1.cordova(this, "isVibrateEnabled", {}, arguments); }
102
+ setVibrateEnabled(enabled) { return core$1.cordova(this, "setVibrateEnabled", {}, arguments); }
103
+ addCustomEvent(event) { return core$1.cordova(this, "addCustomEvent", {}, arguments); }
104
+ trackScreen(screen) { return core$1.cordova(this, "trackScreen", { "successIndex": 1, "errorIndex": 2 }, arguments); }
105
+ enableFeature(features) { return core$1.cordova(this, "enableFeature", { "successIndex": 1, "errorIndex": 2 }, arguments); }
106
+ disableFeature(features) { return core$1.cordova(this, "disableFeature", { "successIndex": 1, "errorIndex": 2 }, arguments); }
112
107
  /**
113
108
  * Sets the current enabled features, replacing any currently enabled features with the given set.
114
109
  *
@@ -118,23 +113,22 @@ var UrbanAirShip = /** @class */ (function (_super) {
118
113
  * @param {string} failure.message The error message.
119
114
  * @since 13.0.0
120
115
  */
121
- UrbanAirShip.prototype.setEnabledFeatures = function (features) {
116
+ setEnabledFeatures(features) {
122
117
  return;
123
- };
124
- UrbanAirShip.prototype.getEnabledFeatures = function () { return core.cordova(this, "getEnabledFeatures", { "successIndex": 0, "errorIndex": 1 }, arguments); };
125
- UrbanAirShip.prototype.isFeatureEnabled = function (features) { return core.cordova(this, "isFeatureEnabled", { "successIndex": 1, "errorIndex": 2 }, arguments); };
126
- UrbanAirShip.prototype.getPreferenceCenterConfig = function (preferenceCenterId) { return core.cordova(this, "getPreferenceCenterConfig", { "successIndex": 1, "errorIndex": 2 }, arguments); };
127
- UrbanAirShip.prototype.openPreferenceCenter = function (prenferenceCenterId) { return core.cordova(this, "openPreferenceCenter", { "successIndex": 1, "errorIndex": 2 }, arguments); };
128
- UrbanAirShip.pluginName = "UrbanAirShip";
129
- UrbanAirShip.plugin = "urbanairship-cordova";
130
- UrbanAirShip.pluginRef = "window.UAirship";
131
- UrbanAirShip.repo = "https://www.npmjs.com/package/urbanairship-cordova";
132
- UrbanAirShip.install = "ionic cordova plugin add urbanairship-cordova";
133
- UrbanAirShip.platforms = ["Android", "iOS"];
134
- UrbanAirShip.decorators = [
135
- { type: core$1.Injectable }
136
- ];
137
- return UrbanAirShip;
138
- }(core.AwesomeCordovaNativePlugin));
118
+ }
119
+ getEnabledFeatures() { return core$1.cordova(this, "getEnabledFeatures", { "successIndex": 0, "errorIndex": 1 }, arguments); }
120
+ isFeatureEnabled(features) { return core$1.cordova(this, "isFeatureEnabled", { "successIndex": 1, "errorIndex": 2 }, arguments); }
121
+ getPreferenceCenterConfig(preferenceCenterId) { return core$1.cordova(this, "getPreferenceCenterConfig", { "successIndex": 1, "errorIndex": 2 }, arguments); }
122
+ openPreferenceCenter(prenferenceCenterId) { return core$1.cordova(this, "openPreferenceCenter", { "successIndex": 1, "errorIndex": 2 }, arguments); }
123
+ }
124
+ UrbanAirShip.pluginName = "UrbanAirShip";
125
+ UrbanAirShip.plugin = "urbanairship-cordova";
126
+ UrbanAirShip.pluginRef = "window.UAirship";
127
+ UrbanAirShip.repo = "https://www.npmjs.com/package/urbanairship-cordova";
128
+ UrbanAirShip.install = "ionic cordova plugin add urbanairship-cordova";
129
+ UrbanAirShip.platforms = ["Android", "iOS"];
130
+ UrbanAirShip.decorators = [
131
+ { type: core.Injectable }
132
+ ];
139
133
 
140
134
  exports.UrbanAirShip = UrbanAirShip;
package/ngx/index.js CHANGED
@@ -1,4 +1,3 @@
1
- import { __extends } from "tslib";
2
1
  import { Injectable } from '@angular/core';
3
2
  import { AwesomeCordovaNativePlugin, cordova } from '@awesome-cordova-plugins/core';
4
3
  import { Observable } from 'rxjs';
@@ -28,82 +27,78 @@ export var PresentationOptions;
28
27
  PresentationOptions[PresentationOptions["sound"] = 2] = "sound";
29
28
  PresentationOptions[PresentationOptions["alert"] = 4] = "alert";
30
29
  })(PresentationOptions || (PresentationOptions = {}));
31
- var UrbanAirShip = /** @class */ (function (_super) {
32
- __extends(UrbanAirShip, _super);
33
- function UrbanAirShip() {
34
- return _super !== null && _super.apply(this, arguments) || this;
35
- }
36
- UrbanAirShip.prototype.onDeepLink = function () { return cordova(this, "onDeepLink", { "eventObservable": true, "event": "urbanairship.deep_link", "element": "document" }, arguments); };
37
- UrbanAirShip.prototype.onRegistration = function () { return cordova(this, "onRegistration", { "eventObservable": true, "event": "urbanairship.registration", "element": "document" }, arguments); };
38
- UrbanAirShip.prototype.onInboxUpdated = function () { return cordova(this, "onInboxUpdated", { "eventObservable": true, "event": "urbanairship.inbox_updated", "element": "document" }, arguments); };
39
- UrbanAirShip.prototype.onShowInbox = function () { return cordova(this, "onShowInbox", { "eventObservable": true, "event": "urbanairship.show_inbox", "element": "document" }, arguments); };
40
- UrbanAirShip.prototype.onPushReceived = function () { return cordova(this, "onPushReceived", { "eventObservable": true, "event": "urbanairship.push", "element": "document" }, arguments); };
41
- UrbanAirShip.prototype.onNotificationOpened = function () { return cordova(this, "onNotificationOpened", { "eventObservable": true, "event": "urbanairship.notification_opened", "element": "document" }, arguments); };
42
- UrbanAirShip.prototype.onNotificationOptInStatus = function () { return cordova(this, "onNotificationOptInStatus", { "eventObservable": true, "event": "urbanairship.notification_opt_in_status", "element": "document" }, arguments); };
43
- UrbanAirShip.prototype.reattach = function () { return cordova(this, "reattach", { "sync": true }, arguments); };
44
- UrbanAirShip.prototype.takeOff = function (config) { return cordova(this, "takeOff", {}, arguments); };
45
- UrbanAirShip.prototype.setAndroidNotificationConfig = function (config) { return cordova(this, "setAndroidNotificationConfig", {}, arguments); };
46
- UrbanAirShip.prototype.setAutoLaunchDefaultMessageCenter = function (enabled) { return cordova(this, "setAutoLaunchDefaultMessageCenter", {}, arguments); };
47
- UrbanAirShip.prototype.setUserNotificationsEnabled = function (enabled) { return cordova(this, "setUserNotificationsEnabled", {}, arguments); };
48
- UrbanAirShip.prototype.isUserNotificationsEnabled = function () { return cordova(this, "isUserNotificationsEnabled", {}, arguments); };
49
- UrbanAirShip.prototype.isAppNotificationsEnabled = function () { return cordova(this, "isAppNotificationsEnabled", {}, arguments); };
50
- UrbanAirShip.prototype.getChannelID = function () { return cordova(this, "getChannelID", {}, arguments); };
51
- UrbanAirShip.prototype.getLaunchNotification = function (clear) { return cordova(this, "getLaunchNotification", {}, arguments); };
52
- UrbanAirShip.prototype.getDeepLink = function (clear) { return cordova(this, "getDeepLink", {}, arguments); };
53
- UrbanAirShip.prototype.getTags = function () { return cordova(this, "getTags", {}, arguments); };
54
- UrbanAirShip.prototype.setTags = function (tags) { return cordova(this, "setTags", {}, arguments); };
55
- UrbanAirShip.prototype.getAlias = function () { return cordova(this, "getAlias", {}, arguments); };
56
- UrbanAirShip.prototype.setAlias = function (alias) { return cordova(this, "setAlias", {}, arguments); };
57
- UrbanAirShip.prototype.isQuietTimeEnabled = function () { return cordova(this, "isQuietTimeEnabled", {}, arguments); };
58
- UrbanAirShip.prototype.setQuietTimeEnabled = function (enabled) { return cordova(this, "setQuietTimeEnabled", {}, arguments); };
59
- UrbanAirShip.prototype.isInQuietTime = function () { return cordova(this, "isInQuietTime", {}, arguments); };
60
- UrbanAirShip.prototype.getQuietTime = function () { return cordova(this, "getQuietTime", {}, arguments); };
61
- UrbanAirShip.prototype.setQuietTime = function (startHour, startMinute, endHour, endMinute) { return cordova(this, "setQuietTime", {}, arguments); };
62
- UrbanAirShip.prototype.setAnalyticsEnabled = function (enabled) { return cordova(this, "setAnalyticsEnabled", {}, arguments); };
63
- UrbanAirShip.prototype.isAnalyticsEnabled = function () { return cordova(this, "isAnalyticsEnabled", {}, arguments); };
64
- UrbanAirShip.prototype.getNamedUser = function () { return cordova(this, "getNamedUser", {}, arguments); };
65
- UrbanAirShip.prototype.setNamedUser = function (namedUser) { return cordova(this, "setNamedUser", {}, arguments); };
66
- UrbanAirShip.prototype.runAction = function (actionName, actionValue) { return cordova(this, "runAction", {}, arguments); };
67
- UrbanAirShip.prototype.editNamedUserTagGroups = function () { return cordova(this, "editNamedUserTagGroups", { "sync": true }, arguments); };
68
- UrbanAirShip.prototype.editChannelTagGroups = function () { return cordova(this, "editChannelTagGroups", { "sync": true }, arguments); };
69
- UrbanAirShip.prototype.editChannelAttributes = function () { return cordova(this, "editChannelAttributes", { "sync": true }, arguments); };
70
- UrbanAirShip.prototype.editNamedUserAttributes = function () { return cordova(this, "editNamedUserAttributes", { "sync": true }, arguments); };
71
- UrbanAirShip.prototype.editChannelSubscriptionLists = function () { return cordova(this, "editChannelSubscriptionLists", { "sync": true }, arguments); };
72
- UrbanAirShip.prototype.editContactSubscriptionLists = function () { return cordova(this, "editContactSubscriptionLists", { "sync": true }, arguments); };
73
- UrbanAirShip.prototype.getChannelSubscriptionLists = function () { return cordova(this, "getChannelSubscriptionLists", { "successIndex": 1, "errorIndex": 2 }, arguments); };
74
- UrbanAirShip.prototype.getContactSubscriptionLists = function () { return cordova(this, "getContactSubscriptionLists", { "successIndex": 1, "errorIndex": 2 }, arguments); };
75
- UrbanAirShip.prototype.setAssociatedIdentifier = function (key, identifier) { return cordova(this, "setAssociatedIdentifier", {}, arguments); };
76
- UrbanAirShip.prototype.setLocationEnabled = function (enabled) { return cordova(this, "setLocationEnabled", {}, arguments); };
77
- UrbanAirShip.prototype.isLocationEnabled = function () { return cordova(this, "isLocationEnabled", {}, arguments); };
78
- UrbanAirShip.prototype.setBackgroundLocationEnabled = function (enabled) { return cordova(this, "setBackgroundLocationEnabled", {}, arguments); };
79
- UrbanAirShip.prototype.isBackgroundLocationEnabled = function () { return cordova(this, "isBackgroundLocationEnabled", {}, arguments); };
80
- UrbanAirShip.prototype.displayMessageCenter = function () { return cordova(this, "displayMessageCenter", {}, arguments); };
81
- UrbanAirShip.prototype.dismissMessageCenter = function () { return cordova(this, "dismissMessageCenter", {}, arguments); };
82
- UrbanAirShip.prototype.dismissInboxMessage = function () { return cordova(this, "dismissInboxMessage", {}, arguments); };
83
- UrbanAirShip.prototype.dismissOverlayInboxMessage = function () { return cordova(this, "dismissOverlayInboxMessage", {}, arguments); };
84
- UrbanAirShip.prototype.getInboxMessages = function () { return cordova(this, "getInboxMessages", {}, arguments); };
85
- UrbanAirShip.prototype.markInboxMessageRead = function (messageId) { return cordova(this, "markInboxMessageRead", {}, arguments); };
86
- UrbanAirShip.prototype.deleteInboxMessage = function (messageId) { return cordova(this, "deleteInboxMessage", {}, arguments); };
87
- UrbanAirShip.prototype.displayInboxMessage = function (messageId) { return cordova(this, "displayInboxMessage", {}, arguments); };
88
- UrbanAirShip.prototype.refreshInbox = function () { return cordova(this, "refreshInbox", {}, arguments); };
89
- UrbanAirShip.prototype.overlayInboxMessage = function (messageId) { return cordova(this, "overlayInboxMessage", {}, arguments); };
90
- UrbanAirShip.prototype.clearNotification = function (identifier) { return cordova(this, "clearNotification", {}, arguments); };
91
- UrbanAirShip.prototype.clearNotifications = function () { return cordova(this, "clearNotifications", {}, arguments); };
92
- UrbanAirShip.prototype.getActiveNotifications = function () { return cordova(this, "getActiveNotifications", {}, arguments); };
93
- UrbanAirShip.prototype.setAutobadgeEnabled = function (enabled) { return cordova(this, "setAutobadgeEnabled", {}, arguments); };
94
- UrbanAirShip.prototype.setBadgeNumber = function (count) { return cordova(this, "setBadgeNumber", {}, arguments); };
95
- UrbanAirShip.prototype.getBadgeNumber = function () { return cordova(this, "getBadgeNumber", {}, arguments); };
96
- UrbanAirShip.prototype.resetBadge = function () { return cordova(this, "resetBadge", {}, arguments); };
97
- UrbanAirShip.prototype.setNotificationTypes = function (types) { return cordova(this, "setNotificationTypes", {}, arguments); };
98
- UrbanAirShip.prototype.setPresentationOptions = function (options) { return cordova(this, "setPresentationOptions", {}, arguments); };
99
- UrbanAirShip.prototype.isSoundEnabled = function () { return cordova(this, "isSoundEnabled", {}, arguments); };
100
- UrbanAirShip.prototype.setSoundEnabled = function (enabled) { return cordova(this, "setSoundEnabled", {}, arguments); };
101
- UrbanAirShip.prototype.isVibrateEnabled = function () { return cordova(this, "isVibrateEnabled", {}, arguments); };
102
- UrbanAirShip.prototype.setVibrateEnabled = function (enabled) { return cordova(this, "setVibrateEnabled", {}, arguments); };
103
- UrbanAirShip.prototype.addCustomEvent = function (event) { return cordova(this, "addCustomEvent", {}, arguments); };
104
- UrbanAirShip.prototype.trackScreen = function (screen) { return cordova(this, "trackScreen", { "successIndex": 1, "errorIndex": 2 }, arguments); };
105
- UrbanAirShip.prototype.enableFeature = function (features) { return cordova(this, "enableFeature", { "successIndex": 1, "errorIndex": 2 }, arguments); };
106
- UrbanAirShip.prototype.disableFeature = function (features) { return cordova(this, "disableFeature", { "successIndex": 1, "errorIndex": 2 }, arguments); };
30
+ export class UrbanAirShip extends AwesomeCordovaNativePlugin {
31
+ onDeepLink() { return cordova(this, "onDeepLink", { "eventObservable": true, "event": "urbanairship.deep_link", "element": "document" }, arguments); }
32
+ onRegistration() { return cordova(this, "onRegistration", { "eventObservable": true, "event": "urbanairship.registration", "element": "document" }, arguments); }
33
+ onInboxUpdated() { return cordova(this, "onInboxUpdated", { "eventObservable": true, "event": "urbanairship.inbox_updated", "element": "document" }, arguments); }
34
+ onShowInbox() { return cordova(this, "onShowInbox", { "eventObservable": true, "event": "urbanairship.show_inbox", "element": "document" }, arguments); }
35
+ onPushReceived() { return cordova(this, "onPushReceived", { "eventObservable": true, "event": "urbanairship.push", "element": "document" }, arguments); }
36
+ onNotificationOpened() { return cordova(this, "onNotificationOpened", { "eventObservable": true, "event": "urbanairship.notification_opened", "element": "document" }, arguments); }
37
+ onNotificationOptInStatus() { return cordova(this, "onNotificationOptInStatus", { "eventObservable": true, "event": "urbanairship.notification_opt_in_status", "element": "document" }, arguments); }
38
+ reattach() { return cordova(this, "reattach", { "sync": true }, arguments); }
39
+ takeOff(config) { return cordova(this, "takeOff", {}, arguments); }
40
+ setAndroidNotificationConfig(config) { return cordova(this, "setAndroidNotificationConfig", {}, arguments); }
41
+ setAutoLaunchDefaultMessageCenter(enabled) { return cordova(this, "setAutoLaunchDefaultMessageCenter", {}, arguments); }
42
+ setUserNotificationsEnabled(enabled) { return cordova(this, "setUserNotificationsEnabled", {}, arguments); }
43
+ isUserNotificationsEnabled() { return cordova(this, "isUserNotificationsEnabled", {}, arguments); }
44
+ isAppNotificationsEnabled() { return cordova(this, "isAppNotificationsEnabled", {}, arguments); }
45
+ getChannelID() { return cordova(this, "getChannelID", {}, arguments); }
46
+ getLaunchNotification(clear) { return cordova(this, "getLaunchNotification", {}, arguments); }
47
+ getDeepLink(clear) { return cordova(this, "getDeepLink", {}, arguments); }
48
+ getTags() { return cordova(this, "getTags", {}, arguments); }
49
+ setTags(tags) { return cordova(this, "setTags", {}, arguments); }
50
+ getAlias() { return cordova(this, "getAlias", {}, arguments); }
51
+ setAlias(alias) { return cordova(this, "setAlias", {}, arguments); }
52
+ isQuietTimeEnabled() { return cordova(this, "isQuietTimeEnabled", {}, arguments); }
53
+ setQuietTimeEnabled(enabled) { return cordova(this, "setQuietTimeEnabled", {}, arguments); }
54
+ isInQuietTime() { return cordova(this, "isInQuietTime", {}, arguments); }
55
+ getQuietTime() { return cordova(this, "getQuietTime", {}, arguments); }
56
+ setQuietTime(startHour, startMinute, endHour, endMinute) { return cordova(this, "setQuietTime", {}, arguments); }
57
+ setAnalyticsEnabled(enabled) { return cordova(this, "setAnalyticsEnabled", {}, arguments); }
58
+ isAnalyticsEnabled() { return cordova(this, "isAnalyticsEnabled", {}, arguments); }
59
+ getNamedUser() { return cordova(this, "getNamedUser", {}, arguments); }
60
+ setNamedUser(namedUser) { return cordova(this, "setNamedUser", {}, arguments); }
61
+ runAction(actionName, actionValue) { return cordova(this, "runAction", {}, arguments); }
62
+ editNamedUserTagGroups() { return cordova(this, "editNamedUserTagGroups", { "sync": true }, arguments); }
63
+ editChannelTagGroups() { return cordova(this, "editChannelTagGroups", { "sync": true }, arguments); }
64
+ editChannelAttributes() { return cordova(this, "editChannelAttributes", { "sync": true }, arguments); }
65
+ editNamedUserAttributes() { return cordova(this, "editNamedUserAttributes", { "sync": true }, arguments); }
66
+ editChannelSubscriptionLists() { return cordova(this, "editChannelSubscriptionLists", { "sync": true }, arguments); }
67
+ editContactSubscriptionLists() { return cordova(this, "editContactSubscriptionLists", { "sync": true }, arguments); }
68
+ getChannelSubscriptionLists() { return cordova(this, "getChannelSubscriptionLists", { "successIndex": 1, "errorIndex": 2 }, arguments); }
69
+ getContactSubscriptionLists() { return cordova(this, "getContactSubscriptionLists", { "successIndex": 1, "errorIndex": 2 }, arguments); }
70
+ setAssociatedIdentifier(key, identifier) { return cordova(this, "setAssociatedIdentifier", {}, arguments); }
71
+ setLocationEnabled(enabled) { return cordova(this, "setLocationEnabled", {}, arguments); }
72
+ isLocationEnabled() { return cordova(this, "isLocationEnabled", {}, arguments); }
73
+ setBackgroundLocationEnabled(enabled) { return cordova(this, "setBackgroundLocationEnabled", {}, arguments); }
74
+ isBackgroundLocationEnabled() { return cordova(this, "isBackgroundLocationEnabled", {}, arguments); }
75
+ displayMessageCenter() { return cordova(this, "displayMessageCenter", {}, arguments); }
76
+ dismissMessageCenter() { return cordova(this, "dismissMessageCenter", {}, arguments); }
77
+ dismissInboxMessage() { return cordova(this, "dismissInboxMessage", {}, arguments); }
78
+ dismissOverlayInboxMessage() { return cordova(this, "dismissOverlayInboxMessage", {}, arguments); }
79
+ getInboxMessages() { return cordova(this, "getInboxMessages", {}, arguments); }
80
+ markInboxMessageRead(messageId) { return cordova(this, "markInboxMessageRead", {}, arguments); }
81
+ deleteInboxMessage(messageId) { return cordova(this, "deleteInboxMessage", {}, arguments); }
82
+ displayInboxMessage(messageId) { return cordova(this, "displayInboxMessage", {}, arguments); }
83
+ refreshInbox() { return cordova(this, "refreshInbox", {}, arguments); }
84
+ overlayInboxMessage(messageId) { return cordova(this, "overlayInboxMessage", {}, arguments); }
85
+ clearNotification(identifier) { return cordova(this, "clearNotification", {}, arguments); }
86
+ clearNotifications() { return cordova(this, "clearNotifications", {}, arguments); }
87
+ getActiveNotifications() { return cordova(this, "getActiveNotifications", {}, arguments); }
88
+ setAutobadgeEnabled(enabled) { return cordova(this, "setAutobadgeEnabled", {}, arguments); }
89
+ setBadgeNumber(count) { return cordova(this, "setBadgeNumber", {}, arguments); }
90
+ getBadgeNumber() { return cordova(this, "getBadgeNumber", {}, arguments); }
91
+ resetBadge() { return cordova(this, "resetBadge", {}, arguments); }
92
+ setNotificationTypes(types) { return cordova(this, "setNotificationTypes", {}, arguments); }
93
+ setPresentationOptions(options) { return cordova(this, "setPresentationOptions", {}, arguments); }
94
+ isSoundEnabled() { return cordova(this, "isSoundEnabled", {}, arguments); }
95
+ setSoundEnabled(enabled) { return cordova(this, "setSoundEnabled", {}, arguments); }
96
+ isVibrateEnabled() { return cordova(this, "isVibrateEnabled", {}, arguments); }
97
+ setVibrateEnabled(enabled) { return cordova(this, "setVibrateEnabled", {}, arguments); }
98
+ addCustomEvent(event) { return cordova(this, "addCustomEvent", {}, arguments); }
99
+ trackScreen(screen) { return cordova(this, "trackScreen", { "successIndex": 1, "errorIndex": 2 }, arguments); }
100
+ enableFeature(features) { return cordova(this, "enableFeature", { "successIndex": 1, "errorIndex": 2 }, arguments); }
101
+ disableFeature(features) { return cordova(this, "disableFeature", { "successIndex": 1, "errorIndex": 2 }, arguments); }
107
102
  /**
108
103
  * Sets the current enabled features, replacing any currently enabled features with the given set.
109
104
  *
@@ -113,23 +108,21 @@ var UrbanAirShip = /** @class */ (function (_super) {
113
108
  * @param {string} failure.message The error message.
114
109
  * @since 13.0.0
115
110
  */
116
- UrbanAirShip.prototype.setEnabledFeatures = function (features) {
111
+ setEnabledFeatures(features) {
117
112
  return;
118
- };
119
- UrbanAirShip.prototype.getEnabledFeatures = function () { return cordova(this, "getEnabledFeatures", { "successIndex": 0, "errorIndex": 1 }, arguments); };
120
- UrbanAirShip.prototype.isFeatureEnabled = function (features) { return cordova(this, "isFeatureEnabled", { "successIndex": 1, "errorIndex": 2 }, arguments); };
121
- UrbanAirShip.prototype.getPreferenceCenterConfig = function (preferenceCenterId) { return cordova(this, "getPreferenceCenterConfig", { "successIndex": 1, "errorIndex": 2 }, arguments); };
122
- UrbanAirShip.prototype.openPreferenceCenter = function (prenferenceCenterId) { return cordova(this, "openPreferenceCenter", { "successIndex": 1, "errorIndex": 2 }, arguments); };
123
- UrbanAirShip.pluginName = "UrbanAirShip";
124
- UrbanAirShip.plugin = "urbanairship-cordova";
125
- UrbanAirShip.pluginRef = "window.UAirship";
126
- UrbanAirShip.repo = "https://www.npmjs.com/package/urbanairship-cordova";
127
- UrbanAirShip.install = "ionic cordova plugin add urbanairship-cordova";
128
- UrbanAirShip.platforms = ["Android", "iOS"];
129
- UrbanAirShip.decorators = [
130
- { type: Injectable }
131
- ];
132
- return UrbanAirShip;
133
- }(AwesomeCordovaNativePlugin));
134
- export { UrbanAirShip };
135
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvQGF3ZXNvbWUtY29yZG92YS1wbHVnaW5zL3BsdWdpbnMvdXJiYW5haXJzaGlwL25neC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLHVDQUErQyxNQUFNLCtCQUErQixDQUFDO0FBQzVGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFzQ2xDOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFOLElBQVksZ0JBS1g7QUFMRCxXQUFZLGdCQUFnQjtJQUMxQix1REFBUSxDQUFBO0lBQ1IseURBQVMsQ0FBQTtJQUNULHlEQUFTLENBQUE7SUFDVCx5REFBUyxDQUFBO0FBQ1gsQ0FBQyxFQUxXLGdCQUFnQixLQUFoQixnQkFBZ0IsUUFLM0I7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBTixJQUFZLG1CQUtYO0FBTEQsV0FBWSxtQkFBbUI7SUFDN0IsNkRBQVEsQ0FBQTtJQUNSLCtEQUFTLENBQUE7SUFDVCwrREFBUyxDQUFBO0lBQ1QsK0RBQVMsQ0FBQTtBQUNYLENBQUMsRUFMVyxtQkFBbUIsS0FBbkIsbUJBQW1CLFFBSzlCOztJQStCaUMsZ0NBQTBCOzs7O0lBYTFELGlDQUFVO0lBa0JWLHFDQUFjO0lBY2QscUNBQWM7SUFpQmQsa0NBQVc7SUFzQlgscUNBQWM7SUFxQmQsMkNBQW9CO0lBdUJwQixnREFBeUI7SUFVekIsK0JBQVE7SUFzQlIsOEJBQU8sYUFBQyxNQUFXO0lBYW5CLG1EQUE0QixhQUFDLE1BQVc7SUFjeEMsd0RBQWlDLGFBQUMsT0FBZ0I7SUFhbEQsa0RBQTJCLGFBQUMsT0FBZ0I7SUFhNUMsaURBQTBCO0lBYzFCLGdEQUF5QjtJQWF6QixtQ0FBWTtJQWlCWiw0Q0FBcUIsYUFBQyxLQUFjO0lBY3BDLGtDQUFXLGFBQUMsS0FBYztJQWExQiw4QkFBTztJQWFQLDhCQUFPLGFBQUMsSUFBYztJQWN0QiwrQkFBUTtJQWNSLCtCQUFRLGFBQUMsS0FBYTtJQWF0Qix5Q0FBa0I7SUFhbEIsMENBQW1CLGFBQUMsT0FBZ0I7SUFhcEMsb0NBQWE7SUFrQmIsbUNBQVk7SUFnQlosbUNBQVksYUFBQyxTQUFpQixFQUFFLFdBQW1CLEVBQUUsT0FBZSxFQUFFLFNBQWlCO0lBa0J2RiwwQ0FBbUIsYUFBQyxPQUFnQjtJQWFwQyx5Q0FBa0I7SUFhbEIsbUNBQVk7SUFhWixtQ0FBWSxhQUFDLFNBQWlCO0lBZTlCLGdDQUFTLGFBQUMsVUFBa0IsRUFBRSxXQUFnQjtJQVE5Qyw2Q0FBc0I7SUFRdEIsMkNBQW9CO0lBUXBCLDRDQUFxQjtJQVFyQiw4Q0FBdUI7SUFXdkIsbURBQTRCO0lBVzVCLG1EQUE0QjtJQWdCNUIsa0RBQTJCO0lBZ0IzQixrREFBMkI7SUFjM0IsOENBQXVCLGFBQUMsR0FBVyxFQUFFLFVBQWtCO0lBZXZELHlDQUFrQixhQUFDLE9BQWdCO0lBY25DLHdDQUFpQjtJQWNqQixtREFBNEIsYUFBQyxPQUFnQjtJQWM3QyxrREFBMkI7SUFZM0IsMkNBQW9CO0lBWXBCLDJDQUFvQjtJQVlwQiwwQ0FBbUI7SUFhbkIsaURBQTBCO0lBbUIxQix1Q0FBZ0I7SUFhaEIsMkNBQW9CLGFBQUMsU0FBaUI7SUFhdEMseUNBQWtCLGFBQUMsU0FBaUI7SUFhcEMsMENBQW1CLGFBQUMsU0FBaUI7SUFlckMsbUNBQVk7SUFjWiwwQ0FBbUIsYUFBQyxTQUFpQjtJQVlyQyx3Q0FBaUIsYUFBQyxVQUFrQjtJQVlwQyx5Q0FBa0I7SUFhbEIsNkNBQXNCO0lBZXRCLDBDQUFtQixhQUFDLE9BQWdCO0lBYXBDLHFDQUFjLGFBQUMsS0FBYTtJQWE1QixxQ0FBYztJQVlkLGlDQUFVO0lBY1YsMkNBQW9CLGFBQUMsS0FBdUI7SUFjNUMsNkNBQXNCLGFBQUMsT0FBNEI7SUFlbkQscUNBQWM7SUFhZCxzQ0FBZSxhQUFDLE9BQWdCO0lBYWhDLHVDQUFnQjtJQWFoQix3Q0FBaUIsYUFBQyxPQUFnQjtJQWlCbEMscUNBQWMsYUFBQyxLQUFhO0lBaUI1QixrQ0FBVyxhQUFDLE1BQWM7SUFpQjFCLG9DQUFhLGFBQUMsUUFBa0I7SUFpQmhDLHFDQUFjLGFBQUMsUUFBa0I7SUFJakM7Ozs7Ozs7O09BUUc7SUFDSCx5Q0FBa0IsR0FBbEIsVUFBbUIsUUFBa0I7UUFDbkMsT0FBTztJQUNULENBQUM7SUFjRCx5Q0FBa0I7SUFpQmxCLHVDQUFnQixhQUFDLFFBQWtCO0lBaUJuQyxnREFBeUIsYUFBQyxrQkFBMEI7SUFpQnBELDJDQUFvQixhQUFDLG1CQUEyQjs7Ozs7Ozs7Z0JBNWpDakQsVUFBVTs7dUJBOUZYO0VBK0ZrQywwQkFBMEI7U0FBL0MsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFBsdWdpbiwgQ29yZG92YSwgQXdlc29tZUNvcmRvdmFOYXRpdmVQbHVnaW4gfSBmcm9tICdAYXdlc29tZS1jb3Jkb3ZhLXBsdWdpbnMvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICogSW50ZXJmYWNlIGZvciBVQWlyc2hpcCBUYWcgRWRpdG9yXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFnR3JvdXBFZGl0b3Ige1xuICBhZGRUYWdzKHRhZ0dyb3VwOiBzdHJpbmcsIHRhZ3M6IHN0cmluZ1tdKTogVGFnR3JvdXBFZGl0b3I7XG4gIHJlbW92ZVRhZ3ModGFnR3JvdXA6IHN0cmluZywgdGFnczogc3RyaW5nW10pOiBUYWdHcm91cEVkaXRvcjtcbiAgYXBwbHkoc3VjY2VzczogKCkgPT4gdm9pZCwgZmFpbHVyZTogKG1lc3NhZ2U6IHN0cmluZykgPT4gdm9pZCk6IFRhZ0dyb3VwRWRpdG9yO1xufVxuXG4vKipcbiAqIEludGVyZmFjZSBmb3IgVUFpcnNoaXAgQXR0cmlidXRlcyBFZGl0b3JcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdHRyaWJ1dGVzRWRpdG9yIHtcbiAgc2V0QXR0cmlidXRlKG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBEYXRlKTogQXR0cmlidXRlc0VkaXRvcjtcbiAgcmVtb3ZlQXR0cmlidXRlKG5hbWU6IHN0cmluZyk6IEF0dHJpYnV0ZXNFZGl0b3I7XG4gIGFwcGx5KHN1Y2Nlc3M6ICgpID0+IHZvaWQsIGZhaWx1cmU6IChtZXNzYWdlOiBzdHJpbmcpID0+IHZvaWQpOiBBdHRyaWJ1dGVzRWRpdG9yO1xufVxuXG4vKipcbiAqIEludGVyZmFjZSBmb3IgVUFpcnNoaXAgQ2hhbm5lbFN1YnNjcmlwdGlvbkxpc3QgRWRpdG9yXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhbm5lbFN1YnNjcmlwdGlvbkxpc3RFZGl0b3Ige1xuICBzdWJzY3JpYmUoc3Vic2NyaXB0aW9uTGlzdElEOiBzdHJpbmcpOiBDaGFubmVsU3Vic2NyaXB0aW9uTGlzdEVkaXRvcjtcbiAgdW5zdWJzY3JpYmUoc3Vic2NyaXB0aW9uTGlzdElEOiBzdHJpbmcpOiBDaGFubmVsU3Vic2NyaXB0aW9uTGlzdEVkaXRvcjtcbiAgYXBwbHkoc3VjY2VzczogKCkgPT4gdm9pZCwgZmFpbHVyZTogKG1lc3NhZ2U6IHN0cmluZykgPT4gdm9pZCk6IENoYW5uZWxTdWJzY3JpcHRpb25MaXN0RWRpdG9yO1xufVxuXG4vKipcbiAqIEludGVyZmFjZSBmb3IgVUFpcnNoaXAgQ29udGFjdFN1YnNjcmlwdGlvbkxpc3QgRWRpdG9yXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGFjdFN1YnNjcmlwdGlvbkxpc3RFZGl0b3Ige1xuICBzdWJzY3JpYmUoc3Vic2NyaXB0aW9uTGlzdElEOiBzdHJpbmcsIGNvbnRhY3RTY29wZTogJ0FQUCcgfCAnRU1BSUwnKTogQ29udGFjdFN1YnNjcmlwdGlvbkxpc3RFZGl0b3I7XG4gIHVuc3Vic2NyaWJlKHN1YnNjcmlwdGlvbkxpc3RJRDogc3RyaW5nLCBjb250YWN0U2NvcGU6ICdBUFAnIHwgJ0VNQUlMJyk6IENvbnRhY3RTdWJzY3JpcHRpb25MaXN0RWRpdG9yO1xuICBhcHBseShzdWNjZXNzOiAoKSA9PiB2b2lkLCBmYWlsdXJlOiAobWVzc2FnZTogc3RyaW5nKSA9PiB2b2lkKTogQ29udGFjdFN1YnNjcmlwdGlvbkxpc3RFZGl0b3I7XG59XG5cbi8qKlxuICogRW51bSBmb3Igbm90aWZpY2F0aW9uIHR5cGVzLlxuICpcbiAqIEByZWFkb25seVxuICogQGVudW0ge251bWJlcn1cbiAqL1xuZXhwb3J0IGVudW0gTm90aWZpY2F0aW9uVHlwZSB7XG4gIG5vbmUgPSAwLFxuICBiYWRnZSA9IDEsXG4gIHNvdW5kID0gMixcbiAgYWxlcnQgPSA0LFxufVxuXG4vKipcbiAqIEVudW0gZm9yIHByZXNlbnRhdGlvbiBvcHRpb25zLlxuICpcbiAqIEByZWFkb25seVxuICogQGVudW0ge251bWJlcn1cbiAqL1xuZXhwb3J0IGVudW0gUHJlc2VudGF0aW9uT3B0aW9ucyB7XG4gIG5vbmUgPSAwLFxuICBiYWRnZSA9IDEsXG4gIHNvdW5kID0gMixcbiAgYWxlcnQgPSA0LFxufVxuXG4vKipcbiAqIEBuYW1lIFVyYmFuQWlyU2hpcFxuICogQGRlc2NyaXB0aW9uXG4gKiBUaGlzIHBsdWdpbiBkb2VzIHNvbWV0aGluZ1xuICogQHVzYWdlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyBVcmJhbkFpclNoaXAgfSBmcm9tICdAYXdlc29tZS1jb3Jkb3ZhLXBsdWdpbnMvdXJiYW5haXJzaGlwL25neCc7XG4gKlxuICpcbiAqIGNvbnN0cnVjdG9yKHByaXZhdGUgdXJiYW5BaXJTaGlwOiBVcmJhbkFpclNoaXApIHsgfVxuICpcbiAqIC4uLlxuICpcbiAqXG4gKiB0aGlzLnVyYmFuQWlyU2hpcC50YWtlT2ZmKGNvbmZpZylcbiAqICAgLnRoZW4oKHJlczogYW55KSA9PiBjb25zb2xlLmxvZyhyZXMpKVxuICogICAuY2F0Y2goKGVycm9yOiBhbnkpID0+IGNvbnNvbGUuZXJyb3IoZXJyb3IpKTtcbiAqXG4gKiBgYGBcbiAqL1xuQFBsdWdpbih7XG4gIHBsdWdpbk5hbWU6ICdVcmJhbkFpclNoaXAnLFxuICBwbHVnaW46ICd1cmJhbmFpcnNoaXAtY29yZG92YScsXG4gIHBsdWdpblJlZjogJ3dpbmRvdy5VQWlyc2hpcCcsXG4gIHJlcG86ICdodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS91cmJhbmFpcnNoaXAtY29yZG92YScsXG4gIGluc3RhbGw6ICdpb25pYyBjb3Jkb3ZhIHBsdWdpbiBhZGQgdXJiYW5haXJzaGlwLWNvcmRvdmEnLFxuICBwbGF0Zm9ybXM6IFsnQW5kcm9pZCcsICdpT1MnXSxcbn0pXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVXJiYW5BaXJTaGlwIGV4dGVuZHMgQXdlc29tZUNvcmRvdmFOYXRpdmVQbHVnaW4ge1xuICAvKipcbiAgICogRXZlbnQgZmlyZWQgd2hlbiBhIG5ldyBkZWVwIGxpbmsgaXMgcmVjZWl2ZWQuXG4gICAqXG4gICAqIEBldmVudCBkZWVwX2xpbmtcbiAgICogQHR5cGUge29iamVjdH1cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtkZWVwTGlua10gVGhlIGRlZXAgbGluay5cbiAgICovXG4gIEBDb3Jkb3ZhKHtcbiAgICBldmVudE9ic2VydmFibGU6IHRydWUsXG4gICAgZXZlbnQ6ICd1cmJhbmFpcnNoaXAuZGVlcF9saW5rJyxcbiAgICBlbGVtZW50OiAnZG9jdW1lbnQnLFxuICB9KVxuICBvbkRlZXBMaW5rKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIEV2ZW50IGZpcmVkIHdoZW4gYSBjaGFubmVsIHJlZ2lzdHJhdGlvbiBvY2N1cnMuXG4gICAqXG4gICAqIEBldmVudCByZWdpc3RyYXRpb25cbiAgICogQHR5cGUge29iamVjdH1cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtjaGFubmVsSURdIFRoZSBjaGFubmVsIElELlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3JlZ2lzdHJhdGlvblRva2VuXSBUaGUgZGV2aWNlVG9rZW4gb24gaU9TLCBhbmQgdGhlIEZDTS9BRE0gdG9rZW4gb24gQW5kcm9pZC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtlcnJvcl0gRXJyb3IgbWVzc2FnZSBpZiBhbiBlcnJvciBvY2N1cnJlZC5cbiAgICovXG4gIEBDb3Jkb3ZhKHtcbiAgICBldmVudE9ic2VydmFibGU6IHRydWUsXG4gICAgZXZlbnQ6ICd1cmJhbmFpcnNoaXAucmVnaXN0cmF0aW9uJyxcbiAgICBlbGVtZW50OiAnZG9jdW1lbnQnLFxuICB9KVxuICBvblJlZ2lzdHJhdGlvbigpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBFdmVudCBmaXJlZCB3aGVuIHRoZSBpbmJveCBpcyB1cGRhdGVkLlxuICAgKlxuICAgKiBAZXZlbnQgaW5ib3hfdXBkYXRlZFxuICAgKi9cbiAgQENvcmRvdmEoe1xuICAgIGV2ZW50T2JzZXJ2YWJsZTogdHJ1ZSxcbiAgICBldmVudDogJ3VyYmFuYWlyc2hpcC5pbmJveF91cGRhdGVkJyxcbiAgICBlbGVtZW50OiAnZG9jdW1lbnQnLFxuICB9KVxuICBvbkluYm94VXBkYXRlZCgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBFdmVudCBmaXJlZCB3aGVuIHRoZSBpbmJveCBuZWVkcyB0byBiZSBkaXNwbGF5ZWQuIFRoaXMgZXZlbnQgaXMgb25seSBlbWl0dGVkIGlmIGF1dG9cbiAgICogbGF1bmNoIG1lc3NhZ2UgY2VudGVyIGlzIGRpc2FibGVkLlxuICAgKlxuICAgKiBAZXZlbnQgc2hvd19pbmJveFxuICAgKiBAdHlwZSB7b2JqZWN0fVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW21lc3NhZ2VJZF0gVGhlIG9wdGlvbmFsIG1lc3NhZ2UgSUQuXG4gICAqL1xuICBAQ29yZG92YSh7XG4gICAgZXZlbnRPYnNlcnZhYmxlOiB0cnVlLFxuICAgIGV2ZW50OiAndXJiYW5haXJzaGlwLnNob3dfaW5ib3gnLFxuICAgIGVsZW1lbnQ6ICdkb2N1bWVudCcsXG4gIH0pXG4gIG9uU2hvd0luYm94KCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIEV2ZW50IGZpcmVkIHdoZW4gYSBwdXNoIGlzIHJlY2VpdmVkLlxuICAgKlxuICAgKiBAZXZlbnQgcHVzaFxuICAgKiBAdHlwZSB7b2JqZWN0fVxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSBUaGUgcHVzaCBhbGVydCBtZXNzYWdlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGl0bGUgVGhlIHB1c2ggdGl0bGUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdWJ0aXRsZSBUaGUgcHVzaCBzdWJ0aXRsZS5cbiAgICogQHBhcmFtIHtvYmplY3R9IGV4dHJhcyBBbnkgcHVzaCBleHRyYXMuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcHMgVGhlIHJhdyBhcHMgZGljdGlvbmFyeSAoaU9TIG9ubHkpXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbbm90aWZpY2F0aW9uX2lkXSBUaGUgQW5kcm9pZCBub3RpZmljYXRpb24gSUQuIERlcHJlY2F0ZWQgaW4gZmF2b3Igb2Ygbm90aWZpY2F0aW9uSWQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbbm90aWZpY2F0aW9uSWRdIFRoZSBub3RpZmljYXRpb24gSUQuXG4gICAqL1xuICBAQ29yZG92YSh7XG4gICAgZXZlbnRPYnNlcnZhYmxlOiB0cnVlLFxuICAgIGV2ZW50OiAndXJiYW5haXJzaGlwLnB1c2gnLFxuICAgIGVsZW1lbnQ6ICdkb2N1bWVudCcsXG4gIH0pXG4gIG9uUHVzaFJlY2VpdmVkKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIEV2ZW50IGZpcmVkIHdoZW4gbm90aWZpY2F0aW9uIG9wZW5lZC5cbiAgICpcbiAgICogQGV2ZW50IG5vdGlmaWNhdGlvbl9vcGVuZWRcbiAgICogQHR5cGUge29iamVjdH1cbiAgICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2UgVGhlIHB1c2ggYWxlcnQgbWVzc2FnZS5cbiAgICogQHBhcmFtIHtvYmplY3R9IGV4dHJhcyBBbnkgcHVzaCBleHRyYXMuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbbm90aWZpY2F0aW9uX2lkXSBUaGUgQW5kcm9pZCBub3RpZmljYXRpb24gSUQuIERlcHJlY2F0ZWQgaW4gZmF2b3Igb2Ygbm90aWZpY2F0aW9uSWQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbbm90aWZpY2F0aW9uSWRdIFRoZSBub3RpZmljYXRpb24gSUQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbYWN0aW9uSURdIFRoZSBJRCBvZiB0aGUgbm90aWZpY2F0aW9uIGFjdGlvbiBidXR0b24gaWYgYXZhaWxhYmxlLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlzRm9yZWdyb3VuZCBXaWxsIGFsd2F5cyBiZSB0cnVlIGlmIHRoZSB1c2VyIHRhcHMgdGhlIG1haW4gbm90aWZpY2F0aW9uLiBPdGhlcndpc2UgaXRzIGRlZmluZWQgYnkgdGhlIG5vdGlmaWNhdGlvbiBhY3Rpb24gYnV0dG9uLlxuICAgKi9cbiAgQENvcmRvdmEoe1xuICAgIGV2ZW50T2JzZXJ2YWJsZTogdHJ1ZSxcbiAgICBldmVudDogJ3VyYmFuYWlyc2hpcC5ub3RpZmljYXRpb25fb3BlbmVkJyxcbiAgICBlbGVtZW50OiAnZG9jdW1lbnQnLFxuICB9KVxuICBvbk5vdGlmaWNhdGlvbk9wZW5lZCgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBFdmVudCBmaXJlZCB3aGVuIHRoZSB1c2VyIG5vdGlmaWNhdGlvbiBvcHQtaW4gc3RhdHVzIGNoYW5nZXMuXG4gICAqXG4gICAqIEBldmVudCBub3RpZmljYXRpb25fb3B0X2luX3N0YXR1c1xuICAgKiBAdHlwZSB7b2JqZWN0fVxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IG9wdEluIElmIHRoZSB1c2VyIGlzIG9wdGVkIGluIG9yIG5vdCB0byB1c2VyIG5vdGlmaWNhdGlvbnMuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBbYXV0aG9yaXplZE5vdGlmaWNhdGlvblNldHRpbmdzXSBpT1Mgb25seS4gQSBtYXAgb2YgYXV0aG9yaXplZCBzZXR0aW5ncy5cbiAgICogQHBhcmFtIHtib29sZWFufSBhdXRob3JpemVkTm90aWZpY2F0aW9uU2V0dGluZ3MuYWxlcnQgSWYgYWxlcnRzIGFyZSBhdXRob3JpemVkLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGF1dGhvcml6ZWROb3RpZmljYXRpb25TZXR0aW5ncy5zb3VuZCBJZiBzb3VuZHMgYXJlIGF1dGhvcml6ZWQuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gYXV0aG9yaXplZE5vdGlmaWNhdGlvblNldHRpbmdzLmJhZGdlIElmIGJhZGdlcyBhcmUgYXV0aG9yaXplZC5cbiAgICogQHBhcmFtIHtib29sZWFufSBhdXRob3JpemVkTm90aWZpY2F0aW9uU2V0dGluZ3MuY2FyUGxheSBJZiBjYXIgcGxheSBpcyBhdXRob3JpemVkLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGF1dGhvcml6ZWROb3RpZmljYXRpb25TZXR0aW5ncy5sb2NrU2NyZWVuIElmIHRoZSBsb2NrIHNjcmVlbiBpcyBhdXRob3JpemVkLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGF1dGhvcml6ZWROb3RpZmljYXRpb25TZXR0aW5ncy5ub3RpZmljYXRpb25DZW50ZXIgSWYgdGhlIG5vdGlmaWNhdGlvbiBjZW50ZXIgaXMgYXV0aG9yaXplZC5cbiAgICovXG4gIEBDb3Jkb3ZhKHtcbiAgICBldmVudE9ic2VydmFibGU6IHRydWUsXG4gICAgZXZlbnQ6ICd1cmJhbmFpcnNoaXAubm90aWZpY2F0aW9uX29wdF9pbl9zdGF0dXMnLFxuICAgIGVsZW1lbnQ6ICdkb2N1bWVudCcsXG4gIH0pXG4gIG9uTm90aWZpY2F0aW9uT3B0SW5TdGF0dXMoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogUmUtYXR0YWNoZXMgZG9jdW1lbnQgZXZlbnQgbGlzdGVuZXJzIGluIHRoaXMgd2Vidmlld1xuICAgKi9cbiAgQENvcmRvdmEoe1xuICAgIHN5bmM6IHRydWUsXG4gIH0pXG4gIHJlYXR0YWNoKCk6IHZvaWQge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0YWlsaXplcyBVcmJhbiBBaXJzaGlwLlxuICAgKlxuICAgKiBUaGUgcGx1Z2luIHdpbGwgYXV0b21hdGljYWxseSBjYWxsIHRha2VPZmYgZHVyaW5nIHRoZSBuZXh0IGFwcCBpbml0IGluXG4gICAqIG9yZGVyIHRvIHByb3Blcmx5IGhhbmRsZSBpbmNvbWluZyBwdXNoLiBJZiB0YWtlT2ZmIGlzIGNhbGxlZCBtdWx0aXBsZSB0aW1lc1xuICAgKiBpbiBhIHNlc3Npb24sIG9yIGlmIHRoZSBjb25maWcgaXMgZGlmZmVyZW50IHRoYW4gdGhlIHByZXZpb3VzIHNlc3NzaW9uLCB0aGVcbiAgICogbmV3IGNvbmZpZyB3aWxsIG5vdCBiZSB1c2VkIHVudGlsIHRoZSBuZXh0IGFwcCBzdGFydC5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9ICBjb25maWcgVGhlIFVyYmFuIEFpcnNoaXAgY29uZmlnLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gIGNvbmZpZy5zaXRlIFNldHMgdGhlIGNsb3VkIHNpdGUsIG11c3QgYmUgZWl0aGVyIEVVIG9yIFVTLlxuICAgKiBAcGFyYW0ge29iamVjdH0gIGNvbmZpZy5kZXZlbG9wbWVudCBUaGUgVXJiYW4gQWlyc2hpcCBkZXZlbG9wbWVudCBjb25maWcuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSAgY29uZmlnLmRldmVsb3BtZW50LmFwcEtleSBUaGUgZGV2ZWxvcG1lbnQgYXBwS2V5LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gIGNvbmZpZy5kZXZlbG9wbWVudC5hcHBTZWNyZXQgVGhlIGRldmVsb3BtZW50IGFwcFNlY3JldC5cbiAgICogQHBhcmFtIHtvYmplY3R9ICBjb25maWcucHJvZHVjdGlvbiBUaGUgVXJiYW4gQWlyc2hpcCBwcm9kdWN0aW9uIGNvbmZpZy5cbiAgICogQHBhcmFtIHtzdHJpbmd9ICBjb25maWcucHJvZHVjdGlvbi5hcHBLZXkgVGhlIHByb2R1Y3Rpb24gYXBwS2V5LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gIGNvbmZpZy5wcm9kdWN0aW9uLmFwcFNlY3JldCBUaGUgcHJvZHVjdGlvbiBhcHBTZWNyZXQuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIHRha2VPZmYoY29uZmlnOiBhbnkpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBBbmRyb2lkIG5vdGlmaWNhdGlvbiBjb25maWcuIFZhbHVlcyBub3Qgc2V0IHdpbGwgZmFsbGJhY2sgdG8gYW55IHZhbHVlcyBzZXQgaW4gdGhlIGNvbmZpZy54bWwuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSAgY29uZmlnIFRoZSBub3RpZmljYXRpb24gY29uZmlnLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gIFtjb25maWcuaWNvbl0gVGhlIG5hbWUgb2YgdGhlIGRyYXdhYmxlIHJlc291cmNlIHRvIHVzZSBhcyB0aGUgbm90aWZpY2F0aW9uIGljb24uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSAgW2NvbmZpZy5sYXJnZUljb25dIFRoZSBuYW1lIG9mIHRoZSBkcmF3YWJsZSByZXNvdXJjZSB0byB1c2UgYXMgdGhlIG5vdGlmaWNhdGlvbiBsYXJnZSBpY29uLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gIFtjb25maWcuYWNjZW50Q29sb3JdIFRoZSBub3RpZmljYXRpb24gYWNjZW50IGNvbG9yLiBGb3JtYXQgaXMgI0FBUlJHR0JCLlxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBzZXRBbmRyb2lkTm90aWZpY2F0aW9uQ29uZmlnKGNvbmZpZzogYW55KTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgZGVmYXVsdCBiZWhhdmlvciB3aGVuIHRoZSBtZXNzYWdlIGNlbnRlciBpcyBsYXVuY2hlZCBmcm9tIGEgcHVzaFxuICAgKiBub3RpZmljYXRpb24uIElmIHNldCB0byBmYWxzZSB0aGUgbWVzc2FnZSBjZW50ZXIgbXVzdCBiZSBtYW51YWxseSBsYXVuY2hlZC5cbiAgICpcbiAgICogQHBhcmFtIHtib29sZWFufSBlbmFibGVkIHRydWUgdG8gYXV0b21hdGljYWxseSBsYXVuY2ggdGhlIGRlZmF1bHQgbWVzc2FnZSBjZW50ZXIsIGZhbHNlIHRvIGRpc2FibGUuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtzdWNjZXNzXSBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgc2V0QXV0b0xhdW5jaERlZmF1bHRNZXNzYWdlQ2VudGVyKGVuYWJsZWQ6IGJvb2xlYW4pOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmFibGVzIG9yIGRpc2FibGVzIHVzZXIgbm90aWZpY2F0aW9ucy5cbiAgICpcbiAgICogQHBhcmFtIHtib29sZWFufSBlbmFibGVkIHRydWUgdG8gZW5hYmxlIG5vdGlmaWNhdGlvbnMsIGZhbHNlIHRvIGRpc2FibGUuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtzdWNjZXNzXSBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgc2V0VXNlck5vdGlmaWNhdGlvbnNFbmFibGVkKGVuYWJsZWQ6IGJvb2xlYW4pOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdXNlciBub3RpZmljYXRpb25zIGFyZSBlbmFibGVkIG9yIG5vdC5cbiAgICpcbiAgICogQHBhcmFtIHtmdW5jdGlvbihlbmFibGVkKX0gc3VjY2VzcyBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHN1Y2Nlc3MuZW5hYmxlZCBGbGFnIGluZGljYXRpbmcgaWYgdXNlciBub3RpZmljYXRpb25zIGlzIGVuYWJsZWQgb3Igbm90LlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgaXNVc2VyTm90aWZpY2F0aW9uc0VuYWJsZWQoKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGFwcCBub3RpZmljYXRpb25zIGFyZSBlbmFibGVkIG9yIG5vdC4gSXRzIHBvc3NpYmxlIHRvIGhhdmUgYHVzZXJOb3RpZmljYXRpb25zRW5hYmxlZGBcbiAgICogYnV0IGFwcCBub3RpZmljYXRpb25zIGJlaW5nIGRpc2FibGVkIGlmIHRoZSB1c2VyIG9wdGVkIG91dCBvZiBub3RpZmljYXRpb25zLlxuICAgKlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKGVuYWJsZWQpfSBzdWNjZXNzIFN1Y2Nlc3MgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gc3VjY2Vzcy5lbmFibGVkIEZsYWcgaW5kaWNhdGluZyBpZiBhcHAgbm90aWZpY2F0aW9ucyBpcyBlbmFibGVkIG9yIG5vdC5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGlzQXBwTm90aWZpY2F0aW9uc0VuYWJsZWQoKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgY2hhbm5lbCBJRC5cbiAgICpcbiAgICogQHBhcmFtIHtmdW5jdGlvbihJRCl9IHN1Y2Nlc3MgVGhlIGZ1bmN0aW9uIHRvIGNhbGwgb24gc3VjY2Vzcy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHN1Y2Nlc3MuSUQgVGhlIGNoYW5uZWwgSUQgc3RyaW5nXG4gICAqIEBwYXJhbSB7ZmFpbHVyZUNhbGxiYWNrfSBbZmFpbHVyZV0gVGhlIGZ1bmN0aW9uIHRvIGNhbGwgb24gZmFpbHVyZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgZ2V0Q2hhbm5lbElEKCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGxhc3Qgbm90aWZpY2F0aW9uIHRoYXQgbGF1bmNoZWQgdGhlIGFwcGxpY2F0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGNsZWFyIHRydWUgdG8gY2xlYXIgdGhlIG5vdGlmaWNhdGlvbi5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihwdXNoKX0gc3VjY2VzcyBUaGUgZnVuY3Rpb24gdG8gY2FsbCBvbiBzdWNjZXNzLlxuICAgKiBAcGFyYW0ge29iamVjdH0gc3VjY2Vzcy5wdXNoIFRoZSBwdXNoIG1lc3NhZ2Ugb2JqZWN0IGNvbnRhaW5pbmcgZGF0YSBhc3NvY2lhdGVkIHdpdGggYSBwdXNoIG5vdGlmaWNhdGlvbi5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHN1Y2Nlc3MucHVzaC5tZXNzYWdlIFRoZSBwdXNoIGFsZXJ0IG1lc3NhZ2UuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBzdWNjZXNzLnB1c2guZXh0cmFzIEFueSBwdXNoIGV4dHJhcy5cbiAgICogQHBhcmFtIHtudW1iZXJ9IFtzdWNjZXNzLnB1c2gubm90aWZpY2F0aW9uX2lkXSBUaGUgQW5kcm9pZCBub3RpZmljYXRpb24gSUQuXG4gICAqIEBwYXJhbSB7ZmFpbHVyZUNhbGxiYWNrfSBbZmFpbHVyZV0gVGhlIGZ1bmN0aW9uIHRvIGNhbGwgb24gZmFpbHVyZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgZ2V0TGF1bmNoTm90aWZpY2F0aW9uKGNsZWFyOiBib29sZWFuKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgbGFzdCByZWNlaXZlZCBkZWVwIGxpbmsuXG4gICAqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gY2xlYXIgdHJ1ZSB0byBjbGVhciB0aGUgZGVlcCBsaW5rLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKHB1c2gpfSBzdWNjZXNzIFRoZSBmdW5jdGlvbiB0byBjYWxsIG9uIHN1Y2Nlc3MuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdWNjZXNzLmRlZXBMaW5rIFRoZSBkZWVwIGxpbmsuXG4gICAqIEBwYXJhbSB7ZmFpbHVyZUNhbGxiYWNrfSBbZmFpbHVyZV0gVGhlIGZ1bmN0aW9uIHRvIGNhbGwgb24gZmFpbHVyZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgZ2V0RGVlcExpbmsoY2xlYXI6IGJvb2xlYW4pOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB0YWdzIGFzIGFuIGFycmF5LlxuICAgKlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKHRhZ3MpfSBzdWNjZXNzIFRoZSBmdW5jdGlvbiB0byBjYWxsIG9uIHN1Y2Nlc3MuXG4gICAqIEBwYXJhbSB7QXJyYXl9IHN1Y2Nlc3MudGFncyBUaGUgdGFncyBhcyBhbiBhcnJheS5cbiAgICogQHBhcmFtIHtmYWlsdXJlQ2FsbGJhY2t9IFtmYWlsdXJlXSBUaGUgZnVuY3Rpb24gdG8gY2FsbCBvbiBmYWlsdXJlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmFpbHVyZS5tZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBnZXRUYWdzKCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHRhZ3MuXG4gICAqXG4gICAqIEBwYXJhbSB7QXJyYXl9IHRhZ3MgYW4gYXJyYXkgb2Ygc3RyaW5ncy5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3N1Y2Nlc3NdIFN1Y2Nlc3MgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24obWVzc2FnZSl9IFtmYWlsdXJlXSBGYWlsdXJlIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmFpbHVyZS5tZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBzZXRUYWdzKHRhZ3M6IHN0cmluZ1tdKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgYWxpYXMuXG4gICAqXG4gICAqIEBkZXByZWNhdGVkIERlcHJlY2F0ZWQgc2luY2UgNi43LjAgLSB0byBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHZlcnNpb24gb2YgdGhlIHBsdWdpbiAtIHBsZWFzZSB1c2UgZ2V0TmFtZWRVc2VyXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24oY3VycmVudEFsaWFzKX0gc3VjY2VzcyBUaGUgZnVuY3Rpb24gdG8gY2FsbCBvbiBzdWNjZXNzLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3VjY2Vzcy5jdXJyZW50QWxpYXMgVGhlIGFsaWFzIGFzIGEgc3RyaW5nLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgZ2V0QWxpYXMoKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgYWxpYXMuXG4gICAqXG4gICAqIEBkZXByZWNhdGVkIERlcHJlY2F0ZWQgc2luY2UgNi43LjAgIC0gdG8gYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSB2ZXJzaW9uIG9mIHRoZSBwbHVnaW4gLSBwbGVhc2UgdXNlIHNldE5hbWVkVXNlclxuICAgKiBAcGFyYW0ge3N0cmluZ30gYWxpYXMgc3RyaW5nXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtzdWNjZXNzXSBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgc2V0QWxpYXMoYWxpYXM6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBxdWlldCB0aW1lIGlzIGVuYWJsZWQgb3Igbm90LlxuICAgKlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKGVuYWJsZWQpfSBzdWNjZXNzIFN1Y2Nlc3MgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gc3VjY2Vzcy5lbmFibGVkIEZsYWcgaW5kaWNhdGluZyBpZiBxdWlldCB0aW1lIGlzIGVuYWJsZWQgb3Igbm90LlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgaXNRdWlldFRpbWVFbmFibGVkKCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgb3IgZGlzYWJsZXMgcXVpZXQgdGltZS5cbiAgICpcbiAgICogQHBhcmFtIHtib29sZWFufSBlbmFibGVkIHRydWUgdG8gZW5hYmxlIHF1aWV0IHRpbWUsIGZhbHNlIHRvIGRpc2FibGUuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtzdWNjZXNzXSBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgc2V0UXVpZXRUaW1lRW5hYmxlZChlbmFibGVkOiBib29sZWFuKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBkZXZpY2UgaXMgY3VycmVudGx5IGluIHF1aWV0IHRpbWUuXG4gICAqXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24oaW5RdWlldFRpbWUpfSBzdWNjZXNzIFN1Y2Nlc3MgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gc3VjY2Vzcy5pblF1aWV0VGltZSBGbGFnIGluZGljYXRpbmcgaWYgcXVpZXQgdGltZSBpcyBjdXJyZW50bHkgaW4gZWZmZWN0LlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgaXNJblF1aWV0VGltZSgpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBxdWlldCB0aW1lIGFzIGFuIG9iamVjdCB3aXRoIHRoZSBmb2xsb3dpbmc6XG4gICAqIFwic3RhcnRIb3VyXCI6IE51bWJlcixcbiAgICogXCJzdGFydE1pbnV0ZVwiOiBOdW1iZXIsXG4gICAqIFwiZW5kSG91clwiOiBOdW1iZXIsXG4gICAqIFwiZW5kTWludXRlXCI6IE51bWJlclxuICAgKlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKHF1aWV0VGltZSl9IHN1Y2Nlc3MgVGhlIGZ1bmN0aW9uIHRvIGNhbGwgb24gc3VjY2Vzcy5cbiAgICogQHBhcmFtIHtvYmplY3R9IHN1Y2Nlc3MucXVpZXRUaW1lIFRoZSBxdWlldFRpbWUgb2JqZWN0IHJlcHJlc2VudHMgYSB0aW1lc3BhbiBkdXJpbmdcbiAgICogICAgICAgIHdoaWNoIG5vdGlmaWNhdGlvbnMgc2hvdWxkIGJlIHNpbGVuY2VkLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgZ2V0UXVpZXRUaW1lKCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHF1aWV0IHRpbWUuXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBzdGFydEhvdXIgZm9yIHF1aWV0IHRpbWUuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBzdGFydE1pbnV0ZSBmb3IgcXVpZXQgdGltZS5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGVuZEhvdXIgZm9yIHF1aWV0IHRpbWUuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBlbmRNaW51dGUgZm9yIHF1aWV0IHRpbWUuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtzdWNjZXNzXSBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgc2V0UXVpZXRUaW1lKHN0YXJ0SG91cjogbnVtYmVyLCBzdGFydE1pbnV0ZTogbnVtYmVyLCBlbmRIb3VyOiBudW1iZXIsIGVuZE1pbnV0ZTogbnVtYmVyKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogRW5hYmxlcyBvciBkaXNhYmxlcyBhbmFseXRpY3MuXG4gICAqXG4gICAqIERpc2FibGluZyBhbmFseXRpY3Mgd2lsbCBkZWxldGUgYW55IGxvY2FsbHkgc3RvcmVkIGV2ZW50c1xuICAgKiBhbmQgcHJldmVudCBhbnkgZXZlbnRzIGZyb20gdXBsb2FkaW5nLiBGZWF0dXJlcyB0aGF0IGRlcGVuZCBvbiBhbmFseXRpY3MgYmVpbmdcbiAgICogZW5hYmxlZCBtYXkgbm90IHdvcmsgcHJvcGVybHkgaWYgaXQncyBkaXNhYmxlZCAocmVwb3J0cywgcmVnaW9uIHRyaWdnZXJzLFxuICAgKiBsb2NhdGlvbiBzZWdtZW50YXRpb24sIHB1c2ggdG8gbG9jYWwgdGltZSkuXG4gICAqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZW5hYmxlZCB0cnVlIHRvIGVuYWJsZSBhbmFseXRpY3MsIGZhbHNlIHRvIGRpc2FibGUuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtzdWNjZXNzXSBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgc2V0QW5hbHl0aWNzRW5hYmxlZChlbmFibGVkOiBib29sZWFuKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGFuYWx5dGljcyBpcyBlbmFibGVkIG9yIG5vdC5cbiAgICpcbiAgICogQHBhcmFtIHtmdW5jdGlvbihlbmFibGVkKX0gc3VjY2VzcyBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHN1Y2Nlc3MuZW5hYmxlZCBGbGFnIGluZGljYXRpbmcgaWYgYW5hbHl0aWNzIGlzIGVuYWJsZWQgb3Igbm90LlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgaXNBbmFseXRpY3NFbmFibGVkKCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIG5hbWVkIHVzZXIgSUQuXG4gICAqXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24obmFtZWRVc2VyKX0gc3VjY2VzcyBUaGUgZnVuY3Rpb24gdG8gY2FsbCBvbiBzdWNjZXNzLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3VjY2Vzcy5uYW1lZFVzZXIgVGhlIG5hbWVkIHVzZXIgSUQgYXMgYSBzdHJpbmcuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24obWVzc2FnZSl9IFtmYWlsdXJlXSBGYWlsdXJlIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmFpbHVyZS5tZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBnZXROYW1lZFVzZXIoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgbmFtZWQgdXNlciBJRC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVkVXNlciBpZGVudGlmaWVyIHN0cmluZy5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3N1Y2Nlc3NdIFN1Y2Nlc3MgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24obWVzc2FnZSl9IFtmYWlsdXJlXSBGYWlsdXJlIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmFpbHVyZS5tZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBzZXROYW1lZFVzZXIobmFtZWRVc2VyOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGFuIFVyYmFuIEFpcnNoaXAgYWN0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYWN0aW9uTmFtZSBhY3Rpb24gYXMgYSBzdHJpbmcuXG4gICAqIEBwYXJhbSB7Kn0gYWN0aW9uVmFsdWVcbiAgICogQHBhcmFtIHtmdW5jdGlvbihyZXN1bHQpfSBbc3VjY2Vzc10gVGhlIGZ1bmN0aW9uIHRvIGNhbGwgb24gc3VjY2Vzcy5cbiAgICogQHBhcmFtIHtvYmplY3R9IHN1Y2Nlc3MucmVzdWx0IFRoZSByZXN1bHQncyB2YWx1ZS5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIHJ1bkFjdGlvbihhY3Rpb25OYW1lOiBzdHJpbmcsIGFjdGlvblZhbHVlOiBhbnkpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGVkaXRvciB0byBtb2RpZnkgdGhlIG5hbWVkIHVzZXIgdGFnIGdyb3Vwcy5cbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSB9KVxuICBlZGl0TmFtZWRVc2VyVGFnR3JvdXBzKCk6IFRhZ0dyb3VwRWRpdG9yIHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBlZGl0b3IgdG8gbW9kaWZ5IHRoZSBjaGFubmVsIHRhZyBncm91cHMuXG4gICAqL1xuICBAQ29yZG92YSh7IHN5bmM6IHRydWUgfSlcbiAgZWRpdENoYW5uZWxUYWdHcm91cHMoKTogVGFnR3JvdXBFZGl0b3Ige1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGVkaXRvciB0byBtb2RpZnkgdGhlIGNoYW5uZWwgYXR0cmlidXRlcy5cbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSB9KVxuICBlZGl0Q2hhbm5lbEF0dHJpYnV0ZXMoKTogQXR0cmlidXRlc0VkaXRvciB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gZWRpdG9yIHRvIG1vZGlmeSB0aGUgbmFtZWQgdXNlciBhdHRyaWJ1dGVzLlxuICAgKi9cbiAgQENvcmRvdmEoeyBzeW5jOiB0cnVlIH0pXG4gIGVkaXROYW1lZFVzZXJBdHRyaWJ1dGVzKCk6IEF0dHJpYnV0ZXNFZGl0b3Ige1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGVkaXRvciB0byBtb2RpZnkgdGhlIGNoYW5uZWwgc3Vic2NyaXB0aW9uIGxpc3RzLlxuICAgKlxuICAgKiBAcmV0dXJucyB7Q2hhbm5lbFN1YnNjcmlwdGlvbkxpc3RFZGl0b3J9IEEgc3Vic2NyaXB0aW9uIGxpc3QgZWRpdG9yIGluc3RhbmNlLlxuICAgKiBAc2luY2UgMTMuMy4wXG4gICAqL1xuICBAQ29yZG92YSh7IHN5bmM6IHRydWUgfSlcbiAgZWRpdENoYW5uZWxTdWJzY3JpcHRpb25MaXN0cygpOiBDaGFubmVsU3Vic2NyaXB0aW9uTGlzdEVkaXRvciB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gZWRpdG9yIHRvIG1vZGlmeSB0aGUgY29udGFjdCBzdWJzY3JpcHRpb24gbGlzdHMuXG4gICAqXG4gICAqIEByZXR1cm5zIHtDb250YWN0U3Vic2NyaXB0aW9uTGlzdEVkaXRvcn0gQSBzdWJzY3JpcHRpb24gbGlzdCBlZGl0b3IgaW5zdGFuY2UuXG4gICAqIEBzaW5jZSAxMy4zLjBcbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSB9KVxuICBlZGl0Q29udGFjdFN1YnNjcmlwdGlvbkxpc3RzKCk6IENvbnRhY3RTdWJzY3JpcHRpb25MaXN0RWRpdG9yIHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgY3VycmVudCBzZXQgb2Ygc3Vic2NyaXB0aW9uIGxpc3RzIGZvciB0aGUgY3VycmVudCBjaGFubmVsLFxuICAgKiBvcHRpb25hbGx5IGFwcGx5aW5nIHBlbmRpbmcgc3Vic2NyaXB0aW9uIGxpc3QgY2hhbmdlcyB0aGF0IHdpbGwgYmUgYXBwbGllZCBkdXJpbmcgdGhlIG5leHQgY2hhbm5lbCB1cGRhdGUuXG4gICAqIEFuIGVtcHR5IHNldCBpbmRpY2F0ZXMgdGhhdCB0aGlzIGNvbnRhY3QgaXMgbm90IHN1YnNjcmliZWQgdG8gYW55IGxpc3RzLlxuICAgKlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbc3VjY2Vzc10gU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKHtcbiAgICBzdWNjZXNzSW5kZXg6IDEsXG4gICAgZXJyb3JJbmRleDogMixcbiAgfSlcbiAgZ2V0Q2hhbm5lbFN1YnNjcmlwdGlvbkxpc3RzKCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGN1cnJlbnQgc2V0IG9mIHN1YnNjcmlwdGlvbiBsaXN0cyBmb3IgdGhlIGN1cnJlbnQgY29udGFjdCxcbiAgICogb3B0aW9uYWxseSBhcHBseWluZyBwZW5kaW5nIHN1YnNjcmlwdGlvbiBsaXN0IGNoYW5nZXMgdGhhdCB3aWxsIGJlIGFwcGxpZWQgZHVyaW5nIHRoZSBuZXh0IGNvbnRhY3QgdXBkYXRlLlxuICAgKiBBbiBlbXB0eSBzZXQgaW5kaWNhdGVzIHRoYXQgdGhpcyBjb250YWN0IGlzIG5vdCBzdWJzY3JpYmVkIHRvIGFueSBsaXN0cy5cbiAgICpcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3N1Y2Nlc3NdIFN1Y2Nlc3MgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSh7XG4gICAgc3VjY2Vzc0luZGV4OiAxLFxuICAgIGVycm9ySW5kZXg6IDIsXG4gIH0pXG4gIGdldENvbnRhY3RTdWJzY3JpcHRpb25MaXN0cygpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIGFuIGFzc29jaWF0ZWQgaWRlbnRpZmllciBmb3IgdGhlIENvbm5lY3QgZGF0YSBzdHJlYW0uXG4gICAqXG4gICAqIEBwYXJhbSBrZXkgQ3VzdG9tIGtleSBmb3IgaWRlbnRpZmllci5cbiAgICogQHBhcmFtIGlkZW50aWZpZXIgVGhlIGlkZW50aWZpZXIgdmFsdWUuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtzdWNjZXNzXSBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgc2V0QXNzb2NpYXRlZElkZW50aWZpZXIoa2V5OiBzdHJpbmcsIGlkZW50aWZpZXI6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gTG9jYXRpb25cblxuICAvKipcbiAgICogRW5hYmxlcyBvciBkaXNhYmxlcyBVcmJhbiBBaXJzaGlwIGxvY2F0aW9uIHNlcnZpY2VzLlxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGVuYWJsZWQgdHJ1ZSB0byBlbmFibGUgbG9jYXRpb24sIGZhbHNlIHRvIGRpc2FibGUuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtzdWNjZXNzXSBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgc2V0TG9jYXRpb25FbmFibGVkKGVuYWJsZWQ6IGJvb2xlYW4pOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgbG9jYXRpb24gaXMgZW5hYmxlZCBvciBub3QuXG4gICAqXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24oZW5hYmxlZCl9IHN1Y2Nlc3MgU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtib29sZWFufSBzdWNjZXNzLmVuYWJsZWQgRmxhZyBpbmRpY2F0aW5nIGlmIGxvY2F0aW9uIGlzIGVuYWJsZWQgb3Igbm90LlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICogQGRlcHJlY2F0ZWQgcmVtb3ZlZCBpbiB2ZXJzaW9uIDguMFxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBpc0xvY2F0aW9uRW5hYmxlZCgpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmFibGVzIG9yIGRpc2FibGVzIGJhY2tncm91bmQgbG9jYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZW5hYmxlZCB0cnVlIHRvIGVuYWJsZSBiYWNrZ3JvdW5kIGxvY2F0aW9uLCBmYWxzZSB0byBkaXNhYmxlLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbc3VjY2Vzc10gU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqIEBkZXByZWNhdGVkIHJlbW92ZWQgaW4gdmVyc2lvbiA4LjBcbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgc2V0QmFja2dyb3VuZExvY2F0aW9uRW5hYmxlZChlbmFibGVkOiBib29sZWFuKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGJhY2tncm91bmQgbG9jYXRpb24gaXMgZW5hYmxlZCBvciBub3QuXG4gICAqXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24oZW5hYmxlZCl9IHN1Y2Nlc3MgU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtib29sZWFufSBzdWNjZXNzLmVuYWJsZWQgRmxhZyBpbmRpY2F0aW5nIGlmIGJhY2tncm91bmQgbG9jYXRpb24gdXBkYXRlcyBhcmUgZW5hYmxlZCBvciBub3QuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24obWVzc2FnZSl9IFtmYWlsdXJlXSBGYWlsdXJlIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmFpbHVyZS5tZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICAgKiBAZGVwcmVjYXRlZCByZW1vdmVkIGluIHZlcnNpb24gOC4wXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGlzQmFja2dyb3VuZExvY2F0aW9uRW5hYmxlZCgpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNwbGF5cyB0aGUgbWVzc2FnZSBjZW50ZXIuXG4gICAqXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtzdWNjZXNzXSBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgZGlzcGxheU1lc3NhZ2VDZW50ZXIoKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogRGlzbWlzcyB0aGUgbWVzc2FnZSBjZW50ZXIuXG4gICAqXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtzdWNjZXNzXSBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgZGlzbWlzc01lc3NhZ2VDZW50ZXIoKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogRGlzbWlzcyB0aGUgaW5ib3ggbWVzc2FnZS5cbiAgICpcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3N1Y2Nlc3NdIFN1Y2Nlc3MgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24obWVzc2FnZSl9IFtmYWlsdXJlXSBGYWlsdXJlIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmFpbHVyZS5tZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBkaXNtaXNzSW5ib3hNZXNzYWdlKCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIERpc21pc3MgdGhlIGluYm94IG1lc3NhZ2UgaW4gdGhlIG92ZXJsYXkuXG4gICAqXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtzdWNjZXNzXSBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICogQGRlcHJlY2F0ZWQgcmVtb3ZlZCBpbiB2ZXJzaW9uIDEwLjBcbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgZGlzbWlzc092ZXJsYXlJbmJveE1lc3NhZ2UoKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgYXJyYXkgb2YgaW5ib3ggbWVzc2FnZXMuIEVhY2ggbWVzc2FnZSB3aWxsIGhhdmUgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuICAgKiBcImlkXCI6IHN0cmluZyAtIFRoZSBtZXNzYWdlcyBJRC4gTmVlZGVkIHRvIGRpc3BsYXksIG1hcmsgYXMgcmVhZCwgb3IgZGVsZXRlIHRoZSBtZXNzYWdlLlxuICAgKiBcInRpdGxlXCI6IHN0cmluZyAtIFRoZSBtZXNzYWdlIHRpdGxlLlxuICAgKiBcInNlbnREYXRlXCI6IG51bWJlciAtIFRoZSBtZXNzYWdlIHNlbnQgZGF0ZSBpbiBtaWxsaXNlY29uZHMuXG4gICAqIFwibGlzdEljb25VcmxcIjogc3RyaW5nLCBvcHRpb25hbCAtIFRoZSBpY29uIHVybCBmb3IgdGhlIG1lc3NhZ2UuXG4gICAqIFwiaXNSZWFkXCI6IGJvb2xlYW4gLSBUaGUgdW5yZWFkL3JlYWQgc3RhdHVzIG9mIHRoZSBtZXNzYWdlLlxuICAgKiBcImV4dHJhc1wiOiBvYmplY3QgLSBTdHJpbmcgdG8gU3RyaW5nIG1hcCBvZiBhbnkgbWVzc2FnZSBleHRyYXMuXG4gICAqXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24obWVzc2FnZXMpfSBzdWNjZXNzIFRoZSBmdW5jdGlvbiB0byBjYWxsIG9uIHN1Y2Nlc3MuXG4gICAqIEBwYXJhbSB7QXJyYXl9IHN1Y2Nlc3MubWVzc2FnZXMgVGhlIGFycmF5IG9mIGluYm94IG1lc3NhZ2VzLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgZ2V0SW5ib3hNZXNzYWdlcygpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXJrcyBhbiBpbmJveCBtZXNzYWdlIHJlYWQuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlSWQgVGhlIElEIG9mIHRoZSBtZXNzYWdlIHRvIG1hcmsgYXMgcmVhZC5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3N1Y2Nlc3NdIFN1Y2Nlc3MgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24obWVzc2FnZSl9IFtmYWlsdXJlXSBGYWlsdXJlIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmFpbHVyZS5tZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBtYXJrSW5ib3hNZXNzYWdlUmVhZChtZXNzYWdlSWQ6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZXMgYW4gaW5ib3ggbWVzc2FnZS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2VJZCBUaGUgSUQgb2YgdGhlIG1lc3NhZ2UgdG8gZGVsZXRlLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbc3VjY2Vzc10gU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGRlbGV0ZUluYm94TWVzc2FnZShtZXNzYWdlSWQ6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIERpc3BsYXlzIHRoZSBpbmJveCBtZXNzYWdlIHVzaW5nIGEgZnVsbCBzY3JlZW4gdmlldy5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2VJZCBUaGUgSUQgb2YgdGhlIG1lc3NhZ2UgdG8gZGlzcGxheS5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3N1Y2Nlc3NdIFN1Y2Nlc3MgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24obWVzc2FnZSl9IFtmYWlsdXJlXSBGYWlsdXJlIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmFpbHVyZS5tZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBkaXNwbGF5SW5ib3hNZXNzYWdlKG1lc3NhZ2VJZDogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogRm9yY2VzIHRoZSBpbmJveCB0byByZWZyZXNoLiBUaGlzIGlzIG5vcm1hbGx5IG5vdCBuZWVkZWQgYXMgdGhlIGluYm94XG4gICAqIHdpbGwgYXV0b21hdGljYWxseSByZWZyZXNoIG9uIGZvcmVncm91bmQgb3Igd2hlbiBhIHB1c2ggYXJyaXZlcyB0aGF0c1xuICAgKiBhc3NvY2lhdGVkIHdpdGggYSBtZXNzYWdlLCBidXQgaXQgY2FuIGJlIHVzZWZ1bCB3aGVuIHByb3ZpZGluZyBhIHJlZnJlc2hcbiAgICogYnV0dG9uIGZvciB0aGUgbWVzc2FnZSBsaXN0aW5nLlxuICAgKlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbc3VjY2Vzc10gU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIHJlZnJlc2hJbmJveCgpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNwbGF5cyB0aGUgaW5ib3ggbWVzc2FnZSB1c2luZyBhbiBvdmVybGF5IGRpc3BsYXkuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlSWQgVGhlIElEIG9mIHRoZSBtZXNzYWdlIHRvIGRpc3BsYXkuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtzdWNjZXNzXSBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICogQGRlcHJlY2F0ZWQgcmVtb3ZlZCBpbiB2ZXJzaW9uIDEwLjBcbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgb3ZlcmxheUluYm94TWVzc2FnZShtZXNzYWdlSWQ6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFycyBhIG5vdGlmaWNhdGlvbiBieSBpZGVudGlmaWVyLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gaWRlbnRpZmllciBUaGUgbm90aWZpY2F0aW9uIGlkZW50aWZpZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtzdWNjZXNzXSBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgY2xlYXJOb3RpZmljYXRpb24oaWRlbnRpZmllcjogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXJzIGFsbCBub3RpZmljYXRpb25zIHBvc3RlZCBieSB0aGUgYXBwbGljYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtzdWNjZXNzXSBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgY2xlYXJOb3RpZmljYXRpb25zKCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgY3VycmVudGx5IGFjdGl2ZSBub3RpZmljYXRpb25zLlxuICAgKlxuICAgKiBOb3RlOiBPbiBBbmRyb2lkIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyBvbmx5IHN1cHBvcnRlZCBvbiBBbmRyb2lkIE0gb3IgaGlnaGVyLlxuICAgKlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2VzKX0gW3N1Y2Nlc3NdIFN1Y2Nlc3MgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24obWVzc2FnZSl9IFtmYWlsdXJlXSBGYWlsdXJlIGNhbGxiYWNrLlxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBnZXRBY3RpdmVOb3RpZmljYXRpb25zKCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gaU9TIG9ubHlcblxuICAvKipcbiAgICogRW5hYmxlcyBvciBkaXNhYmxlcyBhdXRvIGJhZGdlLiBEZWZhdWx0cyB0byBgTk9gLlxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGVuYWJsZWQgdHJ1ZSB0byBlbmFibGUgYXV0byBiYWRnZSwgZmFsc2UgdG8gZGlzYWJsZS5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3N1Y2Nlc3NdIFN1Y2Nlc3MgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24obWVzc2FnZSl9IFtmYWlsdXJlXSBGYWlsdXJlIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmFpbHVyZS5tZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBzZXRBdXRvYmFkZ2VFbmFibGVkKGVuYWJsZWQ6IGJvb2xlYW4pOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBiYWRnZSBudW1iZXIuXG4gICAqXG4gICAqIEBwYXJhbSBjb3VudCBudW1iZXIgc3BlY2lmaWVkIGJhZGdlIHRvIHNldC5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3N1Y2Nlc3NdIFN1Y2Nlc3MgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24obWVzc2FnZSl9IFtmYWlsdXJlXSBGYWlsdXJlIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmFpbHVyZS5tZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBzZXRCYWRnZU51bWJlcihjb3VudDogbnVtYmVyKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgY3VycmVudCBiYWRnZSBudW1iZXIuXG4gICAqXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24oYmFkZ2VOdW1iZXIpfSBzdWNjZXNzIFRoZSBmdW5jdGlvbiB0byBjYWxsIG9uIHN1Y2Nlc3MuXG4gICAqIEBwYXJhbSB7aW50fSBzdWNjZXNzLmJhZGdlTnVtYmVyIFRoZSBjdXJyZW50IGFwcGxpY2F0aW9uIGJhZGdlIG51bWJlci5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGdldEJhZGdlTnVtYmVyKCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFycyB0aGUgYmFkZ2UuXG4gICAqXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtzdWNjZXNzXSBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgcmVzZXRCYWRnZSgpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBpT1Mgbm90aWZpY2F0aW9uIHR5cGVzLiBTcGVjaWZ5IHRoZSBjb21iaW5hdGlvbiBvZlxuICAgKiBiYWRnZXMsIHNvdW5kIGFuZCBhbGVydHMgdGhhdCBhcmUgZGVzaXJlZC5cbiAgICpcbiAgICogQHBhcmFtIHR5cGVzIHNwZWNpZmllZCBub3RpZmljYXRpb24gdHlwZXMuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtzdWNjZXNzXSBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgc2V0Tm90aWZpY2F0aW9uVHlwZXModHlwZXM6IE5vdGlmaWNhdGlvblR5cGUpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBpT1MgcHJlc2VudGF0aW9uIG9wdGlvbnMuIFNwZWNpZnkgdGhlIGNvbWJpbmF0aW9uIG9mXG4gICAqIGJhZGdlcywgc291bmQgYW5kIGFsZXJ0cyB0aGF0IGFyZSBkZXNpcmVkLlxuICAgKlxuICAgKiBAcGFyYW0gb3B0aW9ucyB0eXBlcyBzcGVjaWZpZWQgcHJlc2VudGF0aW9uIG9wdGlvbnMuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtzdWNjZXNzXSBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgc2V0UHJlc2VudGF0aW9uT3B0aW9ucyhvcHRpb25zOiBQcmVzZW50YXRpb25PcHRpb25zKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBBbmRyb2lkIG9ubHlcblxuICAvKipcbiAgICogQ2hlY2tzIGlmIG5vdGlmaWNhdGlvbiBzb3VuZCBpcyBlbmFibGVkIG9yIG5vdC5cbiAgICpcbiAgICogQHBhcmFtIHtmdW5jdGlvbihlbmFibGVkKX0gc3VjY2VzcyBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHN1Y2Nlc3MuZW5hYmxlZCBGbGFnIGluZGljYXRpbmcgaWYgc291bmQgaXMgZW5hYmxlZCBvciBub3QuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24obWVzc2FnZSl9IFtmYWlsdXJlXSBGYWlsdXJlIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmFpbHVyZS5tZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBpc1NvdW5kRW5hYmxlZCgpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmFibGVzIG9yIGRpc2FibGVzIG5vdGlmaWNhdGlvbiBzb3VuZC5cbiAgICpcbiAgICogQHBhcmFtIHtib29sZWFufSBlbmFibGVkIHRydWUgdG8gZW5hYmxlIHNvdW5kLCBmYWxzZSB0byBkaXNhYmxlLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbc3VjY2Vzc10gU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIHNldFNvdW5kRW5hYmxlZChlbmFibGVkOiBib29sZWFuKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIG5vdGlmaWNhdGlvbiB2aWJyYXRpb24gaXMgZW5hYmxlZCBvciBub3QuXG4gICAqXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24oZW5hYmxlZCl9IHN1Y2Nlc3MgU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtib29sZWFufSBzdWNjZXNzLmVuYWJsZWQgRmxhZyBpbmRpY2F0aW5nIGlmIHZpYnJhdGlvbiBpcyBlbmFibGVkIG9yIG5vdC5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGlzVmlicmF0ZUVuYWJsZWQoKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogRW5hYmxlcyBvciBkaXNhYmxlcyBub3RpZmljYXRpb24gdmlicmF0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGVuYWJsZWQgdHJ1ZSB0byBlbmFibGUgdmlicmF0aW9uLCBmYWxzZSB0byBkaXNhYmxlLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbc3VjY2Vzc10gU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIHNldFZpYnJhdGVFbmFibGVkKGVuYWJsZWQ6IGJvb2xlYW4pOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgY3VzdG9tIGV2ZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gZXZlbnQgVGhlIGN1c3RvbSBldmVudCBvYmplY3QuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBldmVudC5uYW1lIFRoZSBldmVudCdzIG5hbWUuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbZXZlbnQudmFsdWVdIFRoZSBldmVudCdzIHZhbHVlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2V2ZW50LnRyYW5zYWN0aW9uSWRdIFRoZSBldmVudCdzIHRyYW5zYWN0aW9uIElELlxuICAgKiBAcGFyYW0ge29iamVjdH0gW2V2ZW50LnByb3BlcnRpZXNdIFRoZSBldmVudCdzIHByb3BlcnRpZXMuIE9ubHkgbnVtYmVycywgYm9vbGVhbnMsIHN0cmluZ3MsIGFuZCBhcnJheSBvZiBzdHJpbmdzIGFyZSBzdXBwb3J0ZWQuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtzdWNjZXNzXSBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgYWRkQ3VzdG9tRXZlbnQoZXZlbnQ6IG9iamVjdCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYXRlcyBzY3JlZW4gdHJhY2tpbmcgZm9yIGEgc3BlY2lmaWMgYXBwIHNjcmVlbiwgbXVzdCBiZSBjYWxsZWQgb25jZSBwZXIgdHJhY2tlZCBzY3JlZW4uXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzY3JlZW4gVGhlIHNjcmVlbidzIHN0cmluZyBpZGVudGlmaWVyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbc3VjY2Vzc10gU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqIEBzaW5jZSAxMS4wLjBcbiAgICovXG4gIEBDb3Jkb3ZhKHtcbiAgICBzdWNjZXNzSW5kZXg6IDEsXG4gICAgZXJyb3JJbmRleDogMixcbiAgfSlcbiAgdHJhY2tTY3JlZW4oc2NyZWVuOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmFibGVzIGZlYXR1cmVzLCBhZGRpbmcgdGhlbSB0byB0aGUgc2V0IG9mIGN1cnJlbnRseSBlbmFibGVkIGZlYXR1cmVzLlxuICAgKlxuICAgKiBAcGFyYW0ge0FycmF5PHN0cmluZz59IGZlYXR1cmVzIFRoZSBmZWF0dXJlcyB0byBlbmFibGUuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtzdWNjZXNzXSBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICogQHNpbmNlIDEzLjAuMFxuICAgKi9cbiAgQENvcmRvdmEoe1xuICAgIHN1Y2Nlc3NJbmRleDogMSxcbiAgICBlcnJvckluZGV4OiAyLFxuICB9KVxuICBlbmFibGVGZWF0dXJlKGZlYXR1cmVzOiBzdHJpbmdbXSk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIERpc2FibGVzIGZlYXR1cmVzLCByZW1vdmluZyB0aGVtIGZyb20gdGhlIHNldCBvZiBjdXJyZW50bHkgZW5hYmxlZCBmZWF0dXJlcy5cbiAgICpcbiAgICogQHBhcmFtIHtBcnJheTxzdHJpbmc+fSBmZWF0dXJlcyBUaGUgZmVhdHVyZXMgdG8gZGlzYWJsZS5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3N1Y2Nlc3NdIFN1Y2Nlc3MgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24obWVzc2FnZSl9IFtmYWlsdXJlXSBGYWlsdXJlIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmFpbHVyZS5tZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICAgKiBAc2luY2UgMTMuMC4wXG4gICAqL1xuICBAQ29yZG92YSh7XG4gICAgc3VjY2Vzc0luZGV4OiAxLFxuICAgIGVycm9ySW5kZXg6IDIsXG4gIH0pXG4gIGRpc2FibGVGZWF0dXJlKGZlYXR1cmVzOiBzdHJpbmdbXSk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGN1cnJlbnQgZW5hYmxlZCBmZWF0dXJlcywgcmVwbGFjaW5nIGFueSBjdXJyZW50bHkgZW5hYmxlZCBmZWF0dXJlcyB3aXRoIHRoZSBnaXZlbiBzZXQuXG4gICAqXG4gICAqIEBwYXJhbSB7QXJyYXk8c3RyaW5nPn0gZmVhdHVyZXMgVGhlIGZlYXR1cmVzIHRvIHNldCBhcyBlbmFibGVkLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbc3VjY2Vzc10gU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqIEBzaW5jZSAxMy4wLjBcbiAgICovXG4gIHNldEVuYWJsZWRGZWF0dXJlcyhmZWF0dXJlczogc3RyaW5nW10pOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBjdXJyZW50IGVuYWJsZWQgZmVhdHVyZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtzdWNjZXNzXSBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICogQHNpbmNlIDEzLjAuMFxuICAgKi9cbiAgQENvcmRvdmEoe1xuICAgIHN1Y2Nlc3NJbmRleDogMCxcbiAgICBlcnJvckluZGV4OiAxLFxuICB9KVxuICBnZXRFbmFibGVkRmVhdHVyZXMoKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGFsbCBvZiB0aGUgZ2l2ZW4gZmVhdHVyZXMgYXJlIGVuYWJsZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7QXJyYXk8c3RyaW5nPn0gZmVhdHVyZXMgVGhlIGZlYXR1cmVzIHRvIGNoZWNrLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbc3VjY2Vzc10gU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqIEBzaW5jZSAxMy4wLjBcbiAgICovXG4gIEBDb3Jkb3ZhKHtcbiAgICBzdWNjZXNzSW5kZXg6IDEsXG4gICAgZXJyb3JJbmRleDogMixcbiAgfSlcbiAgaXNGZWF0dXJlRW5hYmxlZChmZWF0dXJlczogc3RyaW5nW10pOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBjb25maWd1cmF0aW9uIG9mIHRoZSBQcmVmZXJlbmNlIENlbnRlciB3aXRoIHRoZSBnaXZlbiBJRCB0cm91Z2ggYSBjYWxsYmFjayBtZXRob2QuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwcmVmZXJlbmNlQ2VudGVySWQgVGhlIHByZWZlcmVuY2UgY2VudGVyIElELlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbc3VjY2Vzc10gU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqIEBzaW5jZSAxMy4zLjBcbiAgICovXG4gIEBDb3Jkb3ZhKHtcbiAgICBzdWNjZXNzSW5kZXg6IDEsXG4gICAgZXJyb3JJbmRleDogMixcbiAgfSlcbiAgZ2V0UHJlZmVyZW5jZUNlbnRlckNvbmZpZyhwcmVmZXJlbmNlQ2VudGVySWQ6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIE9wZW5zIHRoZSBQcmVmZXJlbmNlIENlbnRlciB3aXRoIHRoZSBnaXZlbiBwcmVmZXJlbmNlQ2VudGVySWQuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwcmVuZmVyZW5jZUNlbnRlcklkIFRoZSBwcmVmZXJlbmNlIGNlbnRlciBJRC5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3N1Y2Nlc3NdIFN1Y2Nlc3MgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24obWVzc2FnZSl9IFtmYWlsdXJlXSBGYWlsdXJlIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmFpbHVyZS5tZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICAgKiBAc2luY2UgMTMuMC4wXG4gICAqL1xuICBAQ29yZG92YSh7XG4gICAgc3VjY2Vzc0luZGV4OiAxLFxuICAgIGVycm9ySW5kZXg6IDIsXG4gIH0pXG4gIG9wZW5QcmVmZXJlbmNlQ2VudGVyKHByZW5mZXJlbmNlQ2VudGVySWQ6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG59XG4iXX0=
113
+ }
114
+ getEnabledFeatures() { return cordova(this, "getEnabledFeatures", { "successIndex": 0, "errorIndex": 1 }, arguments); }
115
+ isFeatureEnabled(features) { return cordova(this, "isFeatureEnabled", { "successIndex": 1, "errorIndex": 2 }, arguments); }
116
+ getPreferenceCenterConfig(preferenceCenterId) { return cordova(this, "getPreferenceCenterConfig", { "successIndex": 1, "errorIndex": 2 }, arguments); }
117
+ openPreferenceCenter(prenferenceCenterId) { return cordova(this, "openPreferenceCenter", { "successIndex": 1, "errorIndex": 2 }, arguments); }
118
+ }
119
+ UrbanAirShip.pluginName = "UrbanAirShip";
120
+ UrbanAirShip.plugin = "urbanairship-cordova";
121
+ UrbanAirShip.pluginRef = "window.UAirship";
122
+ UrbanAirShip.repo = "https://www.npmjs.com/package/urbanairship-cordova";
123
+ UrbanAirShip.install = "ionic cordova plugin add urbanairship-cordova";
124
+ UrbanAirShip.platforms = ["Android", "iOS"];
125
+ UrbanAirShip.decorators = [
126
+ { type: Injectable }
127
+ ];
128
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvQGF3ZXNvbWUtY29yZG92YS1wbHVnaW5zL3BsdWdpbnMvdXJiYW5haXJzaGlwL25neC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sdUNBQStDLE1BQU0sK0JBQStCLENBQUM7QUFDNUYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQXNDbEM7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQU4sSUFBWSxnQkFLWDtBQUxELFdBQVksZ0JBQWdCO0lBQzFCLHVEQUFRLENBQUE7SUFDUix5REFBUyxDQUFBO0lBQ1QseURBQVMsQ0FBQTtJQUNULHlEQUFTLENBQUE7QUFDWCxDQUFDLEVBTFcsZ0JBQWdCLEtBQWhCLGdCQUFnQixRQUszQjtBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFOLElBQVksbUJBS1g7QUFMRCxXQUFZLG1CQUFtQjtJQUM3Qiw2REFBUSxDQUFBO0lBQ1IsK0RBQVMsQ0FBQTtJQUNULCtEQUFTLENBQUE7SUFDVCwrREFBUyxDQUFBO0FBQ1gsQ0FBQyxFQUxXLG1CQUFtQixLQUFuQixtQkFBbUIsUUFLOUI7YUErQlksWUFBYSxTQUFRLDBCQUEwQjtJQWExRCxVQUFVO0lBa0JWLGNBQWM7SUFjZCxjQUFjO0lBaUJkLFdBQVc7SUFzQlgsY0FBYztJQXFCZCxvQkFBb0I7SUF1QnBCLHlCQUF5QjtJQVV6QixRQUFRO0lBc0JSLE9BQU8sQ0FBQyxNQUFXO0lBYW5CLDRCQUE0QixDQUFDLE1BQVc7SUFjeEMsaUNBQWlDLENBQUMsT0FBZ0I7SUFhbEQsMkJBQTJCLENBQUMsT0FBZ0I7SUFhNUMsMEJBQTBCO0lBYzFCLHlCQUF5QjtJQWF6QixZQUFZO0lBaUJaLHFCQUFxQixDQUFDLEtBQWM7SUFjcEMsV0FBVyxDQUFDLEtBQWM7SUFhMUIsT0FBTztJQWFQLE9BQU8sQ0FBQyxJQUFjO0lBY3RCLFFBQVE7SUFjUixRQUFRLENBQUMsS0FBYTtJQWF0QixrQkFBa0I7SUFhbEIsbUJBQW1CLENBQUMsT0FBZ0I7SUFhcEMsYUFBYTtJQWtCYixZQUFZO0lBZ0JaLFlBQVksQ0FBQyxTQUFpQixFQUFFLFdBQW1CLEVBQUUsT0FBZSxFQUFFLFNBQWlCO0lBa0J2RixtQkFBbUIsQ0FBQyxPQUFnQjtJQWFwQyxrQkFBa0I7SUFhbEIsWUFBWTtJQWFaLFlBQVksQ0FBQyxTQUFpQjtJQWU5QixTQUFTLENBQUMsVUFBa0IsRUFBRSxXQUFnQjtJQVE5QyxzQkFBc0I7SUFRdEIsb0JBQW9CO0lBUXBCLHFCQUFxQjtJQVFyQix1QkFBdUI7SUFXdkIsNEJBQTRCO0lBVzVCLDRCQUE0QjtJQWdCNUIsMkJBQTJCO0lBZ0IzQiwyQkFBMkI7SUFjM0IsdUJBQXVCLENBQUMsR0FBVyxFQUFFLFVBQWtCO0lBZXZELGtCQUFrQixDQUFDLE9BQWdCO0lBY25DLGlCQUFpQjtJQWNqQiw0QkFBNEIsQ0FBQyxPQUFnQjtJQWM3QywyQkFBMkI7SUFZM0Isb0JBQW9CO0lBWXBCLG9CQUFvQjtJQVlwQixtQkFBbUI7SUFhbkIsMEJBQTBCO0lBbUIxQixnQkFBZ0I7SUFhaEIsb0JBQW9CLENBQUMsU0FBaUI7SUFhdEMsa0JBQWtCLENBQUMsU0FBaUI7SUFhcEMsbUJBQW1CLENBQUMsU0FBaUI7SUFlckMsWUFBWTtJQWNaLG1CQUFtQixDQUFDLFNBQWlCO0lBWXJDLGlCQUFpQixDQUFDLFVBQWtCO0lBWXBDLGtCQUFrQjtJQWFsQixzQkFBc0I7SUFldEIsbUJBQW1CLENBQUMsT0FBZ0I7SUFhcEMsY0FBYyxDQUFDLEtBQWE7SUFhNUIsY0FBYztJQVlkLFVBQVU7SUFjVixvQkFBb0IsQ0FBQyxLQUF1QjtJQWM1QyxzQkFBc0IsQ0FBQyxPQUE0QjtJQWVuRCxjQUFjO0lBYWQsZUFBZSxDQUFDLE9BQWdCO0lBYWhDLGdCQUFnQjtJQWFoQixpQkFBaUIsQ0FBQyxPQUFnQjtJQWlCbEMsY0FBYyxDQUFDLEtBQWE7SUFpQjVCLFdBQVcsQ0FBQyxNQUFjO0lBaUIxQixhQUFhLENBQUMsUUFBa0I7SUFpQmhDLGNBQWMsQ0FBQyxRQUFrQjtJQUlqQzs7Ozs7Ozs7T0FRRztJQUNILGtCQUFrQixDQUFDLFFBQWtCO1FBQ25DLE9BQU87SUFDVCxDQUFDO0lBY0Qsa0JBQWtCO0lBaUJsQixnQkFBZ0IsQ0FBQyxRQUFrQjtJQWlCbkMseUJBQXlCLENBQUMsa0JBQTBCO0lBaUJwRCxvQkFBb0IsQ0FBQyxtQkFBMkI7Ozs7Ozs7OztZQTVqQ2pELFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQbHVnaW4sIENvcmRvdmEsIEF3ZXNvbWVDb3Jkb3ZhTmF0aXZlUGx1Z2luIH0gZnJvbSAnQGF3ZXNvbWUtY29yZG92YS1wbHVnaW5zL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG4vKipcbiAqIEludGVyZmFjZSBmb3IgVUFpcnNoaXAgVGFnIEVkaXRvclxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhZ0dyb3VwRWRpdG9yIHtcbiAgYWRkVGFncyh0YWdHcm91cDogc3RyaW5nLCB0YWdzOiBzdHJpbmdbXSk6IFRhZ0dyb3VwRWRpdG9yO1xuICByZW1vdmVUYWdzKHRhZ0dyb3VwOiBzdHJpbmcsIHRhZ3M6IHN0cmluZ1tdKTogVGFnR3JvdXBFZGl0b3I7XG4gIGFwcGx5KHN1Y2Nlc3M6ICgpID0+IHZvaWQsIGZhaWx1cmU6IChtZXNzYWdlOiBzdHJpbmcpID0+IHZvaWQpOiBUYWdHcm91cEVkaXRvcjtcbn1cblxuLyoqXG4gKiBJbnRlcmZhY2UgZm9yIFVBaXJzaGlwIEF0dHJpYnV0ZXMgRWRpdG9yXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXR0cmlidXRlc0VkaXRvciB7XG4gIHNldEF0dHJpYnV0ZShuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgRGF0ZSk6IEF0dHJpYnV0ZXNFZGl0b3I7XG4gIHJlbW92ZUF0dHJpYnV0ZShuYW1lOiBzdHJpbmcpOiBBdHRyaWJ1dGVzRWRpdG9yO1xuICBhcHBseShzdWNjZXNzOiAoKSA9PiB2b2lkLCBmYWlsdXJlOiAobWVzc2FnZTogc3RyaW5nKSA9PiB2b2lkKTogQXR0cmlidXRlc0VkaXRvcjtcbn1cblxuLyoqXG4gKiBJbnRlcmZhY2UgZm9yIFVBaXJzaGlwIENoYW5uZWxTdWJzY3JpcHRpb25MaXN0IEVkaXRvclxuICovXG5leHBvcnQgaW50ZXJmYWNlIENoYW5uZWxTdWJzY3JpcHRpb25MaXN0RWRpdG9yIHtcbiAgc3Vic2NyaWJlKHN1YnNjcmlwdGlvbkxpc3RJRDogc3RyaW5nKTogQ2hhbm5lbFN1YnNjcmlwdGlvbkxpc3RFZGl0b3I7XG4gIHVuc3Vic2NyaWJlKHN1YnNjcmlwdGlvbkxpc3RJRDogc3RyaW5nKTogQ2hhbm5lbFN1YnNjcmlwdGlvbkxpc3RFZGl0b3I7XG4gIGFwcGx5KHN1Y2Nlc3M6ICgpID0+IHZvaWQsIGZhaWx1cmU6IChtZXNzYWdlOiBzdHJpbmcpID0+IHZvaWQpOiBDaGFubmVsU3Vic2NyaXB0aW9uTGlzdEVkaXRvcjtcbn1cblxuLyoqXG4gKiBJbnRlcmZhY2UgZm9yIFVBaXJzaGlwIENvbnRhY3RTdWJzY3JpcHRpb25MaXN0IEVkaXRvclxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnRhY3RTdWJzY3JpcHRpb25MaXN0RWRpdG9yIHtcbiAgc3Vic2NyaWJlKHN1YnNjcmlwdGlvbkxpc3RJRDogc3RyaW5nLCBjb250YWN0U2NvcGU6ICdBUFAnIHwgJ0VNQUlMJyk6IENvbnRhY3RTdWJzY3JpcHRpb25MaXN0RWRpdG9yO1xuICB1bnN1YnNjcmliZShzdWJzY3JpcHRpb25MaXN0SUQ6IHN0cmluZywgY29udGFjdFNjb3BlOiAnQVBQJyB8ICdFTUFJTCcpOiBDb250YWN0U3Vic2NyaXB0aW9uTGlzdEVkaXRvcjtcbiAgYXBwbHkoc3VjY2VzczogKCkgPT4gdm9pZCwgZmFpbHVyZTogKG1lc3NhZ2U6IHN0cmluZykgPT4gdm9pZCk6IENvbnRhY3RTdWJzY3JpcHRpb25MaXN0RWRpdG9yO1xufVxuXG4vKipcbiAqIEVudW0gZm9yIG5vdGlmaWNhdGlvbiB0eXBlcy5cbiAqXG4gKiBAcmVhZG9ubHlcbiAqIEBlbnVtIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBlbnVtIE5vdGlmaWNhdGlvblR5cGUge1xuICBub25lID0gMCxcbiAgYmFkZ2UgPSAxLFxuICBzb3VuZCA9IDIsXG4gIGFsZXJ0ID0gNCxcbn1cblxuLyoqXG4gKiBFbnVtIGZvciBwcmVzZW50YXRpb24gb3B0aW9ucy5cbiAqXG4gKiBAcmVhZG9ubHlcbiAqIEBlbnVtIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBlbnVtIFByZXNlbnRhdGlvbk9wdGlvbnMge1xuICBub25lID0gMCxcbiAgYmFkZ2UgPSAxLFxuICBzb3VuZCA9IDIsXG4gIGFsZXJ0ID0gNCxcbn1cblxuLyoqXG4gKiBAbmFtZSBVcmJhbkFpclNoaXBcbiAqIEBkZXNjcmlwdGlvblxuICogVGhpcyBwbHVnaW4gZG9lcyBzb21ldGhpbmdcbiAqIEB1c2FnZVxuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHsgVXJiYW5BaXJTaGlwIH0gZnJvbSAnQGF3ZXNvbWUtY29yZG92YS1wbHVnaW5zL3VyYmFuYWlyc2hpcC9uZ3gnO1xuICpcbiAqXG4gKiBjb25zdHJ1Y3Rvcihwcml2YXRlIHVyYmFuQWlyU2hpcDogVXJiYW5BaXJTaGlwKSB7IH1cbiAqXG4gKiAuLi5cbiAqXG4gKlxuICogdGhpcy51cmJhbkFpclNoaXAudGFrZU9mZihjb25maWcpXG4gKiAgIC50aGVuKChyZXM6IGFueSkgPT4gY29uc29sZS5sb2cocmVzKSlcbiAqICAgLmNhdGNoKChlcnJvcjogYW55KSA9PiBjb25zb2xlLmVycm9yKGVycm9yKSk7XG4gKlxuICogYGBgXG4gKi9cbkBQbHVnaW4oe1xuICBwbHVnaW5OYW1lOiAnVXJiYW5BaXJTaGlwJyxcbiAgcGx1Z2luOiAndXJiYW5haXJzaGlwLWNvcmRvdmEnLFxuICBwbHVnaW5SZWY6ICd3aW5kb3cuVUFpcnNoaXAnLFxuICByZXBvOiAnaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvdXJiYW5haXJzaGlwLWNvcmRvdmEnLFxuICBpbnN0YWxsOiAnaW9uaWMgY29yZG92YSBwbHVnaW4gYWRkIHVyYmFuYWlyc2hpcC1jb3Jkb3ZhJyxcbiAgcGxhdGZvcm1zOiBbJ0FuZHJvaWQnLCAnaU9TJ10sXG59KVxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFVyYmFuQWlyU2hpcCBleHRlbmRzIEF3ZXNvbWVDb3Jkb3ZhTmF0aXZlUGx1Z2luIHtcbiAgLyoqXG4gICAqIEV2ZW50IGZpcmVkIHdoZW4gYSBuZXcgZGVlcCBsaW5rIGlzIHJlY2VpdmVkLlxuICAgKlxuICAgKiBAZXZlbnQgZGVlcF9saW5rXG4gICAqIEB0eXBlIHtvYmplY3R9XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbZGVlcExpbmtdIFRoZSBkZWVwIGxpbmsuXG4gICAqL1xuICBAQ29yZG92YSh7XG4gICAgZXZlbnRPYnNlcnZhYmxlOiB0cnVlLFxuICAgIGV2ZW50OiAndXJiYW5haXJzaGlwLmRlZXBfbGluaycsXG4gICAgZWxlbWVudDogJ2RvY3VtZW50JyxcbiAgfSlcbiAgb25EZWVwTGluaygpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBFdmVudCBmaXJlZCB3aGVuIGEgY2hhbm5lbCByZWdpc3RyYXRpb24gb2NjdXJzLlxuICAgKlxuICAgKiBAZXZlbnQgcmVnaXN0cmF0aW9uXG4gICAqIEB0eXBlIHtvYmplY3R9XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbY2hhbm5lbElEXSBUaGUgY2hhbm5lbCBJRC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtyZWdpc3RyYXRpb25Ub2tlbl0gVGhlIGRldmljZVRva2VuIG9uIGlPUywgYW5kIHRoZSBGQ00vQURNIHRva2VuIG9uIEFuZHJvaWQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbZXJyb3JdIEVycm9yIG1lc3NhZ2UgaWYgYW4gZXJyb3Igb2NjdXJyZWQuXG4gICAqL1xuICBAQ29yZG92YSh7XG4gICAgZXZlbnRPYnNlcnZhYmxlOiB0cnVlLFxuICAgIGV2ZW50OiAndXJiYW5haXJzaGlwLnJlZ2lzdHJhdGlvbicsXG4gICAgZWxlbWVudDogJ2RvY3VtZW50JyxcbiAgfSlcbiAgb25SZWdpc3RyYXRpb24oKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogRXZlbnQgZmlyZWQgd2hlbiB0aGUgaW5ib3ggaXMgdXBkYXRlZC5cbiAgICpcbiAgICogQGV2ZW50IGluYm94X3VwZGF0ZWRcbiAgICovXG4gIEBDb3Jkb3ZhKHtcbiAgICBldmVudE9ic2VydmFibGU6IHRydWUsXG4gICAgZXZlbnQ6ICd1cmJhbmFpcnNoaXAuaW5ib3hfdXBkYXRlZCcsXG4gICAgZWxlbWVudDogJ2RvY3VtZW50JyxcbiAgfSlcbiAgb25JbmJveFVwZGF0ZWQoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogRXZlbnQgZmlyZWQgd2hlbiB0aGUgaW5ib3ggbmVlZHMgdG8gYmUgZGlzcGxheWVkLiBUaGlzIGV2ZW50IGlzIG9ubHkgZW1pdHRlZCBpZiBhdXRvXG4gICAqIGxhdW5jaCBtZXNzYWdlIGNlbnRlciBpcyBkaXNhYmxlZC5cbiAgICpcbiAgICogQGV2ZW50IHNob3dfaW5ib3hcbiAgICogQHR5cGUge29iamVjdH1cbiAgICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlSWRdIFRoZSBvcHRpb25hbCBtZXNzYWdlIElELlxuICAgKi9cbiAgQENvcmRvdmEoe1xuICAgIGV2ZW50T2JzZXJ2YWJsZTogdHJ1ZSxcbiAgICBldmVudDogJ3VyYmFuYWlyc2hpcC5zaG93X2luYm94JyxcbiAgICBlbGVtZW50OiAnZG9jdW1lbnQnLFxuICB9KVxuICBvblNob3dJbmJveCgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBFdmVudCBmaXJlZCB3aGVuIGEgcHVzaCBpcyByZWNlaXZlZC5cbiAgICpcbiAgICogQGV2ZW50IHB1c2hcbiAgICogQHR5cGUge29iamVjdH1cbiAgICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2UgVGhlIHB1c2ggYWxlcnQgbWVzc2FnZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHRpdGxlIFRoZSBwdXNoIHRpdGxlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3VidGl0bGUgVGhlIHB1c2ggc3VidGl0bGUuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBleHRyYXMgQW55IHB1c2ggZXh0cmFzLlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXBzIFRoZSByYXcgYXBzIGRpY3Rpb25hcnkgKGlPUyBvbmx5KVxuICAgKiBAcGFyYW0ge251bWJlcn0gW25vdGlmaWNhdGlvbl9pZF0gVGhlIEFuZHJvaWQgbm90aWZpY2F0aW9uIElELiBEZXByZWNhdGVkIGluIGZhdm9yIG9mIG5vdGlmaWNhdGlvbklkLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW25vdGlmaWNhdGlvbklkXSBUaGUgbm90aWZpY2F0aW9uIElELlxuICAgKi9cbiAgQENvcmRvdmEoe1xuICAgIGV2ZW50T2JzZXJ2YWJsZTogdHJ1ZSxcbiAgICBldmVudDogJ3VyYmFuYWlyc2hpcC5wdXNoJyxcbiAgICBlbGVtZW50OiAnZG9jdW1lbnQnLFxuICB9KVxuICBvblB1c2hSZWNlaXZlZCgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBFdmVudCBmaXJlZCB3aGVuIG5vdGlmaWNhdGlvbiBvcGVuZWQuXG4gICAqXG4gICAqIEBldmVudCBub3RpZmljYXRpb25fb3BlbmVkXG4gICAqIEB0eXBlIHtvYmplY3R9XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlIFRoZSBwdXNoIGFsZXJ0IG1lc3NhZ2UuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBleHRyYXMgQW55IHB1c2ggZXh0cmFzLlxuICAgKiBAcGFyYW0ge251bWJlcn0gW25vdGlmaWNhdGlvbl9pZF0gVGhlIEFuZHJvaWQgbm90aWZpY2F0aW9uIElELiBEZXByZWNhdGVkIGluIGZhdm9yIG9mIG5vdGlmaWNhdGlvbklkLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW25vdGlmaWNhdGlvbklkXSBUaGUgbm90aWZpY2F0aW9uIElELlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2FjdGlvbklEXSBUaGUgSUQgb2YgdGhlIG5vdGlmaWNhdGlvbiBhY3Rpb24gYnV0dG9uIGlmIGF2YWlsYWJsZS5cbiAgICogQHBhcmFtIHtib29sZWFufSBpc0ZvcmVncm91bmQgV2lsbCBhbHdheXMgYmUgdHJ1ZSBpZiB0aGUgdXNlciB0YXBzIHRoZSBtYWluIG5vdGlmaWNhdGlvbi4gT3RoZXJ3aXNlIGl0cyBkZWZpbmVkIGJ5IHRoZSBub3RpZmljYXRpb24gYWN0aW9uIGJ1dHRvbi5cbiAgICovXG4gIEBDb3Jkb3ZhKHtcbiAgICBldmVudE9ic2VydmFibGU6IHRydWUsXG4gICAgZXZlbnQ6ICd1cmJhbmFpcnNoaXAubm90aWZpY2F0aW9uX29wZW5lZCcsXG4gICAgZWxlbWVudDogJ2RvY3VtZW50JyxcbiAgfSlcbiAgb25Ob3RpZmljYXRpb25PcGVuZWQoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogRXZlbnQgZmlyZWQgd2hlbiB0aGUgdXNlciBub3RpZmljYXRpb24gb3B0LWluIHN0YXR1cyBjaGFuZ2VzLlxuICAgKlxuICAgKiBAZXZlbnQgbm90aWZpY2F0aW9uX29wdF9pbl9zdGF0dXNcbiAgICogQHR5cGUge29iamVjdH1cbiAgICogQHBhcmFtIHtib29sZWFufSBvcHRJbiBJZiB0aGUgdXNlciBpcyBvcHRlZCBpbiBvciBub3QgdG8gdXNlciBub3RpZmljYXRpb25zLlxuICAgKiBAcGFyYW0ge29iamVjdH0gW2F1dGhvcml6ZWROb3RpZmljYXRpb25TZXR0aW5nc10gaU9TIG9ubHkuIEEgbWFwIG9mIGF1dGhvcml6ZWQgc2V0dGluZ3MuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gYXV0aG9yaXplZE5vdGlmaWNhdGlvblNldHRpbmdzLmFsZXJ0IElmIGFsZXJ0cyBhcmUgYXV0aG9yaXplZC5cbiAgICogQHBhcmFtIHtib29sZWFufSBhdXRob3JpemVkTm90aWZpY2F0aW9uU2V0dGluZ3Muc291bmQgSWYgc291bmRzIGFyZSBhdXRob3JpemVkLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGF1dGhvcml6ZWROb3RpZmljYXRpb25TZXR0aW5ncy5iYWRnZSBJZiBiYWRnZXMgYXJlIGF1dGhvcml6ZWQuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gYXV0aG9yaXplZE5vdGlmaWNhdGlvblNldHRpbmdzLmNhclBsYXkgSWYgY2FyIHBsYXkgaXMgYXV0aG9yaXplZC5cbiAgICogQHBhcmFtIHtib29sZWFufSBhdXRob3JpemVkTm90aWZpY2F0aW9uU2V0dGluZ3MubG9ja1NjcmVlbiBJZiB0aGUgbG9jayBzY3JlZW4gaXMgYXV0aG9yaXplZC5cbiAgICogQHBhcmFtIHtib29sZWFufSBhdXRob3JpemVkTm90aWZpY2F0aW9uU2V0dGluZ3Mubm90aWZpY2F0aW9uQ2VudGVyIElmIHRoZSBub3RpZmljYXRpb24gY2VudGVyIGlzIGF1dGhvcml6ZWQuXG4gICAqL1xuICBAQ29yZG92YSh7XG4gICAgZXZlbnRPYnNlcnZhYmxlOiB0cnVlLFxuICAgIGV2ZW50OiAndXJiYW5haXJzaGlwLm5vdGlmaWNhdGlvbl9vcHRfaW5fc3RhdHVzJyxcbiAgICBlbGVtZW50OiAnZG9jdW1lbnQnLFxuICB9KVxuICBvbk5vdGlmaWNhdGlvbk9wdEluU3RhdHVzKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlLWF0dGFjaGVzIGRvY3VtZW50IGV2ZW50IGxpc3RlbmVycyBpbiB0aGlzIHdlYnZpZXdcbiAgICovXG4gIEBDb3Jkb3ZhKHtcbiAgICBzeW5jOiB0cnVlLFxuICB9KVxuICByZWF0dGFjaCgpOiB2b2lkIHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogSW5pdGFpbGl6ZXMgVXJiYW4gQWlyc2hpcC5cbiAgICpcbiAgICogVGhlIHBsdWdpbiB3aWxsIGF1dG9tYXRpY2FsbHkgY2FsbCB0YWtlT2ZmIGR1cmluZyB0aGUgbmV4dCBhcHAgaW5pdCBpblxuICAgKiBvcmRlciB0byBwcm9wZXJseSBoYW5kbGUgaW5jb21pbmcgcHVzaC4gSWYgdGFrZU9mZiBpcyBjYWxsZWQgbXVsdGlwbGUgdGltZXNcbiAgICogaW4gYSBzZXNzaW9uLCBvciBpZiB0aGUgY29uZmlnIGlzIGRpZmZlcmVudCB0aGFuIHRoZSBwcmV2aW91cyBzZXNzc2lvbiwgdGhlXG4gICAqIG5ldyBjb25maWcgd2lsbCBub3QgYmUgdXNlZCB1bnRpbCB0aGUgbmV4dCBhcHAgc3RhcnQuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSAgY29uZmlnIFRoZSBVcmJhbiBBaXJzaGlwIGNvbmZpZy5cbiAgICogQHBhcmFtIHtzdHJpbmd9ICBjb25maWcuc2l0ZSBTZXRzIHRoZSBjbG91ZCBzaXRlLCBtdXN0IGJlIGVpdGhlciBFVSBvciBVUy5cbiAgICogQHBhcmFtIHtvYmplY3R9ICBjb25maWcuZGV2ZWxvcG1lbnQgVGhlIFVyYmFuIEFpcnNoaXAgZGV2ZWxvcG1lbnQgY29uZmlnLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gIGNvbmZpZy5kZXZlbG9wbWVudC5hcHBLZXkgVGhlIGRldmVsb3BtZW50IGFwcEtleS5cbiAgICogQHBhcmFtIHtzdHJpbmd9ICBjb25maWcuZGV2ZWxvcG1lbnQuYXBwU2VjcmV0IFRoZSBkZXZlbG9wbWVudCBhcHBTZWNyZXQuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSAgY29uZmlnLnByb2R1Y3Rpb24gVGhlIFVyYmFuIEFpcnNoaXAgcHJvZHVjdGlvbiBjb25maWcuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSAgY29uZmlnLnByb2R1Y3Rpb24uYXBwS2V5IFRoZSBwcm9kdWN0aW9uIGFwcEtleS5cbiAgICogQHBhcmFtIHtzdHJpbmd9ICBjb25maWcucHJvZHVjdGlvbi5hcHBTZWNyZXQgVGhlIHByb2R1Y3Rpb24gYXBwU2VjcmV0LlxuICAgKi9cbiAgQENvcmRvdmEoKVxuICB0YWtlT2ZmKGNvbmZpZzogYW55KTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgQW5kcm9pZCBub3RpZmljYXRpb24gY29uZmlnLiBWYWx1ZXMgbm90IHNldCB3aWxsIGZhbGxiYWNrIHRvIGFueSB2YWx1ZXMgc2V0IGluIHRoZSBjb25maWcueG1sLlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gIGNvbmZpZyBUaGUgbm90aWZpY2F0aW9uIGNvbmZpZy5cbiAgICogQHBhcmFtIHtzdHJpbmd9ICBbY29uZmlnLmljb25dIFRoZSBuYW1lIG9mIHRoZSBkcmF3YWJsZSByZXNvdXJjZSB0byB1c2UgYXMgdGhlIG5vdGlmaWNhdGlvbiBpY29uLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gIFtjb25maWcubGFyZ2VJY29uXSBUaGUgbmFtZSBvZiB0aGUgZHJhd2FibGUgcmVzb3VyY2UgdG8gdXNlIGFzIHRoZSBub3RpZmljYXRpb24gbGFyZ2UgaWNvbi5cbiAgICogQHBhcmFtIHtzdHJpbmd9ICBbY29uZmlnLmFjY2VudENvbG9yXSBUaGUgbm90aWZpY2F0aW9uIGFjY2VudCBjb2xvci4gRm9ybWF0IGlzICNBQVJSR0dCQi5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgc2V0QW5kcm9pZE5vdGlmaWNhdGlvbkNvbmZpZyhjb25maWc6IGFueSk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGRlZmF1bHQgYmVoYXZpb3Igd2hlbiB0aGUgbWVzc2FnZSBjZW50ZXIgaXMgbGF1bmNoZWQgZnJvbSBhIHB1c2hcbiAgICogbm90aWZpY2F0aW9uLiBJZiBzZXQgdG8gZmFsc2UgdGhlIG1lc3NhZ2UgY2VudGVyIG11c3QgYmUgbWFudWFsbHkgbGF1bmNoZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZW5hYmxlZCB0cnVlIHRvIGF1dG9tYXRpY2FsbHkgbGF1bmNoIHRoZSBkZWZhdWx0IG1lc3NhZ2UgY2VudGVyLCBmYWxzZSB0byBkaXNhYmxlLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbc3VjY2Vzc10gU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIHNldEF1dG9MYXVuY2hEZWZhdWx0TWVzc2FnZUNlbnRlcihlbmFibGVkOiBib29sZWFuKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogRW5hYmxlcyBvciBkaXNhYmxlcyB1c2VyIG5vdGlmaWNhdGlvbnMuXG4gICAqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZW5hYmxlZCB0cnVlIHRvIGVuYWJsZSBub3RpZmljYXRpb25zLCBmYWxzZSB0byBkaXNhYmxlLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbc3VjY2Vzc10gU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIHNldFVzZXJOb3RpZmljYXRpb25zRW5hYmxlZChlbmFibGVkOiBib29sZWFuKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHVzZXIgbm90aWZpY2F0aW9ucyBhcmUgZW5hYmxlZCBvciBub3QuXG4gICAqXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24oZW5hYmxlZCl9IHN1Y2Nlc3MgU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtib29sZWFufSBzdWNjZXNzLmVuYWJsZWQgRmxhZyBpbmRpY2F0aW5nIGlmIHVzZXIgbm90aWZpY2F0aW9ucyBpcyBlbmFibGVkIG9yIG5vdC5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGlzVXNlck5vdGlmaWNhdGlvbnNFbmFibGVkKCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBhcHAgbm90aWZpY2F0aW9ucyBhcmUgZW5hYmxlZCBvciBub3QuIEl0cyBwb3NzaWJsZSB0byBoYXZlIGB1c2VyTm90aWZpY2F0aW9uc0VuYWJsZWRgXG4gICAqIGJ1dCBhcHAgbm90aWZpY2F0aW9ucyBiZWluZyBkaXNhYmxlZCBpZiB0aGUgdXNlciBvcHRlZCBvdXQgb2Ygbm90aWZpY2F0aW9ucy5cbiAgICpcbiAgICogQHBhcmFtIHtmdW5jdGlvbihlbmFibGVkKX0gc3VjY2VzcyBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHN1Y2Nlc3MuZW5hYmxlZCBGbGFnIGluZGljYXRpbmcgaWYgYXBwIG5vdGlmaWNhdGlvbnMgaXMgZW5hYmxlZCBvciBub3QuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24obWVzc2FnZSl9IFtmYWlsdXJlXSBGYWlsdXJlIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmFpbHVyZS5tZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBpc0FwcE5vdGlmaWNhdGlvbnNFbmFibGVkKCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGNoYW5uZWwgSUQuXG4gICAqXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24oSUQpfSBzdWNjZXNzIFRoZSBmdW5jdGlvbiB0byBjYWxsIG9uIHN1Y2Nlc3MuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdWNjZXNzLklEIFRoZSBjaGFubmVsIElEIHN0cmluZ1xuICAgKiBAcGFyYW0ge2ZhaWx1cmVDYWxsYmFja30gW2ZhaWx1cmVdIFRoZSBmdW5jdGlvbiB0byBjYWxsIG9uIGZhaWx1cmUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGdldENoYW5uZWxJRCgpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBsYXN0IG5vdGlmaWNhdGlvbiB0aGF0IGxhdW5jaGVkIHRoZSBhcHBsaWNhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtib29sZWFufSBjbGVhciB0cnVlIHRvIGNsZWFyIHRoZSBub3RpZmljYXRpb24uXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24ocHVzaCl9IHN1Y2Nlc3MgVGhlIGZ1bmN0aW9uIHRvIGNhbGwgb24gc3VjY2Vzcy5cbiAgICogQHBhcmFtIHtvYmplY3R9IHN1Y2Nlc3MucHVzaCBUaGUgcHVzaCBtZXNzYWdlIG9iamVjdCBjb250YWluaW5nIGRhdGEgYXNzb2NpYXRlZCB3aXRoIGEgcHVzaCBub3RpZmljYXRpb24uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdWNjZXNzLnB1c2gubWVzc2FnZSBUaGUgcHVzaCBhbGVydCBtZXNzYWdlLlxuICAgKiBAcGFyYW0ge29iamVjdH0gc3VjY2Vzcy5wdXNoLmV4dHJhcyBBbnkgcHVzaCBleHRyYXMuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbc3VjY2Vzcy5wdXNoLm5vdGlmaWNhdGlvbl9pZF0gVGhlIEFuZHJvaWQgbm90aWZpY2F0aW9uIElELlxuICAgKiBAcGFyYW0ge2ZhaWx1cmVDYWxsYmFja30gW2ZhaWx1cmVdIFRoZSBmdW5jdGlvbiB0byBjYWxsIG9uIGZhaWx1cmUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGdldExhdW5jaE5vdGlmaWNhdGlvbihjbGVhcjogYm9vbGVhbik6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGxhc3QgcmVjZWl2ZWQgZGVlcCBsaW5rLlxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGNsZWFyIHRydWUgdG8gY2xlYXIgdGhlIGRlZXAgbGluay5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihwdXNoKX0gc3VjY2VzcyBUaGUgZnVuY3Rpb24gdG8gY2FsbCBvbiBzdWNjZXNzLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3VjY2Vzcy5kZWVwTGluayBUaGUgZGVlcCBsaW5rLlxuICAgKiBAcGFyYW0ge2ZhaWx1cmVDYWxsYmFja30gW2ZhaWx1cmVdIFRoZSBmdW5jdGlvbiB0byBjYWxsIG9uIGZhaWx1cmUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGdldERlZXBMaW5rKGNsZWFyOiBib29sZWFuKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgdGFncyBhcyBhbiBhcnJheS5cbiAgICpcbiAgICogQHBhcmFtIHtmdW5jdGlvbih0YWdzKX0gc3VjY2VzcyBUaGUgZnVuY3Rpb24gdG8gY2FsbCBvbiBzdWNjZXNzLlxuICAgKiBAcGFyYW0ge0FycmF5fSBzdWNjZXNzLnRhZ3MgVGhlIHRhZ3MgYXMgYW4gYXJyYXkuXG4gICAqIEBwYXJhbSB7ZmFpbHVyZUNhbGxiYWNrfSBbZmFpbHVyZV0gVGhlIGZ1bmN0aW9uIHRvIGNhbGwgb24gZmFpbHVyZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgZ2V0VGFncygpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB0YWdzLlxuICAgKlxuICAgKiBAcGFyYW0ge0FycmF5fSB0YWdzIGFuIGFycmF5IG9mIHN0cmluZ3MuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtzdWNjZXNzXSBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgc2V0VGFncyh0YWdzOiBzdHJpbmdbXSk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGFsaWFzLlxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCBEZXByZWNhdGVkIHNpbmNlIDYuNy4wIC0gdG8gYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSB2ZXJzaW9uIG9mIHRoZSBwbHVnaW4gLSBwbGVhc2UgdXNlIGdldE5hbWVkVXNlclxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKGN1cnJlbnRBbGlhcyl9IHN1Y2Nlc3MgVGhlIGZ1bmN0aW9uIHRvIGNhbGwgb24gc3VjY2Vzcy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHN1Y2Nlc3MuY3VycmVudEFsaWFzIFRoZSBhbGlhcyBhcyBhIHN0cmluZy5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGdldEFsaWFzKCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGFsaWFzLlxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCBEZXByZWNhdGVkIHNpbmNlIDYuNy4wICAtIHRvIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgdmVyc2lvbiBvZiB0aGUgcGx1Z2luIC0gcGxlYXNlIHVzZSBzZXROYW1lZFVzZXJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFsaWFzIHN0cmluZ1xuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbc3VjY2Vzc10gU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIHNldEFsaWFzKGFsaWFzOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgcXVpZXQgdGltZSBpcyBlbmFibGVkIG9yIG5vdC5cbiAgICpcbiAgICogQHBhcmFtIHtmdW5jdGlvbihlbmFibGVkKX0gc3VjY2VzcyBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHN1Y2Nlc3MuZW5hYmxlZCBGbGFnIGluZGljYXRpbmcgaWYgcXVpZXQgdGltZSBpcyBlbmFibGVkIG9yIG5vdC5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGlzUXVpZXRUaW1lRW5hYmxlZCgpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmFibGVzIG9yIGRpc2FibGVzIHF1aWV0IHRpbWUuXG4gICAqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZW5hYmxlZCB0cnVlIHRvIGVuYWJsZSBxdWlldCB0aW1lLCBmYWxzZSB0byBkaXNhYmxlLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbc3VjY2Vzc10gU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIHNldFF1aWV0VGltZUVuYWJsZWQoZW5hYmxlZDogYm9vbGVhbik6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGUgZGV2aWNlIGlzIGN1cnJlbnRseSBpbiBxdWlldCB0aW1lLlxuICAgKlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKGluUXVpZXRUaW1lKX0gc3VjY2VzcyBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHN1Y2Nlc3MuaW5RdWlldFRpbWUgRmxhZyBpbmRpY2F0aW5nIGlmIHF1aWV0IHRpbWUgaXMgY3VycmVudGx5IGluIGVmZmVjdC5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGlzSW5RdWlldFRpbWUoKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgcXVpZXQgdGltZSBhcyBhbiBvYmplY3Qgd2l0aCB0aGUgZm9sbG93aW5nOlxuICAgKiBcInN0YXJ0SG91clwiOiBOdW1iZXIsXG4gICAqIFwic3RhcnRNaW51dGVcIjogTnVtYmVyLFxuICAgKiBcImVuZEhvdXJcIjogTnVtYmVyLFxuICAgKiBcImVuZE1pbnV0ZVwiOiBOdW1iZXJcbiAgICpcbiAgICogQHBhcmFtIHtmdW5jdGlvbihxdWlldFRpbWUpfSBzdWNjZXNzIFRoZSBmdW5jdGlvbiB0byBjYWxsIG9uIHN1Y2Nlc3MuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBzdWNjZXNzLnF1aWV0VGltZSBUaGUgcXVpZXRUaW1lIG9iamVjdCByZXByZXNlbnRzIGEgdGltZXNwYW4gZHVyaW5nXG4gICAqICAgICAgICB3aGljaCBub3RpZmljYXRpb25zIHNob3VsZCBiZSBzaWxlbmNlZC5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGdldFF1aWV0VGltZSgpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBxdWlldCB0aW1lLlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gc3RhcnRIb3VyIGZvciBxdWlldCB0aW1lLlxuICAgKiBAcGFyYW0ge251bWJlcn0gc3RhcnRNaW51dGUgZm9yIHF1aWV0IHRpbWUuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBlbmRIb3VyIGZvciBxdWlldCB0aW1lLlxuICAgKiBAcGFyYW0ge251bWJlcn0gZW5kTWludXRlIGZvciBxdWlldCB0aW1lLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbc3VjY2Vzc10gU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIHNldFF1aWV0VGltZShzdGFydEhvdXI6IG51bWJlciwgc3RhcnRNaW51dGU6IG51bWJlciwgZW5kSG91cjogbnVtYmVyLCBlbmRNaW51dGU6IG51bWJlcik6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgb3IgZGlzYWJsZXMgYW5hbHl0aWNzLlxuICAgKlxuICAgKiBEaXNhYmxpbmcgYW5hbHl0aWNzIHdpbGwgZGVsZXRlIGFueSBsb2NhbGx5IHN0b3JlZCBldmVudHNcbiAgICogYW5kIHByZXZlbnQgYW55IGV2ZW50cyBmcm9tIHVwbG9hZGluZy4gRmVhdHVyZXMgdGhhdCBkZXBlbmQgb24gYW5hbHl0aWNzIGJlaW5nXG4gICAqIGVuYWJsZWQgbWF5IG5vdCB3b3JrIHByb3Blcmx5IGlmIGl0J3MgZGlzYWJsZWQgKHJlcG9ydHMsIHJlZ2lvbiB0cmlnZ2VycyxcbiAgICogbG9jYXRpb24gc2VnbWVudGF0aW9uLCBwdXNoIHRvIGxvY2FsIHRpbWUpLlxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGVuYWJsZWQgdHJ1ZSB0byBlbmFibGUgYW5hbHl0aWNzLCBmYWxzZSB0byBkaXNhYmxlLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbc3VjY2Vzc10gU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIHNldEFuYWx5dGljc0VuYWJsZWQoZW5hYmxlZDogYm9vbGVhbik6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBhbmFseXRpY3MgaXMgZW5hYmxlZCBvciBub3QuXG4gICAqXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24oZW5hYmxlZCl9IHN1Y2Nlc3MgU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtib29sZWFufSBzdWNjZXNzLmVuYWJsZWQgRmxhZyBpbmRpY2F0aW5nIGlmIGFuYWx5dGljcyBpcyBlbmFibGVkIG9yIG5vdC5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGlzQW5hbHl0aWNzRW5hYmxlZCgpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBuYW1lZCB1c2VyIElELlxuICAgKlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG5hbWVkVXNlcil9IHN1Y2Nlc3MgVGhlIGZ1bmN0aW9uIHRvIGNhbGwgb24gc3VjY2Vzcy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHN1Y2Nlc3MubmFtZWRVc2VyIFRoZSBuYW1lZCB1c2VyIElEIGFzIGEgc3RyaW5nLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgZ2V0TmFtZWRVc2VyKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIG5hbWVkIHVzZXIgSUQuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lZFVzZXIgaWRlbnRpZmllciBzdHJpbmcuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtzdWNjZXNzXSBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgc2V0TmFtZWRVc2VyKG5hbWVkVXNlcjogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogUnVucyBhbiBVcmJhbiBBaXJzaGlwIGFjdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFjdGlvbk5hbWUgYWN0aW9uIGFzIGEgc3RyaW5nLlxuICAgKiBAcGFyYW0geyp9IGFjdGlvblZhbHVlXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24ocmVzdWx0KX0gW3N1Y2Nlc3NdIFRoZSBmdW5jdGlvbiB0byBjYWxsIG9uIHN1Y2Nlc3MuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBzdWNjZXNzLnJlc3VsdCBUaGUgcmVzdWx0J3MgdmFsdWUuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24obWVzc2FnZSl9IFtmYWlsdXJlXSBGYWlsdXJlIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmFpbHVyZS5tZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBydW5BY3Rpb24oYWN0aW9uTmFtZTogc3RyaW5nLCBhY3Rpb25WYWx1ZTogYW55KTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBlZGl0b3IgdG8gbW9kaWZ5IHRoZSBuYW1lZCB1c2VyIHRhZyBncm91cHMuXG4gICAqL1xuICBAQ29yZG92YSh7IHN5bmM6IHRydWUgfSlcbiAgZWRpdE5hbWVkVXNlclRhZ0dyb3VwcygpOiBUYWdHcm91cEVkaXRvciB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gZWRpdG9yIHRvIG1vZGlmeSB0aGUgY2hhbm5lbCB0YWcgZ3JvdXBzLlxuICAgKi9cbiAgQENvcmRvdmEoeyBzeW5jOiB0cnVlIH0pXG4gIGVkaXRDaGFubmVsVGFnR3JvdXBzKCk6IFRhZ0dyb3VwRWRpdG9yIHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBlZGl0b3IgdG8gbW9kaWZ5IHRoZSBjaGFubmVsIGF0dHJpYnV0ZXMuXG4gICAqL1xuICBAQ29yZG92YSh7IHN5bmM6IHRydWUgfSlcbiAgZWRpdENoYW5uZWxBdHRyaWJ1dGVzKCk6IEF0dHJpYnV0ZXNFZGl0b3Ige1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGVkaXRvciB0byBtb2RpZnkgdGhlIG5hbWVkIHVzZXIgYXR0cmlidXRlcy5cbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSB9KVxuICBlZGl0TmFtZWRVc2VyQXR0cmlidXRlcygpOiBBdHRyaWJ1dGVzRWRpdG9yIHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBlZGl0b3IgdG8gbW9kaWZ5IHRoZSBjaGFubmVsIHN1YnNjcmlwdGlvbiBsaXN0cy5cbiAgICpcbiAgICogQHJldHVybnMge0NoYW5uZWxTdWJzY3JpcHRpb25MaXN0RWRpdG9yfSBBIHN1YnNjcmlwdGlvbiBsaXN0IGVkaXRvciBpbnN0YW5jZS5cbiAgICogQHNpbmNlIDEzLjMuMFxuICAgKi9cbiAgQENvcmRvdmEoeyBzeW5jOiB0cnVlIH0pXG4gIGVkaXRDaGFubmVsU3Vic2NyaXB0aW9uTGlzdHMoKTogQ2hhbm5lbFN1YnNjcmlwdGlvbkxpc3RFZGl0b3Ige1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGVkaXRvciB0byBtb2RpZnkgdGhlIGNvbnRhY3Qgc3Vic2NyaXB0aW9uIGxpc3RzLlxuICAgKlxuICAgKiBAcmV0dXJucyB7Q29udGFjdFN1YnNjcmlwdGlvbkxpc3RFZGl0b3J9IEEgc3Vic2NyaXB0aW9uIGxpc3QgZWRpdG9yIGluc3RhbmNlLlxuICAgKiBAc2luY2UgMTMuMy4wXG4gICAqL1xuICBAQ29yZG92YSh7IHN5bmM6IHRydWUgfSlcbiAgZWRpdENvbnRhY3RTdWJzY3JpcHRpb25MaXN0cygpOiBDb250YWN0U3Vic2NyaXB0aW9uTGlzdEVkaXRvciB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGN1cnJlbnQgc2V0IG9mIHN1YnNjcmlwdGlvbiBsaXN0cyBmb3IgdGhlIGN1cnJlbnQgY2hhbm5lbCxcbiAgICogb3B0aW9uYWxseSBhcHBseWluZyBwZW5kaW5nIHN1YnNjcmlwdGlvbiBsaXN0IGNoYW5nZXMgdGhhdCB3aWxsIGJlIGFwcGxpZWQgZHVyaW5nIHRoZSBuZXh0IGNoYW5uZWwgdXBkYXRlLlxuICAgKiBBbiBlbXB0eSBzZXQgaW5kaWNhdGVzIHRoYXQgdGhpcyBjb250YWN0IGlzIG5vdCBzdWJzY3JpYmVkIHRvIGFueSBsaXN0cy5cbiAgICpcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3N1Y2Nlc3NdIFN1Y2Nlc3MgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSh7XG4gICAgc3VjY2Vzc0luZGV4OiAxLFxuICAgIGVycm9ySW5kZXg6IDIsXG4gIH0pXG4gIGdldENoYW5uZWxTdWJzY3JpcHRpb25MaXN0cygpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBjdXJyZW50IHNldCBvZiBzdWJzY3JpcHRpb24gbGlzdHMgZm9yIHRoZSBjdXJyZW50IGNvbnRhY3QsXG4gICAqIG9wdGlvbmFsbHkgYXBwbHlpbmcgcGVuZGluZyBzdWJzY3JpcHRpb24gbGlzdCBjaGFuZ2VzIHRoYXQgd2lsbCBiZSBhcHBsaWVkIGR1cmluZyB0aGUgbmV4dCBjb250YWN0IHVwZGF0ZS5cbiAgICogQW4gZW1wdHkgc2V0IGluZGljYXRlcyB0aGF0IHRoaXMgY29udGFjdCBpcyBub3Qgc3Vic2NyaWJlZCB0byBhbnkgbGlzdHMuXG4gICAqXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtzdWNjZXNzXSBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmFpbHVyZS5tZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICAgKi9cbiAgQENvcmRvdmEoe1xuICAgIHN1Y2Nlc3NJbmRleDogMSxcbiAgICBlcnJvckluZGV4OiAyLFxuICB9KVxuICBnZXRDb250YWN0U3Vic2NyaXB0aW9uTGlzdHMoKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogU2V0cyBhbiBhc3NvY2lhdGVkIGlkZW50aWZpZXIgZm9yIHRoZSBDb25uZWN0IGRhdGEgc3RyZWFtLlxuICAgKlxuICAgKiBAcGFyYW0ga2V5IEN1c3RvbSBrZXkgZm9yIGlkZW50aWZpZXIuXG4gICAqIEBwYXJhbSBpZGVudGlmaWVyIFRoZSBpZGVudGlmaWVyIHZhbHVlLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbc3VjY2Vzc10gU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIHNldEFzc29jaWF0ZWRJZGVudGlmaWVyKGtleTogc3RyaW5nLCBpZGVudGlmaWVyOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIExvY2F0aW9uXG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgb3IgZGlzYWJsZXMgVXJiYW4gQWlyc2hpcCBsb2NhdGlvbiBzZXJ2aWNlcy5cbiAgICpcbiAgICogQHBhcmFtIHtib29sZWFufSBlbmFibGVkIHRydWUgdG8gZW5hYmxlIGxvY2F0aW9uLCBmYWxzZSB0byBkaXNhYmxlLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbc3VjY2Vzc10gU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIHNldExvY2F0aW9uRW5hYmxlZChlbmFibGVkOiBib29sZWFuKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGxvY2F0aW9uIGlzIGVuYWJsZWQgb3Igbm90LlxuICAgKlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKGVuYWJsZWQpfSBzdWNjZXNzIFN1Y2Nlc3MgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gc3VjY2Vzcy5lbmFibGVkIEZsYWcgaW5kaWNhdGluZyBpZiBsb2NhdGlvbiBpcyBlbmFibGVkIG9yIG5vdC5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqIEBkZXByZWNhdGVkIHJlbW92ZWQgaW4gdmVyc2lvbiA4LjBcbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgaXNMb2NhdGlvbkVuYWJsZWQoKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogRW5hYmxlcyBvciBkaXNhYmxlcyBiYWNrZ3JvdW5kIGxvY2F0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGVuYWJsZWQgdHJ1ZSB0byBlbmFibGUgYmFja2dyb3VuZCBsb2NhdGlvbiwgZmFsc2UgdG8gZGlzYWJsZS5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3N1Y2Nlc3NdIFN1Y2Nlc3MgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24obWVzc2FnZSl9IFtmYWlsdXJlXSBGYWlsdXJlIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmFpbHVyZS5tZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICAgKiBAZGVwcmVjYXRlZCByZW1vdmVkIGluIHZlcnNpb24gOC4wXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIHNldEJhY2tncm91bmRMb2NhdGlvbkVuYWJsZWQoZW5hYmxlZDogYm9vbGVhbik6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBiYWNrZ3JvdW5kIGxvY2F0aW9uIGlzIGVuYWJsZWQgb3Igbm90LlxuICAgKlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKGVuYWJsZWQpfSBzdWNjZXNzIFN1Y2Nlc3MgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gc3VjY2Vzcy5lbmFibGVkIEZsYWcgaW5kaWNhdGluZyBpZiBiYWNrZ3JvdW5kIGxvY2F0aW9uIHVwZGF0ZXMgYXJlIGVuYWJsZWQgb3Igbm90LlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICogQGRlcHJlY2F0ZWQgcmVtb3ZlZCBpbiB2ZXJzaW9uIDguMFxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBpc0JhY2tncm91bmRMb2NhdGlvbkVuYWJsZWQoKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogRGlzcGxheXMgdGhlIG1lc3NhZ2UgY2VudGVyLlxuICAgKlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbc3VjY2Vzc10gU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGRpc3BsYXlNZXNzYWdlQ2VudGVyKCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIERpc21pc3MgdGhlIG1lc3NhZ2UgY2VudGVyLlxuICAgKlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbc3VjY2Vzc10gU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGRpc21pc3NNZXNzYWdlQ2VudGVyKCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIERpc21pc3MgdGhlIGluYm94IG1lc3NhZ2UuXG4gICAqXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtzdWNjZXNzXSBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgZGlzbWlzc0luYm94TWVzc2FnZSgpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNtaXNzIHRoZSBpbmJveCBtZXNzYWdlIGluIHRoZSBvdmVybGF5LlxuICAgKlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbc3VjY2Vzc10gU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqIEBkZXByZWNhdGVkIHJlbW92ZWQgaW4gdmVyc2lvbiAxMC4wXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGRpc21pc3NPdmVybGF5SW5ib3hNZXNzYWdlKCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGFycmF5IG9mIGluYm94IG1lc3NhZ2VzLiBFYWNoIG1lc3NhZ2Ugd2lsbCBoYXZlIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAgICogXCJpZFwiOiBzdHJpbmcgLSBUaGUgbWVzc2FnZXMgSUQuIE5lZWRlZCB0byBkaXNwbGF5LCBtYXJrIGFzIHJlYWQsIG9yIGRlbGV0ZSB0aGUgbWVzc2FnZS5cbiAgICogXCJ0aXRsZVwiOiBzdHJpbmcgLSBUaGUgbWVzc2FnZSB0aXRsZS5cbiAgICogXCJzZW50RGF0ZVwiOiBudW1iZXIgLSBUaGUgbWVzc2FnZSBzZW50IGRhdGUgaW4gbWlsbGlzZWNvbmRzLlxuICAgKiBcImxpc3RJY29uVXJsXCI6IHN0cmluZywgb3B0aW9uYWwgLSBUaGUgaWNvbiB1cmwgZm9yIHRoZSBtZXNzYWdlLlxuICAgKiBcImlzUmVhZFwiOiBib29sZWFuIC0gVGhlIHVucmVhZC9yZWFkIHN0YXR1cyBvZiB0aGUgbWVzc2FnZS5cbiAgICogXCJleHRyYXNcIjogb2JqZWN0IC0gU3RyaW5nIHRvIFN0cmluZyBtYXAgb2YgYW55IG1lc3NhZ2UgZXh0cmFzLlxuICAgKlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2VzKX0gc3VjY2VzcyBUaGUgZnVuY3Rpb24gdG8gY2FsbCBvbiBzdWNjZXNzLlxuICAgKiBAcGFyYW0ge0FycmF5fSBzdWNjZXNzLm1lc3NhZ2VzIFRoZSBhcnJheSBvZiBpbmJveCBtZXNzYWdlcy5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGdldEluYm94TWVzc2FnZXMoKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogTWFya3MgYW4gaW5ib3ggbWVzc2FnZSByZWFkLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZUlkIFRoZSBJRCBvZiB0aGUgbWVzc2FnZSB0byBtYXJrIGFzIHJlYWQuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtzdWNjZXNzXSBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgbWFya0luYm94TWVzc2FnZVJlYWQobWVzc2FnZUlkOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGVzIGFuIGluYm94IG1lc3NhZ2UuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlSWQgVGhlIElEIG9mIHRoZSBtZXNzYWdlIHRvIGRlbGV0ZS5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3N1Y2Nlc3NdIFN1Y2Nlc3MgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24obWVzc2FnZSl9IFtmYWlsdXJlXSBGYWlsdXJlIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmFpbHVyZS5tZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBkZWxldGVJbmJveE1lc3NhZ2UobWVzc2FnZUlkOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNwbGF5cyB0aGUgaW5ib3ggbWVzc2FnZSB1c2luZyBhIGZ1bGwgc2NyZWVuIHZpZXcuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlSWQgVGhlIElEIG9mIHRoZSBtZXNzYWdlIHRvIGRpc3BsYXkuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtzdWNjZXNzXSBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgZGlzcGxheUluYm94TWVzc2FnZShtZXNzYWdlSWQ6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvcmNlcyB0aGUgaW5ib3ggdG8gcmVmcmVzaC4gVGhpcyBpcyBub3JtYWxseSBub3QgbmVlZGVkIGFzIHRoZSBpbmJveFxuICAgKiB3aWxsIGF1dG9tYXRpY2FsbHkgcmVmcmVzaCBvbiBmb3JlZ3JvdW5kIG9yIHdoZW4gYSBwdXNoIGFycml2ZXMgdGhhdHNcbiAgICogYXNzb2NpYXRlZCB3aXRoIGEgbWVzc2FnZSwgYnV0IGl0IGNhbiBiZSB1c2VmdWwgd2hlbiBwcm92aWRpbmcgYSByZWZyZXNoXG4gICAqIGJ1dHRvbiBmb3IgdGhlIG1lc3NhZ2UgbGlzdGluZy5cbiAgICpcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3N1Y2Nlc3NdIFN1Y2Nlc3MgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24obWVzc2FnZSl9IFtmYWlsdXJlXSBGYWlsdXJlIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmFpbHVyZS5tZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICAgKi9cbiAgQENvcmRvdmEoKVxuICByZWZyZXNoSW5ib3goKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogRGlzcGxheXMgdGhlIGluYm94IG1lc3NhZ2UgdXNpbmcgYW4gb3ZlcmxheSBkaXNwbGF5LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZUlkIFRoZSBJRCBvZiB0aGUgbWVzc2FnZSB0byBkaXNwbGF5LlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbc3VjY2Vzc10gU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqIEBkZXByZWNhdGVkIHJlbW92ZWQgaW4gdmVyc2lvbiAxMC4wXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIG92ZXJsYXlJbmJveE1lc3NhZ2UobWVzc2FnZUlkOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhcnMgYSBub3RpZmljYXRpb24gYnkgaWRlbnRpZmllci5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGlkZW50aWZpZXIgVGhlIG5vdGlmaWNhdGlvbiBpZGVudGlmaWVyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbc3VjY2Vzc10gU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGNsZWFyTm90aWZpY2F0aW9uKGlkZW50aWZpZXI6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFycyBhbGwgbm90aWZpY2F0aW9ucyBwb3N0ZWQgYnkgdGhlIGFwcGxpY2F0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbc3VjY2Vzc10gU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGNsZWFyTm90aWZpY2F0aW9ucygpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGN1cnJlbnRseSBhY3RpdmUgbm90aWZpY2F0aW9ucy5cbiAgICpcbiAgICogTm90ZTogT24gQW5kcm9pZCB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgb25seSBzdXBwb3J0ZWQgb24gQW5kcm9pZCBNIG9yIGhpZ2hlci5cbiAgICpcbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlcyl9IFtzdWNjZXNzXSBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgZ2V0QWN0aXZlTm90aWZpY2F0aW9ucygpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIGlPUyBvbmx5XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgb3IgZGlzYWJsZXMgYXV0byBiYWRnZS4gRGVmYXVsdHMgdG8gYE5PYC5cbiAgICpcbiAgICogQHBhcmFtIHtib29sZWFufSBlbmFibGVkIHRydWUgdG8gZW5hYmxlIGF1dG8gYmFkZ2UsIGZhbHNlIHRvIGRpc2FibGUuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtzdWNjZXNzXSBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgc2V0QXV0b2JhZGdlRW5hYmxlZChlbmFibGVkOiBib29sZWFuKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgYmFkZ2UgbnVtYmVyLlxuICAgKlxuICAgKiBAcGFyYW0gY291bnQgbnVtYmVyIHNwZWNpZmllZCBiYWRnZSB0byBzZXQuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtzdWNjZXNzXSBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgc2V0QmFkZ2VOdW1iZXIoY291bnQ6IG51bWJlcik6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGN1cnJlbnQgYmFkZ2UgbnVtYmVyLlxuICAgKlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKGJhZGdlTnVtYmVyKX0gc3VjY2VzcyBUaGUgZnVuY3Rpb24gdG8gY2FsbCBvbiBzdWNjZXNzLlxuICAgKiBAcGFyYW0ge2ludH0gc3VjY2Vzcy5iYWRnZU51bWJlciBUaGUgY3VycmVudCBhcHBsaWNhdGlvbiBiYWRnZSBudW1iZXIuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24obWVzc2FnZSl9IFtmYWlsdXJlXSBGYWlsdXJlIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmFpbHVyZS5tZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBnZXRCYWRnZU51bWJlcigpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhcnMgdGhlIGJhZGdlLlxuICAgKlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbc3VjY2Vzc10gU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIHJlc2V0QmFkZ2UoKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgaU9TIG5vdGlmaWNhdGlvbiB0eXBlcy4gU3BlY2lmeSB0aGUgY29tYmluYXRpb24gb2ZcbiAgICogYmFkZ2VzLCBzb3VuZCBhbmQgYWxlcnRzIHRoYXQgYXJlIGRlc2lyZWQuXG4gICAqXG4gICAqIEBwYXJhbSB0eXBlcyBzcGVjaWZpZWQgbm90aWZpY2F0aW9uIHR5cGVzLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbc3VjY2Vzc10gU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIHNldE5vdGlmaWNhdGlvblR5cGVzKHR5cGVzOiBOb3RpZmljYXRpb25UeXBlKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgaU9TIHByZXNlbnRhdGlvbiBvcHRpb25zLiBTcGVjaWZ5IHRoZSBjb21iaW5hdGlvbiBvZlxuICAgKiBiYWRnZXMsIHNvdW5kIGFuZCBhbGVydHMgdGhhdCBhcmUgZGVzaXJlZC5cbiAgICpcbiAgICogQHBhcmFtIG9wdGlvbnMgdHlwZXMgc3BlY2lmaWVkIHByZXNlbnRhdGlvbiBvcHRpb25zLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbc3VjY2Vzc10gU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIHNldFByZXNlbnRhdGlvbk9wdGlvbnMob3B0aW9uczogUHJlc2VudGF0aW9uT3B0aW9ucyk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gQW5kcm9pZCBvbmx5XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBub3RpZmljYXRpb24gc291bmQgaXMgZW5hYmxlZCBvciBub3QuXG4gICAqXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24oZW5hYmxlZCl9IHN1Y2Nlc3MgU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtib29sZWFufSBzdWNjZXNzLmVuYWJsZWQgRmxhZyBpbmRpY2F0aW5nIGlmIHNvdW5kIGlzIGVuYWJsZWQgb3Igbm90LlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgaXNTb3VuZEVuYWJsZWQoKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogRW5hYmxlcyBvciBkaXNhYmxlcyBub3RpZmljYXRpb24gc291bmQuXG4gICAqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZW5hYmxlZCB0cnVlIHRvIGVuYWJsZSBzb3VuZCwgZmFsc2UgdG8gZGlzYWJsZS5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3N1Y2Nlc3NdIFN1Y2Nlc3MgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24obWVzc2FnZSl9IFtmYWlsdXJlXSBGYWlsdXJlIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmFpbHVyZS5tZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBzZXRTb3VuZEVuYWJsZWQoZW5hYmxlZDogYm9vbGVhbik6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBub3RpZmljYXRpb24gdmlicmF0aW9uIGlzIGVuYWJsZWQgb3Igbm90LlxuICAgKlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKGVuYWJsZWQpfSBzdWNjZXNzIFN1Y2Nlc3MgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gc3VjY2Vzcy5lbmFibGVkIEZsYWcgaW5kaWNhdGluZyBpZiB2aWJyYXRpb24gaXMgZW5hYmxlZCBvciBub3QuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24obWVzc2FnZSl9IFtmYWlsdXJlXSBGYWlsdXJlIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmFpbHVyZS5tZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBpc1ZpYnJhdGVFbmFibGVkKCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgb3IgZGlzYWJsZXMgbm90aWZpY2F0aW9uIHZpYnJhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtib29sZWFufSBlbmFibGVkIHRydWUgdG8gZW5hYmxlIHZpYnJhdGlvbiwgZmFsc2UgdG8gZGlzYWJsZS5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3N1Y2Nlc3NdIFN1Y2Nlc3MgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24obWVzc2FnZSl9IFtmYWlsdXJlXSBGYWlsdXJlIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmFpbHVyZS5tZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBzZXRWaWJyYXRlRW5hYmxlZChlbmFibGVkOiBib29sZWFuKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIGN1c3RvbSBldmVudC5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGV2ZW50IFRoZSBjdXN0b20gZXZlbnQgb2JqZWN0LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZXZlbnQubmFtZSBUaGUgZXZlbnQncyBuYW1lLlxuICAgKiBAcGFyYW0ge251bWJlcn0gW2V2ZW50LnZhbHVlXSBUaGUgZXZlbnQncyB2YWx1ZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtldmVudC50cmFuc2FjdGlvbklkXSBUaGUgZXZlbnQncyB0cmFuc2FjdGlvbiBJRC5cbiAgICogQHBhcmFtIHtvYmplY3R9IFtldmVudC5wcm9wZXJ0aWVzXSBUaGUgZXZlbnQncyBwcm9wZXJ0aWVzLiBPbmx5IG51bWJlcnMsIGJvb2xlYW5zLCBzdHJpbmdzLCBhbmQgYXJyYXkgb2Ygc3RyaW5ncyBhcmUgc3VwcG9ydGVkLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbc3VjY2Vzc10gU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGFkZEN1c3RvbUV2ZW50KGV2ZW50OiBvYmplY3QpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWF0ZXMgc2NyZWVuIHRyYWNraW5nIGZvciBhIHNwZWNpZmljIGFwcCBzY3JlZW4sIG11c3QgYmUgY2FsbGVkIG9uY2UgcGVyIHRyYWNrZWQgc2NyZWVuLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2NyZWVuIFRoZSBzY3JlZW4ncyBzdHJpbmcgaWRlbnRpZmllci5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3N1Y2Nlc3NdIFN1Y2Nlc3MgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24obWVzc2FnZSl9IFtmYWlsdXJlXSBGYWlsdXJlIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmFpbHVyZS5tZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICAgKiBAc2luY2UgMTEuMC4wXG4gICAqL1xuICBAQ29yZG92YSh7XG4gICAgc3VjY2Vzc0luZGV4OiAxLFxuICAgIGVycm9ySW5kZXg6IDIsXG4gIH0pXG4gIHRyYWNrU2NyZWVuKHNjcmVlbjogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogRW5hYmxlcyBmZWF0dXJlcywgYWRkaW5nIHRoZW0gdG8gdGhlIHNldCBvZiBjdXJyZW50bHkgZW5hYmxlZCBmZWF0dXJlcy5cbiAgICpcbiAgICogQHBhcmFtIHtBcnJheTxzdHJpbmc+fSBmZWF0dXJlcyBUaGUgZmVhdHVyZXMgdG8gZW5hYmxlLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbc3VjY2Vzc10gU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqIEBzaW5jZSAxMy4wLjBcbiAgICovXG4gIEBDb3Jkb3ZhKHtcbiAgICBzdWNjZXNzSW5kZXg6IDEsXG4gICAgZXJyb3JJbmRleDogMixcbiAgfSlcbiAgZW5hYmxlRmVhdHVyZShmZWF0dXJlczogc3RyaW5nW10pOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNhYmxlcyBmZWF0dXJlcywgcmVtb3ZpbmcgdGhlbSBmcm9tIHRoZSBzZXQgb2YgY3VycmVudGx5IGVuYWJsZWQgZmVhdHVyZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7QXJyYXk8c3RyaW5nPn0gZmVhdHVyZXMgVGhlIGZlYXR1cmVzIHRvIGRpc2FibGUuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtzdWNjZXNzXSBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICogQHNpbmNlIDEzLjAuMFxuICAgKi9cbiAgQENvcmRvdmEoe1xuICAgIHN1Y2Nlc3NJbmRleDogMSxcbiAgICBlcnJvckluZGV4OiAyLFxuICB9KVxuICBkaXNhYmxlRmVhdHVyZShmZWF0dXJlczogc3RyaW5nW10pOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBjdXJyZW50IGVuYWJsZWQgZmVhdHVyZXMsIHJlcGxhY2luZyBhbnkgY3VycmVudGx5IGVuYWJsZWQgZmVhdHVyZXMgd2l0aCB0aGUgZ2l2ZW4gc2V0LlxuICAgKlxuICAgKiBAcGFyYW0ge0FycmF5PHN0cmluZz59IGZlYXR1cmVzIFRoZSBmZWF0dXJlcyB0byBzZXQgYXMgZW5hYmxlZC5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3N1Y2Nlc3NdIFN1Y2Nlc3MgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24obWVzc2FnZSl9IFtmYWlsdXJlXSBGYWlsdXJlIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmFpbHVyZS5tZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICAgKiBAc2luY2UgMTMuMC4wXG4gICAqL1xuICBzZXRFbmFibGVkRmVhdHVyZXMoZmVhdHVyZXM6IHN0cmluZ1tdKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgY3VycmVudCBlbmFibGVkIGZlYXR1cmVzLlxuICAgKlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbc3VjY2Vzc10gU3VjY2VzcyBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtmdW5jdGlvbihtZXNzYWdlKX0gW2ZhaWx1cmVdIEZhaWx1cmUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYWlsdXJlLm1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqIEBzaW5jZSAxMy4wLjBcbiAgICovXG4gIEBDb3Jkb3ZhKHtcbiAgICBzdWNjZXNzSW5kZXg6IDAsXG4gICAgZXJyb3JJbmRleDogMSxcbiAgfSlcbiAgZ2V0RW5hYmxlZEZlYXR1cmVzKCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBhbGwgb2YgdGhlIGdpdmVuIGZlYXR1cmVzIGFyZSBlbmFibGVkLlxuICAgKlxuICAgKiBAcGFyYW0ge0FycmF5PHN0cmluZz59IGZlYXR1cmVzIFRoZSBmZWF0dXJlcyB0byBjaGVjay5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3N1Y2Nlc3NdIFN1Y2Nlc3MgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24obWVzc2FnZSl9IFtmYWlsdXJlXSBGYWlsdXJlIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmFpbHVyZS5tZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICAgKiBAc2luY2UgMTMuMC4wXG4gICAqL1xuICBAQ29yZG92YSh7XG4gICAgc3VjY2Vzc0luZGV4OiAxLFxuICAgIGVycm9ySW5kZXg6IDIsXG4gIH0pXG4gIGlzRmVhdHVyZUVuYWJsZWQoZmVhdHVyZXM6IHN0cmluZ1tdKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgY29uZmlndXJhdGlvbiBvZiB0aGUgUHJlZmVyZW5jZSBDZW50ZXIgd2l0aCB0aGUgZ2l2ZW4gSUQgdHJvdWdoIGEgY2FsbGJhY2sgbWV0aG9kLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcHJlZmVyZW5jZUNlbnRlcklkIFRoZSBwcmVmZXJlbmNlIGNlbnRlciBJRC5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3N1Y2Nlc3NdIFN1Y2Nlc3MgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24obWVzc2FnZSl9IFtmYWlsdXJlXSBGYWlsdXJlIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmFpbHVyZS5tZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICAgKiBAc2luY2UgMTMuMy4wXG4gICAqL1xuICBAQ29yZG92YSh7XG4gICAgc3VjY2Vzc0luZGV4OiAxLFxuICAgIGVycm9ySW5kZXg6IDIsXG4gIH0pXG4gIGdldFByZWZlcmVuY2VDZW50ZXJDb25maWcocHJlZmVyZW5jZUNlbnRlcklkOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBPcGVucyB0aGUgUHJlZmVyZW5jZSBDZW50ZXIgd2l0aCB0aGUgZ2l2ZW4gcHJlZmVyZW5jZUNlbnRlcklkLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcHJlbmZlcmVuY2VDZW50ZXJJZCBUaGUgcHJlZmVyZW5jZSBjZW50ZXIgSUQuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtzdWNjZXNzXSBTdWNjZXNzIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKG1lc3NhZ2UpfSBbZmFpbHVyZV0gRmFpbHVyZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGZhaWx1cmUubWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICogQHNpbmNlIDEzLjAuMFxuICAgKi9cbiAgQENvcmRvdmEoe1xuICAgIHN1Y2Nlc3NJbmRleDogMSxcbiAgICBlcnJvckluZGV4OiAyLFxuICB9KVxuICBvcGVuUHJlZmVyZW5jZUNlbnRlcihwcmVuZmVyZW5jZUNlbnRlcklkOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxufVxuIl19
package/ngx/package.json CHANGED
@@ -1 +1 @@
1
- {"description":"Awesome Cordova Plugins - Native plugins for ionic apps","main":"bundle.js","module":"index.js","typings":"index.d.ts","author":"ionic","license":"MIT","repository":{"type":"git","url":"https://github.com/danielsogl/awesome-cordova-plugins.git"},"name":"@awesome-cordova-plugins/urbanairship","dependencies":{"@types/cordova":"latest"},"peerDependencies":{"rxjs":"^5.5.0 || ^6.5.0 || ^7.3.0","@awesome-cordova-plugins/core":"^5.1.0"},"version":"5.43.0"}
1
+ {"description":"Awesome Cordova Plugins - Native plugins for ionic apps","main":"bundle.js","module":"index.js","typings":"index.d.ts","author":"Daniel Sogl","license":"MIT","repository":{"type":"git","url":"https://github.com/danielsogl/awesome-cordova-plugins.git"},"name":"@awesome-cordova-plugins/urbanairship","dependencies":{"@types/cordova":"latest"},"peerDependencies":{"rxjs":"^5.5.0 || ^6.5.0 || ^7.3.0","@awesome-cordova-plugins/core":"^5.1.0"},"version":"6.0.0-alpha.0"}
package/package.json CHANGED
@@ -1 +1 @@
1
- {"description":"Awesome Cordova Plugins - Native plugins for ionic apps","main":"bundle.js","module":"index.js","typings":"index.d.ts","author":"ionic","license":"MIT","repository":{"type":"git","url":"https://github.com/danielsogl/awesome-cordova-plugins.git"},"name":"@awesome-cordova-plugins/urbanairship","dependencies":{"@types/cordova":"latest"},"peerDependencies":{"rxjs":"^5.5.0 || ^6.5.0 || ^7.3.0","@awesome-cordova-plugins/core":"^5.1.0"},"version":"5.43.0"}
1
+ {"description":"Awesome Cordova Plugins - Native plugins for ionic apps","main":"bundle.js","module":"index.js","typings":"index.d.ts","author":"Daniel Sogl","license":"MIT","repository":{"type":"git","url":"https://github.com/danielsogl/awesome-cordova-plugins.git"},"name":"@awesome-cordova-plugins/urbanairship","dependencies":{"@types/cordova":"latest"},"peerDependencies":{"rxjs":"^5.5.0 || ^6.5.0 || ^7.3.0","@awesome-cordova-plugins/core":"^5.1.0"},"version":"6.0.0-alpha.0"}