angular-toolbox 0.11.1 → 0.11.3

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.
Files changed (22) hide show
  1. package/README.md +1 -1
  2. package/esm2022/lib/framework/mock/http/util/fetch-client-response-type.enum.mjs +5 -1
  3. package/esm2022/lib/framework/mock/http/util/fetch-client.builder.mjs +3 -2
  4. package/esm2022/lib/model/business/mock/http/config/http-mock-production-policy.enum.mjs +27 -0
  5. package/esm2022/lib/model/business/mock/http/config/http-mocking-framework-config.mjs +9 -0
  6. package/esm2022/lib/model/business/mock/http/config/http-mocking-framework-config.provider.mjs +33 -0
  7. package/esm2022/lib/model/business/mock/http/config/index.mjs +4 -0
  8. package/esm2022/lib/model/business/mock/http/index.mjs +2 -1
  9. package/esm2022/lib/model/service/mock/http/http-mock.service.mjs +45 -6
  10. package/esm2022/lib/model/service/version/angular-toolbox-version.service.mjs +3 -3
  11. package/esm2022/lib/util/http-mocking-framework-config.manager.mjs +129 -0
  12. package/fesm2022/angular-toolbox.mjs +243 -9
  13. package/fesm2022/angular-toolbox.mjs.map +1 -1
  14. package/lib/framework/mock/http/util/fetch-client-response-type.enum.d.ts +5 -1
  15. package/lib/model/business/mock/http/config/http-mock-production-policy.enum.d.ts +24 -0
  16. package/lib/model/business/mock/http/config/http-mocking-framework-config.d.ts +21 -0
  17. package/lib/model/business/mock/http/config/http-mocking-framework-config.provider.d.ts +21 -0
  18. package/lib/model/business/mock/http/config/index.d.ts +3 -0
  19. package/lib/model/business/mock/http/index.d.ts +1 -0
  20. package/lib/model/service/mock/http/http-mock.service.d.ts +35 -2
  21. package/lib/util/http-mocking-framework-config.manager.d.ts +66 -0
  22. package/package.json +1 -1
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  A library that provides useful tools for Angular apps development.
4
4
 
