@tolle_/tolle-ui 0.0.23-beta → 0.0.24-beta

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.
@@ -57,12 +57,20 @@ export class ThemeService {
57
57
  // User has saved color preference
58
58
  this.setPrimaryColor(savedPrimary, false); // Don't save again
59
59
  }
60
+ else if (this.config?.primaryColor) {
61
+ // Use config default if no user preference
62
+ this.setPrimaryColor(this.config.primaryColor, false); // Save this as user preference
63
+ }
60
64
  // 3. Apply Radius
61
65
  // Priority: Saved Radius > Config Radius
62
66
  if (savedRadius) {
63
67
  // User has saved radius preference
64
68
  this.setRadius(savedRadius, false);
65
69
  }
70
+ else if (this.config?.radius) {
71
+ // Use config default if no user preference
72
+ this.setRadius(this.config.radius, false);
73
+ }
66
74
  // Save theme mode preference if it came from config or system
67
75
  if (!savedTheme) {
68
76
  localStorage.setItem('tolle-theme', shouldBeDark ? 'dark' : 'light');
@@ -385,4 +393,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
385
393
  type: Inject,
386
394
  args: [TOLLE_CONFIG]
387
395
  }] }, { type: i0.RendererFactory2 }] });
388
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3RvbGxlL3NyYy9saWIvdGhlbWUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUErQixNQUFNLGVBQWUsQ0FBQztBQUN2RyxPQUFPLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsWUFBWSxFQUFlLE1BQU0sZ0JBQWdCLENBQUM7O0FBRzNELE1BQU0sT0FBTyxZQUFZO0lBT0s7SUFDRztJQUNhO0lBUnBDLFFBQVEsQ0FBWTtJQUNwQixhQUFhLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7SUFDNUQsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDcEMsT0FBTyxHQUFHLHFCQUFxQixDQUFDO0lBRXhDLFlBQzRCLFFBQWtCLEVBQ2YsVUFBa0IsRUFDTCxNQUFtQixFQUM3RCxlQUFpQztRQUhQLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDZixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQ0wsV0FBTSxHQUFOLE1BQU0sQ0FBYTtRQUc3RCxJQUFJLENBQUMsUUFBUSxHQUFHLGVBQWUsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRU8sZUFBZTtRQUNyQixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUFFLE9BQU87UUFFaEQsc0VBQXNFO1FBQ3RFLE1BQU0sVUFBVSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsYUFBYSxD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akQsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLDhCQUE4QixDQUFDLENBQUMsT0FBTyxDQUFDO1FBQ3BGLElBQUksaUJBQWlCLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QixDQUFDO1FBRUQsdUJBQXVCO1FBQ3ZCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDO1FBQzNDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFNUMsdUJBQXVCO1FBQ3ZCLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqRSxJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ2xCLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN6QixDQUFDO0lBQ0gsQ0FBQzt3R0EvWlUsWUFBWSxrQkFPYixRQUFRLGFBQ1IsV0FBVyxhQUNDLFlBQVk7NEdBVHZCLFlBQVksY0FEQyxNQUFNOzs0RkFDbkIsWUFBWTtrQkFEeEIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OzBCQVE3QixNQUFNOzJCQUFDLFFBQVE7OzBCQUNmLE1BQU07MkJBQUMsV0FBVzs7MEJBQ2xCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCwgUExBVEZPUk1fSUQsIE9wdGlvbmFsLCBSZW5kZXJlcjIsIFJlbmRlcmVyRmFjdG9yeTIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERPQ1VNRU5ULCBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFRPTExFX0NPTkZJRywgVG9sbGVDb25maWcgfSBmcm9tICcuL3RvbGxlLWNvbmZpZyc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgVGhlbWVTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyO1xuICBwcml2YXRlIGlzRGFya1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgaXNEYXJrJCA9IHRoaXMuaXNEYXJrU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgcHJpdmF0ZSBzdHlsZUlkID0gJ3RvbGxlLWR5bmFtaWMtdGhlbWUnO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50LFxuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogT2JqZWN0LFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoVE9MTEVfQ09ORklHKSBwcml2YXRlIGNvbmZpZzogVG9sbGVDb25maWcsXG4gICAgcmVuZGVyZXJGYWN0b3J5OiBSZW5kZXJlckZhY3RvcnkyXG4gICkge1xuICAgIHRoaXMucmVuZGVyZXIgPSByZW5kZXJlckZhY3RvcnkuY3JlYXRlUmVuZGVyZXIobnVsbCwgbnVsbCk7XG4gICAgdGhpcy5pbml0aWFsaXplVGhlbWUoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVRoZW1lKCkge1xuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkgcmV0dXJuO1xuXG4gICAgLy8gTE9HSUM6IFVzZXIgU2F2ZWQgUHJlZmVyZW5jZXMgPiBDb25maWcgRGVmYXVsdHMgPiBTeXN0ZW0gUHJlZmVyZW5jZVxuICAgIGNvbnN0IHNhdmVkVGhlbWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndG9sbGUtdGhlbWUnKTtcbiAgICBjb25zdCBzYXZlZFByaW1hcnkgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndG9sbGUtcHJpbWFyeS1jb2xvcicpO1xuICAgIGNvbnN0IHNhdmVkUmFkaXVzID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3RvbGxlLXJhZGl1cycpO1xuICAgIGNvbnN0IHN5c3RlbVByZWZlcnNEYXJrID0gd2luZG93Lm1hdGNoTWVkaWEoJyhwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyayknKS5tYXRjaGVzO1xuXG4gICAgY29uc29sZS5sb2coJ1RoZW1lIGluaXRpYWxpemF0aW9uOicsIHtcbiAgICAgIHNhdmVkVGhlbWUsXG4gICAgICBzYXZlZFByaW1hcnksXG4gICAgICBzYXZlZFJhZGl1cyxcbiAgICAgIGNvbmZpZzogdGhpcy5jb25maWcsXG4gICAgICBzeXN0ZW1QcmVmZXJzRGFya1xuICAgIH0pO1xuXG4gICAgLy8gMS4gRGV0ZXJtaW5lIERhcmsvTGlnaHQgTW9kZVxuICAgIC8vIFByaW9yaXR5OiBTYXZlZCBUaGVtZSA+IENvbmZpZyBEZWZhdWx0ID4gU3lzdGVtIFByZWZlcmVuY2VcbiAgICBsZXQgc2hvdWxkQmVEYXJrID0gc3lzdGVtUHJlZmVyc0Rhcms7IC8vIFN0YXJ0IHdpdGggc3lzdGVtXG5cbiAgICBpZiAoc2F2ZWRUaGVtZSkge1xuICAgICAgLy8gVXNlciBoYXMgc2F2ZWQgcHJlZmVyZW5jZVxuICAgICAgc2hvdWxkQmVEYXJrID0gc2F2ZWRUaGVtZSA9PT0gJ2RhcmsnO1xuICAgIH0gZWxzZSBpZiAodGhpcy5jb25maWc/LmRhcmtCeURlZmF1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gVXNlIGNvbmZpZyBkZWZhdWx0IGlmIG5vIHVzZXIgcHJlZmVyZW5jZVxuICAgICAgc2hvdWxkQmVEYXJrID0gdGhpcy5jb25maWcuZGFya0J5RGVmYXVsdDtcbiAgICB9XG5cbiAgICAvLyBBcHBseSB0aGVtZSBtb2RlXG4gICAgaWYgKHNob3VsZEJlRGFyaykge1xuICAgICAgdGhpcy5lbmFibGVEYXJrTW9kZShmYWxzZSk7IC8vIERvbid0IHNhdmUsIHdlJ2xsIHNhdmUgYWZ0ZXIgY2hlY2tpbmcgYWxsIHByZWZlcmVuY2VzXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGlzYWJsZURhcmtNb2RlKGZhbHNlKTtcbiAgICB9XG5cbiAgICAvLyAyLiBBcHBseSBQcmltYXJ5IENvbG9yXG4gICAgLy8gUHJpb3JpdHk6IFNhdmVkIENvbG9yID4gQ29uZmlnIENvbG9yXG4gICAgaWYgKHNhdmVkUHJpbWFyeSkge1xuICAgICAgLy8gVXNlciBoYXMgc2F2ZWQgY29sb3IgcHJlZmVyZW5jZVxuICAgICAgdGhpcy5zZXRQcmltYXJ5Q29sb3Ioc2F2ZWRQcmltYXJ5LCBmYWxzZSk7IC8vIERvbid0IHNhdmUgYWdhaW5cbiAgICB9XG5cbiAgICAvLyAzLiBBcHBseSBSYWRpdXNcbiAgICAvLyBQcmlvcml0eTogU2F2ZWQgUmFkaXVzID4gQ29uZmlnIFJhZGl1c1xuICAgIGlmIChzYXZlZFJhZGl1cykge1xuICAgICAgLy8gVXNlciBoYXMgc2F2ZWQgcmFkaXVzIHByZWZlcmVuY2VcbiAgICAgIHRoaXMuc2V0UmFkaXVzKHNhdmVkUmFkaXVzLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgLy8gU2F2ZSB0aGVtZSBtb2RlIHByZWZlcmVuY2UgaWYgaXQgY2FtZSBmcm9tIGNvbmZpZyBvciBzeXN0ZW1cbiAgICBpZiAoIXNhdmVkVGhlbWUpIHtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd0b2xsZS10aGVtZScsIHNob3VsZEJlRGFyayA/ICdkYXJrJyA6ICdsaWdodCcpO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICogU2V0cyB0aGUgYm9yZGVyIHJhZGl1cyBmb3IgYWxsIGNvbXBvbmVudHNcbiAgICovXG4gIHNldFJhZGl1cyhyYWRpdXM6IHN0cmluZywgcGVyc2lzdCA9IHRydWUpIHtcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHJldHVybjtcblxuICAgIGNvbnN0IHJvb3QgPSB0aGlzLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcblxuICAgIC8vIFNldCB0aGUgQ1NTIHZhcmlhYmxlXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShyb290LCAnLS1yYWRpdXMnLCByYWRpdXMpO1xuXG4gICAgLy8gQWxzbyB1cGRhdGUgdGhlIGR5bmFtaWMgc3R5bGVzIHRvIGluY2x1ZGUgcmFkaXVzIGNhbGN1bGF0aW9uc1xuICAgIHRoaXMudXBkYXRlUmFkaXVzSW5EeW5hbWljU3R5bGVzKHJhZGl1cyk7XG5cbiAgICAvLyBQZXJzaXN0IGlmIG5lZWRlZFxuICAgIGlmIChwZXJzaXN0KSB7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndG9sbGUtcmFkaXVzJywgcmFkaXVzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgcmFkaXVzIGNhbGN1bGF0aW9ucyBpbiBkeW5hbWljIHN0eWxlc1xuICAgKi9cbiAgcHJpdmF0ZSB1cGRhdGVSYWRpdXNJbkR5bmFtaWNTdHlsZXMocmFkaXVzOiBzdHJpbmcpIHtcbiAgICBjb25zdCBleGlzdGluZ1N0eWxlID0gdGhpcy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLnN0eWxlSWQpO1xuXG4gICAgaWYgKGV4aXN0aW5nU3R5bGUpIHtcbiAgICAgIGxldCBjc3MgPSBleGlzdGluZ1N0eWxlLnRleHRDb250ZW50IHx8ICcnO1xuXG4gICAgICAvLyBVcGRhdGUgb3IgYWRkIHJhZGl1cyBjYWxjdWxhdGlvbnNcbiAgICAgIGlmIChjc3MuaW5jbHVkZXMoJy0tcmFkaXVzOicpKSB7XG4gICAgICAgIC8vIFJlcGxhY2UgZXhpc3RpbmcgcmFkaXVzIGRlY2xhcmF0aW9uc1xuICAgICAgICBjc3MgPSBjc3MucmVwbGFjZSgvLS1yYWRpdXM6W147XSs7L2csIGAtLXJhZGl1czogJHtyYWRpdXN9O2ApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQWRkIHJhZGl1cyB0byB0aGUgYmVnaW5uaW5nIG9mIDpyb290XG4gICAgICAgIGNzcyA9IGNzcy5yZXBsYWNlKC86cm9vdFxccyp7LywgYDpyb290IHtcXG4gICAgICAtLXJhZGl1czogJHtyYWRpdXN9O2ApO1xuICAgICAgfVxuXG4gICAgICAvLyBVcGRhdGUgdGhlIGNhbGN1bGF0ZWQgcmFkaXVzIHZhbHVlcyBpbiB0aGUgQ1NTXG4gICAgICBjb25zdCByYWRpdXNDYWxjUmVnZXggPSAvY2FsY1xcKHZhclxcKC0tcmFkaXVzW14pXStcXCkvZztcbiAgICAgIGNzcyA9IGNzcy5yZXBsYWNlKHJhZGl1c0NhbGNSZWdleCwgKG1hdGNoKSA9PiB7XG4gICAgICAgIGlmIChtYXRjaC5pbmNsdWRlcygnLSAycHgnKSkge1xuICAgICAgICAgIHJldHVybiBgY2FsYygke3JhZGl1c30gLSAycHgpYDtcbiAgICAgICAgfSBlbHNlIGlmIChtYXRjaC5pbmNsdWRlcygnLSA0cHgnKSkge1xuICAgICAgICAgIHJldHVybiBgY2FsYygke3JhZGl1c30gLSA0cHgpYDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWF0Y2g7XG4gICAgICB9KTtcblxuICAgICAgZXhpc3RpbmdTdHlsZS50ZXh0Q29udGVudCA9IGNzcztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIGZ1bGwgcHJpbWFyeSBjb2xvciBwYWxldHRlICg1MC05MDApIGJhc2VkIG9uIGJhc2UgY29sb3JcbiAgICovXG4gIHByaXZhdGUgZ2VuZXJhdGVQcmltYXJ5U2hhZGVzKGJhc2VDb2xvcjogc3RyaW5nKSB7XG4gICAgLy8gQ29udmVydCBoZXggdG8gUkdCXG4gICAgY29uc3QgcmdiID0gdGhpcy5oZXhUb1JnYihiYXNlQ29sb3IpO1xuICAgIGNvbnN0IHJnYlN0cmluZyA9IHJnYiA/IGAke3JnYi5yfSAke3JnYi5nfSAke3JnYi5ifWAgOiAnMzcgOTkgMjM1JztcblxuICAgIC8vIENyZWF0ZSBsaWdodGVyIHJpbmcgY29sb3JzIGluIFJHQlxuICAgIGNvbnN0IHJpbmdMaWdodCA9IHRoaXMubGlnaHRlbkNvbG9yKGJhc2VDb2xvciwgNDApO1xuICAgIGNvbnN0IHJpbmdMaWdodFJnYiA9IHRoaXMuaGV4VG9SZ2IocmluZ0xpZ2h0KTtcbiAgICBjb25zdCByaW5nTGlnaHRSZ2JTdHJpbmcgPSByaW5nTGlnaHRSZ2IgPyBgJHtyaW5nTGlnaHRSZ2Iucn0gJHtyaW5nTGlnaHRSZ2IuZ30gJHtyaW5nTGlnaHRSZ2IuYn1gIDogJzk2IDE2NSAyNTAnO1xuXG4gICAgY29uc3QgcmluZ0RhcmsgPSB0aGlzLmxpZ2h0ZW5Db2xvcihiYXNlQ29sb3IsIDIwKTtcbiAgICBjb25zdCByaW5nRGFya1JnYiA9IHRoaXMuaGV4VG9SZ2IocmluZ0RhcmspO1xuICAgIGNvbnN0IHJpbmdEYXJrUmdiU3RyaW5nID0gcmluZ0RhcmtSZ2IgPyBgJHtyaW5nRGFya1JnYi5yfSAke3JpbmdEYXJrUmdiLmd9ICR7cmluZ0RhcmtSZ2IuYn1gIDogJzE0NyAxOTcgMjUzJztcblxuICAgIC8vIEdldCBjdXJyZW50IHJhZGl1cyBvciB1c2UgZGVmYXVsdFxuICAgIGNvbnN0IHJvb3QgPSB0aGlzLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgICBjb25zdCBjdXJyZW50UmFkaXVzID0gZ2V0Q29tcHV0ZWRTdHlsZShyb290KS5nZXRQcm9wZXJ0eVZhbHVlKCctLXJhZGl1cycpLnRyaW0oKSB8fCAnMC41cmVtJztcblxuICAgIGNvbnN0IGNzcyA9IGBcbiAgICAgIC8qIE92ZXJyaWRlIHByaW1hcnkgY29sb3JzIC0gdGhpcyBuZWVkcyB0byBjb21lIEFGVEVSIHlvdXIgbWFpbiBDU1MgKi9cbiAgICAgIDpyb290IHtcbiAgICAgICAgLyogUHJpbWFyeSBpbiBSR0IgZm9ybWF0IGZvciBUYWlsd2luZCBvcGFjaXR5IHN1cHBvcnQgKi9cbiAgICAgICAgLS1wcmltYXJ5OiAke3JnYlN0cmluZ307XG4gICAgICAgIC0tcHJpbWFyeS1mb3JlZ3JvdW5kOiAke3RoaXMuZ2V0Q29udHJhc3RDb2xvclJnYihiYXNlQ29sb3IpfTtcblxuICAgICAgICAvKiBSYWRpdXMgKi9cbiAgICAgICAgLS1yYWRpdXM6ICR7Y3VycmVudFJhZGl1c307XG5cbiAgICAgICAgLyogUHJpbWFyeSBzaGFkZXMgZm9yIGxpZ2h0IG1vZGUgKi9cbiAgICAgICAgLS1wcmltYXJ5LTUwOiAke3RoaXMuaGV4VG9SZ2JTdHJpbmcodGhpcy5saWdodGVuQ29sb3IoYmFzZUNvbG9yLCA5MCkpfTtcbiAgICAgICAgLS1wcmltYXJ5LTEwMDogJHt0aGlzLmhleFRvUmdiU3RyaW5nKHRoaXMubGlnaHRlbkNvbG9yKGJhc2VDb2xvciwgODApKX07XG4gICAgICAgIC0tcHJpbWFyeS0yMDA6ICR7dGhpcy5oZXhUb1JnYlN0cmluZyh0aGlzLmxpZ2h0ZW5Db2xvcihiYXNlQ29sb3IsIDYwKSl9O1xuICAgICAgICAtLXByaW1hcnktMzAwOiAke3RoaXMuaGV4VG9SZ2JTdHJpbmcodGhpcy5saWdodGVuQ29sb3IoYmFzZUNvbG9yLCA0MCkpfTtcbiAgICAgICAgLS1wcmltYXJ5LTQwMDogJHt0aGlzLmhleFRvUmdiU3RyaW5nKHRoaXMubGlnaHRlbkNvbG9yKGJhc2VDb2xvciwgMjApKX07XG4gICAgICAgIC0tcHJpbWFyeS01MDA6ICR7cmdiU3RyaW5nfTtcbiAgICAgICAgLS1wcmltYXJ5LTYwMDogJHt0aGlzLmhleFRvUmdiU3RyaW5nKHRoaXMuZGFya2VuQ29sb3IoYmFzZUNvbG9yLCAyMCkpfTtcbiAgICAgICAgLS1wcmltYXJ5LTcwMDogJHt0aGlzLmhleFRvUmdiU3RyaW5nKHRoaXMuZGFya2VuQ29sb3IoYmFzZUNvbG9yLCA0MCkpfTtcbiAgICAgICAgLS1wcmltYXJ5LTgwMDogJHt0aGlzLmhleFRvUmdiU3RyaW5nKHRoaXMuZGFya2VuQ29sb3IoYmFzZUNvbG9yLCA2MCkpfTtcbiAgICAgICAgLS1wcmltYXJ5LTkwMDogJHt0aGlzLmhleFRvUmdiU3RyaW5nKHRoaXMuZGFya2VuQ29sb3IoYmFzZUNvbG9yLCA4MCkpfTtcblxuICAgICAgICAvKiBVcGRhdGUgcmluZyBjb2xvciB0byBiZSBsaWdodGVyICovXG4gICAgICAgIC0tcmluZzogJHtyaW5nTGlnaHRSZ2JTdHJpbmd9O1xuICAgICAgfVxuXG4gICAgICAuZGFyayB7XG4gICAgICAgIC8qIEZvciBkYXJrIG1vZGUsIHdlIGtlZXAgdGhlIHByaW1hcnkgY29sb3IgYnV0IGFkanVzdCBzaGFkZXMgKi9cbiAgICAgICAgLS1wcmltYXJ5OiAke3JnYlN0cmluZ307XG4gICAgICAgIC0tcHJpbWFyeS1mb3JlZ3JvdW5kOiAke3RoaXMuZ2V0Q29udHJhc3RDb2xvclJnYihiYXNlQ29sb3IpfTtcblxuICAgICAgICAvKiBEYXJrIG1vZGUgc2hhZGVzICovXG4gICAgICAgIC0tcHJpbWFyeS01MDogJHt0aGlzLmhleFRvUmdiU3RyaW5nKHRoaXMuZGFya2VuQ29sb3IoYmFzZUNvbG9yLCA4NSkpfTtcbiAgICAgICAgLS1wcmltYXJ5LTEwMDogJHt0aGlzLmhleFRvUmdiU3RyaW5nKHRoaXMuZGFya2VuQ29sb3IoYmFzZUNvbG9yLCA3NSkpfTtcbiAgICAgICAgLS1wcmltYXJ5LTIwMDogJHt0aGlzLmhleFRvUmdiU3RyaW5nKHRoaXMuZGFya2VuQ29sb3IoYmFzZUNvbG9yLCA2NSkpfTtcbiAgICAgICAgLS1wcmltYXJ5LTMwMDogJHt0aGlzLmhleFRvUmdiU3RyaW5nKHRoaXMuZGFya2VuQ29sb3IoYmFzZUNvbG9yLCA1NSkpfTtcbiAgICAgICAgLS1wcmltYXJ5LTQwMDogJHt0aGlzLmhleFRvUmdiU3RyaW5nKHRoaXMuZGFya2VuQ29sb3IoYmFzZUNvbG9yLCA0NSkpfTtcbiAgICAgICAgLS1wcmltYXJ5LTUwMDogJHtyZ2JTdHJpbmd9O1xuICAgICAgICAtLXByaW1hcnktNjAwOiAke3RoaXMuaGV4VG9SZ2JTdHJpbmcodGhpcy5saWdodGVuQ29sb3IoYmFzZUNvbG9yLCAyMCkpfTtcbiAgICAgICAgLS1wcmltYXJ5LTcwMDogJHt0aGlzLmhleFRvUmdiU3RyaW5nKHRoaXMubGlnaHRlbkNvbG9yKGJhc2VDb2xvciwgMzUpKX07XG4gICAgICAgIC0tcHJpbWFyeS04MDA6ICR7dGhpcy5oZXhUb1JnYlN0cmluZyh0aGlzLmxpZ2h0ZW5Db2xvcihiYXNlQ29sb3IsIDUwKSl9O1xuICAgICAgICAtLXByaW1hcnktOTAwOiAke3RoaXMuaGV4VG9SZ2JTdHJpbmcodGhpcy5saWdodGVuQ29sb3IoYmFzZUNvbG9yLCA2NSkpfTtcblxuICAgICAgICAvKiBVcGRhdGUgcmluZyBjb2xvciBmb3IgZGFyayBtb2RlIC0gbGlnaHRlciB2YXJpYW50ICovXG4gICAgICAgIC0tcmluZzogJHtyaW5nRGFya1JnYlN0cmluZ307XG4gICAgICB9XG4gICAgYDtcblxuICAgIHRoaXMuaW5qZWN0RHluYW1pY1N0eWxlcyhjc3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgaGV4IGNvbG9yIHRvIFJHQiBvYmplY3RcbiAgICovXG4gIHByaXZhdGUgaGV4VG9SZ2IoaGV4OiBzdHJpbmcpOiB7IHI6IG51bWJlciwgZzogbnVtYmVyLCBiOiBudW1iZXIgfSB8IG51bGwge1xuICAgIC8vIFJlbW92ZSAjIGlmIHByZXNlbnRcbiAgICBjb25zdCBjbGVhbmVkSGV4ID0gaGV4LnJlcGxhY2UoJyMnLCAnJyk7XG5cbiAgICBsZXQgciA9IDAsIGcgPSAwLCBiID0gMDtcblxuICAgIGlmIChjbGVhbmVkSGV4Lmxlbmd0aCA9PT0gMykge1xuICAgICAgciA9IHBhcnNlSW50KGNsZWFuZWRIZXhbMF0gKyBjbGVhbmVkSGV4WzBdLCAxNik7XG4gICAgICBnID0gcGFyc2VJbnQoY2xlYW5lZEhleFsxXSArIGNsZWFuZWRIZXhbMV0sIDE2KTtcbiAgICAgIGIgPSBwYXJzZUludChjbGVhbmVkSGV4WzJdICsgY2xlYW5lZEhleFsyXSwgMTYpO1xuICAgICAgcmV0dXJuIHsgciwgZywgYiB9O1xuICAgIH1cblxuICAgIGlmIChjbGVhbmVkSGV4Lmxlbmd0aCA9PT0gNikge1xuICAgICAgciA9IHBhcnNlSW50KGNsZWFuZWRIZXguc3Vic3RyaW5nKDAsIDIpLCAxNik7XG4gICAgICBnID0gcGFyc2VJbnQoY2xlYW5lZEhleC5zdWJzdHJpbmcoMiwgNCksIDE2KTtcbiAgICAgIGIgPSBwYXJzZUludChjbGVhbmVkSGV4LnN1YnN0cmluZyg0LCA2KSwgMTYpO1xuICAgICAgcmV0dXJuIHsgciwgZywgYiB9O1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgaGV4IHRvIFJHQiBzdHJpbmcgZm9ybWF0IGZvciBDU1MgKHNwYWNlLXNlcGFyYXRlZClcbiAgICovXG4gIHByaXZhdGUgaGV4VG9SZ2JTdHJpbmcoaGV4Q29sb3I6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgcmdiID0gdGhpcy5oZXhUb1JnYihoZXhDb2xvcik7XG4gICAgcmV0dXJuIHJnYiA/IGAke3JnYi5yfSAke3JnYi5nfSAke3JnYi5ifWAgOiAnMzcgOTkgMjM1JztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgY29udHJhc3QgY29sb3IgaW4gUkdCIGZvcm1hdFxuICAgKi9cbiAgcHJpdmF0ZSBnZXRDb250cmFzdENvbG9yUmdiKGhleENvbG9yOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNvbnRyYXN0ID0gdGhpcy5nZXRDb250cmFzdENvbG9yKGhleENvbG9yKTtcbiAgICBjb25zdCByZ2IgPSB0aGlzLmhleFRvUmdiKGNvbnRyYXN0KTtcbiAgICByZXR1cm4gcmdiID8gYCR7cmdiLnJ9ICR7cmdiLmd9ICR7cmdiLmJ9YCA6ICcyNTUgMjU1IDI1NSc7XG4gIH1cblxuICAvKipcbiAgICogTGlnaHRlbiBhIGhleCBjb2xvciBieSBhIHBlcmNlbnRhZ2VcbiAgICovXG4gIHByaXZhdGUgbGlnaHRlbkNvbG9yKGNvbG9yOiBzdHJpbmcsIHBlcmNlbnQ6IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3QgcmdiID0gdGhpcy5oZXhUb1JnYihjb2xvcik7XG4gICAgaWYgKCFyZ2IpIHJldHVybiBjb2xvcjtcblxuICAgIC8vIExpZ2h0ZW4gYnkgcGVyY2VudGFnZVxuICAgIGNvbnN0IHIgPSBNYXRoLm1pbigyNTUsIE1hdGguZmxvb3IocmdiLnIgKyAoMjU1IC0gcmdiLnIpICogKHBlcmNlbnQgLyAxMDApKSk7XG4gICAgY29uc3QgZyA9IE1hdGgubWluKDI1NSwgTWF0aC5mbG9vcihyZ2IuZyArICgyNTUgLSByZ2IuZykgKiAocGVyY2VudCAvIDEwMCkpKTtcbiAgICBjb25zdCBiID0gTWF0aC5taW4oMjU1LCBNYXRoLmZsb29yKHJnYi5iICsgKDI1NSAtIHJnYi5iKSAqIChwZXJjZW50IC8gMTAwKSkpO1xuXG4gICAgLy8gQ29udmVydCBiYWNrIHRvIGhleFxuICAgIHJldHVybiBgIyR7KCgxIDw8IDI0KSArIChyIDw8IDE2KSArIChnIDw8IDgpICsgYikudG9TdHJpbmcoMTYpLnNsaWNlKDEpfWA7XG4gIH1cblxuICAvKipcbiAgICogRGFya2VuIGEgaGV4IGNvbG9yIGJ5IGEgcGVyY2VudGFnZVxuICAgKi9cbiAgcHJpdmF0ZSBkYXJrZW5Db2xvcihjb2xvcjogc3RyaW5nLCBwZXJjZW50OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJnYiA9IHRoaXMuaGV4VG9SZ2IoY29sb3IpO1xuICAgIGlmICghcmdiKSByZXR1cm4gY29sb3I7XG5cbiAgICBjb25zdCBmYWN0b3IgPSAxIC0gKHBlcmNlbnQgLyAxMDApO1xuICAgIGNvbnN0IHIgPSBNYXRoLm1heCgwLCBNYXRoLmZsb29yKHJnYi5yICogZmFjdG9yKSk7XG4gICAgY29uc3QgZyA9IE1hdGgubWF4KDAsIE1hdGguZmxvb3IocmdiLmcgKiBmYWN0b3IpKTtcbiAgICBjb25zdCBiID0gTWF0aC5tYXgoMCwgTWF0aC5mbG9vcihyZ2IuYiAqIGZhY3RvcikpO1xuXG4gICAgcmV0dXJuIGAjJHtyLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCAnMCcpfSR7Zy50b1N0cmluZygxNikucGFkU3RhcnQoMiwgJzAnKX0ke2IudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsICcwJyl9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxjdWxhdGUgY29udHJhc3QgY29sb3IgKGJsYWNrIG9yIHdoaXRlKSBiYXNlZCBvbiBiYWNrZ3JvdW5kIGNvbG9yXG4gICAqL1xuICBwcml2YXRlIGdldENvbnRyYXN0Q29sb3IoaGV4Q29sb3I6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgcmdiID0gdGhpcy5oZXhUb1JnYihoZXhDb2xvcik7XG4gICAgaWYgKCFyZ2IpIHJldHVybiAnI2ZmZmZmZic7XG5cbiAgICAvLyBDYWxjdWxhdGUgcmVsYXRpdmUgbHVtaW5hbmNlXG4gICAgY29uc3QgbHVtaW5hbmNlID0gKDAuMjk5ICogcmdiLnIgKyAwLjU4NyAqIHJnYi5nICsgMC4xMTQgKiByZ2IuYikgLyAyNTU7XG5cbiAgICAvLyBSZXR1cm4gYmxhY2sgZm9yIGxpZ2h0IGNvbG9ycywgd2hpdGUgZm9yIGRhcmsgY29sb3JzXG4gICAgcmV0dXJuIGx1bWluYW5jZSA+IDAuNSA/ICcjMDAwMDAwJyA6ICcjZmZmZmZmJztcbiAgfVxuXG4gIHByaXZhdGUgaW5qZWN0RHluYW1pY1N0eWxlcyhjc3M6IHN0cmluZykge1xuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkgcmV0dXJuO1xuXG4gICAgY29uc3QgZXhpc3RpbmdTdHlsZSA9IHRoaXMuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5zdHlsZUlkKTtcbiAgICBpZiAoZXhpc3RpbmdTdHlsZSkge1xuICAgICAgZXhpc3RpbmdTdHlsZS5yZW1vdmUoKTtcbiAgICB9XG5cbiAgICBjb25zdCBzdHlsZUVsZW1lbnQgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gICAgc3R5bGVFbGVtZW50LmlkID0gdGhpcy5zdHlsZUlkO1xuICAgIHN0eWxlRWxlbWVudC50ZXh0Q29udGVudCA9IGNzcztcbiAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuZG9jdW1lbnQuaGVhZCwgc3R5bGVFbGVtZW50KTtcbiAgfVxuXG4gIHRvZ2dsZVRoZW1lKCkge1xuICAgIGNvbnN0IGlzQ3VycmVudGx5RGFyayA9IHRoaXMuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnZGFyaycpO1xuICAgIGlzQ3VycmVudGx5RGFyayA/IHRoaXMuZGlzYWJsZURhcmtNb2RlKCkgOiB0aGlzLmVuYWJsZURhcmtNb2RlKCk7XG4gIH1cblxuICBwcml2YXRlIGVuYWJsZURhcmtNb2RlKHNhdmVUb1N0b3JhZ2UgPSB0cnVlKSB7XG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgJ2RhcmsnKTtcbiAgICBpZiAoc2F2ZVRvU3RvcmFnZSkge1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3RvbGxlLXRoZW1lJywgJ2RhcmsnKTtcbiAgICB9XG4gICAgdGhpcy5pc0RhcmtTdWJqZWN0Lm5leHQodHJ1ZSk7XG4gIH1cblxuICBwcml2YXRlIGRpc2FibGVEYXJrTW9kZShzYXZlVG9TdG9yYWdlID0gdHJ1ZSkge1xuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsICdkYXJrJyk7XG4gICAgaWYgKHNhdmVUb1N0b3JhZ2UpIHtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd0b2xsZS10aGVtZScsICdsaWdodCcpO1xuICAgIH1cbiAgICB0aGlzLmlzRGFya1N1YmplY3QubmV4dChmYWxzZSk7XG4gIH1cbiAgc2V0UHJpbWFyeUNvbG9yKGNvbG9yOiBzdHJpbmcsIHBlcnNpc3QgPSB0cnVlKSB7XG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSByZXR1cm47XG5cbiAgICB0aGlzLmdlbmVyYXRlUHJpbWFyeVNoYWRlcyhjb2xvcik7XG5cbiAgICAvLyBBbHNvIHNldCBpbmxpbmUgZm9yIGltbWVkaWF0ZSB1cGRhdGVcbiAgICBjb25zdCByZ2IgPSB0aGlzLmhleFRvUmdiKGNvbG9yKTtcbiAgICBpZiAocmdiKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICB0aGlzLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxcbiAgICAgICAgJy0tcHJpbWFyeScsXG4gICAgICAgIGAke3JnYi5yfSAke3JnYi5nfSAke3JnYi5ifWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHBlcnNpc3QpIHtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd0b2xsZS1wcmltYXJ5LWNvbG9yJywgY29sb3IpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBjdXJyZW50VGhlbWUoKTogJ2RhcmsnIHwgJ2xpZ2h0JyB7XG4gICAgcmV0dXJuIHRoaXMuaXNEYXJrU3ViamVjdC52YWx1ZSA/ICdkYXJrJyA6ICdsaWdodCc7XG4gIH1cblxuICBnZXQgcHJpbWFyeUNvbG9yKCk6IHN0cmluZyB8IG51bGwge1xuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkgcmV0dXJuIG51bGw7XG5cbiAgICBjb25zdCByb290ID0gdGhpcy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gICAgY29uc3QgY3NzVmFsdWUgPSBnZXRDb21wdXRlZFN0eWxlKHJvb3QpLmdldFByb3BlcnR5VmFsdWUoJy0tcHJpbWFyeScpLnRyaW0oKTtcblxuICAgIGlmIChjc3NWYWx1ZSAmJiBjc3NWYWx1ZSAhPT0gJycpIHtcbiAgICAgIC8vIENvbnZlcnQgUkdCIHN0cmluZyBiYWNrIHRvIGhleCBmb3IgZXh0ZXJuYWwgdXNlXG4gICAgICBjb25zdCByZ2JQYXJ0cyA9IGNzc1ZhbHVlLnNwbGl0KCcgJykubWFwKE51bWJlcik7XG4gICAgICBpZiAocmdiUGFydHMubGVuZ3RoID09PSAzKSB7XG4gICAgICAgIHJldHVybiBgIyR7cmdiUGFydHNbMF0udG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsICcwJyl9JHtyZ2JQYXJ0c1sxXS50b1N0cmluZygxNikucGFkU3RhcnQoMiwgJzAnKX0ke3JnYlBhcnRzWzJdLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCAnMCcpfWA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0b2xsZS1wcmltYXJ5LWNvbG9yJyk7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXQgdG8gY29uZmlnIGRlZmF1bHRzIChjbGVhcnMgdXNlciBwcmVmZXJlbmNlcylcbiAgICovXG4gIHJlc2V0VG9Db25maWdEZWZhdWx0cygpIHtcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHJldHVybjtcblxuICAgIC8vIENsZWFyIHVzZXIgcHJlZmVyZW5jZXNcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgndG9sbGUtdGhlbWUnKTtcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgndG9sbGUtcHJpbWFyeS1jb2xvcicpO1xuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCd0b2xsZS1yYWRpdXMnKTtcblxuICAgIC8vIFJlLWluaXRpYWxpemUgd2l0aCBjb25maWcgZGVmYXVsdHNcbiAgICB0aGlzLmluaXRpYWxpemVUaGVtZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBjdXJyZW50IHVzZXIgcHJlZmVyZW5jZXNcbiAgICovXG4gIGdldFVzZXJQcmVmZXJlbmNlcygpIHtcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHJldHVybiBudWxsO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHRoZW1lOiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndG9sbGUtdGhlbWUnKSxcbiAgICAgIHByaW1hcnlDb2xvcjogbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3RvbGxlLXByaW1hcnktY29sb3InKSxcbiAgICAgIHJhZGl1czogbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3RvbGxlLXJhZGl1cycpXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhciBhbGwgdXNlciBwcmVmZXJlbmNlc1xuICAgKi9cbiAgY2xlYXJVc2VyUHJlZmVyZW5jZXMoKSB7XG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSByZXR1cm47XG5cbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgndG9sbGUtdGhlbWUnKTtcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgndG9sbGUtcHJpbWFyeS1jb2xvcicpO1xuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCd0b2xsZS1yYWRpdXMnKTtcblxuICAgIC8vIFJlc2V0IHRvIHN5c3RlbSBkZWZhdWx0cyAobm90IGNvbmZpZyBkZWZhdWx0cylcbiAgICBjb25zdCBzeXN0ZW1QcmVmZXJzRGFyayA9IHdpbmRvdy5tYXRjaE1lZGlhKCcocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspJykubWF0Y2hlcztcbiAgICBpZiAoc3lzdGVtUHJlZmVyc0RhcmspIHtcbiAgICAgIHRoaXMuZW5hYmxlRGFya01vZGUoZmFsc2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRpc2FibGVEYXJrTW9kZShmYWxzZSk7XG4gICAgfVxuXG4gICAgLy8gUmVtb3ZlIENTUyB2YXJpYWJsZXNcbiAgICBjb25zdCByb290ID0gdGhpcy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZShyb290LCAnLS1wcmltYXJ5Jyk7XG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZShyb290LCAnLS1yYWRpdXMnKTtcblxuICAgIC8vIENsZWFyIGR5bmFtaWMgc3R5bGVzXG4gICAgY29uc3QgZXhpc3RpbmdTdHlsZSA9IHRoaXMuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5zdHlsZUlkKTtcbiAgICBpZiAoZXhpc3RpbmdTdHlsZSkge1xuICAgICAgZXhpc3RpbmdTdHlsZS5yZW1vdmUoKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
396
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhlbWUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3RvbGxlL3NyYy9saWIvdGhlbWUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUErQixNQUFNLGVBQWUsQ0FBQztBQUN2RyxPQUFPLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsWUFBWSxFQUFlLE1BQU0sZ0JBQWdCLENBQUM7O0FBRzNELE1BQU0sT0FBTyxZQUFZO0lBT0s7SUFDRztJQUNhO0lBUnBDLFFBQVEsQ0FBWTtJQUNwQixhQUFhLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7SUFDNUQsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDcEMsT0FBTyxHQUFHLHFCQUFxQixDQUFDO0lBRXhDLFlBQzRCLFFBQWtCLEVBQ2YsVUFBa0IsRUFDTCxNQUFtQixFQUM3RCxlQUFpQztRQUhQLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDZixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQ0wsV0FBTSxHQUFOLE1BQU0sQ0FBYTtRQUc3RCxJQUFJLENBQUMsUUFBUSxHQUFHLGVBQWUsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRU8sZUFBZTtRQUNyQixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUFFLE9BQU87UUFFaEQsc0VBQXNFO1FBQ3RFLE1BQU0sVUFBVSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsYUFBYSxD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QyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTdFLHNCQUFzQjtRQUN0QixPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDNUUsQ0FBQztJQUVEOztPQUVHO0lBQ0ssV0FBVyxDQUFDLEtBQWEsRUFBRSxPQUFlO1FBQ2hELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLEdBQUc7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUV2QixNQUFNLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDbkMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDbEQsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDbEQsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFFbEQsT0FBTyxJQUFJLENBQUMs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QixZQUFZLGNBREMsTUFBTTs7NEZBQ25CLFlBQVk7a0JBRHhCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzswQkFRN0IsTUFBTTsyQkFBQyxRQUFROzswQkFDZixNQUFNOzJCQUFDLFdBQVc7OzBCQUNsQixRQUFROzswQkFBSSxNQUFNOzJCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QsIFBMQVRGT1JNX0lELCBPcHRpb25hbCwgUmVuZGVyZXIyLCBSZW5kZXJlckZhY3RvcnkyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBET0NVTUVOVCwgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBUT0xMRV9DT05GSUcsIFRvbGxlQ29uZmlnIH0gZnJvbSAnLi90b2xsZS1jb25maWcnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFRoZW1lU2VydmljZSB7XG4gIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMjtcbiAgcHJpdmF0ZSBpc0RhcmtTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIGlzRGFyayQgPSB0aGlzLmlzRGFya1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIHByaXZhdGUgc3R5bGVJZCA9ICd0b2xsZS1keW5hbWljLXRoZW1lJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudCxcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IE9iamVjdCxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFRPTExFX0NPTkZJRykgcHJpdmF0ZSBjb25maWc6IFRvbGxlQ29uZmlnLFxuICAgIHJlbmRlcmVyRmFjdG9yeTogUmVuZGVyZXJGYWN0b3J5MlxuICApIHtcbiAgICB0aGlzLnJlbmRlcmVyID0gcmVuZGVyZXJGYWN0b3J5LmNyZWF0ZVJlbmRlcmVyKG51bGwsIG51bGwpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZVRoZW1lKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVUaGVtZSgpIHtcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHJldHVybjtcblxuICAgIC8vIExPR0lDOiBVc2VyIFNhdmVkIFByZWZlcmVuY2VzID4gQ29uZmlnIERlZmF1bHRzID4gU3lzdGVtIFByZWZlcmVuY2VcbiAgICBjb25zdCBzYXZlZFRoZW1lID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3RvbGxlLXRoZW1lJyk7XG4gICAgY29uc3Qgc2F2ZWRQcmltYXJ5ID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3RvbGxlLXByaW1hcnktY29sb3InKTtcbiAgICBjb25zdCBzYXZlZFJhZGl1cyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0b2xsZS1yYWRpdXMnKTtcbiAgICBjb25zdCBzeXN0ZW1QcmVmZXJzRGFyayA9IHdpbmRvdy5tYXRjaE1lZGlhKCcocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspJykubWF0Y2hlcztcblxuICAgIGNvbnNvbGUubG9nKCdUaGVtZSBpbml0aWFsaXphdGlvbjonLCB7XG4gICAgICBzYXZlZFRoZW1lLFxuICAgICAgc2F2ZWRQcmltYXJ5LFxuICAgICAgc2F2ZWRSYWRpdXMsXG4gICAgICBjb25maWc6IHRoaXMuY29uZmlnLFxuICAgICAgc3lzdGVtUHJlZmVyc0RhcmtcbiAgICB9KTtcblxuICAgIC8vIDEuIERldGVybWluZSBEYXJrL0xpZ2h0IE1vZGVcbiAgICAvLyBQcmlvcml0eTogU2F2ZWQgVGhlbWUgPiBDb25maWcgRGVmYXVsdCA+IFN5c3RlbSBQcmVmZXJlbmNlXG4gICAgbGV0IHNob3VsZEJlRGFyayA9IHN5c3RlbVByZWZlcnNEYXJrOyAvLyBTdGFydCB3aXRoIHN5c3RlbVxuXG4gICAgaWYgKHNhdmVkVGhlbWUpIHtcbiAgICAgIC8vIFVzZXIgaGFzIHNhdmVkIHByZWZlcmVuY2VcbiAgICAgIHNob3VsZEJlRGFyayA9IHNhdmVkVGhlbWUgPT09ICdkYXJrJztcbiAgICB9IGVsc2UgaWYgKHRoaXMuY29uZmlnPy5kYXJrQnlEZWZhdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIFVzZSBjb25maWcgZGVmYXVsdCBpZiBubyB1c2VyIHByZWZlcmVuY2VcbiAgICAgIHNob3VsZEJlRGFyayA9IHRoaXMuY29uZmlnLmRhcmtCeURlZmF1bHQ7XG4gICAgfVxuXG4gICAgLy8gQXBwbHkgdGhlbWUgbW9kZVxuICAgIGlmIChzaG91bGRCZURhcmspIHtcbiAgICAgIHRoaXMuZW5hYmxlRGFya01vZGUoZmFsc2UpOyAvLyBEb24ndCBzYXZlLCB3ZSdsbCBzYXZlIGFmdGVyIGNoZWNraW5nIGFsbCBwcmVmZXJlbmNlc1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRpc2FibGVEYXJrTW9kZShmYWxzZSk7XG4gICAgfVxuXG4gICAgLy8gMi4gQXBwbHkgUHJpbWFyeSBDb2xvclxuICAgIC8vIFByaW9yaXR5OiBTYXZlZCBDb2xvciA+IENvbmZpZyBDb2xvclxuICAgIGlmIChzYXZlZFByaW1hcnkpIHtcbiAgICAgIC8vIFVzZXIgaGFzIHNhdmVkIGNvbG9yIHByZWZlcmVuY2VcbiAgICAgIHRoaXMuc2V0UHJpbWFyeUNvbG9yKHNhdmVkUHJpbWFyeSwgZmFsc2UpOyAvLyBEb24ndCBzYXZlIGFnYWluXG4gICAgfSBlbHNlIGlmICh0aGlzLmNvbmZpZz8ucHJpbWFyeUNvbG9yKSB7XG4gICAgICAvLyBVc2UgY29uZmlnIGRlZmF1bHQgaWYgbm8gdXNlciBwcmVmZXJlbmNlXG4gICAgICB0aGlzLnNldFByaW1hcnlDb2xvcih0aGlzLmNvbmZpZy5wcmltYXJ5Q29sb3IsIGZhbHNlKTsgLy8gU2F2ZSB0aGlzIGFzIHVzZXIgcHJlZmVyZW5jZVxuICAgIH1cblxuICAgIC8vIDMuIEFwcGx5IFJhZGl1c1xuICAgIC8vIFByaW9yaXR5OiBTYXZlZCBSYWRpdXMgPiBDb25maWcgUmFkaXVzXG4gICAgaWYgKHNhdmVkUmFkaXVzKSB7XG4gICAgICAvLyBVc2VyIGhhcyBzYXZlZCByYWRpdXMgcHJlZmVyZW5jZVxuICAgICAgdGhpcy5zZXRSYWRpdXMoc2F2ZWRSYWRpdXMsIGZhbHNlKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuY29uZmlnPy5yYWRpdXMpIHtcbiAgICAgIC8vIFVzZSBjb25maWcgZGVmYXVsdCBpZiBubyB1c2VyIHByZWZlcmVuY2VcbiAgICAgIHRoaXMuc2V0UmFkaXVzKHRoaXMuY29uZmlnLnJhZGl1cywgZmFsc2UpO1xuICAgIH1cblxuICAgIC8vIFNhdmUgdGhlbWUgbW9kZSBwcmVmZXJlbmNlIGlmIGl0IGNhbWUgZnJvbSBjb25maWcgb3Igc3lzdGVtXG4gICAgaWYgKCFzYXZlZFRoZW1lKSB7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndG9sbGUtdGhlbWUnLCBzaG91bGRCZURhcmsgPyAnZGFyaycgOiAnbGlnaHQnKTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIFNldHMgdGhlIGJvcmRlciByYWRpdXMgZm9yIGFsbCBjb21wb25lbnRzXG4gICAqL1xuICBzZXRSYWRpdXMocmFkaXVzOiBzdHJpbmcsIHBlcnNpc3QgPSB0cnVlKSB7XG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSByZXR1cm47XG5cbiAgICBjb25zdCByb290ID0gdGhpcy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG5cbiAgICAvLyBTZXQgdGhlIENTUyB2YXJpYWJsZVxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUocm9vdCwgJy0tcmFkaXVzJywgcmFkaXVzKTtcblxuICAgIC8vIEFsc28gdXBkYXRlIHRoZSBkeW5hbWljIHN0eWxlcyB0byBpbmNsdWRlIHJhZGl1cyBjYWxjdWxhdGlvbnNcbiAgICB0aGlzLnVwZGF0ZVJhZGl1c0luRHluYW1pY1N0eWxlcyhyYWRpdXMpO1xuXG4gICAgLy8gUGVyc2lzdCBpZiBuZWVkZWRcbiAgICBpZiAocGVyc2lzdCkge1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3RvbGxlLXJhZGl1cycsIHJhZGl1cyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIHJhZGl1cyBjYWxjdWxhdGlvbnMgaW4gZHluYW1pYyBzdHlsZXNcbiAgICovXG4gIHByaXZhdGUgdXBkYXRlUmFkaXVzSW5EeW5hbWljU3R5bGVzKHJhZGl1czogc3RyaW5nKSB7XG4gICAgY29uc3QgZXhpc3RpbmdTdHlsZSA9IHRoaXMuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5zdHlsZUlkKTtcblxuICAgIGlmIChleGlzdGluZ1N0eWxlKSB7XG4gICAgICBsZXQgY3NzID0gZXhpc3RpbmdTdHlsZS50ZXh0Q29udGVudCB8fCAnJztcblxuICAgICAgLy8gVXBkYXRlIG9yIGFkZCByYWRpdXMgY2FsY3VsYXRpb25zXG4gICAgICBpZiAoY3NzLmluY2x1ZGVzKCctLXJhZGl1czonKSkge1xuICAgICAgICAvLyBSZXBsYWNlIGV4aXN0aW5nIHJhZGl1cyBkZWNsYXJhdGlvbnNcbiAgICAgICAgY3NzID0gY3NzLnJlcGxhY2UoLy0tcmFkaXVzOlteO10rOy9nLCBgLS1yYWRpdXM6ICR7cmFkaXVzfTtgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEFkZCByYWRpdXMgdG8gdGhlIGJlZ2lubmluZyBvZiA6cm9vdFxuICAgICAgICBjc3MgPSBjc3MucmVwbGFjZSgvOnJvb3RcXHMqey8sIGA6cm9vdCB7XFxuICAgICAgLS1yYWRpdXM6ICR7cmFkaXVzfTtgKTtcbiAgICAgIH1cblxuICAgICAgLy8gVXBkYXRlIHRoZSBjYWxjdWxhdGVkIHJhZGl1cyB2YWx1ZXMgaW4gdGhlIENTU1xuICAgICAgY29uc3QgcmFkaXVzQ2FsY1JlZ2V4ID0gL2NhbGNcXCh2YXJcXCgtLXJhZGl1c1teKV0rXFwpL2c7XG4gICAgICBjc3MgPSBjc3MucmVwbGFjZShyYWRpdXNDYWxjUmVnZXgsIChtYXRjaCkgPT4ge1xuICAgICAgICBpZiAobWF0Y2guaW5jbHVkZXMoJy0gMnB4JykpIHtcbiAgICAgICAgICByZXR1cm4gYGNhbGMoJHtyYWRpdXN9IC0gMnB4KWA7XG4gICAgICAgIH0gZWxzZSBpZiAobWF0Y2guaW5jbHVkZXMoJy0gNHB4JykpIHtcbiAgICAgICAgICByZXR1cm4gYGNhbGMoJHtyYWRpdXN9IC0gNHB4KWA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1hdGNoO1xuICAgICAgfSk7XG5cbiAgICAgIGV4aXN0aW5nU3R5bGUudGV4dENvbnRlbnQgPSBjc3M7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyBmdWxsIHByaW1hcnkgY29sb3IgcGFsZXR0ZSAoNTAtOTAwKSBiYXNlZCBvbiBiYXNlIGNvbG9yXG4gICAqL1xuICBwcml2YXRlIGdlbmVyYXRlUHJpbWFyeVNoYWRlcyhiYXNlQ29sb3I6IHN0cmluZykge1xuICAgIC8vIENvbnZlcnQgaGV4IHRvIFJHQlxuICAgIGNvbnN0IHJnYiA9IHRoaXMuaGV4VG9SZ2IoYmFzZUNvbG9yKTtcbiAgICBjb25zdCByZ2JTdHJpbmcgPSByZ2IgPyBgJHtyZ2Iucn0gJHtyZ2IuZ30gJHtyZ2IuYn1gIDogJzM3IDk5IDIzNSc7XG5cbiAgICAvLyBDcmVhdGUgbGlnaHRlciByaW5nIGNvbG9ycyBpbiBSR0JcbiAgICBjb25zdCByaW5nTGlnaHQgPSB0aGlzLmxpZ2h0ZW5Db2xvcihiYXNlQ29sb3IsIDQwKTtcbiAgICBjb25zdCByaW5nTGlnaHRSZ2IgPSB0aGlzLmhleFRvUmdiKHJpbmdMaWdodCk7XG4gICAgY29uc3QgcmluZ0xpZ2h0UmdiU3RyaW5nID0gcmluZ0xpZ2h0UmdiID8gYCR7cmluZ0xpZ2h0UmdiLnJ9ICR7cmluZ0xpZ2h0UmdiLmd9ICR7cmluZ0xpZ2h0UmdiLmJ9YCA6ICc5NiAxNjUgMjUwJztcblxuICAgIGNvbnN0IHJpbmdEYXJrID0gdGhpcy5saWdodGVuQ29sb3IoYmFzZUNvbG9yLCAyMCk7XG4gICAgY29uc3QgcmluZ0RhcmtSZ2IgPSB0aGlzLmhleFRvUmdiKHJpbmdEYXJrKTtcbiAgICBjb25zdCByaW5nRGFya1JnYlN0cmluZyA9IHJpbmdEYXJrUmdiID8gYCR7cmluZ0RhcmtSZ2Iucn0gJHtyaW5nRGFya1JnYi5nfSAke3JpbmdEYXJrUmdiLmJ9YCA6ICcxNDcgMTk3IDI1Myc7XG5cbiAgICAvLyBHZXQgY3VycmVudCByYWRpdXMgb3IgdXNlIGRlZmF1bHRcbiAgICBjb25zdCByb290ID0gdGhpcy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gICAgY29uc3QgY3VycmVudFJhZGl1cyA9IGdldENvbXB1dGVkU3R5bGUocm9vdCkuZ2V0UHJvcGVydHlWYWx1ZSgnLS1yYWRpdXMnKS50cmltKCkgfHwgJzAuNXJlbSc7XG5cbiAgICBjb25zdCBjc3MgPSBgXG4gICAgICAvKiBPdmVycmlkZSBwcmltYXJ5IGNvbG9ycyAtIHRoaXMgbmVlZHMgdG8gY29tZSBBRlRFUiB5b3VyIG1haW4gQ1NTICovXG4gICAgICA6cm9vdCB7XG4gICAgICAgIC8qIFByaW1hcnkgaW4gUkdCIGZvcm1hdCBmb3IgVGFpbHdpbmQgb3BhY2l0eSBzdXBwb3J0ICovXG4gICAgICAgIC0tcHJpbWFyeTogJHtyZ2JTdHJpbmd9O1xuICAgICAgICAtLXByaW1hcnktZm9yZWdyb3VuZDogJHt0aGlzLmdldENvbnRyYXN0Q29sb3JSZ2IoYmFzZUNvbG9yKX07XG5cbiAgICAgICAgLyogUmFkaXVzICovXG4gICAgICAgIC0tcmFkaXVzOiAke2N1cnJlbnRSYWRpdXN9O1xuXG4gICAgICAgIC8qIFByaW1hcnkgc2hhZGVzIGZvciBsaWdodCBtb2RlICovXG4gICAgICAgIC0tcHJpbWFyeS01MDogJHt0aGlzLmhleFRvUmdiU3RyaW5nKHRoaXMubGlnaHRlbkNvbG9yKGJhc2VDb2xvciwgOTApKX07XG4gICAgICAgIC0tcHJpbWFyeS0xMDA6ICR7dGhpcy5oZXhUb1JnYlN0cmluZyh0aGlzLmxpZ2h0ZW5Db2xvcihiYXNlQ29sb3IsIDgwKSl9O1xuICAgICAgICAtLXByaW1hcnktMjAwOiAke3RoaXMuaGV4VG9SZ2JTdHJpbmcodGhpcy5saWdodGVuQ29sb3IoYmFzZUNvbG9yLCA2MCkpfTtcbiAgICAgICAgLS1wcmltYXJ5LTMwMDogJHt0aGlzLmhleFRvUmdiU3RyaW5nKHRoaXMubGlnaHRlbkNvbG9yKGJhc2VDb2xvciwgNDApKX07XG4gICAgICAgIC0tcHJpbWFyeS00MDA6ICR7dGhpcy5oZXhUb1JnYlN0cmluZyh0aGlzLmxpZ2h0ZW5Db2xvcihiYXNlQ29sb3IsIDIwKSl9O1xuICAgICAgICAtLXByaW1hcnktNTAwOiAke3JnYlN0cmluZ307XG4gICAgICAgIC0tcHJpbWFyeS02MDA6ICR7dGhpcy5oZXhUb1JnYlN0cmluZyh0aGlzLmRhcmtlbkNvbG9yKGJhc2VDb2xvciwgMjApKX07XG4gICAgICAgIC0tcHJpbWFyeS03MDA6ICR7dGhpcy5oZXhUb1JnYlN0cmluZyh0aGlzLmRhcmtlbkNvbG9yKGJhc2VDb2xvciwgNDApKX07XG4gICAgICAgIC0tcHJpbWFyeS04MDA6ICR7dGhpcy5oZXhUb1JnYlN0cmluZyh0aGlzLmRhcmtlbkNvbG9yKGJhc2VDb2xvciwgNjApKX07XG4gICAgICAgIC0tcHJpbWFyeS05MDA6ICR7dGhpcy5oZXhUb1JnYlN0cmluZyh0aGlzLmRhcmtlbkNvbG9yKGJhc2VDb2xvciwgODApKX07XG5cbiAgICAgICAgLyogVXBkYXRlIHJpbmcgY29sb3IgdG8gYmUgbGlnaHRlciAqL1xuICAgICAgICAtLXJpbmc6ICR7cmluZ0xpZ2h0UmdiU3RyaW5nfTtcbiAgICAgIH1cblxuICAgICAgLmRhcmsge1xuICAgICAgICAvKiBGb3IgZGFyayBtb2RlLCB3ZSBrZWVwIHRoZSBwcmltYXJ5IGNvbG9yIGJ1dCBhZGp1c3Qgc2hhZGVzICovXG4gICAgICAgIC0tcHJpbWFyeTogJHtyZ2JTdHJpbmd9O1xuICAgICAgICAtLXByaW1hcnktZm9yZWdyb3VuZDogJHt0aGlzLmdldENvbnRyYXN0Q29sb3JSZ2IoYmFzZUNvbG9yKX07XG5cbiAgICAgICAgLyogRGFyayBtb2RlIHNoYWRlcyAqL1xuICAgICAgICAtLXByaW1hcnktNTA6ICR7dGhpcy5oZXhUb1JnYlN0cmluZyh0aGlzLmRhcmtlbkNvbG9yKGJhc2VDb2xvciwgODUpKX07XG4gICAgICAgIC0tcHJpbWFyeS0xMDA6ICR7dGhpcy5oZXhUb1JnYlN0cmluZyh0aGlzLmRhcmtlbkNvbG9yKGJhc2VDb2xvciwgNzUpKX07XG4gICAgICAgIC0tcHJpbWFyeS0yMDA6ICR7dGhpcy5oZXhUb1JnYlN0cmluZyh0aGlzLmRhcmtlbkNvbG9yKGJhc2VDb2xvciwgNjUpKX07XG4gICAgICAgIC0tcHJpbWFyeS0zMDA6ICR7dGhpcy5oZXhUb1JnYlN0cmluZyh0aGlzLmRhcmtlbkNvbG9yKGJhc2VDb2xvciwgNTUpKX07XG4gICAgICAgIC0tcHJpbWFyeS00MDA6ICR7dGhpcy5oZXhUb1JnYlN0cmluZyh0aGlzLmRhcmtlbkNvbG9yKGJhc2VDb2xvciwgNDUpKX07XG4gICAgICAgIC0tcHJpbWFyeS01MDA6ICR7cmdiU3RyaW5nfTtcbiAgICAgICAgLS1wcmltYXJ5LTYwMDogJHt0aGlzLmhleFRvUmdiU3RyaW5nKHRoaXMubGlnaHRlbkNvbG9yKGJhc2VDb2xvciwgMjApKX07XG4gICAgICAgIC0tcHJpbWFyeS03MDA6ICR7dGhpcy5oZXhUb1JnYlN0cmluZyh0aGlzLmxpZ2h0ZW5Db2xvcihiYXNlQ29sb3IsIDM1KSl9O1xuICAgICAgICAtLXByaW1hcnktODAwOiAke3RoaXMuaGV4VG9SZ2JTdHJpbmcodGhpcy5saWdodGVuQ29sb3IoYmFzZUNvbG9yLCA1MCkpfTtcbiAgICAgICAgLS1wcmltYXJ5LTkwMDogJHt0aGlzLmhleFRvUmdiU3RyaW5nKHRoaXMubGlnaHRlbkNvbG9yKGJhc2VDb2xvciwgNjUpKX07XG5cbiAgICAgICAgLyogVXBkYXRlIHJpbmcgY29sb3IgZm9yIGRhcmsgbW9kZSAtIGxpZ2h0ZXIgdmFyaWFudCAqL1xuICAgICAgICAtLXJpbmc6ICR7cmluZ0RhcmtSZ2JTdHJpbmd9O1xuICAgICAgfVxuICAgIGA7XG5cbiAgICB0aGlzLmluamVjdER5bmFtaWNTdHlsZXMoY3NzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IGhleCBjb2xvciB0byBSR0Igb2JqZWN0XG4gICAqL1xuICBwcml2YXRlIGhleFRvUmdiKGhleDogc3RyaW5nKTogeyByOiBudW1iZXIsIGc6IG51bWJlciwgYjogbnVtYmVyIH0gfCBudWxsIHtcbiAgICAvLyBSZW1vdmUgIyBpZiBwcmVzZW50XG4gICAgY29uc3QgY2xlYW5lZEhleCA9IGhleC5yZXBsYWNlKCcjJywgJycpO1xuXG4gICAgbGV0IHIgPSAwLCBnID0gMCwgYiA9IDA7XG5cbiAgICBpZiAoY2xlYW5lZEhleC5sZW5ndGggPT09IDMpIHtcbiAgICAgIHIgPSBwYXJzZUludChjbGVhbmVkSGV4WzBdICsgY2xlYW5lZEhleFswXSwgMTYpO1xuICAgICAgZyA9IHBhcnNlSW50KGNsZWFuZWRIZXhbMV0gKyBjbGVhbmVkSGV4WzFdLCAxNik7XG4gICAgICBiID0gcGFyc2VJbnQoY2xlYW5lZEhleFsyXSArIGNsZWFuZWRIZXhbMl0sIDE2KTtcbiAgICAgIHJldHVybiB7IHIsIGcsIGIgfTtcbiAgICB9XG5cbiAgICBpZiAoY2xlYW5lZEhleC5sZW5ndGggPT09IDYpIHtcbiAgICAgIHIgPSBwYXJzZUludChjbGVhbmVkSGV4LnN1YnN0cmluZygwLCAyKSwgMTYpO1xuICAgICAgZyA9IHBhcnNlSW50KGNsZWFuZWRIZXguc3Vic3RyaW5nKDIsIDQpLCAxNik7XG4gICAgICBiID0gcGFyc2VJbnQoY2xlYW5lZEhleC5zdWJzdHJpbmcoNCwgNiksIDE2KTtcbiAgICAgIHJldHVybiB7IHIsIGcsIGIgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IGhleCB0byBSR0Igc3RyaW5nIGZvcm1hdCBmb3IgQ1NTIChzcGFjZS1zZXBhcmF0ZWQpXG4gICAqL1xuICBwcml2YXRlIGhleFRvUmdiU3RyaW5nKGhleENvbG9yOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJnYiA9IHRoaXMuaGV4VG9SZ2IoaGV4Q29sb3IpO1xuICAgIHJldHVybiByZ2IgPyBgJHtyZ2Iucn0gJHtyZ2IuZ30gJHtyZ2IuYn1gIDogJzM3IDk5IDIzNSc7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGNvbnRyYXN0IGNvbG9yIGluIFJHQiBmb3JtYXRcbiAgICovXG4gIHByaXZhdGUgZ2V0Q29udHJhc3RDb2xvclJnYihoZXhDb2xvcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBjb250cmFzdCA9IHRoaXMuZ2V0Q29udHJhc3RDb2xvcihoZXhDb2xvcik7XG4gICAgY29uc3QgcmdiID0gdGhpcy5oZXhUb1JnYihjb250cmFzdCk7XG4gICAgcmV0dXJuIHJnYiA/IGAke3JnYi5yfSAke3JnYi5nfSAke3JnYi5ifWAgOiAnMjU1IDI1NSAyNTUnO1xuICB9XG5cbiAgLyoqXG4gICAqIExpZ2h0ZW4gYSBoZXggY29sb3IgYnkgYSBwZXJjZW50YWdlXG4gICAqL1xuICBwcml2YXRlIGxpZ2h0ZW5Db2xvcihjb2xvcjogc3RyaW5nLCBwZXJjZW50OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJnYiA9IHRoaXMuaGV4VG9SZ2IoY29sb3IpO1xuICAgIGlmICghcmdiKSByZXR1cm4gY29sb3I7XG5cbiAgICAvLyBMaWdodGVuIGJ5IHBlcmNlbnRhZ2VcbiAgICBjb25zdCByID0gTWF0aC5taW4oMjU1LCBNYXRoLmZsb29yKHJnYi5yICsgKDI1NSAtIHJnYi5yKSAqIChwZXJjZW50IC8gMTAwKSkpO1xuICAgIGNvbnN0IGcgPSBNYXRoLm1pbigyNTUsIE1hdGguZmxvb3IocmdiLmcgKyAoMjU1IC0gcmdiLmcpICogKHBlcmNlbnQgLyAxMDApKSk7XG4gICAgY29uc3QgYiA9IE1hdGgubWluKDI1NSwgTWF0aC5mbG9vcihyZ2IuYiArICgyNTUgLSByZ2IuYikgKiAocGVyY2VudCAvIDEwMCkpKTtcblxuICAgIC8vIENvbnZlcnQgYmFjayB0byBoZXhcbiAgICByZXR1cm4gYCMkeygoMSA8PCAyNCkgKyAociA8PCAxNikgKyAoZyA8PCA4KSArIGIpLnRvU3RyaW5nKDE2KS5zbGljZSgxKX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIERhcmtlbiBhIGhleCBjb2xvciBieSBhIHBlcmNlbnRhZ2VcbiAgICovXG4gIHByaXZhdGUgZGFya2VuQ29sb3IoY29sb3I6IHN0cmluZywgcGVyY2VudDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCByZ2IgPSB0aGlzLmhleFRvUmdiKGNvbG9yKTtcbiAgICBpZiAoIXJnYikgcmV0dXJuIGNvbG9yO1xuXG4gICAgY29uc3QgZmFjdG9yID0gMSAtIChwZXJjZW50IC8gMTAwKTtcbiAgICBjb25zdCByID0gTWF0aC5tYXgoMCwgTWF0aC5mbG9vcihyZ2IuciAqIGZhY3RvcikpO1xuICAgIGNvbnN0IGcgPSBNYXRoLm1heCgwLCBNYXRoLmZsb29yKHJnYi5nICogZmFjdG9yKSk7XG4gICAgY29uc3QgYiA9IE1hdGgubWF4KDAsIE1hdGguZmxvb3IocmdiLmIgKiBmYWN0b3IpKTtcblxuICAgIHJldHVybiBgIyR7ci50b1N0cmluZygxNikucGFkU3RhcnQoMiwgJzAnKX0ke2cudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsICcwJyl9JHtiLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCAnMCcpfWA7XG4gIH1cblxuICAvKipcbiAgICogQ2FsY3VsYXRlIGNvbnRyYXN0IGNvbG9yIChibGFjayBvciB3aGl0ZSkgYmFzZWQgb24gYmFja2dyb3VuZCBjb2xvclxuICAgKi9cbiAgcHJpdmF0ZSBnZXRDb250cmFzdENvbG9yKGhleENvbG9yOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJnYiA9IHRoaXMuaGV4VG9SZ2IoaGV4Q29sb3IpO1xuICAgIGlmICghcmdiKSByZXR1cm4gJyNmZmZmZmYnO1xuXG4gICAgLy8gQ2FsY3VsYXRlIHJlbGF0aXZlIGx1bWluYW5jZVxuICAgIGNvbnN0IGx1bWluYW5jZSA9ICgwLjI5OSAqIHJnYi5yICsgMC41ODcgKiByZ2IuZyArIDAuMTE0ICogcmdiLmIpIC8gMjU1O1xuXG4gICAgLy8gUmV0dXJuIGJsYWNrIGZvciBsaWdodCBjb2xvcnMsIHdoaXRlIGZvciBkYXJrIGNvbG9yc1xuICAgIHJldHVybiBsdW1pbmFuY2UgPiAwLjUgPyAnIzAwMDAwMCcgOiAnI2ZmZmZmZic7XG4gIH1cblxuICBwcml2YXRlIGluamVjdER5bmFtaWNTdHlsZXMoY3NzOiBzdHJpbmcpIHtcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHJldHVybjtcblxuICAgIGNvbnN0IGV4aXN0aW5nU3R5bGUgPSB0aGlzLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuc3R5bGVJZCk7XG4gICAgaWYgKGV4aXN0aW5nU3R5bGUpIHtcbiAgICAgIGV4aXN0aW5nU3R5bGUucmVtb3ZlKCk7XG4gICAgfVxuXG4gICAgY29uc3Qgc3R5bGVFbGVtZW50ID0gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICAgIHN0eWxlRWxlbWVudC5pZCA9IHRoaXMuc3R5bGVJZDtcbiAgICBzdHlsZUVsZW1lbnQudGV4dENvbnRlbnQgPSBjc3M7XG4gICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLmRvY3VtZW50LmhlYWQsIHN0eWxlRWxlbWVudCk7XG4gIH1cblxuICB0b2dnbGVUaGVtZSgpIHtcbiAgICBjb25zdCBpc0N1cnJlbnRseURhcmsgPSB0aGlzLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ2RhcmsnKTtcbiAgICBpc0N1cnJlbnRseURhcmsgPyB0aGlzLmRpc2FibGVEYXJrTW9kZSgpIDogdGhpcy5lbmFibGVEYXJrTW9kZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbmFibGVEYXJrTW9kZShzYXZlVG9TdG9yYWdlID0gdHJ1ZSkge1xuICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsICdkYXJrJyk7XG4gICAgaWYgKHNhdmVUb1N0b3JhZ2UpIHtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd0b2xsZS10aGVtZScsICdkYXJrJyk7XG4gICAgfVxuICAgIHRoaXMuaXNEYXJrU3ViamVjdC5uZXh0KHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBkaXNhYmxlRGFya01vZGUoc2F2ZVRvU3RvcmFnZSA9IHRydWUpIHtcbiAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCAnZGFyaycpO1xuICAgIGlmIChzYXZlVG9TdG9yYWdlKSB7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndG9sbGUtdGhlbWUnLCAnbGlnaHQnKTtcbiAgICB9XG4gICAgdGhpcy5pc0RhcmtTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICB9XG4gIHNldFByaW1hcnlDb2xvcihjb2xvcjogc3RyaW5nLCBwZXJzaXN0ID0gdHJ1ZSkge1xuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkgcmV0dXJuO1xuXG4gICAgdGhpcy5nZW5lcmF0ZVByaW1hcnlTaGFkZXMoY29sb3IpO1xuXG4gICAgLy8gQWxzbyBzZXQgaW5saW5lIGZvciBpbW1lZGlhdGUgdXBkYXRlXG4gICAgY29uc3QgcmdiID0gdGhpcy5oZXhUb1JnYihjb2xvcik7XG4gICAgaWYgKHJnYikge1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgdGhpcy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsXG4gICAgICAgICctLXByaW1hcnknLFxuICAgICAgICBgJHtyZ2Iucn0gJHtyZ2IuZ30gJHtyZ2IuYn1gXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChwZXJzaXN0KSB7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndG9sbGUtcHJpbWFyeS1jb2xvcicsIGNvbG9yKTtcbiAgICB9XG4gIH1cblxuICBnZXQgY3VycmVudFRoZW1lKCk6ICdkYXJrJyB8ICdsaWdodCcge1xuICAgIHJldHVybiB0aGlzLmlzRGFya1N1YmplY3QudmFsdWUgPyAnZGFyaycgOiAnbGlnaHQnO1xuICB9XG5cbiAgZ2V0IHByaW1hcnlDb2xvcigpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHJldHVybiBudWxsO1xuXG4gICAgY29uc3Qgcm9vdCA9IHRoaXMuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuICAgIGNvbnN0IGNzc1ZhbHVlID0gZ2V0Q29tcHV0ZWRTdHlsZShyb290KS5nZXRQcm9wZXJ0eVZhbHVlKCctLXByaW1hcnknKS50cmltKCk7XG5cbiAgICBpZiAoY3NzVmFsdWUgJiYgY3NzVmFsdWUgIT09ICcnKSB7XG4gICAgICAvLyBDb252ZXJ0IFJHQiBzdHJpbmcgYmFjayB0byBoZXggZm9yIGV4dGVybmFsIHVzZVxuICAgICAgY29uc3QgcmdiUGFydHMgPSBjc3NWYWx1ZS5zcGxpdCgnICcpLm1hcChOdW1iZXIpO1xuICAgICAgaWYgKHJnYlBhcnRzLmxlbmd0aCA9PT0gMykge1xuICAgICAgICByZXR1cm4gYCMke3JnYlBhcnRzWzBdLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCAnMCcpfSR7cmdiUGFydHNbMV0udG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsICcwJyl9JHtyZ2JQYXJ0c1syXS50b1N0cmluZygxNikucGFkU3RhcnQoMiwgJzAnKX1gO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndG9sbGUtcHJpbWFyeS1jb2xvcicpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IHRvIGNvbmZpZyBkZWZhdWx0cyAoY2xlYXJzIHVzZXIgcHJlZmVyZW5jZXMpXG4gICAqL1xuICByZXNldFRvQ29uZmlnRGVmYXVsdHMoKSB7XG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSByZXR1cm47XG5cbiAgICAvLyBDbGVhciB1c2VyIHByZWZlcmVuY2VzXG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ3RvbGxlLXRoZW1lJyk7XG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ3RvbGxlLXByaW1hcnktY29sb3InKTtcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgndG9sbGUtcmFkaXVzJyk7XG5cbiAgICAvLyBSZS1pbml0aWFsaXplIHdpdGggY29uZmlnIGRlZmF1bHRzXG4gICAgdGhpcy5pbml0aWFsaXplVGhlbWUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgY3VycmVudCB1c2VyIHByZWZlcmVuY2VzXG4gICAqL1xuICBnZXRVc2VyUHJlZmVyZW5jZXMoKSB7XG4gICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSByZXR1cm4gbnVsbDtcblxuICAgIHJldHVybiB7XG4gICAgICB0aGVtZTogbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3RvbGxlLXRoZW1lJyksXG4gICAgICBwcmltYXJ5Q29sb3I6IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0b2xsZS1wcmltYXJ5LWNvbG9yJyksXG4gICAgICByYWRpdXM6IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0b2xsZS1yYWRpdXMnKVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXIgYWxsIHVzZXIgcHJlZmVyZW5jZXNcbiAgICovXG4gIGNsZWFyVXNlclByZWZlcmVuY2VzKCkge1xuICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkgcmV0dXJuO1xuXG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ3RvbGxlLXRoZW1lJyk7XG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ3RvbGxlLXByaW1hcnktY29sb3InKTtcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgndG9sbGUtcmFkaXVzJyk7XG5cbiAgICAvLyBSZXNldCB0byBzeXN0ZW0gZGVmYXVsdHMgKG5vdCBjb25maWcgZGVmYXVsdHMpXG4gICAgY29uc3Qgc3lzdGVtUHJlZmVyc0RhcmsgPSB3aW5kb3cubWF0Y2hNZWRpYSgnKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKScpLm1hdGNoZXM7XG4gICAgaWYgKHN5c3RlbVByZWZlcnNEYXJrKSB7XG4gICAgICB0aGlzLmVuYWJsZURhcmtNb2RlKGZhbHNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kaXNhYmxlRGFya01vZGUoZmFsc2UpO1xuICAgIH1cblxuICAgIC8vIFJlbW92ZSBDU1MgdmFyaWFibGVzXG4gICAgY29uc3Qgcm9vdCA9IHRoaXMuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlU3R5bGUocm9vdCwgJy0tcHJpbWFyeScpO1xuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlU3R5bGUocm9vdCwgJy0tcmFkaXVzJyk7XG5cbiAgICAvLyBDbGVhciBkeW5hbWljIHN0eWxlc1xuICAgIGNvbnN0IGV4aXN0aW5nU3R5bGUgPSB0aGlzLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuc3R5bGVJZCk7XG4gICAgaWYgKGV4aXN0aW5nU3R5bGUpIHtcbiAgICAgIGV4aXN0aW5nU3R5bGUucmVtb3ZlKCk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1506,12 +1506,20 @@ class ThemeService {
1506
1506
  // User has saved color preference
1507
1507
  this.setPrimaryColor(savedPrimary, false); // Don't save again
1508
1508
  }
1509
+ else if (this.config?.primaryColor) {
1510
+ // Use config default if no user preference
1511
+ this.setPrimaryColor(this.config.primaryColor, false); // Save this as user preference
1512
+ }
1509
1513
  // 3. Apply Radius
1510
1514
  // Priority: Saved Radius > Config Radius
1511
1515
  if (savedRadius) {
1512
1516
  // User has saved radius preference
1513
1517
  this.setRadius(savedRadius, false);
1514
1518
  }
1519
+ else if (this.config?.radius) {
1520
+ // Use config default if no user preference
1521
+ this.setRadius(this.config.radius, false);
1522
+ }
1515
1523
  // Save theme mode preference if it came from config or system
1516
1524
  if (!savedTheme) {
1517
1525
  localStorage.setItem('tolle-theme', shouldBeDark ? 'dark' : 'light');