5
- [![Angular Toolbox version](https://img.shields.io/badge/Angular%20Toolbox-beta:.0.11.1-%231E90FF.svg)]()
5
+ [![Angular Toolbox version](https://img.shields.io/badge/Angular%20Toolbox-beta:.0.11.3-%231E90FF.svg)]()
6
6
 
7
7
  ## License
8
8
 
@@ -32,5 +32,9 @@ export var FetchClientResponseType;
32
32
  * The response is always decoded using UTF-8.
33
33
  */
34
34
  FetchClientResponseType["TEXT"] = "text";
35
+ /**
36
+ * Allows to return the response as a promise that resolves with a `Response` object.
37
+ */
38
+ FetchClientResponseType["RESPONSE"] = "response";
35
39
  })(FetchClientResponseType || (FetchClientResponseType = {}));
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmV0Y2gtY2xpZW50LXJlc3BvbnNlLXR5cGUuZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdG9vbGJveC9zcmMvbGliL2ZyYW1ld29yay9tb2NrL2h0dHAvdXRpbC9mZXRjaC1jbGllbnQtcmVzcG9uc2UtdHlwZS5lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVIOzs7R0FHRztBQUNILE1BQU0sQ0FBTixJQUFZLHVCQTJCWDtBQTNCRCxXQUFZLHVCQUF1QjtJQUUvQjs7T0FFRztJQUNILHVEQUE0QixDQUFBO0lBRTVCOztPQUVHO0lBQ0gsd0NBQWEsQ0FBQTtJQUViOztPQUVHO0lBQ0gsaURBQXNCLENBQUE7SUFFdEI7O09BRUc7SUFDSCx3Q0FBYSxDQUFBO0lBRWI7OztPQUdHO0lBQ0gsd0NBQWEsQ0FBQTtBQUNqQixDQUFDLEVBM0JXLHVCQUF1QixLQUF2Qix1QkFBdUIsUUEyQmxDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIEBsaWNlbnNlXHJcbiAqIENvcHlyaWdodCBQYXNjYWwgRUNIRU1BTk4uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXHJcbiAqXHJcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlIGZvdW5kIGluXHJcbiAqIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9wYXNjYWxlY2hlbWFubi5jb20vYW5ndWxhci10b29sYm94L3Jlc291cmNlcy9saWNlbnNlXHJcbiAqL1xyXG5cclxuLyoqXHJcbiAqIERlZmluZXMgdGhlIHBvc3NpYmxlIHZhbHVlcyBmb3IgdGhlIGByZXNwb25zZVR5cGVgIHByb3BlcnR5IG9mIHRoZVxyXG4gKiBgRmV0Y2hDbGllbnRCdWlsZGVyLmJ1aWxkRmV0Y2hDbGllbnQoKWAgbWV0aG9kLlxyXG4gKi9cclxuZXhwb3J0IGVudW0gRmV0Y2hDbGllbnRSZXNwb25zZVR5cGUge1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWxsb3dzIHRvIHJldHVybiB0aGUgcmVzcG9uc2UgYXMgYSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCBhbiBgQXJyYXlCdWZmZXJgLlxyXG4gICAgICovXHJcbiAgICBBUlJBWV9CVUZGRVIgPSBcImFycmF5QnVmZmVyXCIsXHJcbiAgICBcclxuICAgIC8qKlxyXG4gICAgICogQWxsb3dzIHRvIHJldHVybiB0aGUgcmVzcG9uc2UgYXMgYSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCBhIGBCbG9iYC5cclxuICAgICAqL1xyXG4gICAgQkxPQiA9IFwiYmxvYlwiLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWxsb3dzIHRvIHJldHVybiB0aGUgcmVzcG9uc2UgYXMgYSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCBhIGBGb3JtRGF0YWAgb2JqZWN0LlxyXG4gICAgICovXHJcbiAgICBGT1JNX0RBVEEgPSBcImZvcm1EYXRhXCIsXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBbGxvd3MgdG8gcmV0dXJuIHRoZSByZXNwb25zZSBhcyBhIHByb21pc2Ugd2hpY2ggcmVzb2x2ZXMgd2l0aCB0aGUgcmVzdWx0IG9mIHBhcnNpbmcgdGhlIGJvZHkgdGV4dCBhcyBKU09OLlxyXG4gICAgICovXHJcbiAgICBKU09OID0gXCJqc29uXCIsXHJcbiAgICBcclxuICAgIC8qKlxyXG4gICAgICogQWxsb3dzIHRvIHJldHVybiB0aGUgcmVzcG9uc2UgYXMgYSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCBhIGBTdHJpbmdgLlxyXG4gICAgICogVGhlIHJlc3BvbnNlIGlzIGFsd2F5cyBkZWNvZGVkIHVzaW5nIFVURi04LlxyXG4gICAgICovXHJcbiAgICBURVhUID0gXCJ0ZXh0XCJcclxufVxyXG4iXX0=
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmV0Y2gtY2xpZW50LXJlc3BvbnNlLXR5cGUuZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdG9vbGJveC9zcmMvbGliL2ZyYW1ld29yay9tb2NrL2h0dHAvdXRpbC9mZXRjaC1jbGllbnQtcmVzcG9uc2UtdHlwZS5lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVIOzs7R0FHRztBQUNILE1BQU0sQ0FBTixJQUFZLHVCQWdDWDtBQWhDRCxXQUFZLHVCQUF1QjtJQUUvQjs7T0FFRztJQUNILHVEQUE0QixDQUFBO0lBRTVCOztPQUVHO0lBQ0gsd0NBQWEsQ0FBQTtJQUViOztPQUVHO0lBQ0gsaURBQXNCLENBQUE7SUFFdEI7O09BRUc7SUFDSCx3Q0FBYSxDQUFBO0lBRWI7OztPQUdHO0lBQ0gsd0NBQWEsQ0FBQTtJQUViOztPQUVHO0lBQ0gsZ0RBQXFCLENBQUE7QUFDekIsQ0FBQyxFQWhDVyx1QkFBdUIsS0FBdkIsdUJBQXVCLFFBZ0NsQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBAbGljZW5zZVxyXG4gKiBDb3B5cmlnaHQgUGFzY2FsIEVDSEVNQU5OLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxyXG4gKlxyXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZSBmb3VuZCBpblxyXG4gKiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vcGFzY2FsZWNoZW1hbm4uY29tL2FuZ3VsYXItdG9vbGJveC9yZXNvdXJjZXMvbGljZW5zZVxyXG4gKi9cclxuXHJcbi8qKlxyXG4gKiBEZWZpbmVzIHRoZSBwb3NzaWJsZSB2YWx1ZXMgZm9yIHRoZSBgcmVzcG9uc2VUeXBlYCBwcm9wZXJ0eSBvZiB0aGVcclxuICogYEZldGNoQ2xpZW50QnVpbGRlci5idWlsZEZldGNoQ2xpZW50KClgIG1ldGhvZC5cclxuICovXHJcbmV4cG9ydCBlbnVtIEZldGNoQ2xpZW50UmVzcG9uc2VUeXBlIHtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEFsbG93cyB0byByZXR1cm4gdGhlIHJlc3BvbnNlIGFzIGEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggYW4gYEFycmF5QnVmZmVyYC5cclxuICAgICAqL1xyXG4gICAgQVJSQVlfQlVGRkVSID0gXCJhcnJheUJ1ZmZlclwiLFxyXG4gICAgXHJcbiAgICAvKipcclxuICAgICAqIEFsbG93cyB0byByZXR1cm4gdGhlIHJlc3BvbnNlIGFzIGEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggYSBgQmxvYmAuXHJcbiAgICAgKi9cclxuICAgIEJMT0IgPSBcImJsb2JcIixcclxuXHJcbiAgICAvKipcclxuICAgICAqIEFsbG93cyB0byByZXR1cm4gdGhlIHJlc3BvbnNlIGFzIGEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggYSBgRm9ybURhdGFgIG9iamVjdC5cclxuICAgICAqL1xyXG4gICAgRk9STV9EQVRBID0gXCJmb3JtRGF0YVwiLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWxsb3dzIHRvIHJldHVybiB0aGUgcmVzcG9uc2UgYXMgYSBwcm9taXNlIHdoaWNoIHJlc29sdmVzIHdpdGggdGhlIHJlc3VsdCBvZiBwYXJzaW5nIHRoZSBib2R5IHRleHQgYXMgSlNPTi5cclxuICAgICAqL1xyXG4gICAgSlNPTiA9IFwianNvblwiLFxyXG4gICAgXHJcbiAgICAvKipcclxuICAgICAqIEFsbG93cyB0byByZXR1cm4gdGhlIHJlc3BvbnNlIGFzIGEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggYSBgU3RyaW5nYC5cclxuICAgICAqIFRoZSByZXNwb25zZSBpcyBhbHdheXMgZGVjb2RlZCB1c2luZyBVVEYtOC5cclxuICAgICAqL1xyXG4gICAgVEVYVCA9IFwidGV4dFwiLFxyXG4gICAgICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBBbGxvd3MgdG8gcmV0dXJuIHRoZSByZXNwb25zZSBhcyBhIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIGEgYFJlc3BvbnNlYCBvYmplY3QuXHJcbiAgICAgKi9cclxuICAgIFJFU1BPTlNFID0gXCJyZXNwb25zZVwiXHJcbn1cclxuIl19
@@ -23,8 +23,9 @@ export class FetchClientBuilder {
23
23
  */
24
24
  static buildFetchClient(input, init = null, responseType = FetchClientResponseType.JSON) {
25
25
  return from(fetch(input, init || undefined).then((response) => {
26
+ const rspType = responseType;
26
27
  if (response.ok)
27
- return FetchClientBuilder.buildResponseStrategy(response, responseType);
28
+ return rspType !== FetchClientResponseType.RESPONSE ? FetchClientBuilder.buildResponseStrategy(response, rspType) : response;
28
29
  throw new HttpErrorResponse({
29
30
  status: response.status,
30
31
  statusText: response.statusText
@@ -48,4 +49,4 @@ export class FetchClientBuilder {
48
49
  return response.json();
49
50
  }
50
51
  }
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmV0Y2gtY2xpZW50LmJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXRvb2xib3gvc3JjL2xpYi9mcmFtZXdvcmsvbW9jay9odHRwL3V0aWwvZmV0Y2gtY2xpZW50LmJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFekQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1QixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUU1RTs7R0FFRztBQUNILE1BQU0sT0FBTyxrQkFBa0I7SUFFM0I7Ozs7Ozs7O09BUUc7SUFDSSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsS0FBd0IsRUFBRSxPQUEyQixJQUFJLEVBQUUsZUFBd0MsdUJBQXVCLENBQUMsSUFBSTtRQUMxSixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLElBQUksSUFBSSxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFrQixFQUFFLEVBQUU7WUFDcEUsSUFBSSxRQUFRLENBQUMsRUFBRTtnQkFBRSxPQUFPLGtCQUFrQixDQUFDLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUMsQ0FBQztZQUN6RixNQUFNLElBQUksaUJBQWlCLENBQUM7Z0JBQ3hCLE1BQU0sRUFBRSxRQUFRLENBQUMsTUFBTTtnQkFDdkIsVUFBVSxFQUFFLFFBQVEsQ0FBQyxVQUFVO2FBQ2xDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDUixDQUFDO0lBRUQ7O09BRUc7SUFDSyxNQUFNLENBQUMscUJBQXFCLENBQUMsUUFBa0IsRUFBRSxZQUFxQztRQUMxRixJQUFJLFlBQVksS0FBSyx1QkFBdUIsQ0FBQyxJQUFJO1lBQUUsT0FBTyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDMUUsSUFBSSxZQUFZLEtBQUssdUJBQXVCLENBQUMsSUFBSTtZQUFFLE9BQU8sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzFFLElBQUksWUFBWSxLQUFLLHVCQUF1QixDQUFDLFNBQVM7WUFBRSxPQUFPLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNuRixJQUFJLFlBQVksS0FBSyx1QkFBdUIsQ0FBQyxZQUFZO1lBQUUsT0FBTyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDekYsSUFBSSxZQUFZLEtBQUssdUJBQXVCLENBQUMsSUFBSTtZQUFFLE9BQU8sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzFFLE9BQU8sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBAbGljZW5zZVxyXG4gKiBDb3B5cmlnaHQgUGFzY2FsIEVDSEVNQU5OLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxyXG4gKlxyXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZSBmb3VuZCBpblxyXG4gKiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vcGFzY2FsZWNoZW1hbm4uY29tL2FuZ3VsYXItdG9vbGJveC9yZXNvdXJjZXMvbGljZW5zZVxyXG4gKi9cclxuXHJcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7IEZldGNoQ2xpZW50IH0gZnJvbSBcIi4uLy4uLy4uLy4uL21vZGVsXCI7XHJcbmltcG9ydCB7IGZyb20gfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBGZXRjaENsaWVudFJlc3BvbnNlVHlwZSB9IGZyb20gXCIuL2ZldGNoLWNsaWVudC1yZXNwb25zZS10eXBlLmVudW1cIjtcclxuXHJcbi8qKlxyXG4gKiBBIHN0YXRpYyB1dGlsaXR5IGNsYXNzIGZvciBidWlsZGluZyBgRmV0Y2hDbGllbnRgIG9iamVjdHMuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgRmV0Y2hDbGllbnRCdWlsZGVyIHtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEJ1aWxkcyBhbmQgcmV0dXJucyBhIG5ldyBgRmV0Y2hDbGllbnRgIG9iamVjdC5cclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIGlucHV0IFRoZSBkZWZpbml0aW9uIG9mIHRoZSByZXNvdXJjZSB0byBmZXRjaC5cclxuICAgICAqIEBwYXJhbSBpbml0IFRoZSBvYmplY3QgY29udGFpbmluZyBvcHRpb25zIHRvIGNvbmZpZ3VyZSB0aGUgcmVxdWVzdC5cclxuICAgICAqIEBwYXJhbSByZXNwb25zZVR5cGUgU3BlY2lmaWVzIHRoZSB0eXBlIG9mIHJlc3BvbnNlIGZvciB0aGUgcmVzb3VyY2UgdG8gZmV0Y2guXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIEEgbmV3IGBGZXRjaENsaWVudGAgb2JqZWN0LlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIGJ1aWxkRmV0Y2hDbGllbnQoaW5wdXQ6IFJlcXVlc3RJbmZvIHwgVVJMLCBpbml0OiBSZXF1ZXN0SW5pdCB8IG51bGwgPSBudWxsLCByZXNwb25zZVR5cGU6IEZldGNoQ2xpZW50UmVzcG9uc2VUeXBlID0gRmV0Y2hDbGllbnRSZXNwb25zZVR5cGUuSlNPTik6IEZldGNoQ2xpZW50IHtcclxuICAgICAgICByZXR1cm4gZnJvbShmZXRjaChpbnB1dCwgaW5pdCB8fCB1bmRlZmluZWQpLnRoZW4oKHJlc3BvbnNlOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAocmVzcG9uc2Uub2spIHJldHVybiBGZXRjaENsaWVudEJ1aWxkZXIuYnVpbGRSZXNwb25zZVN0cmF0ZWd5KHJlc3BvbnNlLCByZXNwb25zZVR5cGUpO1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgSHR0cEVycm9yUmVzcG9uc2Uoe1xyXG4gICAgICAgICAgICAgICAgc3RhdHVzOiByZXNwb25zZS5zdGF0dXMsXHJcbiAgICAgICAgICAgICAgICBzdGF0dXNUZXh0OiByZXNwb25zZS5zdGF0dXNUZXh0XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBwcml2YXRlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgc3RhdGljIGJ1aWxkUmVzcG9uc2VTdHJhdGVneShyZXNwb25zZTogUmVzcG9uc2UsIHJlc3BvbnNlVHlwZTogRmV0Y2hDbGllbnRSZXNwb25zZVR5cGUpOiBQcm9taXNlPGFueT57XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlVHlwZSA9PT0gRmV0Y2hDbGllbnRSZXNwb25zZVR5cGUuSlNPTikgcmV0dXJuIHJlc3BvbnNlLmpzb24oKTtcclxuICAgICAgICBpZiAocmVzcG9uc2VUeXBlID09PSBGZXRjaENsaWVudFJlc3BvbnNlVHlwZS5CTE9CKSByZXR1cm4gcmVzcG9uc2UuYmxvYigpO1xyXG4gICAgICAgIGlmIChyZXNwb25zZVR5cGUgPT09IEZldGNoQ2xpZW50UmVzcG9uc2VUeXBlLkZPUk1fREFUQSkgcmV0dXJuIHJlc3BvbnNlLmZvcm1EYXRhKCk7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlVHlwZSA9PT0gRmV0Y2hDbGllbnRSZXNwb25zZVR5cGUuQVJSQVlfQlVGRkVSKSByZXR1cm4gcmVzcG9uc2UuYXJyYXlCdWZmZXIoKTtcclxuICAgICAgICBpZiAocmVzcG9uc2VUeXBlID09PSBGZXRjaENsaWVudFJlc3BvbnNlVHlwZS5URVhUKSByZXR1cm4gcmVzcG9uc2UudGV4dCgpO1xyXG4gICAgICAgIHJldHVybiByZXNwb25zZS5qc29uKCk7XHJcbiAgICB9XHJcbn1cclxuIl19
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmV0Y2gtY2xpZW50LmJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXRvb2xib3gvc3JjL2xpYi9mcmFtZXdvcmsvbW9jay9odHRwL3V0aWwvZmV0Y2gtY2xpZW50LmJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFekQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1QixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUU1RTs7R0FFRztBQUNILE1BQU0sT0FBTyxrQkFBa0I7SUFFM0I7Ozs7Ozs7O09BUUc7SUFDSSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsS0FBd0IsRUFBRSxPQUEyQixJQUFJLEVBQUUsZUFBd0MsdUJBQXVCLENBQUMsSUFBSTtRQUMxSixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLElBQUksSUFBSSxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFrQixFQUFFLEVBQUU7WUFDcEUsTUFBTSxPQUFPLEdBQTRCLFlBQVksQ0FBQztZQUN0RCxJQUFJLFFBQVEsQ0FBQyxFQUFFO2dCQUFFLE9BQU8sT0FBTyxLQUFLLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMscUJBQXFCLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7WUFDOUksTUFBTSxJQUFJLGlCQUFpQixDQUFDO2dCQUN4QixNQUFNLEVBQUUsUUFBUSxDQUFDLE1BQU07Z0JBQ3ZCLFVBQVUsRUFBRSxRQUFRLENBQUMsVUFBVTthQUNsQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUVEOztPQUVHO0lBQ0ssTUFBTSxDQUFDLHFCQUFxQixDQUFDLFFBQWtCLEVBQUUsWUFBcUM7UUFDMUYsSUFBSSxZQUFZLEtBQUssdUJBQXVCLENBQUMsSUFBSTtZQUFFLE9BQU8sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzFFLElBQUksWUFBWSxLQUFLLHVCQUF1QixDQUFDLElBQUk7WUFBRSxPQUFPLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMxRSxJQUFJLFlBQVksS0FBSyx1QkFBdUIsQ0FBQyxTQUFTO1lBQUUsT0FBTyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDbkYsSUFBSSxZQUFZLEtBQUssdUJBQXVCLENBQUMsWUFBWTtZQUFFLE9BQU8sUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3pGLElBQUksWUFBWSxLQUFLLHVCQUF1QixDQUFDLElBQUk7WUFBRSxPQUFPLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMxRSxPQUFPLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMzQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQGxpY2Vuc2VcclxuICogQ29weXJpZ2h0IFBhc2NhbCBFQ0hFTUFOTi4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cclxuICpcclxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUgZm91bmQgaW5cclxuICogdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL3Bhc2NhbGVjaGVtYW5uLmNvbS9hbmd1bGFyLXRvb2xib3gvcmVzb3VyY2VzL2xpY2Vuc2VcclxuICovXHJcblxyXG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgeyBGZXRjaENsaWVudCB9IGZyb20gXCIuLi8uLi8uLi8uLi9tb2RlbFwiO1xyXG5pbXBvcnQgeyBmcm9tIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgRmV0Y2hDbGllbnRSZXNwb25zZVR5cGUgfSBmcm9tIFwiLi9mZXRjaC1jbGllbnQtcmVzcG9uc2UtdHlwZS5lbnVtXCI7XHJcblxyXG4vKipcclxuICogQSBzdGF0aWMgdXRpbGl0eSBjbGFzcyBmb3IgYnVpbGRpbmcgYEZldGNoQ2xpZW50YCBvYmplY3RzLlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIEZldGNoQ2xpZW50QnVpbGRlciB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBCdWlsZHMgYW5kIHJldHVybnMgYSBuZXcgYEZldGNoQ2xpZW50YCBvYmplY3QuXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSBpbnB1dCBUaGUgZGVmaW5pdGlvbiBvZiB0aGUgcmVzb3VyY2UgdG8gZmV0Y2guXHJcbiAgICAgKiBAcGFyYW0gaW5pdCBUaGUgb2JqZWN0IGNvbnRhaW5pbmcgb3B0aW9ucyB0byBjb25maWd1cmUgdGhlIHJlcXVlc3QuXHJcbiAgICAgKiBAcGFyYW0gcmVzcG9uc2VUeXBlIFNwZWNpZmllcyB0aGUgdHlwZSBvZiByZXNwb25zZSBmb3IgdGhlIHJlc291cmNlIHRvIGZldGNoLlxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyBBIG5ldyBgRmV0Y2hDbGllbnRgIG9iamVjdC5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBidWlsZEZldGNoQ2xpZW50KGlucHV0OiBSZXF1ZXN0SW5mbyB8IFVSTCwgaW5pdDogUmVxdWVzdEluaXQgfCBudWxsID0gbnVsbCwgcmVzcG9uc2VUeXBlOiBGZXRjaENsaWVudFJlc3BvbnNlVHlwZSA9IEZldGNoQ2xpZW50UmVzcG9uc2VUeXBlLkpTT04pOiBGZXRjaENsaWVudCB7XHJcbiAgICAgICAgcmV0dXJuIGZyb20oZmV0Y2goaW5wdXQsIGluaXQgfHwgdW5kZWZpbmVkKS50aGVuKChyZXNwb25zZTogUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgcnNwVHlwZTogRmV0Y2hDbGllbnRSZXNwb25zZVR5cGUgPSByZXNwb25zZVR5cGU7XHJcbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5vaykgcmV0dXJuIHJzcFR5cGUgIT09IEZldGNoQ2xpZW50UmVzcG9uc2VUeXBlLlJFU1BPTlNFID8gRmV0Y2hDbGllbnRCdWlsZGVyLmJ1aWxkUmVzcG9uc2VTdHJhdGVneShyZXNwb25zZSwgcnNwVHlwZSkgOiByZXNwb25zZTtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEh0dHBFcnJvclJlc3BvbnNlKHtcclxuICAgICAgICAgICAgICAgIHN0YXR1czogcmVzcG9uc2Uuc3RhdHVzLFxyXG4gICAgICAgICAgICAgICAgc3RhdHVzVGV4dDogcmVzcG9uc2Uuc3RhdHVzVGV4dFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJpdmF0ZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHN0YXRpYyBidWlsZFJlc3BvbnNlU3RyYXRlZ3kocmVzcG9uc2U6IFJlc3BvbnNlLCByZXNwb25zZVR5cGU6IEZldGNoQ2xpZW50UmVzcG9uc2VUeXBlKTogUHJvbWlzZTxhbnk+e1xyXG4gICAgICAgIGlmIChyZXNwb25zZVR5cGUgPT09IEZldGNoQ2xpZW50UmVzcG9uc2VUeXBlLkpTT04pIHJldHVybiByZXNwb25zZS5qc29uKCk7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlVHlwZSA9PT0gRmV0Y2hDbGllbnRSZXNwb25zZVR5cGUuQkxPQikgcmV0dXJuIHJlc3BvbnNlLmJsb2IoKTtcclxuICAgICAgICBpZiAocmVzcG9uc2VUeXBlID09PSBGZXRjaENsaWVudFJlc3BvbnNlVHlwZS5GT1JNX0RBVEEpIHJldHVybiByZXNwb25zZS5mb3JtRGF0YSgpO1xyXG4gICAgICAgIGlmIChyZXNwb25zZVR5cGUgPT09IEZldGNoQ2xpZW50UmVzcG9uc2VUeXBlLkFSUkFZX0JVRkZFUikgcmV0dXJuIHJlc3BvbnNlLmFycmF5QnVmZmVyKCk7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlVHlwZSA9PT0gRmV0Y2hDbGllbnRSZXNwb25zZVR5cGUuVEVYVCkgcmV0dXJuIHJlc3BvbnNlLnRleHQoKTtcclxuICAgICAgICByZXR1cm4gcmVzcG9uc2UuanNvbigpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,27 @@
1
+ /**
2
+ * @license
3
+ * Copyright Pascal ECHEMANN. All Rights Reserved.
4
+ *
5
+ * Use of this source code is governed by an MIT-style license that can be found in
6
+ * the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license
7
+ */
8
+ /**
9
+ * The list of constant values that can be passed to the `productionPolicy` of the `HttpMockingFrameworkConfig` interface.
10
+ */
11
+ export var HttpMockProductionPolicy;
12
+ (function (HttpMockProductionPolicy) {
13
+ /**
14
+ * Indicates that the framework intercepts requests silently in producion mode.
15
+ */
16
+ HttpMockProductionPolicy[HttpMockProductionPolicy["SILENT"] = 0] = "SILENT";
17
+ /**
18
+ * Indicates that the framework has to send a warning message to the console when a request is intercetped in producion mode.
19
+ */
20
+ HttpMockProductionPolicy[HttpMockProductionPolicy["WARNING"] = 1] = "WARNING";
21
+ /**
22
+ * Indicates that the framework trhows an error when a request is intercetped in producion mode.
23
+ */
24
+ HttpMockProductionPolicy[HttpMockProductionPolicy["ERROR"] = 2] = "ERROR";
25
+ })(HttpMockProductionPolicy || (HttpMockProductionPolicy = {}));
26
+ ;
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1tb2NrLXByb2R1Y3Rpb24tcG9saWN5LmVudW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXRvb2xib3gvc3JjL2xpYi9tb2RlbC9idXNpbmVzcy9tb2NrL2h0dHAvY29uZmlnL2h0dHAtbW9jay1wcm9kdWN0aW9uLXBvbGljeS5lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUdIOztHQUVHO0FBQ0gsTUFBTSxDQUFOLElBQVksd0JBZ0JYO0FBaEJELFdBQVksd0JBQXdCO0lBRWhDOztPQUVHO0lBQ0gsMkVBQVUsQ0FBQTtJQUVWOztPQUVHO0lBQ0gsNkVBQVcsQ0FBQTtJQUVYOztPQUVHO0lBQ0gseUVBQVMsQ0FBQTtBQUNiLENBQUMsRUFoQlcsd0JBQXdCLEtBQXhCLHdCQUF3QixRQWdCbkM7QUFBQSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIEBsaWNlbnNlXHJcbiAqIENvcHlyaWdodCBQYXNjYWwgRUNIRU1BTk4uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXHJcbiAqXHJcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlIGZvdW5kIGluXHJcbiAqIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9wYXNjYWxlY2hlbWFubi5jb20vYW5ndWxhci10b29sYm94L3Jlc291cmNlcy9saWNlbnNlXHJcbiAqL1xyXG5cclxuXHJcbi8qKlxyXG4gKiBUaGUgbGlzdCBvZiBjb25zdGFudCB2YWx1ZXMgdGhhdCBjYW4gYmUgcGFzc2VkIHRvIHRoZSBgcHJvZHVjdGlvblBvbGljeWAgb2YgdGhlIGBIdHRwTW9ja2luZ0ZyYW1ld29ya0NvbmZpZ2AgaW50ZXJmYWNlLlxyXG4gKi9cclxuZXhwb3J0IGVudW0gSHR0cE1vY2tQcm9kdWN0aW9uUG9saWN5IHtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEluZGljYXRlcyB0aGF0IHRoZSBmcmFtZXdvcmsgaW50ZXJjZXB0cyByZXF1ZXN0cyBzaWxlbnRseSBpbiBwcm9kdWNpb24gbW9kZS5cclxuICAgICAqL1xyXG4gICAgU0lMRU5UID0gMCxcclxuXHJcbiAgICAvKipcclxuICAgICAqIEluZGljYXRlcyB0aGF0IHRoZSBmcmFtZXdvcmsgaGFzIHRvIHNlbmQgYSB3YXJuaW5nIG1lc3NhZ2UgdG8gdGhlIGNvbnNvbGUgd2hlbiBhIHJlcXVlc3QgaXMgaW50ZXJjZXRwZWQgaW4gcHJvZHVjaW9uIG1vZGUuXHJcbiAgICAgKi9cclxuICAgIFdBUk5JTkcgPSAxLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5kaWNhdGVzIHRoYXQgdGhlIGZyYW1ld29yayB0cmhvd3MgYW4gZXJyb3Igd2hlbiBhIHJlcXVlc3QgaXMgaW50ZXJjZXRwZWQgaW4gcHJvZHVjaW9uIG1vZGUuXHJcbiAgICAgKi9cclxuICAgIEVSUk9SID0gMlxyXG59OyJdfQ==
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @license
3
+ * Copyright Pascal ECHEMANN. All Rights Reserved.
4
+ *
5
+ * Use of this source code is governed by an MIT-style license that can be found in
6
+ * the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1tb2NraW5nLWZyYW1ld29yay1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXRvb2xib3gvc3JjL2xpYi9tb2RlbC9idXNpbmVzcy9tb2NrL2h0dHAvY29uZmlnL2h0dHAtbW9ja2luZy1mcmFtZXdvcmstY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBAbGljZW5zZVxyXG4gKiBDb3B5cmlnaHQgUGFzY2FsIEVDSEVNQU5OLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxyXG4gKlxyXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZSBmb3VuZCBpblxyXG4gKiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vcGFzY2FsZWNoZW1hbm4uY29tL2FuZ3VsYXItdG9vbGJveC9yZXNvdXJjZXMvbGljZW5zZVxyXG4gKi9cclxuXHJcbmltcG9ydCB7IEh0dHBNb2NrUHJvZHVjdGlvblBvbGljeSB9IGZyb20gXCIuL2h0dHAtbW9jay1wcm9kdWN0aW9uLXBvbGljeS5lbnVtXCI7XHJcblxyXG4vKipcclxuICogRGVmaW5lcyBwcm9wZXJ0aWVzIGZvciB0aGUgSFRUUCBNb2NraW5nIGZyYW1ld29yayBjb25maWd1cmF0aW9uLlxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBIdHRwTW9ja2luZ0ZyYW1ld29ya0NvbmZpZyB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgdmlzdWFsIGZsYWcgaXMgdmlzaWJsZSAoYGZhbHNlYCksIG9yIG5vdCAoYHRydWVgKS5cclxuICAgICAqL1xyXG4gICAgZGlzYWJsZVZpc3VhbEZsYWc/OiBib29sZWFuO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5kaWNhdGVzIHRoZSBiZWhhdmlvciBvZiB0aGUgZnJhbWV3b3JrIHdoZW4gaXQgaXMgdXNlZCBpbiBwcm9kdWN0aW9uIG1vZGUuXHJcbiAgICAgKi9cclxuICAgIHByb2R1Y3Rpb25Qb2xpY3k/OiBIdHRwTW9ja1Byb2R1Y3Rpb25Qb2xpY3k7XHJcbn1cclxuIl19
@@ -0,0 +1,33 @@
1
+ /**
2
+ * @license
3
+ * Copyright Pascal ECHEMANN. All Rights Reserved.
4
+ *
5
+ * Use of this source code is governed by an MIT-style license that can be found in
6
+ * the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license
7
+ */
8
+ import { HttpMockProductionPolicy } from "./http-mock-production-policy.enum";
9
+ /**
10
+ * The default provider for the HTTP Mocking Framework configuration. You typically define
11
+ * the custom properties in the main NgModule declaration to initialize the HTTP Mocking Framework:
12
+ *
13
+ * @NgModule({
14
+ * ...
15
+ * providers: [
16
+ * { provide: HTTP_MOCKING_FRAMEWORK_CONFIG, useValue: { disableVisualFlag: true, productionPolicy: HttpMockProductionPolicy.WARNING } }
17
+ * ],
18
+ * ...
19
+ * });
20
+ */
21
+ export const HTTP_MOCKING_FRAMEWORK_CONFIG = {
22
+ /**
23
+ * Indicates whether the visual flag is visible (`false`), or not (`true`).
24
+ * Default value is `false`.
25
+ */
26
+ disableVisualFlag: false,
27
+ /**
28
+ * Indicates the behavior of the framework when it is used in production mode.
29
+ * Default value is `HttpMockProductionPolicy.ERROR`.
30
+ */
31
+ productionPolicy: HttpMockProductionPolicy.ERROR
32
+ };
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1tb2NraW5nLWZyYW1ld29yay1jb25maWcucHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXRvb2xib3gvc3JjL2xpYi9tb2RlbC9idXNpbmVzcy9tb2NrL2h0dHAvY29uZmlnL2h0dHAtbW9ja2luZy1mcmFtZXdvcmstY29uZmlnLnByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRzlFOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQStCO0lBRXJFOzs7T0FHRztJQUNILGlCQUFpQixFQUFFLEtBQUs7SUFFeEI7OztPQUdHO0lBQ0gsZ0JBQWdCLEVBQUUsd0JBQXdCLENBQUMsS0FBSztDQUNuRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIEBsaWNlbnNlXHJcbiAqIENvcHlyaWdodCBQYXNjYWwgRUNIRU1BTk4uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXHJcbiAqXHJcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlIGZvdW5kIGluXHJcbiAqIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9wYXNjYWxlY2hlbWFubi5jb20vYW5ndWxhci10b29sYm94L3Jlc291cmNlcy9saWNlbnNlXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgSHR0cE1vY2tQcm9kdWN0aW9uUG9saWN5IH0gZnJvbSBcIi4vaHR0cC1tb2NrLXByb2R1Y3Rpb24tcG9saWN5LmVudW1cIjtcclxuaW1wb3J0IHsgSHR0cE1vY2tpbmdGcmFtZXdvcmtDb25maWcgfSBmcm9tIFwiLi9odHRwLW1vY2tpbmctZnJhbWV3b3JrLWNvbmZpZ1wiO1xyXG5cclxuLyoqXHJcbiAqIFRoZSBkZWZhdWx0IHByb3ZpZGVyIGZvciB0aGUgSFRUUCBNb2NraW5nIEZyYW1ld29yayBjb25maWd1cmF0aW9uLiBZb3UgdHlwaWNhbGx5IGRlZmluZVxyXG4gKiB0aGUgY3VzdG9tIHByb3BlcnRpZXMgaW4gdGhlIG1haW4gTmdNb2R1bGUgZGVjbGFyYXRpb24gdG8gaW5pdGlhbGl6ZSB0aGUgSFRUUCBNb2NraW5nIEZyYW1ld29yazpcclxuICogXHJcbiAqIEBOZ01vZHVsZSh7XHJcbiAqIC4uLlxyXG4gKiBwcm92aWRlcnM6IFtcclxuICogICB7IHByb3ZpZGU6IEhUVFBfTU9DS0lOR19GUkFNRVdPUktfQ09ORklHLCB1c2VWYWx1ZTogeyBkaXNhYmxlVmlzdWFsRmxhZzogdHJ1ZSwgcHJvZHVjdGlvblBvbGljeTogSHR0cE1vY2tQcm9kdWN0aW9uUG9saWN5LldBUk5JTkcgfSB9XHJcbiAqIF0sXHJcbiAqIC4uLlxyXG4gKiB9KTtcclxuICovXHJcbmV4cG9ydCBjb25zdCBIVFRQX01PQ0tJTkdfRlJBTUVXT1JLX0NPTkZJRzogSHR0cE1vY2tpbmdGcmFtZXdvcmtDb25maWcgPSB7XHJcbiAgICBcclxuICAgIC8qKlxyXG4gICAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIHZpc3VhbCBmbGFnIGlzIHZpc2libGUgKGBmYWxzZWApLCBvciBub3QgKGB0cnVlYCkuXHJcbiAgICAgKiBEZWZhdWx0IHZhbHVlIGlzIGBmYWxzZWAuXHJcbiAgICAgKi9cclxuICAgIGRpc2FibGVWaXN1YWxGbGFnOiBmYWxzZSxcclxuXHJcbiAgICAvKipcclxuICAgICAqIEluZGljYXRlcyB0aGUgYmVoYXZpb3Igb2YgdGhlIGZyYW1ld29yayB3aGVuIGl0IGlzIHVzZWQgaW4gcHJvZHVjdGlvbiBtb2RlLlxyXG4gICAgICogRGVmYXVsdCB2YWx1ZSBpcyBgSHR0cE1vY2tQcm9kdWN0aW9uUG9saWN5LkVSUk9SYC5cclxuICAgICAqL1xyXG4gICAgcHJvZHVjdGlvblBvbGljeTogSHR0cE1vY2tQcm9kdWN0aW9uUG9saWN5LkVSUk9SXHJcbn07Il19
@@ -0,0 +1,4 @@
1
+ export * from './http-mocking-framework-config.provider';
2
+ export * from './http-mocking-framework-config';
3
+ export * from './http-mock-production-policy.enum';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXRvb2xib3gvc3JjL2xpYi9tb2RlbC9idXNpbmVzcy9tb2NrL2h0dHAvY29uZmlnL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLG9DQUFvQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9odHRwLW1vY2tpbmctZnJhbWV3b3JrLWNvbmZpZy5wcm92aWRlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vaHR0cC1tb2NraW5nLWZyYW1ld29yay1jb25maWcnO1xyXG5leHBvcnQgKiBmcm9tICcuL2h0dHAtbW9jay1wcm9kdWN0aW9uLXBvbGljeS5lbnVtJzsiXX0=
@@ -6,4 +6,5 @@ export * from './http-mock-interceptor';
6
6
  export * from './http-mock-error';
7
7
  export * from './xhr-proxy';
8
8
  export * from './fetch-client';
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXRvb2xib3gvc3JjL2xpYi9tb2RlbC9idXNpbmVzcy9tb2NrL2h0dHAvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxnQkFBZ0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vaHR0cC1yZXNwb25zZS1tb2NrJztcclxuZXhwb3J0ICogZnJvbSAnLi9odHRwLW1ldGhvZC1tb2NrJztcclxuZXhwb3J0ICogZnJvbSAnLi9odHRwLW1vY2stY29uZmlnJztcclxuZXhwb3J0ICogZnJvbSAnLi9odHRwLW1vY2stZW5kcG9pbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2h0dHAtbW9jay1pbnRlcmNlcHRvcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vaHR0cC1tb2NrLWVycm9yJztcclxuZXhwb3J0ICogZnJvbSAnLi94aHItcHJveHknO1xyXG5leHBvcnQgKiBmcm9tICcuL2ZldGNoLWNsaWVudCc7Il19
9
+ export * from './config';
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXRvb2xib3gvc3JjL2xpYi9tb2RlbC9idXNpbmVzcy9tb2NrL2h0dHAvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLFVBQVUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vaHR0cC1yZXNwb25zZS1tb2NrJztcclxuZXhwb3J0ICogZnJvbSAnLi9odHRwLW1ldGhvZC1tb2NrJztcclxuZXhwb3J0ICogZnJvbSAnLi9odHRwLW1vY2stY29uZmlnJztcclxuZXhwb3J0ICogZnJvbSAnLi9odHRwLW1vY2stZW5kcG9pbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2h0dHAtbW9jay1pbnRlcmNlcHRvcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vaHR0cC1tb2NrLWVycm9yJztcclxuZXhwb3J0ICogZnJvbSAnLi94aHItcHJveHknO1xyXG5leHBvcnQgKiBmcm9tICcuL2ZldGNoLWNsaWVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vY29uZmlnJzsiXX0=
@@ -5,13 +5,17 @@
5
5
  * Use of this source code is governed by an MIT-style license that can be found in
6
6
  * the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license
7
7
  */
8
- import { Injectable } from '@angular/core';
8
+ import { Inject, Injectable, isDevMode, Optional } from '@angular/core';
9
+ import { HTTP_MOCKING_FRAMEWORK_CONFIG } from '../../../business';
9
10
  import { HTTPMethodRef } from '../../../../framework/mock/http/util/http-method-ref.enum';
10
11
  import { tokenDataToRegexp } from '../../../../framework/mock/http/path-to-regexp/token-data-to-regexp';
11
12
  import { stringToTokenData } from '../../../../framework/mock/http/path-to-regexp/string-to-token-data';
12
13
  import { DEFAULT_DELIMITER } from '../../../../framework/mock/http/path-to-regexp/constants';
13
14
  import { Uuid } from '../../../../util';
14
15
  import { HttpMockServiceError } from '../../../../core/error';
16
+ import { DOCUMENT } from '@angular/common';
17
+ import { HttpMockingFrameworkConfigManager } from '../../../../util/http-mocking-framework-config.manager';
18
+ import { IdentifiableComponent } from '../../../../core';
15
19
  import * as i0 from "@angular/core";
16
20
  /**
17
21
  * @private
@@ -21,8 +25,23 @@ export const HTTP_MOCK_SERVICE = "HttpMockService";
21
25
  /**
22
26
  * The `HttpMockService` class provides the API for managing HTTP mock configuration objects.
23
27
  */
24
- export class HttpMockService {
25
- constructor() {
28
+ export class HttpMockService extends IdentifiableComponent {
29
+ /**
30
+ * Returns the vreference to the `HttpMockingFrameworkConfigManager` instance,
31
+ * associated with this service.
32
+ */
33
+ get configMmanager() {
34
+ return this._configMmanager;
35
+ }
36
+ /**
37
+ * @private
38
+ * Creates a new `HttpMockService` instance.
39
+ *
40
+ * @param _document The reference to the app document.
41
+ * @param config The optional config provider for the HTTP Mocking Framework.
42
+ */
43
+ constructor(document, config) {
44
+ super(HTTP_MOCK_SERVICE);
26
45
  /**
27
46
  * @private
28
47
  * Ensures that class type is still accessible after TypeScript compilation.
@@ -43,6 +62,14 @@ export class HttpMockService {
43
62
  * The reference to the current app URL origin.
44
63
  */
45
64
  this.APP_ORIGIN = window.location.origin;
65
+ this._configMmanager = new HttpMockingFrameworkConfigManager(document, isDevMode(), config);
66
+ }
67
+ /**
68
+ * @private
69
+ */
70
+ ngOnDestroy() {
71
+ this._configMmanager.checkPolicy();
72
+ this._configMmanager.destroy();
46
73
  }
47
74
  /**
48
75
  * Adds the specified `HttpMockConfig` object to this `HttpMockService` instance.
@@ -52,6 +79,7 @@ export class HttpMockService {
52
79
  */
53
80
  addConfig(config) {
54
81
  const origin = config.origin || this.APP_ORIGIN;
82
+ this._configMmanager.checkPolicy();
55
83
  this.checkOrigin(origin);
56
84
  let id = config.id;
57
85
  if (!id) {
@@ -81,6 +109,7 @@ export class HttpMockService {
81
109
  * @param uuid The UUID of the configuration to remove.
82
110
  */
83
111
  removeConfig(uuid) {
112
+ this._configMmanager.checkPolicy();
84
113
  if (!this.hasRegisteredConfig(uuid))
85
114
  return;
86
115
  const configId = uuid.toString();
@@ -95,6 +124,7 @@ export class HttpMockService {
95
124
  * Removes all registred configurations from this `HttpMockService` instance.
96
125
  */
97
126
  clearConfigs() {
127
+ this._configMmanager.checkPolicy();
98
128
  this._configList.clear();
99
129
  this._configIdList.length = 0;
100
130
  }
@@ -119,6 +149,7 @@ export class HttpMockService {
119
149
  getRouteConfig(url, method) {
120
150
  const urlConfigList = this._configList.get(url.origin);
121
151
  const route = url.pathname;
152
+ this._configMmanager.checkPolicy(route, method);
122
153
  let result = undefined;
123
154
  if (!urlConfigList)
124
155
  return result;
@@ -228,7 +259,7 @@ export class HttpMockService {
228
259
  cleanConfig(storage, configId) {
229
260
  return storage.filter((value) => value.configId !== configId);
230
261
  }
231
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: HttpMockService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
262
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: HttpMockService, deps: [{ token: DOCUMENT }, { token: HTTP_MOCKING_FRAMEWORK_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
232
263
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: HttpMockService, providedIn: 'root' }); }
233
264
  }
234
265
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: HttpMockService, decorators: [{
@@ -236,5 +267,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImpor
236
267
  args: [{
237
268
  providedIn: 'root'
238
269
  }]
239
- }] });
240
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1tb2NrLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXRvb2xib3gvc3JjL2xpYi9tb2RlbC9zZXJ2aWNlL21vY2svaHR0cC9odHRwLW1vY2suc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUMxRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxRUFBcUUsQ0FBQztBQUd4RyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxRUFBcUUsQ0FBQztBQUN4RyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUM3RixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFeEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBRTlEOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFXLGlCQUFpQixDQUFDO0FBYTNEOztHQUVHO0FBSUgsTUFBTSxPQUFPLGVBQWU7SUFINUI7UUFLRTs7O1dBR0c7UUFDYSxTQUFJLEdBQVcsaUJBQWlCLENBQUM7UUFFakQ7OztXQUdHO1FBQ0ssa0JBQWEsR0FBVyxFQUFFLENBQUM7UUFFbkM7OztXQUdHO1FBQ0ssZ0JBQVcsR0FBd0QsSUFBSSxHQUFHLEVBQWtELENBQUM7UUFFckk7OztXQUdHO1FBQ2MsZUFBVSxHQUFXLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO0tBcUw5RDtJQW5MQzs7Ozs7T0FLRztJQUNJLFNBQVMsQ0FBQyxNQUFzQjtRQUNyQyxNQUFNLE1BQU0sR0FBVyxNQUFNLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxVQUFV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U0FDbkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ssV0FBVyxDQUFDLE1BQWM7UUFDaEMsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDO1lBQUUsTUFBTSxJQUFJLFdBQVcsQ0FBQyw2Q0FBNkMsTUFBTSxLQUFLLENBQUMsQ0FBQztJQUMxSCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxnQkFBZ0IsQ0FBQyxVQUFrRCxFQUFFLFFBQWdCO1FBQzNGLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFrQyxFQUFFLEdBQVcsRUFBRSxFQUFFO1lBQ3JFLE1BQU0sYUFBYSxHQUE4QixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztZQUNyRixJQUFJLGFBQWEsQ0FBQyxNQUFNO2dCQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLGFBQWEsQ0FBQyxDQUFDOztnQkFDeEQsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM5QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNLLFdBQVcsQ0FBQyxPQUFrQyxFQUFFLFFBQWdCO1FBQ3RFLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQThCLEVBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDLENBQUM7SUFDeEYsQ0FBQzs4R0E1TVUsZUFBZTtrSEFBZixlQUFlLGNBRmQsTUFBTTs7MkZBRVAsZUFBZTtrQkFIM0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQGxpY2Vuc2VcclxuICogQ29weXJpZ2h0IFBhc2NhbCBFQ0hFTUFOTi4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cclxuICpcclxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUgZm91bmQgaW5cclxuICogdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL3Bhc2NhbGVjaGVtYW5uLmNvbS9hbmd1bGFyLXRvb2xib3gvcmVzb3VyY2VzL2xpY2Vuc2VcclxuICovXHJcblxyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBNb2NrSW50ZXJjZXB0b3IsIEh0dHBNb2NrQ29uZmlnLCBIdHRwTWV0aG9kTW9jaywgSHR0cE1vY2tFbmRwb2ludCB9IGZyb20gJy4uLy4uLy4uL2J1c2luZXNzJztcclxuaW1wb3J0IHsgSFRUUE1ldGhvZFJlZiB9IGZyb20gJy4uLy4uLy4uLy4uL2ZyYW1ld29yay9tb2NrL2h0dHAvdXRpbC9odHRwLW1ldGhvZC1yZWYuZW51bSc7XHJcbmltcG9ydCB7IHRva2VuRGF0YVRvUmVnZXhwIH0gZnJvbSAnLi4vLi4vLi4vLi4vZnJhbWV3b3JrL21vY2svaHR0cC9wYXRoLXRvLXJlZ2V4cC90b2tlbi1kYXRhLXRvLXJlZ2V4cCc7XHJcbmltcG9ydCB7IFJvdXRlTW9ja0NvbmZpZyB9IGZyb20gJy4uLy4uLy4uLy4uL2ZyYW1ld29yay9tb2NrL2h0dHAvY29uZmlnL3JvdXRlLW1vY2stY29uZmlnJztcclxuaW1wb3J0IHsgS2V5IH0gZnJvbSAnLi4vLi4vLi4vLi4vZnJhbWV3b3JrL21vY2svaHR0cC9wYXRoLXRvLXJlZ2V4cC9tb2RlbC9rZXknO1xyXG5pbXBvcnQgeyBzdHJpbmdUb1Rva2VuRGF0YSB9IGZyb20gJy4uLy4uLy4uLy4uL2ZyYW1ld29yay9tb2NrL2h0dHAvcGF0aC10by1yZWdleHAvc3RyaW5nLXRvLXRva2VuLWRhdGEnO1xyXG5pbXBvcnQgeyBERUZBVUxUX0RFTElNSVRFUiB9IGZyb20gJy4uLy4uLy4uLy4uL2ZyYW1ld29yay9tb2NrL2h0dHAvcGF0aC10by1yZWdleHAvY29uc3RhbnRzJztcclxuaW1wb3J0IHsgVXVpZCB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWwnO1xyXG5pbXBvcnQgeyBUb2tlbkRhdGEgfSBmcm9tICcuLi8uLi8uLi8uLi9mcmFtZXdvcmsvbW9jay9odHRwL3BhdGgtdG8tcmVnZXhwL3Rva2VuLWRhdGEnO1xyXG5pbXBvcnQgeyBIdHRwTW9ja1NlcnZpY2VFcnJvciB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvZXJyb3InO1xyXG5cclxuLyoqXHJcbiAqIEBwcml2YXRlXHJcbiAqIFJlZmVyZW5jZSB0byB0aGUgb3JpZ2luYWwgdHlwZSBmb3IgdGhpcyBjbGFzcy5cclxuICovXHJcbmV4cG9ydCBjb25zdCBIVFRQX01PQ0tfU0VSVklDRTogc3RyaW5nID0gXCJIdHRwTW9ja1NlcnZpY2VcIjtcclxuXHJcbi8qKlxyXG4gKiBAcHJpdmF0ZVxyXG4gKiBBbiBpbnRlcm5hbCB1dGlsaXR5IGZvciBzdG9ycmluZyByZWZlcmVuY2VzIHRvIGVuZHBvaW50IG1vY2sgY29uZmlncy5cclxuICovXHJcbmludGVyZmFjZSBIdHRwTW9ja0VuZHBvaW50U3RvcmFnZSB7XHJcbiAgbWV0aG9kTW9jazogSHR0cE1ldGhvZE1vY2s7XHJcbiAgcmVnZXhwOiBSZWdFeHA7XHJcbiAga2V5czogS2V5W107XHJcbiAgY29uZmlnSWQ6IHN0cmluZztcclxufVxyXG5cclxuLyoqXHJcbiAqIFRoZSBgSHR0cE1vY2tTZXJ2aWNlYCBjbGFzcyBwcm92aWRlcyB0aGUgQVBJIGZvciBtYW5hZ2luZyBIVFRQIG1vY2sgY29uZmlndXJhdGlvbiBvYmplY3RzLlxyXG4gKi9cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgSHR0cE1vY2tTZXJ2aWNlIHtcclxuXHJcbiAgLyoqXHJcbiAgICogQHByaXZhdGVcclxuICAgKiBFbnN1cmVzIHRoYXQgY2xhc3MgdHlwZSBpcyBzdGlsbCBhY2Nlc3NpYmxlIGFmdGVyIFR5cGVTY3JpcHQgY29tcGlsYXRpb24uXHJcbiAgICovXHJcbiAgcHVibGljIHJlYWRvbmx5IHR5cGU6IHN0cmluZyA9IEhUVFBfTU9DS19TRVJWSUNFO1xyXG5cclxuICAvKipcclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqIFRoZSBsaXN0IG9mIElEcyBhc3NvY2lhdGVkIHdpdGggZWFjaCBjb25maWcgb2JqZWN0LlxyXG4gICAqL1xyXG4gIHByaXZhdGUgX2NvbmZpZ0lkTGlzdDogVXVpZFtdID0gW107XHJcblxyXG4gIC8qKlxyXG4gICAqIEBwcml2YXRlXHJcbiAgICogU3RvcmVzIHRoZSBjb21wbGV0ZSBjb2xsZWN0aW9uIG9mIG1vY2tpbmcgYmVoYXZpb3JzIGZvciBlYWNoIHJlZ2lzdGVyZWQgY29uZmlnLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgX2NvbmZpZ0xpc3Q6IE1hcDxzdHJpbmcsIE1hcDxzdHJpbmcsIEh0dHBNb2NrRW5kcG9pbnRTdG9yYWdlW10+PiA9IG5ldyBNYXA8c3RyaW5nLCBNYXA8c3RyaW5nLCBIdHRwTW9ja0VuZHBvaW50U3RvcmFnZVtdPj4oKTtcclxuXHJcbiAgLyoqXHJcbiAgICogQHByaXZhdGVcclxuICAgKiBUaGUgcmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGFwcCBVUkwgb3JpZ2luLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgQVBQX09SSUdJTjogc3RyaW5nID0gd2luZG93LmxvY2F0aW9uLm9yaWdpbjtcclxuXHJcbiAgLyoqXHJcbiAgICogQWRkcyB0aGUgc3BlY2lmaWVkIGBIdHRwTW9ja0NvbmZpZ2Agb2JqZWN0IHRvIHRoaXMgYEh0dHBNb2NrU2VydmljZWAgaW5zdGFuY2UuXHJcbiAgICogXHJcbiAgICogQHBhcmFtIGNvbmZpZyBUaGUgYEh0dHBNb2NrQ29uZmlnYCBvYmplY3QgdG8gYWRkIHRvIHRoaXMgYEh0dHBNb2NrU2VydmljZWAgaW5zdGFuY2UuXHJcbiAgICogQFJldHVybnMgVGhlIGBVdWlkYCBpbnN0YW5jZSBhc3NvY2lhdGVkIHdpdGggdGhlIGFkZGVkIGBIdHRwTW9ja0NvbmZpZ2Agb2JqZWN0LlxyXG4gICAqL1xyXG4gIHB1YmxpYyBhZGRDb25maWcoY29uZmlnOiBIdHRwTW9ja0NvbmZpZyk6IFV1aWQge1xyXG4gICAgY29uc3Qgb3JpZ2luOiBzdHJpbmcgPSBjb25maWcub3JpZ2luIHx8IHRoaXMuQVBQX09SSUdJTjtcclxuICAgIHRoaXMuY2hlY2tPcmlnaW4ob3JpZ2luKTtcclxuICAgIGxldCBpZDogVXVpZCB8IHVuZGVmaW5lZCA9IGNvbmZpZy5pZDtcclxuICAgIGlmICghaWQpIHtcclxuICAgICAgaWQgPSBVdWlkLmJ1aWxkKCk7XHJcbiAgICAgIGNvbmZpZy5pZCA9IGlkO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuaGFzUmVnaXN0ZXJlZENvbmZpZyhpZCkpIHRocm93IG5ldyBIdHRwTW9ja1NlcnZpY2VFcnJvcihgQSBjb25maWcgb2JqZWN0IGhhcyBhbHJlYWR5IGJlZW4gcmVnaXN0ZXJlZCB3aXRoIHRoZSBpZDogW1wiJHtpZC50b1N0cmluZygpfVwiXS5gKSA7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9jb25maWdJZExpc3QucHVzaChpZCk7XHJcbiAgICBjb25zdCB1dWlkOiBzdHJpbmcgPSBpZC50b1N0cmluZygpO1xyXG4gICAgY29uZmlnLmludGVyY2VwdG9ycy5mb3JFYWNoKChpbnRlcmNlcHRvcjogSHR0cE1vY2tJbnRlcmNlcHRvcikgPT4gdGhpcy5leHRyYWN0Q29uZmlnKGludGVyY2VwdG9yLCBvcmlnaW4sIHV1aWQpICk7XHJcbiAgICByZXR1cm4gaWQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBjdXJyZW50IGFwcCBVUkwgb3JpZ2luLlxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIEEgc3RyaW5nIHRoYXQgcmVwcmVzZW50cyB0aGUgY3VycmVudCBhcHAgVVJMIG9yaWdpbi5cclxuICAgKi9cclxuICBwdWJsaWMgZ2V0QXBwT3JpZ2luKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5BUFBfT1JJR0lOO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVtb3ZlcyB0aGUgY29uZmlndXJhdGlvbiByZWdpc3RlcmVkIHdpdGggdGhlIHNwZWNpZmllZCBgdXVpZGAgZnJvbSB0aGlzIGBIdHRwTW9ja1NlcnZpY2VgIGluc3RhbmNlLlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB1dWlkIFRoZSBVVUlEIG9mIHRoZSBjb25maWd1cmF0aW9uIHRvIHJlbW92ZS5cclxuICAgKi9cclxuICBwdWJsaWMgcmVtb3ZlQ29uZmlnKHV1aWQ6IFV1aWQpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5oYXNSZWdpc3RlcmVkQ29uZmlnKHV1aWQpKSByZXR1cm47XHJcbiAgICBjb25zdCBjb25maWdJZDogc3RyaW5nID0gdXVpZC50b1N0cmluZygpO1xyXG4gICAgdGhpcy5fY29uZmlnTGlzdC5mb3JFYWNoKCh2YWx1ZTogTWFwPHN0cmluZywgSHR0cE1vY2tFbmRwb2ludFN0b3JhZ2VbXT4sIGtleTogc3RyaW5nKSA9PiB7XHJcbiAgICAgIHRoaXMuZGVsZXRlQ29uZmlnQnlJZCh2YWx1ZSwgY29uZmlnSWQpO1xyXG4gICAgICBpZiAodmFsdWUuc2l6ZSA9PT0gMCkgdGhpcy5fY29uZmlnTGlzdC5kZWxldGUoa2V5KTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5fY29uZmlnSWRMaXN0LnNwbGljZSh0aGlzLl9jb25maWdJZExpc3QuaW5kZXhPZih1dWlkKSwgMSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZW1vdmVzIGFsbCByZWdpc3RyZWQgY29uZmlndXJhdGlvbnMgZnJvbSB0aGlzIGBIdHRwTW9ja1NlcnZpY2VgIGluc3RhbmNlLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBjbGVhckNvbmZpZ3MoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9jb25maWdMaXN0LmNsZWFyKCk7XHJcbiAgICB0aGlzLl9jb25maWdJZExpc3QubGVuZ3RoID0gMDtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyBhIGJvb2xlYW4gdmFsdWUgdGhhdCBpbmRpY2F0ZXMgd2hldGhlciBhIGNvbmZpZyB3aXRoIHRoZSBzcGVjaWZpZWQgVVVJRCBoYXMgYmVlbiByZWdpc3RlcmVkXHJcbiAgICogKGB0cnVlYCksIG9yIG5vdCAoYGZhbHNlYCkuXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHV1aWQgVGhlIFVVSUQgb2YgdGhlIGNvbmZpZyB0byBjaGVjay5cclxuICAgKiBAcmV0dXJucyBgdHJ1ZWAgd2hldGhlciBhIGNvbmZpZyB3aXRoIHRoZSBzcGVjaWZpZWQgVVVJRCBoYXMgYmVlbiByZWdpc3RlcmVkOyBgZmFsc2VgIG90aGVyd2lzZS5cclxuICAgKi9cclxuICBwdWJsaWMgaGFzUmVnaXN0ZXJlZENvbmZpZyh1dWlkOiBVdWlkKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fY29uZmlnSWRMaXN0LmluZGV4T2YodXVpZCkgIT09IC0xO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgYFJvdXRlTW9ja0NvbmZpZ2Agb2JqZWN0IGFzc29jaWF0ZWQgd2l0aCB0aGUgc3BlY2lmaWVkIGBVUkxgIGluc3RhbmNlIGFuZCBIVFRQIG1ldGhvZC5cclxuICAgKiBcclxuICAgKiBAcGFyYW0gdXJsIFRoZSBgVVJMYCBpbnN0YW5jZSBmb3Igd2hpY2ggdG8gZmluZCBhIHJvdXRlIGNvbmZpZy5cclxuICAgKiBAcGFyYW0gbWV0aG9kIFRoZSBIVFRQIG1ldGhvZCBmb3Igd2hpY2ggdG8gZmluZCBhIHJvdXRlIGNvbmZpZy5cclxuICAgKiBAcmV0dXJucyBUaGUgYFJvdXRlTW9ja0NvbmZpZ2Agb2JqZWN0IGFzc29jaWF0ZWQgd2l0aCB0aGUgc3BlY2lmaWVkIGBVUkxgIGluc3RhbmNlIGFuZCBIVFRQIG1ldGhvZCB3aGV0aGVyIGl0IGV4aXN0cztcclxuICAgKiAgICAgICAgICBgdW5kZWZpbmVkYCBvdGhlcndpc2UuXHJcbiAgICovXHJcbiAgcHVibGljIGdldFJvdXRlQ29uZmlnKHVybDogVVJMLCBtZXRob2Q6IEhUVFBNZXRob2RSZWYpOiBSb3V0ZU1vY2tDb25maWcgfCB1bmRlZmluZWQge1xyXG4gICAgY29uc3QgdXJsQ29uZmlnTGlzdDogTWFwPHN0cmluZywgSHR0cE1vY2tFbmRwb2ludFN0b3JhZ2VbXT4gfCB1bmRlZmluZWQgPSB0aGlzLl9jb25maWdMaXN0LmdldCh1cmwub3JpZ2luKTtcclxuICAgIGNvbnN0IHJvdXRlOiBzdHJpbmcgPSB1cmwucGF0aG5hbWU7XHJcbiAgICBsZXQgcmVzdWx0OiBSb3V0ZU1vY2tDb25maWcgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcbiAgICBpZiAoIXVybENvbmZpZ0xpc3QpIHJldHVybiByZXN1bHQ7XHJcbiAgICBjb25zdCBtZXRob2RMaXN0OiBIdHRwTW9ja0VuZHBvaW50U3RvcmFnZVtdIHwgdW5kZWZpbmVkID0gdXJsQ29uZmlnTGlzdC5nZXQobWV0aG9kKTtcclxuICAgIGlmICghbWV0aG9kTGlzdCkgcmV0dXJuIHJlc3VsdDtcclxuICAgIGxldCBsZW46IG51bWJlciA9IG1ldGhvZExpc3QubGVuZ3RoIC0gMTtcclxuICAgIHdoaWxlIChsZW4gPj0gMCApIHtcclxuICAgICAgY29uc3QgbWV0aG9kTWFwOiBIdHRwTW9ja0VuZHBvaW50U3RvcmFnZSA9IG1ldGhvZExpc3RbbGVuXTtcclxuICAgICAgY29uc3QgcmVnZXhwOiBSZWdFeHAgPSBtZXRob2RNYXAucmVnZXhwO1xyXG4gICAgICBpZiAocmVnZXhwLnRlc3Qocm91dGUpKSB7XHJcbiAgICAgICAgcmVzdWx0ID0ge1xyXG4gICAgICAgICAgbWV0aG9kQ29uZmlnOiBtZXRob2RNYXAubWV0aG9kTW9jayxcclxuICAgICAgICAgIHBhcmFtZXRlcnM6IHRoaXMuYnVpbGRQYXJhbWV0ZXJzKHJlZ2V4cCwgbWV0aG9kTWFwLmtleXMsIHJvdXRlKSxcclxuICAgICAgICAgIHNlYXJjaFBhcmFtczogdXJsLnNlYXJjaFBhcmFtc1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgbGVuLS07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQHJpdmF0ZSBcclxuICAgKi9cclxuICBwcml2YXRlIGJ1aWxkUGFyYW1ldGVycyhyZWdleHA6IFJlZ0V4cCwga2V5czogS2V5W10sIHJvdXRlOiBzdHJpbmcpOiBhbnkge1xyXG4gICAgY29uc3QgZXhlY1Jlc3VsdDogUmVnRXhwRXhlY0FycmF5IHwgbnVsbCA9IHJlZ2V4cC5leGVjKHJvdXRlKTtcclxuICAgIGlmICghZXhlY1Jlc3VsdCkgcmV0dXJuIG51bGw7XHJcbiAgICBjb25zdCBwYXJhbXM6IGFueSA9IHt9O1xyXG4gICAgbGV0IGxlbjogbnVtYmVyID0gZXhlY1Jlc3VsdC5sZW5ndGggLSAxO1xyXG4gICAgbGV0IGk6IG51bWJlciA9IDE7XHJcbiAgICBmb3IgKDsgaSA8PSBsZW47ICsraSkge1xyXG4gICAgICBjb25zdCBrZXk6IEtleSA9IGtleXNbaSAtIDFdO1xyXG4gICAgICBwYXJhbXNba2V5Lm5hbWVdID0gZXhlY1Jlc3VsdFtpXTtcclxuICAgIH1cclxuICAgIHJldHVybiBwYXJhbXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAcml2YXRlIFxyXG4gICAqL1xyXG4gIHByaXZhdGUgZXh0cmFjdENvbmZpZyhpbnRlcmNlcHRvcjogSHR0cE1vY2tJbnRlcmNlcHRvciwgZ2xvYmFsT3JpZ2luOiBzdHJpbmcsIGNvbmZpZ0lkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IGVuZHBvaW50czogSHR0cE1vY2tFbmRwb2ludFtdID0gaW50ZXJjZXB0b3IuZW5kcG9pbnRzO1xyXG4gICAgbGV0IG9yaWdpbjogc3RyaW5nIHwgdW5kZWZpbmVkID0gaW50ZXJjZXB0b3Iub3JpZ2luO1xyXG4gICAgaWYgKG9yaWdpbikgdGhpcy5jaGVja09yaWdpbihvcmlnaW4pO1xyXG4gICAgZWxzZSBvcmlnaW4gPSBnbG9iYWxPcmlnaW47XHJcbiAgICBpZiAoIXRoaXMuX2NvbmZpZ0xpc3QuaGFzKG9yaWdpbikpIHRoaXMuX2NvbmZpZ0xpc3Quc2V0KG9yaWdpbiwgbmV3IE1hcDxzdHJpbmcsIEh0dHBNb2NrRW5kcG9pbnRTdG9yYWdlW10+KCkpO1xyXG4gICAgZW5kcG9pbnRzLmZvckVhY2goKGVuZHBvaW50OiBIdHRwTW9ja0VuZHBvaW50KSA9PiB7XHJcbiAgICAgIHRoaXMuZXh0cmFjdEVuZHBvaW50Q29uZmlnKG9yaWdpbiwgZW5kcG9pbnQsIEhUVFBNZXRob2RSZWYuR0VULCBjb25maWdJZCk7XHJcbiAgICAgIHRoaXMuZXh0cmFjdEVuZHBvaW50Q29uZmlnKG9yaWdpbiwgZW5kcG9pbnQsIEhUVFBNZXRob2RSZWYuUE9TVCwgY29uZmlnSWQpO1xyXG4gICAgICB0aGlzLmV4dHJhY3RFbmRwb2ludENvbmZpZyhvcmlnaW4sIGVuZHBvaW50LCBIVFRQTWV0aG9kUmVmLlBVVCwgY29uZmlnSWQpO1xyXG4gICAgICB0aGlzLmV4dHJhY3RFbmRwb2ludENvbmZpZyhvcmlnaW4sIGVuZHBvaW50LCBIVFRQTWV0aG9kUmVmLkRFTEVURSwgY29uZmlnSWQpO1xyXG4gICAgICB0aGlzLmV4dHJhY3RFbmRwb2ludENvbmZpZyhvcmlnaW4sIGVuZHBvaW50LCBIVFRQTWV0aG9kUmVmLkhFQUQsIGNvbmZpZ0lkKTtcclxuICAgICAgdGhpcy5leHRyYWN0RW5kcG9pbnRDb25maWcob3JpZ2luLCBlbmRwb2ludCwgSFRUUE1ldGhvZFJlZi5PUFRJT05TLCBjb25maWdJZCk7XHJcbiAgICAgIHRoaXMuZXh0cmFjdEVuZHBvaW50Q29uZmlnKG9yaWdpbiwgZW5kcG9pbnQsIEhUVFBNZXRob2RSZWYuUEFUQ0gsIGNvbmZpZ0lkKTtcclxuICAgICAgdGhpcy5leHRyYWN0RW5kcG9pbnRDb25maWcob3JpZ2luLCBlbmRwb2ludCwgSFRUUE1ldGhvZFJlZi5DT05ORUNULCBjb25maWdJZCk7XHJcbiAgICAgIHRoaXMuZXh0cmFjdEVuZHBvaW50Q29uZmlnKG9yaWdpbiwgZW5kcG9pbnQsIEhUVFBNZXRob2RSZWYuVFJBQ0UsIGNvbmZpZ0lkKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQHJpdmF0ZSBcclxuICAgKi9cclxuICBwcml2YXRlIGV4dHJhY3RFbmRwb2ludENvbmZpZyhvcmlnaW46IHN0cmluZywgZW5kcG9pbnQ6IEh0dHBNb2NrRW5kcG9pbnQsIG1ldGhvZDogSFRUUE1ldGhvZFJlZiwgY29uZmlnSWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3QgZXA6IGFueSA9IGVuZHBvaW50O1xyXG4gICAgaWYgKCFlcFttZXRob2QgYXMgYW55XSkgcmV0dXJuO1xyXG4gICAgY29uc3Qgb3JpZ2luQ29uZmlnOiBNYXA8c3RyaW5nLCBIdHRwTW9ja0VuZHBvaW50U3RvcmFnZVtdPiA9IHRoaXMuX2NvbmZpZ0xpc3QuZ2V0KG9yaWdpbikgYXMgYW55O1xyXG4gICAgY29uc3Qgcm91dGU6IHN0cmluZyA9IGVuZHBvaW50LnJvdXRlO1xyXG4gICAgY29uc3QgZGF0YTogVG9rZW5EYXRhID0gc3RyaW5nVG9Ub2tlbkRhdGEocm91dGUpO1xyXG4gICAgY29uc3Qga2V5czogS2V5W10gPSBbXTtcclxuICAgIGNvbnN0IHJlZ2V4cDogUmVnRXhwID0gdG9rZW5EYXRhVG9SZWdleHAoZGF0YSwga2V5cywge30pO1xyXG4gICAgaWYgKCFvcmlnaW5Db25maWcuaGFzKG1ldGhvZCkpIG9yaWdpbkNvbmZpZy5zZXQobWV0aG9kLCBbXSk7XHJcbiAgICBjb25zdCBtZXRob2RDb25maWc6IEh0dHBNb2NrRW5kcG9pbnRTdG9yYWdlW10gPSBvcmlnaW5Db25maWcuZ2V0KG1ldGhvZCkgYXMgYW55O1xyXG4gICAgbWV0aG9kQ29uZmlnLnB1c2goe1xyXG4gICAgICByZWdleHA6IHJlZ2V4cCxcclxuICAgICAga2V5czoga2V5cyxcclxuICAgICAgbWV0aG9kTW9jazogZXBbbWV0aG9kXSxcclxuICAgICAgY29uZmlnSWQ6IGNvbmZpZ0lkXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEByaXZhdGUgXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBjaGVja09yaWdpbihvcmlnaW46IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKG9yaWdpbi5lbmRzV2l0aChERUZBVUxUX0RFTElNSVRFUikpIHRocm93IG5ldyBTeW50YXhFcnJvcihgT3JpZ2luIG11c3Qgbm90IGVuZCB3aXRoIGEgLyBjaGFyYWN0ZXI6IFtcIiR7b3JpZ2lufVwiXS5gKTtcclxuICB9XHJcbiAgXHJcbiAgLyoqXHJcbiAgICogQHJpdmF0ZSBcclxuICAgKi9cclxuICBwcml2YXRlIGRlbGV0ZUNvbmZpZ0J5SWQoc3RvcmFnZU1hcDogTWFwPHN0cmluZywgSHR0cE1vY2tFbmRwb2ludFN0b3JhZ2VbXT4sIGNvbmZpZ0lkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHN0b3JhZ2VNYXAuZm9yRWFjaCgoc3RvcmFnZTogSHR0cE1vY2tFbmRwb2ludFN0b3JhZ2VbXSwga2V5OiBzdHJpbmcpID0+IHtcclxuICAgICAgY29uc3QgY2xlYW5lZENvbmZpZzogSHR0cE1vY2tFbmRwb2ludFN0b3JhZ2VbXSA9IHRoaXMuY2xlYW5Db25maWcoc3RvcmFnZSwgY29uZmlnSWQpO1xyXG4gICAgICBpZiAoY2xlYW5lZENvbmZpZy5sZW5ndGgpIHN0b3JhZ2VNYXAuc2V0KGtleSwgY2xlYW5lZENvbmZpZyk7XHJcbiAgICAgIGVsc2Ugc3RvcmFnZU1hcC5kZWxldGUoa2V5KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQHJpdmF0ZSBcclxuICAgKi9cclxuICBwcml2YXRlIGNsZWFuQ29uZmlnKHN0b3JhZ2U6IEh0dHBNb2NrRW5kcG9pbnRTdG9yYWdlW10sIGNvbmZpZ0lkOiBzdHJpbmcpOiBIdHRwTW9ja0VuZHBvaW50U3RvcmFnZVtdIHtcclxuICAgIHJldHVybiBzdG9yYWdlLmZpbHRlcigodmFsdWU6IEh0dHBNb2NrRW5kcG9pbnRTdG9yYWdlKT0+IHZhbHVlLmNvbmZpZ0lkICE9PSBjb25maWdJZCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
270
+ }], ctorParameters: () => [{ type: Document, decorators: [{
271
+ type: Inject,
272
+ args: [DOCUMENT]
273
+ }] }, { type: undefined, decorators: [{
274
+ type: Optional
275
+ }, {
276
+ type: Inject,
277
+ args: [HTTP_MOCKING_FRAMEWORK_CONFIG]
278
+ }] }] });
279
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1tb2NrLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXRvb2xib3gvc3JjL2xpYi9tb2RlbC9zZXJ2aWNlL21vY2svaHR0cC9odHRwLW1vY2suc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQWEsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBeUUsNkJBQTZCLEVBQTRCLE1BQU0sbUJBQW1CLENBQUM7QUFDbkssT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQzFGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFFQUFxRSxDQUFDO0FBR3hHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFFQUFxRSxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQzdGLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUV4QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFFM0csT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBRXpEOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFXLGlCQUFpQixDQUFDO0FBYTNEOztHQUVHO0FBSUgsTUFBTSxPQUFPLGVBQWdCLFNBQVEscUJBQXFCO0lBZ0N4RDs7O09BR0c7SUFDSCxJQUFXLGNBQWM7UUFDdkIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzlCLENB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QUFDO0lBQzFILENBQUM7SUFFRDs7T0FFRztJQUNLLGdCQUFnQixDQUFDLFVBQWtELEVBQUUsUUFBZ0I7UUFDM0YsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQWtDLEVBQUUsR0FBVyxFQUFFLEVBQUU7WUFDckUsTUFBTSxhQUFhLEdBQThCLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ3JGLElBQUksYUFBYSxDQUFDLE1BQU07Z0JBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsYUFBYSxDQUFDLENBQUM7O2dCQUN4RCxVQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ssV0FBVyxDQUFDLE9BQWtDLEVBQUUsUUFBZ0I7UUFDdEUsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBOEIsRUFBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsS0FBSyxRQUFRLENBQUMsQ0FBQztJQUN4RixDQUFDOzhHQWxQVSxlQUFlLGtCQStDTixRQUFRLGFBQTBDLDZCQUE2QjtrSEEvQ3hGLGVBQWUsY0FGZCxNQUFNOzsyRkFFUCxlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBZ0RjLE1BQU07MkJBQUMsUUFBUTs7MEJBQXVCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsNkJBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIEBsaWNlbnNlXHJcbiAqIENvcHlyaWdodCBQYXNjYWwgRUNIRU1BTk4uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXHJcbiAqXHJcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlIGZvdW5kIGluXHJcbiAqIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9wYXNjYWxlY2hlbWFubi5jb20vYW5ndWxhci10b29sYm94L3Jlc291cmNlcy9saWNlbnNlXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBpc0Rldk1vZGUsIE9uRGVzdHJveSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cE1vY2tJbnRlcmNlcHRvciwgSHR0cE1vY2tDb25maWcsIEh0dHBNZXRob2RNb2NrLCBIdHRwTW9ja0VuZHBvaW50LCBIVFRQX01PQ0tJTkdfRlJBTUVXT1JLX0NPTkZJRywgSHR0cE1vY2tQcm9kdWN0aW9uUG9saWN5IH0gZnJvbSAnLi4vLi4vLi4vYnVzaW5lc3MnO1xyXG5pbXBvcnQgeyBIVFRQTWV0aG9kUmVmIH0gZnJvbSAnLi4vLi4vLi4vLi4vZnJhbWV3b3JrL21vY2svaHR0cC91dGlsL2h0dHAtbWV0aG9kLXJlZi5lbnVtJztcclxuaW1wb3J0IHsgdG9rZW5EYXRhVG9SZWdleHAgfSBmcm9tICcuLi8uLi8uLi8uLi9mcmFtZXdvcmsvbW9jay9odHRwL3BhdGgtdG8tcmVnZXhwL3Rva2VuLWRhdGEtdG8tcmVnZXhwJztcclxuaW1wb3J0IHsgUm91dGVNb2NrQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vLi4vZnJhbWV3b3JrL21vY2svaHR0cC9jb25maWcvcm91dGUtbW9jay1jb25maWcnO1xyXG5pbXBvcnQgeyBLZXkgfSBmcm9tICcuLi8uLi8uLi8uLi9mcmFtZXdvcmsvbW9jay9odHRwL3BhdGgtdG8tcmVnZXhwL21vZGVsL2tleSc7XHJcbmltcG9ydCB7IHN0cmluZ1RvVG9rZW5EYXRhIH0gZnJvbSAnLi4vLi4vLi4vLi4vZnJhbWV3b3JrL21vY2svaHR0cC9wYXRoLXRvLXJlZ2V4cC9zdHJpbmctdG8tdG9rZW4tZGF0YSc7XHJcbmltcG9ydCB7IERFRkFVTFRfREVMSU1JVEVSIH0gZnJvbSAnLi4vLi4vLi4vLi4vZnJhbWV3b3JrL21vY2svaHR0cC9wYXRoLXRvLXJlZ2V4cC9jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBVdWlkIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbCc7XHJcbmltcG9ydCB7IFRva2VuRGF0YSB9IGZyb20gJy4uLy4uLy4uLy4uL2ZyYW1ld29yay9tb2NrL2h0dHAvcGF0aC10by1yZWdleHAvdG9rZW4tZGF0YSc7XHJcbmltcG9ydCB7IEh0dHBNb2NrU2VydmljZUVycm9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9lcnJvcic7XHJcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgSHR0cE1vY2tpbmdGcmFtZXdvcmtDb25maWdNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbC9odHRwLW1vY2tpbmctZnJhbWV3b3JrLWNvbmZpZy5tYW5hZ2VyJztcclxuaW1wb3J0IHsgSHR0cE1vY2tpbmdGcmFtZXdvcmtDb25maWcgfSBmcm9tICcuLi8uLi8uLi9idXNpbmVzcy9tb2NrL2h0dHAvY29uZmlnL2h0dHAtbW9ja2luZy1mcmFtZXdvcmstY29uZmlnJztcclxuaW1wb3J0IHsgSWRlbnRpZmlhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZSc7XHJcblxyXG4vKipcclxuICogQHByaXZhdGVcclxuICogUmVmZXJlbmNlIHRvIHRoZSBvcmlnaW5hbCB0eXBlIGZvciB0aGlzIGNsYXNzLlxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IEhUVFBfTU9DS19TRVJWSUNFOiBzdHJpbmcgPSBcIkh0dHBNb2NrU2VydmljZVwiO1xyXG5cclxuLyoqXHJcbiAqIEBwcml2YXRlXHJcbiAqIEFuIGludGVybmFsIHV0aWxpdHkgZm9yIHN0b3JyaW5nIHJlZmVyZW5jZXMgdG8gZW5kcG9pbnQgbW9jayBjb25maWdzLlxyXG4gKi9cclxuaW50ZXJmYWNlIEh0dHBNb2NrRW5kcG9pbnRTdG9yYWdlIHtcclxuICBtZXRob2RNb2NrOiBIdHRwTWV0aG9kTW9jaztcclxuICByZWdleHA6IFJlZ0V4cDtcclxuICBrZXlzOiBLZXlbXTtcclxuICBjb25maWdJZDogc3RyaW5nO1xyXG59XHJcblxyXG4vKipcclxuICogVGhlIGBIdHRwTW9ja1NlcnZpY2VgIGNsYXNzIHByb3ZpZGVzIHRoZSBBUEkgZm9yIG1hbmFnaW5nIEhUVFAgbW9jayBjb25maWd1cmF0aW9uIG9iamVjdHMuXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIdHRwTW9ja1NlcnZpY2UgZXh0ZW5kcyBJZGVudGlmaWFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG5cclxuICAvKipcclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqIEVuc3VyZXMgdGhhdCBjbGFzcyB0eXBlIGlzIHN0aWxsIGFjY2Vzc2libGUgYWZ0ZXIgVHlwZVNjcmlwdCBjb21waWxhdGlvbi5cclxuICAgKi9cclxuICBwdWJsaWMgcmVhZG9ubHkgdHlwZTogc3RyaW5nID0gSFRUUF9NT0NLX1NFUlZJQ0U7XHJcblxyXG4gIC8qKlxyXG4gICAqIEBwcml2YXRlXHJcbiAgICogVGhlIGxpc3Qgb2YgSURzIGFzc29jaWF0ZWQgd2l0aCBlYWNoIGNvbmZpZyBvYmplY3QuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfY29uZmlnSWRMaXN0OiBVdWlkW10gPSBbXTtcclxuXHJcbiAgLyoqXHJcbiAgICogQHByaXZhdGVcclxuICAgKiBTdG9yZXMgdGhlIGNvbXBsZXRlIGNvbGxlY3Rpb24gb2YgbW9ja2luZyBiZWhhdmlvcnMgZm9yIGVhY2ggcmVnaXN0ZXJlZCBjb25maWcuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfY29uZmlnTGlzdDogTWFwPHN0cmluZywgTWFwPHN0cmluZywgSHR0cE1vY2tFbmRwb2ludFN0b3JhZ2VbXT4+ID0gbmV3IE1hcDxzdHJpbmcsIE1hcDxzdHJpbmcsIEh0dHBNb2NrRW5kcG9pbnRTdG9yYWdlW10+PigpO1xyXG5cclxuICAvKipcclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqIFRoZSByZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgYXBwIFVSTCBvcmlnaW4uXHJcbiAgICovXHJcbiAgcHJpdmF0ZSByZWFkb25seSBBUFBfT1JJR0lOOiBzdHJpbmcgPSB3aW5kb3cubG9jYXRpb24ub3JpZ2luO1xyXG5cclxuICAvKipcclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqIFRoZSByZWZlcmVuY2UgdG8gdGhlIMOoSHR0cE1vY2tpbmdGcmFtZXdvcmtDb25maWdNYW5hZ2VyYCBpbnN0YW5jZS5cclxuICAgKi9cclxuICBwcml2YXRlIHJlYWRvbmx5IF9jb25maWdNbWFuYWdlcjogSHR0cE1vY2tpbmdGcmFtZXdvcmtDb25maWdNYW5hZ2VyO1xyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSB2cmVmZXJlbmNlIHRvIHRoZSBgSHR0cE1vY2tpbmdGcmFtZXdvcmtDb25maWdNYW5hZ2VyYCBpbnN0YW5jZSxcclxuICAgKiBhc3NvY2lhdGVkIHdpdGggdGhpcyBzZXJ2aWNlLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXQgY29uZmlnTW1hbmFnZXIoKTogSHR0cE1vY2tpbmdGcmFtZXdvcmtDb25maWdNYW5hZ2VyIHtcclxuICAgIHJldHVybiB0aGlzLl9jb25maWdNbWFuYWdlcjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBwcml2YXRlXHJcbiAgICogQ3JlYXRlcyBhIG5ldyBgSHR0cE1vY2tTZXJ2aWNlYCBpbnN0YW5jZS5cclxuICAgKiBcclxuICAgKiBAcGFyYW0gX2RvY3VtZW50IFRoZSByZWZlcmVuY2UgdG8gdGhlIGFwcCBkb2N1bWVudC5cclxuICAgKiBAcGFyYW0gY29uZmlnIFRoZSBvcHRpb25hbCBjb25maWcgcHJvdmlkZXIgZm9yIHRoZSBIVFRQIE1vY2tpbmcgRnJhbWV3b3JrLlxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoRE9DVU1FTlQpIGRvY3VtZW50OiBEb2N1bWVudCwgQE9wdGlvbmFsKCkgQEluamVjdChIVFRQX01PQ0tJTkdfRlJBTUVXT1JLX0NPTkZJRykgY29uZmlnOiBIdHRwTW9ja2luZ0ZyYW1ld29ya0NvbmZpZykge1xyXG4gICAgc3VwZXIoSFRUUF9NT0NLX1NFUlZJQ0UpO1xyXG4gICAgdGhpcy5fY29uZmlnTW1hbmFnZXIgPSBuZXcgSHR0cE1vY2tpbmdGcmFtZXdvcmtDb25maWdNYW5hZ2VyKGRvY3VtZW50LCBpc0Rldk1vZGUoKSwgY29uZmlnKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBwcml2YXRlXHJcbiAgICovXHJcbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fY29uZmlnTW1hbmFnZXIuY2hlY2tQb2xpY3koKTtcclxuICAgIHRoaXMuX2NvbmZpZ01tYW5hZ2VyLmRlc3Ryb3koKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFkZHMgdGhlIHNwZWNpZmllZCBgSHR0cE1vY2tDb25maWdgIG9iamVjdCB0byB0aGlzIGBIdHRwTW9ja1NlcnZpY2VgIGluc3RhbmNlLlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSBjb25maWcgVGhlIGBIdHRwTW9ja0NvbmZpZ2Agb2JqZWN0IHRvIGFkZCB0byB0aGlzIGBIdHRwTW9ja1NlcnZpY2VgIGluc3RhbmNlLlxyXG4gICAqIEBSZXR1cm5zIFRoZSBgVXVpZGAgaW5zdGFuY2UgYXNzb2NpYXRlZCB3aXRoIHRoZSBhZGRlZCBgSHR0cE1vY2tDb25maWdgIG9iamVjdC5cclxuICAgKi9cclxuICBwdWJsaWMgYWRkQ29uZmlnKGNvbmZpZzogSHR0cE1vY2tDb25maWcpOiBVdWlkIHtcclxuICAgIGNvbnN0IG9yaWdpbjogc3RyaW5nID0gY29uZmlnLm9yaWdpbiB8fCB0aGlzLkFQUF9PUklHSU47XHJcbiAgICB0aGlzLl9jb25maWdNbWFuYWdlci5jaGVja1BvbGljeSgpO1xyXG4gICAgdGhpcy5jaGVja09yaWdpbihvcmlnaW4pO1xyXG4gICAgbGV0IGlkOiBVdWlkIHwgdW5kZWZpbmVkID0gY29uZmlnLmlkO1xyXG4gICAgaWYgKCFpZCkge1xyXG4gICAgICBpZCA9IFV1aWQuYnVpbGQoKTtcclxuICAgICAgY29uZmlnLmlkID0gaWQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5oYXNSZWdpc3RlcmVkQ29uZmlnKGlkKSkgdGhyb3cgbmV3IEh0dHBNb2NrU2VydmljZUVycm9yKGBBIGNvbmZpZyBvYmplY3QgaGFzIGFscmVhZHkgYmVlbiByZWdpc3RlcmVkIHdpdGggdGhlIGlkOiBbXCIke2lkLnRvU3RyaW5nKCl9XCJdLmApIDtcclxuICAgIH1cclxuICAgIHRoaXMuX2NvbmZpZ0lkTGlzdC5wdXNoKGlkKTtcclxuICAgIGNvbnN0IHV1aWQ6IHN0cmluZyA9IGlkLnRvU3RyaW5nKCk7XHJcbiAgICBjb25maWcuaW50ZXJjZXB0b3JzLmZvckVhY2goKGludGVyY2VwdG9yOiBIdHRwTW9ja0ludGVyY2VwdG9yKSA9PiB0aGlzLmV4dHJhY3RDb25maWcoaW50ZXJjZXB0b3IsIG9yaWdpbiwgdXVpZCkgKTtcclxuICAgIHJldHVybiBpZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIGN1cnJlbnQgYXBwIFVSTCBvcmlnaW4uXHJcbiAgICogXHJcbiAgICogQHJldHVybnMgQSBzdHJpbmcgdGhhdCByZXByZXNlbnRzIHRoZSBjdXJyZW50IGFwcCBVUkwgb3JpZ2luLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRBcHBPcmlnaW4oKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLkFQUF9PUklHSU47XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZW1vdmVzIHRoZSBjb25maWd1cmF0aW9uIHJlZ2lzdGVyZWQgd2l0aCB0aGUgc3BlY2lmaWVkIGB1dWlkYCBmcm9tIHRoaXMgYEh0dHBNb2NrU2VydmljZWAgaW5zdGFuY2UuXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHV1aWQgVGhlIFVVSUQgb2YgdGhlIGNvbmZpZ3VyYXRpb24gdG8gcmVtb3ZlLlxyXG4gICAqL1xyXG4gIHB1YmxpYyByZW1vdmVDb25maWcodXVpZDogVXVpZCk6IHZvaWQge1xyXG4gICAgdGhpcy5fY29uZmlnTW1hbmFnZXIuY2hlY2tQb2xpY3koKTtcclxuICAgIGlmICghdGhpcy5oYXNSZWdpc3RlcmVkQ29uZmlnKHV1aWQpKSByZXR1cm47XHJcbiAgICBjb25zdCBjb25maWdJZDogc3RyaW5nID0gdXVpZC50b1N0cmluZygpO1xyXG4gICAgdGhpcy5fY29uZmlnTGlzdC5mb3JFYWNoKCh2YWx1ZTogTWFwPHN0cmluZywgSHR0cE1vY2tFbmRwb2ludFN0b3JhZ2VbXT4sIGtleTogc3RyaW5nKSA9PiB7XHJcbiAgICAgIHRoaXMuZGVsZXRlQ29uZmlnQnlJZCh2YWx1ZSwgY29uZmlnSWQpO1xyXG4gICAgICBpZiAodmFsdWUuc2l6ZSA9PT0gMCkgdGhpcy5fY29uZmlnTGlzdC5kZWxldGUoa2V5KTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5fY29uZmlnSWRMaXN0LnNwbGljZSh0aGlzLl9jb25maWdJZExpc3QuaW5kZXhPZih1dWlkKSwgMSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZW1vdmVzIGFsbCByZWdpc3RyZWQgY29uZmlndXJhdGlvbnMgZnJvbSB0aGlzIGBIdHRwTW9ja1NlcnZpY2VgIGluc3RhbmNlLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBjbGVhckNvbmZpZ3MoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9jb25maWdNbWFuYWdlci5jaGVja1BvbGljeSgpO1xyXG4gICAgdGhpcy5fY29uZmlnTGlzdC5jbGVhcigpO1xyXG4gICAgdGhpcy5fY29uZmlnSWRMaXN0Lmxlbmd0aCA9IDA7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgYSBib29sZWFuIHZhbHVlIHRoYXQgaW5kaWNhdGVzIHdoZXRoZXIgYSBjb25maWcgd2l0aCB0aGUgc3BlY2lmaWVkIFVVSUQgaGFzIGJlZW4gcmVnaXN0ZXJlZFxyXG4gICAqIChgdHJ1ZWApLCBvciBub3QgKGBmYWxzZWApLlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB1dWlkIFRoZSBVVUlEIG9mIHRoZSBjb25maWcgdG8gY2hlY2suXHJcbiAgICogQHJldHVybnMgYHRydWVgIHdoZXRoZXIgYSBjb25maWcgd2l0aCB0aGUgc3BlY2lmaWVkIFVVSUQgaGFzIGJlZW4gcmVnaXN0ZXJlZDsgYGZhbHNlYCBvdGhlcndpc2UuXHJcbiAgICovXHJcbiAgcHVibGljIGhhc1JlZ2lzdGVyZWRDb25maWcodXVpZDogVXVpZCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NvbmZpZ0lkTGlzdC5pbmRleE9mKHV1aWQpICE9PSAtMTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIGBSb3V0ZU1vY2tDb25maWdgIG9iamVjdCBhc3NvY2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZCBgVVJMYCBpbnN0YW5jZSBhbmQgSFRUUCBtZXRob2QuXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHVybCBUaGUgYFVSTGAgaW5zdGFuY2UgZm9yIHdoaWNoIHRvIGZpbmQgYSByb3V0ZSBjb25maWcuXHJcbiAgICogQHBhcmFtIG1ldGhvZCBUaGUgSFRUUCBtZXRob2QgZm9yIHdoaWNoIHRvIGZpbmQgYSByb3V0ZSBjb25maWcuXHJcbiAgICogQHJldHVybnMgVGhlIGBSb3V0ZU1vY2tDb25maWdgIG9iamVjdCBhc3NvY2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZCBgVVJMYCBpbnN0YW5jZSBhbmQgSFRUUCBtZXRob2Qgd2hldGhlciBpdCBleGlzdHM7XHJcbiAgICogICAgICAgICAgYHVuZGVmaW5lZGAgb3RoZXJ3aXNlLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRSb3V0ZUNvbmZpZyh1cmw6IFVSTCwgbWV0aG9kOiBIVFRQTWV0aG9kUmVmKTogUm91dGVNb2NrQ29uZmlnIHwgdW5kZWZpbmVkIHtcclxuICAgIGNvbnN0IHVybENvbmZpZ0xpc3Q6IE1hcDxzdHJpbmcsIEh0dHBNb2NrRW5kcG9pbnRTdG9yYWdlW10+IHwgdW5kZWZpbmVkID0gdGhpcy5fY29uZmlnTGlzdC5nZXQodXJsLm9yaWdpbik7XHJcbiAgICBjb25zdCByb3V0ZTogc3RyaW5nID0gdXJsLnBhdGhuYW1lO1xyXG4gICAgdGhpcy5fY29uZmlnTW1hbmFnZXIuY2hlY2tQb2xpY3kocm91dGUsIG1ldGhvZCk7XHJcbiAgICBsZXQgcmVzdWx0OiBSb3V0ZU1vY2tDb25maWcgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcbiAgICBpZiAoIXVybENvbmZpZ0xpc3QpIHJldHVybiByZXN1bHQ7XHJcbiAgICBjb25zdCBtZXRob2RMaXN0OiBIdHRwTW9ja0VuZHBvaW50U3RvcmFnZVtdIHwgdW5kZWZpbmVkID0gdXJsQ29uZmlnTGlzdC5nZXQobWV0aG9kKTtcclxuICAgIGlmICghbWV0aG9kTGlzdCkgcmV0dXJuIHJlc3VsdDtcclxuICAgIGxldCBsZW46IG51bWJlciA9IG1ldGhvZExpc3QubGVuZ3RoIC0gMTtcclxuICAgIHdoaWxlIChsZW4gPj0gMCApIHtcclxuICAgICAgY29uc3QgbWV0aG9kTWFwOiBIdHRwTW9ja0VuZHBvaW50U3RvcmFnZSA9IG1ldGhvZExpc3RbbGVuXTtcclxuICAgICAgY29uc3QgcmVnZXhwOiBSZWdFeHAgPSBtZXRob2RNYXAucmVnZXhwO1xyXG4gICAgICBpZiAocmVnZXhwLnRlc3Qocm91dGUpKSB7XHJcbiAgICAgICAgcmVzdWx0ID0ge1xyXG4gICAgICAgICAgbWV0aG9kQ29uZmlnOiBtZXRob2RNYXAubWV0aG9kTW9jayxcclxuICAgICAgICAgIHBhcmFtZXRlcnM6IHRoaXMuYnVpbGRQYXJhbWV0ZXJzKHJlZ2V4cCwgbWV0aG9kTWFwLmtleXMsIHJvdXRlKSxcclxuICAgICAgICAgIHNlYXJjaFBhcmFtczogdXJsLnNlYXJjaFBhcmFtc1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgbGVuLS07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQHJpdmF0ZSBcclxuICAgKi9cclxuICBwcml2YXRlIGJ1aWxkUGFyYW1ldGVycyhyZWdleHA6IFJlZ0V4cCwga2V5czogS2V5W10sIHJvdXRlOiBzdHJpbmcpOiBhbnkge1xyXG4gICAgY29uc3QgZXhlY1Jlc3VsdDogUmVnRXhwRXhlY0FycmF5IHwgbnVsbCA9IHJlZ2V4cC5leGVjKHJvdXRlKTtcclxuICAgIGlmICghZXhlY1Jlc3VsdCkgcmV0dXJuIG51bGw7XHJcbiAgICBjb25zdCBwYXJhbXM6IGFueSA9IHt9O1xyXG4gICAgbGV0IGxlbjogbnVtYmVyID0gZXhlY1Jlc3VsdC5sZW5ndGggLSAxO1xyXG4gICAgbGV0IGk6IG51bWJlciA9IDE7XHJcbiAgICBmb3IgKDsgaSA8PSBsZW47ICsraSkge1xyXG4gICAgICBjb25zdCBrZXk6IEtleSA9IGtleXNbaSAtIDFdO1xyXG4gICAgICBwYXJhbXNba2V5Lm5hbWVdID0gZXhlY1Jlc3VsdFtpXTtcclxuICAgIH1cclxuICAgIHJldHVybiBwYXJhbXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAcml2YXRlIFxyXG4gICAqL1xyXG4gIHByaXZhdGUgZXh0cmFjdENvbmZpZyhpbnRlcmNlcHRvcjogSHR0cE1vY2tJbnRlcmNlcHRvciwgZ2xvYmFsT3JpZ2luOiBzdHJpbmcsIGNvbmZpZ0lkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IGVuZHBvaW50czogSHR0cE1vY2tFbmRwb2ludFtdID0gaW50ZXJjZXB0b3IuZW5kcG9pbnRzO1xyXG4gICAgbGV0IG9yaWdpbjogc3RyaW5nIHwgdW5kZWZpbmVkID0gaW50ZXJjZXB0b3Iub3JpZ2luO1xyXG4gICAgaWYgKG9yaWdpbikgdGhpcy5jaGVja09yaWdpbihvcmlnaW4pO1xyXG4gICAgZWxzZSBvcmlnaW4gPSBnbG9iYWxPcmlnaW47XHJcbiAgICBpZiAoIXRoaXMuX2NvbmZpZ0xpc3QuaGFzKG9yaWdpbikpIHRoaXMuX2NvbmZpZ0xpc3Quc2V0KG9yaWdpbiwgbmV3IE1hcDxzdHJpbmcsIEh0dHBNb2NrRW5kcG9pbnRTdG9yYWdlW10+KCkpO1xyXG4gICAgZW5kcG9pbnRzLmZvckVhY2goKGVuZHBvaW50OiBIdHRwTW9ja0VuZHBvaW50KSA9PiB7XHJcbiAgICAgIHRoaXMuZXh0cmFjdEVuZHBvaW50Q29uZmlnKG9yaWdpbiwgZW5kcG9pbnQsIEhUVFBNZXRob2RSZWYuR0VULCBjb25maWdJZCk7XHJcbiAgICAgIHRoaXMuZXh0cmFjdEVuZHBvaW50Q29uZmlnKG9yaWdpbiwgZW5kcG9pbnQsIEhUVFBNZXRob2RSZWYuUE9TVCwgY29uZmlnSWQpO1xyXG4gICAgICB0aGlzLmV4dHJhY3RFbmRwb2ludENvbmZpZyhvcmlnaW4sIGVuZHBvaW50LCBIVFRQTWV0aG9kUmVmLlBVVCwgY29uZmlnSWQpO1xyXG4gICAgICB0aGlzLmV4dHJhY3RFbmRwb2ludENvbmZpZyhvcmlnaW4sIGVuZHBvaW50LCBIVFRQTWV0aG9kUmVmLkRFTEVURSwgY29uZmlnSWQpO1xyXG4gICAgICB0aGlzLmV4dHJhY3RFbmRwb2ludENvbmZpZyhvcmlnaW4sIGVuZHBvaW50LCBIVFRQTWV0aG9kUmVmLkhFQUQsIGNvbmZpZ0lkKTtcclxuICAgICAgdGhpcy5leHRyYWN0RW5kcG9pbnRDb25maWcob3JpZ2luLCBlbmRwb2ludCwgSFRUUE1ldGhvZFJlZi5PUFRJT05TLCBjb25maWdJZCk7XHJcbiAgICAgIHRoaXMuZXh0cmFjdEVuZHBvaW50Q29uZmlnKG9yaWdpbiwgZW5kcG9pbnQsIEhUVFBNZXRob2RSZWYuUEFUQ0gsIGNvbmZpZ0lkKTtcclxuICAgICAgdGhpcy5leHRyYWN0RW5kcG9pbnRDb25maWcob3JpZ2luLCBlbmRwb2ludCwgSFRUUE1ldGhvZFJlZi5DT05ORUNULCBjb25maWdJZCk7XHJcbiAgICAgIHRoaXMuZXh0cmFjdEVuZHBvaW50Q29uZmlnKG9yaWdpbiwgZW5kcG9pbnQsIEhUVFBNZXRob2RSZWYuVFJBQ0UsIGNvbmZpZ0lkKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQHJpdmF0ZSBcclxuICAgKi9cclxuICBwcml2YXRlIGV4dHJhY3RFbmRwb2ludENvbmZpZyhvcmlnaW46IHN0cmluZywgZW5kcG9pbnQ6IEh0dHBNb2NrRW5kcG9pbnQsIG1ldGhvZDogSFRUUE1ldGhvZFJlZiwgY29uZmlnSWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3QgZXA6IGFueSA9IGVuZHBvaW50O1xyXG4gICAgaWYgKCFlcFttZXRob2QgYXMgYW55XSkgcmV0dXJuO1xyXG4gICAgY29uc3Qgb3JpZ2luQ29uZmlnOiBNYXA8c3RyaW5nLCBIdHRwTW9ja0VuZHBvaW50U3RvcmFnZVtdPiA9IHRoaXMuX2NvbmZpZ0xpc3QuZ2V0KG9yaWdpbikgYXMgYW55O1xyXG4gICAgY29uc3Qgcm91dGU6IHN0cmluZyA9IGVuZHBvaW50LnJvdXRlO1xyXG4gICAgY29uc3QgZGF0YTogVG9rZW5EYXRhID0gc3RyaW5nVG9Ub2tlbkRhdGEocm91dGUpO1xyXG4gICAgY29uc3Qga2V5czogS2V5W10gPSBbXTtcclxuICAgIGNvbnN0IHJlZ2V4cDogUmVnRXhwID0gdG9rZW5EYXRhVG9SZWdleHAoZGF0YSwga2V5cywge30pO1xyXG4gICAgaWYgKCFvcmlnaW5Db25maWcuaGFzKG1ldGhvZCkpIG9yaWdpbkNvbmZpZy5zZXQobWV0aG9kLCBbXSk7XHJcbiAgICBjb25zdCBtZXRob2RDb25maWc6IEh0dHBNb2NrRW5kcG9pbnRTdG9yYWdlW10gPSBvcmlnaW5Db25maWcuZ2V0KG1ldGhvZCkgYXMgYW55O1xyXG4gICAgbWV0aG9kQ29uZmlnLnB1c2goe1xyXG4gICAgICByZWdleHA6IHJlZ2V4cCxcclxuICAgICAga2V5czoga2V5cyxcclxuICAgICAgbWV0aG9kTW9jazogZXBbbWV0aG9kXSxcclxuICAgICAgY29uZmlnSWQ6IGNvbmZpZ0lkXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEByaXZhdGUgXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBjaGVja09yaWdpbihvcmlnaW46IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKG9yaWdpbi5lbmRzV2l0aChERUZBVUxUX0RFTElNSVRFUikpIHRocm93IG5ldyBTeW50YXhFcnJvcihgT3JpZ2luIG11c3Qgbm90IGVuZCB3aXRoIGEgLyBjaGFyYWN0ZXI6IFtcIiR7b3JpZ2lufVwiXS5gKTtcclxuICB9XHJcbiAgXHJcbiAgLyoqXHJcbiAgICogQHJpdmF0ZSBcclxuICAgKi9cclxuICBwcml2YXRlIGRlbGV0ZUNvbmZpZ0J5SWQoc3RvcmFnZU1hcDogTWFwPHN0cmluZywgSHR0cE1vY2tFbmRwb2ludFN0b3JhZ2VbXT4sIGNvbmZpZ0lkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHN0b3JhZ2VNYXAuZm9yRWFjaCgoc3RvcmFnZTogSHR0cE1vY2tFbmRwb2ludFN0b3JhZ2VbXSwga2V5OiBzdHJpbmcpID0+IHtcclxuICAgICAgY29uc3QgY2xlYW5lZENvbmZpZzogSHR0cE1vY2tFbmRwb2ludFN0b3JhZ2VbXSA9IHRoaXMuY2xlYW5Db25maWcoc3RvcmFnZSwgY29uZmlnSWQpO1xyXG4gICAgICBpZiAoY2xlYW5lZENvbmZpZy5sZW5ndGgpIHN0b3JhZ2VNYXAuc2V0KGtleSwgY2xlYW5lZENvbmZpZyk7XHJcbiAgICAgIGVsc2Ugc3RvcmFnZU1hcC5kZWxldGUoa2V5KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQHJpdmF0ZSBcclxuICAgKi9cclxuICBwcml2YXRlIGNsZWFuQ29uZmlnKHN0b3JhZ2U6IEh0dHBNb2NrRW5kcG9pbnRTdG9yYWdlW10sIGNvbmZpZ0lkOiBzdHJpbmcpOiBIdHRwTW9ja0VuZHBvaW50U3RvcmFnZVtdIHtcclxuICAgIHJldHVybiBzdG9yYWdlLmZpbHRlcigodmFsdWU6IEh0dHBNb2NrRW5kcG9pbnRTdG9yYWdlKT0+IHZhbHVlLmNvbmZpZ0lkICE9PSBjb25maWdJZCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -15,8 +15,8 @@ import * as i0 from "@angular/core";
15
15
  const LAYERS_VERSION_CONFIG = {
16
16
  major: 0,
17
17
  minor: 11,
18
- patch: 1,
19
- buildTimestamp: 1722003985958,
18
+ patch: 3,
19
+ buildTimestamp: 1722599248501,
20
20
  metadata: "beta"
21
21
  };
22
22
  /**
@@ -35,4 +35,4 @@ export class AngularToolboxVersionService extends AbstractVersionManager {
35
35
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: AngularToolboxVersionService, decorators: [{
36
36
  type: Injectable
37
37
  }], ctorParameters: () => [] });
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci10b29sYm94LXZlcnNpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdG9vbGJveC9zcmMvbGliL21vZGVsL3NlcnZpY2UvdmVyc2lvbi9hbmd1bGFyLXRvb2xib3gtdmVyc2lvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUd2RDs7O0dBR0c7QUFDSCxNQUFNLHFCQUFxQixHQUFrQjtJQUMzQyxLQUFLLEVBQUUsQ0FBQztJQUNSLEtBQUssRUFBRSxFQUFFO0lBQ1QsS0FBSyxFQUFFLENBQUM7SUFDUixjQUFjLEVBQUUsYUFBYTtJQUM3QixRQUFRLEVBQUUsTUFBTTtDQUNqQixDQUFDO0FBRUY7O0dBRUc7QUFFSCxNQUFNLE9BQU8sNEJBQTZCLFNBQVEsc0JBQXNCO0lBRXRFOztPQUVHO0lBQ0g7UUFDRSxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUMvQixDQUFDOzhHQVBVLDRCQUE0QjtrSEFBNUIsNEJBQTRCOzsyRkFBNUIsNEJBQTRCO2tCQUR4QyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IFBhc2NhbCBFQ0hFTUFOTi4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZSBmb3VuZCBpblxuICogdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL3Bhc2NhbGVjaGVtYW5uLmNvbS9hbmd1bGFyLXRvb2xib3gvcmVzb3VyY2VzL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdFZlcnNpb25NYW5hZ2VyIH0gZnJvbSAnLi4vLi4vLi4vY29yZSc7XG5pbXBvcnQgeyBWZXJzaW9uQ29uZmlnIH0gZnJvbSAnLi4vLi4vYnVzaW5lc3MnO1xuXG4vKipcbiAqIEBwcml2YXRlXG4gKiBUaGUgY3VycmVudCB2ZXJzaW9uIG9mIHRoZSBBbmd1bGFyIFRvb2xib3ggbGlicmFyeS5cbiAqL1xuY29uc3QgTEFZRVJTX1ZFUlNJT05fQ09ORklHOiBWZXJzaW9uQ29uZmlnID0ge1xuICBtYWpvcjogMCxcbiAgbWlub3I6IDExLFxuICBwYXRjaDogMSxcbiAgYnVpbGRUaW1lc3RhbXA6IDE3MjIwMDM5ODU5NTgsXG4gIG1ldGFkYXRhOiBcImJldGFcIlxufTtcblxuLyoqXG4gKiBUaGUgcHVibGljIHNlcnZpY2UgdGhhdCBleHBvc2VzIHRoZSBjdXJyZW50IHZlcnNpb24gb2YgdGhlIEFuZ3VsYXIgVG9vbGJveCBsaWJyYXJ5LlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQW5ndWxhclRvb2xib3hWZXJzaW9uU2VydmljZSBleHRlbmRzIEFic3RyYWN0VmVyc2lvbk1hbmFnZXIge1xuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoTEFZRVJTX1ZFUlNJT05fQ09ORklHKTtcbiAgfVxufVxuIl19
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci10b29sYm94LXZlcnNpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdG9vbGJveC9zcmMvbGliL21vZGVsL3NlcnZpY2UvdmVyc2lvbi9hbmd1bGFyLXRvb2xib3gtdmVyc2lvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUd2RDs7O0dBR0c7QUFDSCxNQUFNLHFCQUFxQixHQUFrQjtJQUMzQyxLQUFLLEVBQUUsQ0FBQztJQUNSLEtBQUssRUFBRSxFQUFFO0lBQ1QsS0FBSyxFQUFFLENBQUM7SUFDUixjQUFjLEVBQUUsYUFBYTtJQUM3QixRQUFRLEVBQUUsTUFBTTtDQUNqQixDQUFDO0FBRUY7O0dBRUc7QUFFSCxNQUFNLE9BQU8sNEJBQTZCLFNBQVEsc0JBQXNCO0lBRXRFOztPQUVHO0lBQ0g7UUFDRSxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUMvQixDQUFDOzhHQVBVLDRCQUE0QjtrSEFBNUIsNEJBQTRCOzsyRkFBNUIsNEJBQTRCO2tCQUR4QyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IFBhc2NhbCBFQ0hFTUFOTi4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZSBmb3VuZCBpblxuICogdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL3Bhc2NhbGVjaGVtYW5uLmNvbS9hbmd1bGFyLXRvb2xib3gvcmVzb3VyY2VzL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdFZlcnNpb25NYW5hZ2VyIH0gZnJvbSAnLi4vLi4vLi4vY29yZSc7XG5pbXBvcnQgeyBWZXJzaW9uQ29uZmlnIH0gZnJvbSAnLi4vLi4vYnVzaW5lc3MnO1xuXG4vKipcbiAqIEBwcml2YXRlXG4gKiBUaGUgY3VycmVudCB2ZXJzaW9uIG9mIHRoZSBBbmd1bGFyIFRvb2xib3ggbGlicmFyeS5cbiAqL1xuY29uc3QgTEFZRVJTX1ZFUlNJT05fQ09ORklHOiBWZXJzaW9uQ29uZmlnID0ge1xuICBtYWpvcjogMCxcbiAgbWlub3I6IDExLFxuICBwYXRjaDogMyxcbiAgYnVpbGRUaW1lc3RhbXA6IDE3MjI1OTkyNDg1MDEsXG4gIG1ldGFkYXRhOiBcImJldGFcIlxufTtcblxuLyoqXG4gKiBUaGUgcHVibGljIHNlcnZpY2UgdGhhdCBleHBvc2VzIHRoZSBjdXJyZW50IHZlcnNpb24gb2YgdGhlIEFuZ3VsYXIgVG9vbGJveCBsaWJyYXJ5LlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQW5ndWxhclRvb2xib3hWZXJzaW9uU2VydmljZSBleHRlbmRzIEFic3RyYWN0VmVyc2lvbk1hbmFnZXIge1xuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoTEFZRVJTX1ZFUlNJT05fQ09ORklHKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,129 @@
1
+ /**
2
+ * @license
3
+ * Copyright Pascal ECHEMANN. All Rights Reserved.
4
+ *
5
+ * Use of this source code is governed by an MIT-style license that can be found in
6
+ * the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license
7
+ */
8
+ import { HttpMockProductionPolicy } from "../model";
9
+ import { HttpMockServiceError } from "../core";
10
+ /**
11
+ * @private
12
+ */
13
+ const POLICY_WARNING = "HTTP Mocking Framework is running in production mode";
14
+ /**
15
+ * @private
16
+ */
17
+ const POLICY_ERROR = new HttpMockServiceError(POLICY_WARNING + ": remove all framework references or change the 'productionPolicy' property value of the HTTP_MOCKING_FRAMEWORK_CONFIG provider.");
18
+ /**
19
+ * @private
20
+ */
21
+ const FLAG_ID = "http-mocking-framework-flag";
22
+ /**
23
+ * The object that manages the HTTP Mocking Framework options.
24
+ */
25
+ export class HttpMockingFrameworkConfigManager {
26
+ /**
27
+ * Returns the value specified by the `disableVisualFlag` of the `HttpMockingFrameworkConfig` provider,
28
+ * or `false` when no provider is defined.
29
+ */
30
+ get disableVisualFlag() {
31
+ const cfg = this._config;
32
+ return cfg && cfg.disableVisualFlag ? cfg.disableVisualFlag : false;
33
+ }
34
+ /**
35
+ * Returns the value specified by the `productionPolicy` of the `HttpMockingFrameworkConfig` provider,
36
+ * or `HttpMockProductionPolicy.ERROR` when no provider is defined.
37
+ */
38
+ get productionPolicy() {
39
+ return this._prodPolicy;
40
+ }
41
+ /**
42
+ * @private
43
+ * Creates and Initializes the manager with the specified config.
44
+ *
45
+ * @param document The reference to the `Document` object, injected by Angular.
46
+ * @param isDevMode Indicates wheter Angular runs in development mode (`true`), or in production mode (`false`).
47
+ * @param config The `HttpMockingFrameworkConfi` provider.
48
+ */
49
+ constructor(document, isDevMode, config) {
50
+ this._isProdMode = !isDevMode;
51
+ this._document = document;
52
+ this._config = config;
53
+ this._prodPolicy = config && config.productionPolicy !== undefined ? config.productionPolicy : HttpMockProductionPolicy.ERROR;
54
+ this.checkPolicy();
55
+ this.createVisualFlag(document, config);
56
+ }
57
+ /**
58
+ * Apply a strategy depending on the current production policy and environment.
59
+ * @param route An optional parameter used when the methhod is associated to a HTTP request.
60
+ * Must be the representation of the intercepted route path.
61
+ * @param method An optional parameter used when the methhod is associated to a HTTP request.
62
+ * Must be the representation of the intercepted HTTP method.
63
+ */
64
+ checkPolicy(route, method = undefined) {
65
+ if (!this._isProdMode)
66
+ return;
67
+ if (this._prodPolicy === HttpMockProductionPolicy.ERROR)
68
+ throw POLICY_ERROR;
69
+ if (this._prodPolicy === HttpMockProductionPolicy.SILENT)
70
+ return;
71
+ const routeMsg = route ? `: intercepted request=[path=${route}, method=${method?.toUpperCase()}]` : ".";
72
+ console.warn(POLICY_WARNING + routeMsg);
73
+ }
74
+ /**
75
+ * @private
76
+ */
77
+ destroy() {
78
+ const cfg = this._config;
79
+ const noFlag = (cfg && cfg.disableVisualFlag) === true;
80
+ this._config = null;
81
+ if (noFlag)
82
+ return;
83
+ const doc = this._document;
84
+ const flag = doc.getElementById(FLAG_ID);
85
+ if (flag) {
86
+ flag.onmouseover = flag.onmouseout = null;
87
+ doc.body.removeChild(flag);
88
+ }
89
+ }
90
+ /**
91
+ * @private
92
+ */
93
+ createVisualFlag(document, config) {
94
+ if (config && config.disableVisualFlag)
95
+ return;
96
+ const flag = document.createElement("div");
97
+ const text = document.createTextNode("HTTP Mocking Framwork");
98
+ const style = flag.style;
99
+ const body = document.body;
100
+ flag.setAttribute("id", FLAG_ID);
101
+ style.backgroundColor = "red";
102
+ style.color = "white";
103
+ style.textAlign = "center";
104
+ style.position = "fixed";
105
+ style.width = "100%";
106
+ style.overflow = "hidden";
107
+ style.height = "26px";
108
+ style.transition = "all 0.25s ease-in-out";
109
+ style.zIndex = "10000";
110
+ style.opacity = "1";
111
+ style.userSelect = "none";
112
+ flag.onmouseover = () => {
113
+ style.height = "26px";
114
+ style.opacity = "1";
115
+ };
116
+ flag.onmouseout = () => {
117
+ style.height = "6px";
118
+ style.opacity = "0.35";
119
+ };
120
+ flag.appendChild(text);
121
+ body.insertBefore(flag, body.firstChild);
122
+ setTimeout(() => {
123
+ style.height = "4px";
124
+ style.opacity = "0.35";
125
+ }, 4000);
126
+ }
127
+ }
128
+ ;
129
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1tb2NraW5nLWZyYW1ld29yay1jb25maWcubWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdG9vbGJveC9zcmMvbGliL3V0aWwvaHR0cC1tb2NraW5nLWZyYW1ld29yay1jb25maWcubWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQWUsd0JBQXdCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFakUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRy9DOztHQUVHO0FBQ0gsTUFBTSxjQUFjLEdBQVcsc0RBQXNELENBQUM7QUFFdEY7O0dBRUc7QUFDSCxNQUFNLFlBQVksR0FBeUIsSUFBSSxvQkFBb0IsQ0FBQyxjQUFjLEdBQUcsa0lBQWtJLENBQUMsQ0FBQztBQUV6Tjs7R0FFRztBQUNILE1BQU0sT0FBTyxHQUFXLDZCQUE2QixDQUFDO0FBRXREOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGlDQUFpQztJQXNCMUM7OztPQUdHO0lBQ0gsSUFBVyxpQkFBaUI7UUFDeEIsTUFBTSxHQUFHLEdBQTJDLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDakUsT0FBTyxHQUFHLElBQUksR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUN4RSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBVyxnQkFBZ0I7UUFDdkIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzVCLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsWUFBWSxRQUFrQixFQUFFLFNBQWtCLEVBQUUsTUFBbUM7UUFDbkYsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLFNBQVMsQ0FBQztRQUM5QixJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztRQUMxQixJQUFJ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QUFLLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQztRQUMxQixJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUUsRUFBRTtZQUNuQixLQUFLLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztZQUN0QixLQUFLLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQztRQUN4QixDQUFDLENBQUM7UUFDRixJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUUsRUFBRTtZQUNsQixLQUFLLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztZQUNyQixLQUFLLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUMzQixDQUFDLENBQUM7UUFDRixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN6QyxVQUFVLENBQUMsR0FBRSxFQUFFO1lBQ1gsS0FBSyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7WUFDckIsS0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDM0IsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2IsQ0FBQztDQUNKO0FBQUEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBAbGljZW5zZVxyXG4gKiBDb3B5cmlnaHQgUGFzY2FsIEVDSEVNQU5OLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxyXG4gKlxyXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZSBmb3VuZCBpblxyXG4gKiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vcGFzY2FsZWNoZW1hbm4uY29tL2FuZ3VsYXItdG9vbGJveC9yZXNvdXJjZXMvbGljZW5zZVxyXG4gKi9cclxuXHJcbmltcG9ydCB7IERlc3Ryb3lhYmxlLCBIdHRwTW9ja1Byb2R1Y3Rpb25Qb2xpY3kgfSBmcm9tIFwiLi4vbW9kZWxcIjtcclxuaW1wb3J0IHsgSHR0cE1vY2tpbmdGcmFtZXdvcmtDb25maWcgfSBmcm9tIFwiLi4vbW9kZWwvYnVzaW5lc3MvbW9jay9odHRwL2NvbmZpZy9odHRwLW1vY2tpbmctZnJhbWV3b3JrLWNvbmZpZ1wiO1xyXG5pbXBvcnQgeyBIdHRwTW9ja1NlcnZpY2VFcnJvciB9IGZyb20gXCIuLi9jb3JlXCI7XHJcbmltcG9ydCB7IEhUVFBNZXRob2RSZWYgfSBmcm9tIFwiLi4vZnJhbWV3b3JrL21vY2svaHR0cC91dGlsL2h0dHAtbWV0aG9kLXJlZi5lbnVtXCI7XHJcblxyXG4vKipcclxuICogQHByaXZhdGVcclxuICovXHJcbmNvbnN0IFBPTElDWV9XQVJOSU5HOiBzdHJpbmcgPSBcIkhUVFAgTW9ja2luZyBGcmFtZXdvcmsgaXMgcnVubmluZyBpbiBwcm9kdWN0aW9uIG1vZGVcIjtcclxuXHJcbi8qKlxyXG4gKiBAcHJpdmF0ZVxyXG4gKi9cclxuY29uc3QgUE9MSUNZX0VSUk9SOiBIdHRwTW9ja1NlcnZpY2VFcnJvciA9IG5ldyBIdHRwTW9ja1NlcnZpY2VFcnJvcihQT0xJQ1lfV0FSTklORyArIFwiOiByZW1vdmUgYWxsIGZyYW1ld29yayByZWZlcmVuY2VzIG9yIGNoYW5nZSB0aGUgJ3Byb2R1Y3Rpb25Qb2xpY3knIHByb3BlcnR5IHZhbHVlIG9mIHRoZSBIVFRQX01PQ0tJTkdfRlJBTUVXT1JLX0NPTkZJRyBwcm92aWRlci5cIik7XHJcblxyXG4vKipcclxuICogQHByaXZhdGVcclxuICovXHJcbmNvbnN0IEZMQUdfSUQ6IHN0cmluZyA9IFwiaHR0cC1tb2NraW5nLWZyYW1ld29yay1mbGFnXCI7XHJcblxyXG4vKipcclxuICogVGhlIG9iamVjdCB0aGF0IG1hbmFnZXMgdGhlIEhUVFAgTW9ja2luZyBGcmFtZXdvcmsgb3B0aW9ucy5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBIdHRwTW9ja2luZ0ZyYW1ld29ya0NvbmZpZ01hbmFnZXIgaW1wbGVtZW50cyBEZXN0cm95YWJsZSB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJpdmF0ZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9kb2N1bWVudCE6IERvY3VtZW50O1xyXG4gICAgXHJcbiAgICAvKipcclxuICAgICAqIEBwcml2YXRlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2NvbmZpZz86IEh0dHBNb2NraW5nRnJhbWV3b3JrQ29uZmlnO1xyXG4gICAgXHJcbiAgICAvKipcclxuICAgICAqIEBwcml2YXRlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2lzUHJvZE1vZGU6IGJvb2xlYW47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJpdmF0ZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9wcm9kUG9saWN5OiBIdHRwTW9ja1Byb2R1Y3Rpb25Qb2xpY3k7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBzcGVjaWZpZWQgYnkgdGhlIGBkaXNhYmxlVmlzdWFsRmxhZ2Agb2YgdGhlIGBIdHRwTW9ja2luZ0ZyYW1ld29ya0NvbmZpZ2AgcHJvdmlkZXIsXHJcbiAgICAgKiBvciBgZmFsc2VgIHdoZW4gbm8gcHJvdmlkZXIgaXMgZGVmaW5lZC5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldCBkaXNhYmxlVmlzdWFsRmxhZygpOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCBjZmc6IEh0dHBNb2NraW5nRnJhbWV3b3JrQ29uZmlnIHwgdW5kZWZpbmVkID0gdGhpcy5fY29uZmlnO1xyXG4gICAgICAgIHJldHVybiBjZmcgJiYgY2ZnLmRpc2FibGVWaXN1YWxGbGFnID8gY2ZnLmRpc2FibGVWaXN1YWxGbGFnIDogZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBzcGVjaWZpZWQgYnkgdGhlIGBwcm9kdWN0aW9uUG9saWN5YCBvZiB0aGUgYEh0dHBNb2NraW5nRnJhbWV3b3JrQ29uZmlnYCBwcm92aWRlcixcclxuICAgICAqIG9yIGBIdHRwTW9ja1Byb2R1Y3Rpb25Qb2xpY3kuRVJST1JgIHdoZW4gbm8gcHJvdmlkZXIgaXMgZGVmaW5lZC5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldCBwcm9kdWN0aW9uUG9saWN5KCk6IEh0dHBNb2NrUHJvZHVjdGlvblBvbGljeSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Byb2RQb2xpY3k7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJpdmF0ZVxyXG4gICAgICogQ3JlYXRlcyBhbmQgSW5pdGlhbGl6ZXMgdGhlIG1hbmFnZXIgd2l0aCB0aGUgc3BlY2lmaWVkIGNvbmZpZy5cclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIGRvY3VtZW50IFRoZSByZWZlcmVuY2UgdG8gdGhlIGBEb2N1bWVudGAgb2JqZWN0LCBpbmplY3RlZCBieSBBbmd1bGFyLlxyXG4gICAgICogQHBhcmFtIGlzRGV2TW9kZSBJbmRpY2F0ZXMgd2hldGVyIEFuZ3VsYXIgcnVucyBpbiBkZXZlbG9wbWVudCBtb2RlIChgdHJ1ZWApLCBvciBpbiBwcm9kdWN0aW9uIG1vZGUgKGBmYWxzZWApLlxyXG4gICAgICogQHBhcmFtIGNvbmZpZyBUaGUgYEh0dHBNb2NraW5nRnJhbWV3b3JrQ29uZmlgIHByb3ZpZGVyLlxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3Rvcihkb2N1bWVudDogRG9jdW1lbnQsIGlzRGV2TW9kZTogYm9vbGVhbiwgY29uZmlnPzogSHR0cE1vY2tpbmdGcmFtZXdvcmtDb25maWcpIHtcclxuICAgICAgICB0aGlzLl9pc1Byb2RNb2RlID0gIWlzRGV2TW9kZTtcclxuICAgICAgICB0aGlzLl9kb2N1bWVudCA9IGRvY3VtZW50O1xyXG4gICAgICAgIHRoaXMuX2NvbmZpZyA9IGNvbmZpZztcclxuICAgICAgICB0aGlzLl9wcm9kUG9saWN5ID0gY29uZmlnICYmIGNvbmZpZy5wcm9kdWN0aW9uUG9saWN5ICE9PSB1bmRlZmluZWQgPyBjb25maWcucHJvZHVjdGlvblBvbGljeSA6IEh0dHBNb2NrUHJvZHVjdGlvblBvbGljeS5FUlJPUjtcclxuICAgICAgICB0aGlzLmNoZWNrUG9saWN5KCk7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVWaXN1YWxGbGFnKGRvY3VtZW50LCBjb25maWcpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICAvKipcclxuICAgICAqIEFwcGx5IGEgc3RyYXRlZ3kgZGVwZW5kaW5nIG9uIHRoZSBjdXJyZW50IHByb2R1Y3Rpb24gcG9saWN5IGFuZCBlbnZpcm9ubWVudC5cclxuICAgICAqIEBwYXJhbSByb3V0ZSBBbiBvcHRpb25hbCBwYXJhbWV0ZXIgdXNlZCB3aGVuIHRoZSBtZXRoaG9kIGlzIGFzc29jaWF0ZWQgdG8gYSBIVFRQIHJlcXVlc3QuXHJcbiAgICAgKiAgICAgICAgICAgICAgTXVzdCBiZSB0aGUgcmVwcmVzZW50YXRpb24gb2YgdGhlIGludGVyY2VwdGVkIHJvdXRlIHBhdGguXHJcbiAgICAgKiBAcGFyYW0gbWV0aG9kIEFuIG9wdGlvbmFsIHBhcmFtZXRlciB1c2VkIHdoZW4gdGhlIG1ldGhob2QgaXMgYXNzb2NpYXRlZCB0byBhIEhUVFAgcmVxdWVzdC5cclxuICAgICAqICAgICAgICAgICAgICAgTXVzdCBiZSB0aGUgcmVwcmVzZW50YXRpb24gb2YgdGhlIGludGVyY2VwdGVkIEhUVFAgbWV0aG9kLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgY2hlY2tQb2xpY3kocm91dGU/OiBzdHJpbmcsIG1ldGhvZDogSFRUUE1ldGhvZFJlZiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCk6IHZvaWQge1xyXG4gICAgICAgIGlmICghdGhpcy5faXNQcm9kTW9kZSkgcmV0dXJuO1xyXG4gICAgICAgIGlmICh0aGlzLl9wcm9kUG9saWN5ID09PSBIdHRwTW9ja1Byb2R1Y3Rpb25Qb2xpY3kuRVJST1IpIHRocm93IFBPTElDWV9FUlJPUjtcclxuICAgICAgICBpZiAodGhpcy5fcHJvZFBvbGljeSA9PT0gSHR0cE1vY2tQcm9kdWN0aW9uUG9saWN5LlNJTEVOVCkgcmV0dXJuO1xyXG4gICAgICAgIGNvbnN0IHJvdXRlTXNnOiBzdHJpbmcgPSByb3V0ZSA/IGA6IGludGVyY2VwdGVkIHJlcXVlc3Q9W3BhdGg9JHtyb3V0ZX0sIG1ldGhvZD0ke21ldGhvZD8udG9VcHBlckNhc2UoKX1dYCA6IFwiLlwiO1xyXG4gICAgICAgIGNvbnNvbGUud2FybihQT0xJQ1lfV0FSTklORyArIHJvdXRlTXNnKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBwcml2YXRlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBkZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGNmZzogSHR0cE1vY2tpbmdGcmFtZXdvcmtDb25maWcgfCB1bmRlZmluZWQgPSB0aGlzLl9jb25maWc7XHJcbiAgICAgICAgY29uc3Qgbm9GbGFnOiBib29sZWFuID0gKGNmZyAmJiBjZmcuZGlzYWJsZVZpc3VhbEZsYWcpID09PSB0cnVlO1xyXG4gICAgICAgIHRoaXMuX2NvbmZpZyA9IG51bGwgYXMgYW55O1xyXG4gICAgICAgIGlmIChub0ZsYWcpICByZXR1cm47XHJcbiAgICAgICAgY29uc3QgZG9jOiBEb2N1bWVudCA9IHRoaXMuX2RvY3VtZW50O1xyXG4gICAgICAgIGNvbnN0IGZsYWc6IEhUTUxFbGVtZW50IHwgbnVsbCA9IGRvYy5nZXRFbGVtZW50QnlJZChGTEFHX0lEKTtcclxuICAgICAgICBpZiAoZmxhZykge1xyXG4gICAgICAgICAgICBmbGFnLm9ubW91c2VvdmVyID0gZmxhZy5vbm1vdXNlb3V0ID1udWxsO1xyXG4gICAgICAgICAgICBkb2MuYm9keS5yZW1vdmVDaGlsZChmbGFnKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJpdmF0ZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGNyZWF0ZVZpc3VhbEZsYWcoZG9jdW1lbnQ6IERvY3VtZW50LCBjb25maWc/OiBIdHRwTW9ja2luZ0ZyYW1ld29ya0NvbmZpZyk6IHZvaWQge1xyXG4gICAgICAgIGlmIChjb25maWcgJiYgY29uZmlnLmRpc2FibGVWaXN1YWxGbGFnKSByZXR1cm47XHJcbiAgICAgICAgY29uc3QgZmxhZzogSFRNTERpdkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xyXG4gICAgICAgIGNvbnN0IHRleHQ6IFRleHQgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShcIkhUVFAgTW9ja2luZyBGcmFtd29ya1wiKTtcclxuICAgICAgICBjb25zdCBzdHlsZTogQ1NTU3R5bGVEZWNsYXJhdGlvbiA9IGZsYWcuc3R5bGU7XHJcbiAgICAgICAgY29uc3QgYm9keSA9IGRvY3VtZW50LmJvZHk7XHJcbiAgICAgICAgZmxhZy5zZXRBdHRyaWJ1dGUoXCJpZFwiLCBGTEFHX0lEKTtcclxuICAgICAgICBzdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBcInJlZFwiO1xyXG4gICAgICAgIHN0eWxlLmNvbG9yID0gXCJ3aGl0ZVwiO1xyXG4gICAgICAgIHN0eWxlLnRleHRBbGlnbiA9IFwiY2VudGVyXCI7XHJcbiAgICAgICAgc3R5bGUucG9zaXRpb24gPSBcImZpeGVkXCI7XHJcbiAgICAgICAgc3R5bGUud2lkdGggPSBcIjEwMCVcIjtcclxuICAgICAgICBzdHlsZS5vdmVyZmxvdyA9IFwiaGlkZGVuXCI7XHJcbiAgICAgICAgc3R5bGUuaGVpZ2h0ID0gXCIyNnB4XCI7XHJcbiAgICAgICAgc3R5bGUudHJhbnNpdGlvbiA9IFwiYWxsIDAuMjVzIGVhc2UtaW4tb3V0XCI7XHJcbiAgICAgICAgc3R5bGUuekluZGV4ID0gXCIxMDAwMFwiO1xyXG4gICAgICAgIHN0eWxlLm9wYWNpdHkgPSBcIjFcIjtcclxuICAgICAgICBzdHlsZS51c2VyU2VsZWN0ID0gXCJub25lXCI7XHJcbiAgICAgICAgZmxhZy5vbm1vdXNlb3ZlciA9ICgpPT4ge1xyXG4gICAgICAgICAgICBzdHlsZS5oZWlnaHQgPSBcIjI2cHhcIjtcclxuICAgICAgICAgICAgc3R5bGUub3BhY2l0eSA9IFwiMVwiO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgZmxhZy5vbm1vdXNlb3V0ID0gKCk9PiB7XHJcbiAgICAgICAgICAgIHN0eWxlLmhlaWdodCA9IFwiNnB4XCI7XHJcbiAgICAgICAgICAgIHN0eWxlLm9wYWNpdHkgPSBcIjAuMzVcIjtcclxuICAgICAgICB9O1xyXG4gICAgICAgIGZsYWcuYXBwZW5kQ2hpbGQodGV4dCk7XHJcbiAgICAgICAgYm9keS5pbnNlcnRCZWZvcmUoZmxhZywgYm9keS5maXJzdENoaWxkKTtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpPT4ge1xyXG4gICAgICAgICAgICBzdHlsZS5oZWlnaHQgPSBcIjRweFwiO1xyXG4gICAgICAgICAgICBzdHlsZS5vcGFjaXR5ID0gXCIwLjM1XCI7XHJcbiAgICAgICAgfSwgNDAwMCk7XHJcbiAgICB9XHJcbn07Il19