coer-elements 0.0.24 → 0.0.26

Sign up to get free protection for your applications and to get access to all the features.
@@ -219,10 +219,10 @@ export class CoerAlert {
219
219
  return icon;
220
220
  }
221
221
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CoerAlert, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
222
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CoerAlert, selector: "coer-alert", ngImport: i0, template: "<aside class=\"toast-container coer-alert\">\r\n <!-- Success -->\r\n <div id=\"alert-success\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-success-icon\"></i>\r\n <strong id=\"alert-success-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-success')\" class=\"btn-close btn-close-white\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-success-message\"></pre>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Error -->\r\n <div id=\"alert-error\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-error-icon\"></i>\r\n <strong id=\"alert-error-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-error')\" class=\"btn-close btn-close-white\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-error-message\"></pre>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Info -->\r\n <div id=\"alert-info\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-info-icon\"></i>\r\n <strong id=\"alert-info-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-info')\" class=\"btn-close btn-close-white\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-info-message\"></pre>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Warning -->\r\n <div id=\"alert-warning\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-warning-icon\"></i>\r\n <strong id=\"alert-warning-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-warning')\" class=\"btn-close\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-warning-message\"></pre>\r\n </div>\r\n </div>\r\n</aside>", styles: ["*{--blue: #0d6efd;--gray: #6c757d;--green: #198754;--yellow: #ffc107;--red: #dc3545;--white: #f5f5f5;--black: #252525;--orange: #fd6031}.text-blue{color:#0d6efd!important}.text-blue-bold{color:#0d6efd!important;font-weight:700!important}.background-blue{background-color:#0d6efd!important}.background-border-blue{background-color:#0d6efd!important;border-color:#0d6efd!important}.border-blue{border-color:#0d6efd!important}.text-gray{color:#6c757d!important}.text-gray-bold{color:#6c757d!important;font-weight:700!important}.background-gray{background-color:#6c757d!important}.background-border-gray{background-color:#6c757d!important;border-color:#6c757d!important}.border-gray{border-color:#6c757d!important}.text-green{color:#198754!important}.text-green-bold{color:#198754!important;font-weight:700!important}.background-green{background-color:#198754!important}.background-border-green{background-color:#198754!important;border-color:#198754!important}.border-green{border-color:#198754!important}.text-yellow{color:#ffc107!important}.text-yellow-bold{color:#ffc107!important;font-weight:700!important}.background-yellow{background-color:#ffc107!important}.background-border-yellow{background-color:#ffc107!important;border-color:#ffc107!important}.border-yellow{border-color:#ffc107!important}.text-red{color:#dc3545!important}.text-red-bold{color:#dc3545!important;font-weight:700!important}.background-red{background-color:#dc3545!important}.background-border-red{background-color:#dc3545!important;border-color:#dc3545!important}.border-red{border-color:#dc3545!important}.text-white{color:#f5f5f5!important}.text-white-bold{color:#f5f5f5!important;font-weight:700!important}.background-white{background-color:#f5f5f5!important}.background-border-white{background-color:#f5f5f5!important;border-color:#f5f5f5!important}.border-white{border-color:#f5f5f5!important}.text-black{color:#252525!important}.text-black-bold{color:#252525!important;font-weight:700!important}.background-black{background-color:#252525!important}.background-border-black{background-color:#252525!important;border-color:#252525!important}.border-black{border-color:#252525!important}.text-orange{color:#fd6031!important}.text-orange-bold{color:#fd6031!important;font-weight:700!important}.background-orange{background-color:#fd6031!important}.background-border-orange{background-color:#fd6031!important;border-color:#fd6031!important}.border-orange{border-color:#fd6031!important}aside.toast-container{position:fixed;bottom:0;right:0;padding:15px!important;z-index:2000!important}aside.toast-container i,aside.toast-container svg{display:flex;align-items:center}aside.toast-container strong{margin:0 auto 0 5px}aside.toast-container div.toast,aside.toast-container div.toast-header{border-top-left-radius:10px;border-top-right-radius:10px;color:#f5f5f5}aside.toast-container div.toast,aside.toast-container div.toast-body{border-bottom-left-radius:10px;border-bottom-right-radius:10px;color:#f5f5f5}aside.toast-container div.toast-body{min-height:36px}aside.toast-container pre{font-family:Roboto,RobotoFallback,Noto Kufi Arabic,Helvetica,Arial,sans-serif;white-space:pre-wrap;font-size:medium}aside.toast-container button{margin:0 2px!important;width:10px!important;height:10px!important;box-shadow:none!important;outline:none!important;border:none!important}aside.toast-container div#alert-success div.toast-header,aside.toast-container div#alert-success div.toast-body{background-color:#198754}aside.toast-container div#alert-info div.toast-header,aside.toast-container div#alert-info div.toast-body{background-color:#0d6efd}aside.toast-container div#alert-error div.toast-header,aside.toast-container div#alert-error div.toast-body{background-color:#dc3545}aside.toast-container div#alert-warning div.toast-header,aside.toast-container div#alert-warning div.toast-body{background-color:#ffc107;border-color:#252525;color:#252525}aside.toast-container div#alert-success:hover,aside.toast-container div#alert-info:hover,aside.toast-container div#alert-error:hover,aside.toast-container div#alert-warning:hover{transform:scale(1.01);box-shadow:2px 2px 10px #789;cursor:default}button.sweet-alert-button{width:100px!important;height:40px!important;display:flex!important;align-items:center!important;justify-content:center!important;margin:0 5px!important;outline:none!important;border:none!important;box-shadow:none!important}aside.toast-container>*{border:none!important;z-index:2000!important;margin:15px 0 0!important}\n"] }); }
222
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CoerAlert, isStandalone: true, selector: "coer-alert", ngImport: i0, template: "<aside class=\"toast-container coer-alert\">\r\n <!-- Success -->\r\n <div id=\"alert-success\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-success-icon\"></i>\r\n <strong id=\"alert-success-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-success')\" class=\"btn-close btn-close-white\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-success-message\"></pre>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Error -->\r\n <div id=\"alert-error\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-error-icon\"></i>\r\n <strong id=\"alert-error-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-error')\" class=\"btn-close btn-close-white\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-error-message\"></pre>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Info -->\r\n <div id=\"alert-info\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-info-icon\"></i>\r\n <strong id=\"alert-info-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-info')\" class=\"btn-close btn-close-white\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-info-message\"></pre>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Warning -->\r\n <div id=\"alert-warning\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-warning-icon\"></i>\r\n <strong id=\"alert-warning-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-warning')\" class=\"btn-close\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-warning-message\"></pre>\r\n </div>\r\n </div>\r\n</aside>", styles: ["*{--blue: #0d6efd;--gray: #6c757d;--green: #198754;--yellow: #ffc107;--red: #dc3545;--white: #f5f5f5;--black: #252525;--orange: #fd6031}.text-blue{color:#0d6efd!important}.text-blue-bold{color:#0d6efd!important;font-weight:700!important}.background-blue{background-color:#0d6efd!important}.background-border-blue{background-color:#0d6efd!important;border-color:#0d6efd!important}.border-blue{border-color:#0d6efd!important}.text-gray{color:#6c757d!important}.text-gray-bold{color:#6c757d!important;font-weight:700!important}.background-gray{background-color:#6c757d!important}.background-border-gray{background-color:#6c757d!important;border-color:#6c757d!important}.border-gray{border-color:#6c757d!important}.text-green{color:#198754!important}.text-green-bold{color:#198754!important;font-weight:700!important}.background-green{background-color:#198754!important}.background-border-green{background-color:#198754!important;border-color:#198754!important}.border-green{border-color:#198754!important}.text-yellow{color:#ffc107!important}.text-yellow-bold{color:#ffc107!important;font-weight:700!important}.background-yellow{background-color:#ffc107!important}.background-border-yellow{background-color:#ffc107!important;border-color:#ffc107!important}.border-yellow{border-color:#ffc107!important}.text-red{color:#dc3545!important}.text-red-bold{color:#dc3545!important;font-weight:700!important}.background-red{background-color:#dc3545!important}.background-border-red{background-color:#dc3545!important;border-color:#dc3545!important}.border-red{border-color:#dc3545!important}.text-white{color:#f5f5f5!important}.text-white-bold{color:#f5f5f5!important;font-weight:700!important}.background-white{background-color:#f5f5f5!important}.background-border-white{background-color:#f5f5f5!important;border-color:#f5f5f5!important}.border-white{border-color:#f5f5f5!important}.text-black{color:#252525!important}.text-black-bold{color:#252525!important;font-weight:700!important}.background-black{background-color:#252525!important}.background-border-black{background-color:#252525!important;border-color:#252525!important}.border-black{border-color:#252525!important}.text-orange{color:#fd6031!important}.text-orange-bold{color:#fd6031!important;font-weight:700!important}.background-orange{background-color:#fd6031!important}.background-border-orange{background-color:#fd6031!important;border-color:#fd6031!important}.border-orange{border-color:#fd6031!important}aside.toast-container{position:fixed;bottom:0;right:0;padding:15px!important;z-index:2000!important}aside.toast-container i,aside.toast-container svg{display:flex;align-items:center}aside.toast-container strong{margin:0 auto 0 5px}aside.toast-container div.toast,aside.toast-container div.toast-header{border-top-left-radius:10px;border-top-right-radius:10px;color:#f5f5f5}aside.toast-container div.toast,aside.toast-container div.toast-body{border-bottom-left-radius:10px;border-bottom-right-radius:10px;color:#f5f5f5}aside.toast-container div.toast-body{min-height:36px}aside.toast-container pre{font-family:Roboto,RobotoFallback,Noto Kufi Arabic,Helvetica,Arial,sans-serif;white-space:pre-wrap;font-size:medium}aside.toast-container button{margin:0 2px!important;width:10px!important;height:10px!important;box-shadow:none!important;outline:none!important;border:none!important}aside.toast-container div#alert-success div.toast-header,aside.toast-container div#alert-success div.toast-body{background-color:#198754}aside.toast-container div#alert-info div.toast-header,aside.toast-container div#alert-info div.toast-body{background-color:#0d6efd}aside.toast-container div#alert-error div.toast-header,aside.toast-container div#alert-error div.toast-body{background-color:#dc3545}aside.toast-container div#alert-warning div.toast-header,aside.toast-container div#alert-warning div.toast-body{background-color:#ffc107;border-color:#252525;color:#252525}aside.toast-container div#alert-success:hover,aside.toast-container div#alert-info:hover,aside.toast-container div#alert-error:hover,aside.toast-container div#alert-warning:hover{transform:scale(1.01);box-shadow:2px 2px 10px #789;cursor:default}button.sweet-alert-button{width:100px!important;height:40px!important;display:flex!important;align-items:center!important;justify-content:center!important;margin:0 5px!important;outline:none!important;border:none!important;box-shadow:none!important}aside.toast-container>*{border:none!important;z-index:2000!important;margin:15px 0 0!important}\n"] }); }
223
223
  }
224
224
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CoerAlert, decorators: [{
225
225
  type: Component,
226
- args: [{ selector: 'coer-alert', template: "<aside class=\"toast-container coer-alert\">\r\n <!-- Success -->\r\n <div id=\"alert-success\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-success-icon\"></i>\r\n <strong id=\"alert-success-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-success')\" class=\"btn-close btn-close-white\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-success-message\"></pre>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Error -->\r\n <div id=\"alert-error\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-error-icon\"></i>\r\n <strong id=\"alert-error-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-error')\" class=\"btn-close btn-close-white\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-error-message\"></pre>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Info -->\r\n <div id=\"alert-info\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-info-icon\"></i>\r\n <strong id=\"alert-info-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-info')\" class=\"btn-close btn-close-white\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-info-message\"></pre>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Warning -->\r\n <div id=\"alert-warning\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-warning-icon\"></i>\r\n <strong id=\"alert-warning-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-warning')\" class=\"btn-close\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-warning-message\"></pre>\r\n </div>\r\n </div>\r\n</aside>", styles: ["*{--blue: #0d6efd;--gray: #6c757d;--green: #198754;--yellow: #ffc107;--red: #dc3545;--white: #f5f5f5;--black: #252525;--orange: #fd6031}.text-blue{color:#0d6efd!important}.text-blue-bold{color:#0d6efd!important;font-weight:700!important}.background-blue{background-color:#0d6efd!important}.background-border-blue{background-color:#0d6efd!important;border-color:#0d6efd!important}.border-blue{border-color:#0d6efd!important}.text-gray{color:#6c757d!important}.text-gray-bold{color:#6c757d!important;font-weight:700!important}.background-gray{background-color:#6c757d!important}.background-border-gray{background-color:#6c757d!important;border-color:#6c757d!important}.border-gray{border-color:#6c757d!important}.text-green{color:#198754!important}.text-green-bold{color:#198754!important;font-weight:700!important}.background-green{background-color:#198754!important}.background-border-green{background-color:#198754!important;border-color:#198754!important}.border-green{border-color:#198754!important}.text-yellow{color:#ffc107!important}.text-yellow-bold{color:#ffc107!important;font-weight:700!important}.background-yellow{background-color:#ffc107!important}.background-border-yellow{background-color:#ffc107!important;border-color:#ffc107!important}.border-yellow{border-color:#ffc107!important}.text-red{color:#dc3545!important}.text-red-bold{color:#dc3545!important;font-weight:700!important}.background-red{background-color:#dc3545!important}.background-border-red{background-color:#dc3545!important;border-color:#dc3545!important}.border-red{border-color:#dc3545!important}.text-white{color:#f5f5f5!important}.text-white-bold{color:#f5f5f5!important;font-weight:700!important}.background-white{background-color:#f5f5f5!important}.background-border-white{background-color:#f5f5f5!important;border-color:#f5f5f5!important}.border-white{border-color:#f5f5f5!important}.text-black{color:#252525!important}.text-black-bold{color:#252525!important;font-weight:700!important}.background-black{background-color:#252525!important}.background-border-black{background-color:#252525!important;border-color:#252525!important}.border-black{border-color:#252525!important}.text-orange{color:#fd6031!important}.text-orange-bold{color:#fd6031!important;font-weight:700!important}.background-orange{background-color:#fd6031!important}.background-border-orange{background-color:#fd6031!important;border-color:#fd6031!important}.border-orange{border-color:#fd6031!important}aside.toast-container{position:fixed;bottom:0;right:0;padding:15px!important;z-index:2000!important}aside.toast-container i,aside.toast-container svg{display:flex;align-items:center}aside.toast-container strong{margin:0 auto 0 5px}aside.toast-container div.toast,aside.toast-container div.toast-header{border-top-left-radius:10px;border-top-right-radius:10px;color:#f5f5f5}aside.toast-container div.toast,aside.toast-container div.toast-body{border-bottom-left-radius:10px;border-bottom-right-radius:10px;color:#f5f5f5}aside.toast-container div.toast-body{min-height:36px}aside.toast-container pre{font-family:Roboto,RobotoFallback,Noto Kufi Arabic,Helvetica,Arial,sans-serif;white-space:pre-wrap;font-size:medium}aside.toast-container button{margin:0 2px!important;width:10px!important;height:10px!important;box-shadow:none!important;outline:none!important;border:none!important}aside.toast-container div#alert-success div.toast-header,aside.toast-container div#alert-success div.toast-body{background-color:#198754}aside.toast-container div#alert-info div.toast-header,aside.toast-container div#alert-info div.toast-body{background-color:#0d6efd}aside.toast-container div#alert-error div.toast-header,aside.toast-container div#alert-error div.toast-body{background-color:#dc3545}aside.toast-container div#alert-warning div.toast-header,aside.toast-container div#alert-warning div.toast-body{background-color:#ffc107;border-color:#252525;color:#252525}aside.toast-container div#alert-success:hover,aside.toast-container div#alert-info:hover,aside.toast-container div#alert-error:hover,aside.toast-container div#alert-warning:hover{transform:scale(1.01);box-shadow:2px 2px 10px #789;cursor:default}button.sweet-alert-button{width:100px!important;height:40px!important;display:flex!important;align-items:center!important;justify-content:center!important;margin:0 5px!important;outline:none!important;border:none!important;box-shadow:none!important}aside.toast-container>*{border:none!important;z-index:2000!important;margin:15px 0 0!important}\n"] }]
226
+ args: [{ selector: 'coer-alert', standalone: true, template: "<aside class=\"toast-container coer-alert\">\r\n <!-- Success -->\r\n <div id=\"alert-success\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-success-icon\"></i>\r\n <strong id=\"alert-success-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-success')\" class=\"btn-close btn-close-white\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-success-message\"></pre>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Error -->\r\n <div id=\"alert-error\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-error-icon\"></i>\r\n <strong id=\"alert-error-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-error')\" class=\"btn-close btn-close-white\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-error-message\"></pre>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Info -->\r\n <div id=\"alert-info\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-info-icon\"></i>\r\n <strong id=\"alert-info-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-info')\" class=\"btn-close btn-close-white\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-info-message\"></pre>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Warning -->\r\n <div id=\"alert-warning\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-warning-icon\"></i>\r\n <strong id=\"alert-warning-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-warning')\" class=\"btn-close\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-warning-message\"></pre>\r\n </div>\r\n </div>\r\n</aside>", styles: ["*{--blue: #0d6efd;--gray: #6c757d;--green: #198754;--yellow: #ffc107;--red: #dc3545;--white: #f5f5f5;--black: #252525;--orange: #fd6031}.text-blue{color:#0d6efd!important}.text-blue-bold{color:#0d6efd!important;font-weight:700!important}.background-blue{background-color:#0d6efd!important}.background-border-blue{background-color:#0d6efd!important;border-color:#0d6efd!important}.border-blue{border-color:#0d6efd!important}.text-gray{color:#6c757d!important}.text-gray-bold{color:#6c757d!important;font-weight:700!important}.background-gray{background-color:#6c757d!important}.background-border-gray{background-color:#6c757d!important;border-color:#6c757d!important}.border-gray{border-color:#6c757d!important}.text-green{color:#198754!important}.text-green-bold{color:#198754!important;font-weight:700!important}.background-green{background-color:#198754!important}.background-border-green{background-color:#198754!important;border-color:#198754!important}.border-green{border-color:#198754!important}.text-yellow{color:#ffc107!important}.text-yellow-bold{color:#ffc107!important;font-weight:700!important}.background-yellow{background-color:#ffc107!important}.background-border-yellow{background-color:#ffc107!important;border-color:#ffc107!important}.border-yellow{border-color:#ffc107!important}.text-red{color:#dc3545!important}.text-red-bold{color:#dc3545!important;font-weight:700!important}.background-red{background-color:#dc3545!important}.background-border-red{background-color:#dc3545!important;border-color:#dc3545!important}.border-red{border-color:#dc3545!important}.text-white{color:#f5f5f5!important}.text-white-bold{color:#f5f5f5!important;font-weight:700!important}.background-white{background-color:#f5f5f5!important}.background-border-white{background-color:#f5f5f5!important;border-color:#f5f5f5!important}.border-white{border-color:#f5f5f5!important}.text-black{color:#252525!important}.text-black-bold{color:#252525!important;font-weight:700!important}.background-black{background-color:#252525!important}.background-border-black{background-color:#252525!important;border-color:#252525!important}.border-black{border-color:#252525!important}.text-orange{color:#fd6031!important}.text-orange-bold{color:#fd6031!important;font-weight:700!important}.background-orange{background-color:#fd6031!important}.background-border-orange{background-color:#fd6031!important;border-color:#fd6031!important}.border-orange{border-color:#fd6031!important}aside.toast-container{position:fixed;bottom:0;right:0;padding:15px!important;z-index:2000!important}aside.toast-container i,aside.toast-container svg{display:flex;align-items:center}aside.toast-container strong{margin:0 auto 0 5px}aside.toast-container div.toast,aside.toast-container div.toast-header{border-top-left-radius:10px;border-top-right-radius:10px;color:#f5f5f5}aside.toast-container div.toast,aside.toast-container div.toast-body{border-bottom-left-radius:10px;border-bottom-right-radius:10px;color:#f5f5f5}aside.toast-container div.toast-body{min-height:36px}aside.toast-container pre{font-family:Roboto,RobotoFallback,Noto Kufi Arabic,Helvetica,Arial,sans-serif;white-space:pre-wrap;font-size:medium}aside.toast-container button{margin:0 2px!important;width:10px!important;height:10px!important;box-shadow:none!important;outline:none!important;border:none!important}aside.toast-container div#alert-success div.toast-header,aside.toast-container div#alert-success div.toast-body{background-color:#198754}aside.toast-container div#alert-info div.toast-header,aside.toast-container div#alert-info div.toast-body{background-color:#0d6efd}aside.toast-container div#alert-error div.toast-header,aside.toast-container div#alert-error div.toast-body{background-color:#dc3545}aside.toast-container div#alert-warning div.toast-header,aside.toast-container div#alert-warning div.toast-body{background-color:#ffc107;border-color:#252525;color:#252525}aside.toast-container div#alert-success:hover,aside.toast-container div#alert-info:hover,aside.toast-container div#alert-error:hover,aside.toast-container div#alert-warning:hover{transform:scale(1.01);box-shadow:2px 2px 10px #789;cursor:default}button.sweet-alert-button{width:100px!important;height:40px!important;display:flex!important;align-items:center!important;justify-content:center!important;margin:0 5px!important;outline:none!important;border:none!important;box-shadow:none!important}aside.toast-container>*{border:none!important;z-index:2000!important;margin:15px 0 0!important}\n"] }]
227
227
  }] });
228
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29lci1hbGVydC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2VyLWVsZW1lbnRzL3Rvb2xzL2xpYi9jb2VyLWFsZXJ0L2NvZXItYWxlcnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29lci1lbGVtZW50cy90b29scy9saWIvY29lci1hbGVydC9jb2VyLWFsZXJ0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNqQyxPQUFPLEtBQUssU0FBUyxNQUFNLFdBQVcsQ0FBQztBQUN2QyxPQUFPLElBQUksTUFBTSxhQUFhLENBQUE7O0FBTzlCLE1BQU0sT0FBTyxTQUFTO0lBRWxCLE1BQU07SUFDQyxPQUFPLENBQUMsVUFBeUIsSUFBSSxFQUFFLFFBQXVCLElBQUksRUFBRSxPQUFzQixJQUFJLEVBQUUsV0FBMEIsSUFBSTtRQUNqSSxPQUFPO1FBQ1AsSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO1lBQUUsS0FBSyxHQUFHLFNBQVMsQ0FBQztRQUNyRCxNQUFNLGlCQUFpQixHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMscUJBQXFCLENBQUUsQ0FBQztRQUMxRSxpQkFBaUIsQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBRXRDLE1BQU07UUFDTixJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFNLEVBQUUsSUFBSSxFQUFFLHlCQUF5QixDQUFDLENBQUM7UUFDN0QsTUFBTSxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLG9CQUFvQixDQUFFLENBQUM7UUFDeEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsQ0FB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S0FBSyxTQUFTLENBQUMsQ0FBQyxPQUFPLDBDQUEwQyxDQUFDO2dCQUNsRSxLQUFLLFNBQVMsQ0FBQyxDQUFDLE9BQU8sNENBQTRDLENBQUM7Z0JBQ3BFLEtBQUssVUFBVSxDQUFDLENBQUMsT0FBTyw0Q0FBNEMsQ0FBQztnQkFDckUsS0FBSyxRQUFRLENBQUMsQ0FBQyxPQUFPLHlCQUF5QixDQUFDO2dCQUNoRCxLQUFLLFNBQVMsQ0FBQyxDQUFDLE9BQU8seUJBQXlCLENBQUM7Z0JBQ2pELE9BQU8sQ0FBQyxDQUFDLE9BQU8sV0FBVyxDQUFDO1lBQ2hDLENBQUM7UUFDTCxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQzsrR0E5T1EsU0FBUzttR0FBVCxTQUFTLGtEQ1Z0QiwrckVBdURROzs0RkQ3Q0ssU0FBUztrQkFMckIsU0FBUzsrQkFDSSxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRvb2xzIH0gZnJvbSAnLi4vdG9vbHMnO1xyXG5pbXBvcnQgKiBhcyBib290c3RyYXAgZnJvbSAnYm9vdHN0cmFwJztcclxuaW1wb3J0IFN3YWwgZnJvbSAnc3dlZXRhbGVydDInXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnY29lci1hbGVydCcsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vY29lci1hbGVydC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9jb2VyLWFsZXJ0LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIENvZXJBbGVydCB7XHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwdWJsaWMgU3VjY2VzcyhtZXNzYWdlOiBzdHJpbmcgfCBudWxsID0gbnVsbCwgdGl0bGU6IHN0cmluZyB8IG51bGwgPSBudWxsLCBpY29uOiBzdHJpbmcgfCBudWxsID0gbnVsbCwgYXV0b2hpZGU6IG51bWJlciB8IG51bGwgPSAzMDAwKTogdm9pZCB7XHJcbiAgICAgICAgLy9UaXRsZVxyXG4gICAgICAgIGlmIChUb29scy5Jc09ubHlXaGl0ZVNwYWNlKHRpdGxlKSkgdGl0bGUgPSAnU3VjY2Vzcyc7XHJcbiAgICAgICAgY29uc3QgYWxlcnRTdWNjZXNzVGl0bGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWxlcnQtc3VjY2Vzcy10aXRsZScpITtcclxuICAgICAgICBhbGVydFN1Y2Nlc3NUaXRsZS50ZXh0Q29udGVudCA9IHRpdGxlO1xyXG5cclxuICAgICAgICAvL0ljb25cclxuICAgICAgICBpY29uID0gdGhpcy5HZXRJY29uKHRpdGxlISwgaWNvbiwgJ2JpLWNoZWNrLWNpcmNsZSBmYS1iZWF0Jyk7XHJcbiAgICAgICAgY29uc3QgYWxlcnRTdWNjZXNzSWNvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhbGVydC1zdWNjZXNzLWljb24nKSE7XHJcbiAgICAgICAgdGhpcy5TZXRJY29uKGFsZXJ0U3VjY2Vzc0ljb24sIGljb24pO1xyXG5cclxuICAgICAgICAvL01lc3NhZ2VcclxuICAgICAgICBpZiAoVG9vbHMuSXNOdWxsKG1lc3NhZ2UpKSBtZXNzYWdlID0gJyc7XHJcbiAgICAgICAgY29uc3QgYWxlcnRTdWNjZXNzTWVzc2FnZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhbGVydC1zdWNjZXNzLW1lc3NhZ2UnKSE7XHJcbiAgICAgICAgYWxlcnRTdWNjZXNzTWVzc2FnZS5pbm5lckhUTUwgPSBtZXNzYWdlITtcclxuXHJcbiAgICAgICAgLy9Ub2FzdFxyXG4gICAgICAgIGNvbnN0IGFsZXJ0U3VjY2VzcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhbGVydC1zdWNjZXNzJykhO1xyXG4gICAgICAgIHRoaXMuU2V0QXV0b0hpZGUoYWxlcnRTdWNjZXNzLCBhdXRvaGlkZSk7XHJcblxyXG4gICAgICAgIGNvbnN0IHRvYXN0ID0gYm9vdHN0cmFwLlRvYXN0LmdldE9yQ3JlYXRlSW5zdGFuY2UoYWxlcnRTdWNjZXNzKTtcclxuICAgICAgICB0b2FzdC5zaG93KCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgcHVibGljIEVycm9yKG1lc3NhZ2U6IHN0cmluZyB8IG51bGwgPSBudWxsLCB0aXRsZTogc3RyaW5nIHwgbnVsbCA9IG51bGwsIGljb246IHN0cmluZyB8IG51bGwgPSBudWxsLCBhdXRvaGlkZTogbnVtYmVyIHwgbnVsbCA9IDMwMDApOiB2b2lkIHtcclxuICAgICAgICAvL1RpdGxlXHJcbiAgICAgICAgaWYgKFRvb2xzLklzT25seVdoaXRlU3BhY2UodGl0bGUpKSB0aXRsZSA9ICdFcnJvcic7XHJcbiAgICAgICAgY29uc3QgYWxlcnRFcnJvclRpdGxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FsZXJ0LWVycm9yLXRpdGxlJykhO1xyXG4gICAgICAgIGFsZXJ0RXJyb3JUaXRsZS50ZXh0Q29udGVudCA9IHRpdGxlO1xyXG5cclxuICAgICAgICAvL0ljb25cclxuICAgICAgICBpY29uID0gdGhpcy5HZXRJY29uKHRpdGxlISwgaWNvbiwgJ2JpLWV4Y2xhbWF0aW9uLW9jdGFnb24gZmEtYmVhdCcpO1xyXG4gICAgICAgIGNvbnN0IGFsZXJ0RXJyb3JJY29uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FsZXJ0LWVycm9yLWljb24nKSE7XHJcbiAgICAgICAgdGhpcy5TZXRJY29uKGFsZXJ0RXJyb3JJY29uLCBpY29uKTtcclxuXHJcbiAgICAgICAgLy9NZXNzYWdlXHJcbiAgICAgICAgaWYgKFRvb2xzLklzTnVsbChtZXNzYWdlKSkgbWVzc2FnZSA9ICcnO1xyXG4gICAgICAgIGNvbnN0IGFsZXJ0RXJyb3JCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FsZXJ0LWVycm9yLW1lc3NhZ2UnKSE7XHJcbiAgICAgICAgYWxlcnRFcnJvckJvZHkuaW5uZXJIVE1MID0gbWVzc2FnZSE7XHJcblxyXG4gICAgICAgIC8vVG9hc3RcclxuICAgICAgICBjb25zdCBhbGVydEVycm9yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FsZXJ0LWVycm9yJykhO1xyXG4gICAgICAgIHRoaXMuU2V0QXV0b0hpZGUoYWxlcnRFcnJvciwgYXV0b2hpZGUpO1xyXG5cclxuICAgICAgICBjb25zdCB0b2FzdCA9IGJvb3RzdHJhcC5Ub2FzdC5nZXRPckNyZWF0ZUluc3RhbmNlKGFsZXJ0RXJyb3IpO1xyXG4gICAgICAgIHRvYXN0LnNob3coKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwdWJsaWMgSW5mbyhtZXNzYWdlOiBzdHJpbmcgfCBudWxsID0gbnVsbCwgdGl0bGU6IHN0cmluZyB8IG51bGwgPSBudWxsLCBpY29uOiBzdHJpbmcgfCBudWxsID0gbnVsbCwgYXV0b2hpZGU6IG51bWJlciB8IG51bGwgPSAzMDAwKTogdm9pZCB7XHJcbiAgICAgICAgLy9UaXRsZVxyXG4gICAgICAgIGlmIChUb29scy5Jc09ubHlXaGl0ZVNwYWNlKHRpdGxlKSkgdGl0bGUgPSAnSW5mbyc7XHJcbiAgICAgICAgY29uc3QgYWxlcnRJbmZvVGl0bGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWxlcnQtaW5mby10aXRsZScpITtcclxuICAgICAgICBhbGVydEluZm9UaXRsZS50ZXh0Q29udGVudCA9IHRpdGxlO1xyXG5cclxuICAgICAgICAvL0ljb25cclxuICAgICAgICBpY29uID0gdGhpcy5HZXRJY29uKHRpdGxlISwgaWNvbiwgJ2JpLWluZm8tY2lyY2xlIGZhLWJlYXQnKTtcclxuICAgICAgICBjb25zdCBhbGVydEluZm9JY29uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FsZXJ0LWluZm8taWNvbicpITtcclxuICAgICAgICB0aGlzLlNldEljb24oYWxlcnRJbmZvSWNvbiwgaWNvbik7XHJcblxyXG4gICAgICAgIC8vTWVzc2FnZVxyXG4gICAgICAgIGlmIChUb29scy5Jc051bGwobWVzc2FnZSkpIG1lc3NhZ2UgPSAnJztcclxuICAgICAgICBjb25zdCBhbGVydEluZm9Cb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FsZXJ0LWluZm8tbWVzc2FnZScpITtcclxuICAgICAgICBhbGVydEluZm9Cb2R5LmlubmVySFRNTCA9IG1lc3NhZ2UhO1xyXG5cclxuICAgICAgICAvL1RvYXN0XHJcbiAgICAgICAgY29uc3QgYWxlcnRJbmZvID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FsZXJ0LWluZm8nKSE7XHJcbiAgICAgICAgdGhpcy5TZXRBdXRvSGlkZShhbGVydEluZm8sIGF1dG9oaWRlKTtcclxuXHJcbiAgICAgICAgY29uc3QgdG9hc3QgPSBib290c3RyYXAuVG9hc3QuZ2V0T3JDcmVhdGVJbnN0YW5jZShhbGVydEluZm8pO1xyXG4gICAgICAgIHRvYXN0LnNob3coKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwdWJsaWMgV2FybmluZyhtZXNzYWdlOiBzdHJpbmcgfCBudWxsID0gbnVsbCwgdGl0bGU6IHN0cmluZyB8IG51bGwgPSBudWxsLCBpY29uOiBzdHJpbmcgfCBudWxsID0gbnVsbCwgYXV0b2hpZGU6IG51bWJlciB8IG51bGwgPSAzMDAwKTogdm9pZCB7XHJcbiAgICAgICAgLy9UaXRsZVxyXG4gICAgICAgIGlmIChUb29scy5Jc09ubHlXaGl0ZVNwYWNlKHRpdGxlKSkgdGl0bGUgPSAnV2FybmluZyc7XHJcbiAgICAgICAgY29uc3QgYWxlcnRXYXJuaW5nVGl0bGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWxlcnQtd2FybmluZy10aXRsZScpITtcclxuICAgICAgICBhbGVydFdhcm5pbmdUaXRsZS50ZXh0Q29udGVudCA9IHRpdGxlO1xyXG5cclxuICAgICAgICAvL0ljb25cclxuICAgICAgICBpY29uID0gdGhpcy5HZXRJY29uKHRpdGxlISwgaWNvbiwgJ2JpLWV4Y2xhbWF0aW9uLXRyaWFuZ2xlLWZpbGwgZmEtYmVhdCcpO1xyXG4gICAgICAgIGNvbnN0IGFsZXJ0V2FybmluZ0ljb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWxlcnQtd2FybmluZy1pY29uJykhO1xyXG4gICAgICAgIHRoaXMuU2V0SWNvbihhbGVydFdhcm5pbmdJY29uLCBpY29uKTtcclxuXHJcbiAgICAgICAgLy9NZXNzYWdlXHJcbiAgICAgICAgaWYgKFRvb2xzLklzTnVsbChtZXNzYWdlKSkgbWVzc2FnZSA9ICcnO1xyXG4gICAgICAgIGNvbnN0IGFsZXJ0V2FybmluZ0JvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWxlcnQtd2FybmluZy1tZXNzYWdlJykhO1xyXG4gICAgICAgIGFsZXJ0V2FybmluZ0JvZHkuaW5uZXJIVE1MID0gbWVzc2FnZSE7XHJcblxyXG4gICAgICAgIC8vVG9hc3RcclxuICAgICAgICBjb25zdCBhbGVydFdhcm5pbmcgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWxlcnQtd2FybmluZycpITtcclxuICAgICAgICB0aGlzLlNldEF1dG9IaWRlKGFsZXJ0V2FybmluZywgYXV0b2hpZGUpO1xyXG5cclxuICAgICAgICBjb25zdCB0b2FzdCA9IGJvb3RzdHJhcC5Ub2FzdC5nZXRPckNyZWF0ZUluc3RhbmNlKGFsZXJ0V2FybmluZyk7XHJcbiAgICAgICAgdG9hc3Quc2hvdygpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogKi9cclxuICAgIHByb3RlY3RlZCBDbG9zZShhbGVydDogJ2FsZXJ0LXN1Y2Nlc3MnIHwgJ2FsZXJ0LWVycm9yJyB8ICdhbGVydC1pbmZvJyB8ICdhbGVydC13YXJuaW5nJykge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPihSZXNvbHZlID0+IHtcclxuICAgICAgICAgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGFsZXJ0KSE7XHJcbiAgICAgICAgICAgIGNvbnN0IHRvYXN0ID0gYm9vdHN0cmFwLlRvYXN0LmdldE9yQ3JlYXRlSW5zdGFuY2UoZWxlbWVudCk7XHJcbiAgICAgICAgICAgIHRvYXN0LmhpZGUoKTtcclxuXHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geyBSZXNvbHZlKCkgfSwgMjAwKTtcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogKi9cclxuICAgIHB1YmxpYyBDb25maXJtKFxyXG4gICAgICAgIG1lc3NhZ2U6IHN0cmluZyA9ICdQcm9jZWVkPycsXHJcbiAgICAgICAgYWxlcnRUeXBlOiAnd2FybmluZycgfCAnZGFuZ2VyJyB8ICdzdWNjZXNzJyB8ICdpbmZvJyA9ICd3YXJuaW5nJyxcclxuICAgICAgICBpY29uOiBzdHJpbmcgfCBudWxsID0gbnVsbCkge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxib29sZWFuPihSZXNvbHZlID0+IHtcclxuICAgICAgICAgICAgbGV0IGNvbG9yOiBzdHJpbmc7XHJcbiAgICAgICAgICAgIGxldCBpY29uVHlwZTogJ3dhcm5pbmcnIHwgJ2Vycm9yJyB8ICdzdWNjZXNzJyB8ICdpbmZvJztcclxuICAgICAgICAgICAgc3dpdGNoKGFsZXJ0VHlwZSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnZGFuZ2VyJzoge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChUb29scy5Jc051bGwoaWNvbikpIGljb24gPSAnYmktZXhjbGFtYXRpb24tb2N0YWdvbic7XHJcbiAgICAgICAgICAgICAgICAgICAgaWNvblR5cGUgPSAnZXJyb3InO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yID0gJyNkYzM1NDUnOyAvL3JlZFxyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgICBjYXNlICdzdWNjZXNzJzoge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChUb29scy5Jc051bGwoaWNvbikpIGljb24gPSAnYmktY2hlY2stY2lyY2xlJztcclxuICAgICAgICAgICAgICAgICAgICBpY29uVHlwZSA9ICdpbmZvJztcclxuICAgICAgICAgICAgICAgICAgICBjb2xvciA9ICcjMTk4NzU0JzsgLy9ncmVlblxyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgICBjYXNlICdpbmZvJzoge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChUb29scy5Jc051bGwoaWNvbikpIGljb24gPSAnYmktaW5mby1jaXJjbGUnO1xyXG4gICAgICAgICAgICAgICAgICAgIGljb25UeXBlID0gJ2Vycm9yJztcclxuICAgICAgICAgICAgICAgICAgICBjb2xvciA9ICcjMGQ2ZWZkJzsgLy9ibHVlXHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDoge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChUb29scy5Jc051bGwoaWNvbikpIGljb24gPSAnYmktZXhjbGFtYXRpb24tdHJpYW5nbGUtZmlsbCc7XHJcbiAgICAgICAgICAgICAgICAgICAgaWNvblR5cGUgPSAnd2FybmluZyc7XHJcbiAgICAgICAgICAgICAgICAgICAgY29sb3IgPSAnI2ZmYzEwNyc7IC8veWVsbG93XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHN3aXRjaChpY29uKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdkZWxldGUnOiBpY29uID0gJ2ZhLXJlZ3VsYXIgZmEtdHJhc2gtY2FuJzsgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIFN3YWwuZmlyZSh7XHJcbiAgICAgICAgICAgICAgICBpY29uOiBpY29uVHlwZSxcclxuICAgICAgICAgICAgICAgIGljb25Db2xvcjogJ3RyYW5zcGFyZW50JyxcclxuICAgICAgICAgICAgICAgIGljb25IdG1sOiBgPGkgY2xhc3M9XCIke2ljb259XCIgc3R5bGU9XCJjb2xvcjogJHtjb2xvcn07XCI+PC9pPmAsXHJcbiAgICAgICAgICAgICAgICBodG1sOiBtZXNzYWdlLFxyXG4gICAgICAgICAgICAgICAgc2hvd0NvbmZpcm1CdXR0b246IHRydWUsXHJcbiAgICAgICAgICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogJ1llcycsXHJcbiAgICAgICAgICAgICAgICBjb25maXJtQnV0dG9uQ29sb3I6IGNvbG9yLFxyXG4gICAgICAgICAgICAgICAgZm9jdXNDb25maXJtOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgc2hvd0RlbnlCdXR0b246IHRydWUsXHJcbiAgICAgICAgICAgICAgICBkZW55QnV0dG9uQ29sb3I6IGNvbG9yLFxyXG4gICAgICAgICAgICAgICAgZm9jdXNEZW55OiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIHJldmVyc2VCdXR0b25zOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgYWxsb3dPdXRzaWRlQ2xpY2s6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgYWxsb3dFc2NhcGVLZXk6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgYWxsb3dFbnRlcktleTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGN1c3RvbUNsYXNzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGVueUJ1dHRvbjogJ3N3ZWV0LWFsZXJ0LWJ1dHRvbicsXHJcbiAgICAgICAgICAgICAgICAgICAgY29uZmlybUJ1dHRvbjogJ3N3ZWV0LWFsZXJ0LWJ1dHRvbidcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSkudGhlbigoeyB2YWx1ZSB9KSA9PiBzZXRUaW1lb3V0KCgpID0+IFJlc29sdmUodmFsdWUpKSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgcHJpdmF0ZSBTZXRJY29uKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBpY29uOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgWy4uLmVsZW1lbnQuY2xhc3NMaXN0LnZhbHVlLnNwbGl0KCcgJyldKSB7XHJcbiAgICAgICAgICAgIGlmIChpdGVtLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShpdGVtKTtcclxuICAgICAgICAgICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgncScpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpY29uID0gaWNvbi50cmltKCk7XHJcbiAgICAgICAgY29uc3QgaGFzV2hpdGVTcGFjZXM6IFJlZ0V4cCA9IC8gLztcclxuICAgICAgICBpZiAoaGFzV2hpdGVTcGFjZXMudGVzdChpY29uKSkge1xyXG4gICAgICAgICAgICBjb25zdCBjbGFzc2VzID0gaWNvbi5zcGxpdCgnICcpO1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGljb24gb2YgY2xhc3NlcykgZWxlbWVudC5jbGFzc0xpc3QuYWRkKGljb24pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZWxzZSBlbGVtZW50LmNsYXNzTGlzdC5hZGQoaWNvbik7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgcHJpdmF0ZSBTZXRBdXRvSGlkZShlbGVtZW50OiBIVE1MRWxlbWVudCwgYXV0b2hpZGU6IG51bWJlciB8IG51bGwpOiB2b2lkIHtcclxuICAgICAgICBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnZGF0YS1icy1hdXRvaGlkZScpO1xyXG4gICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdkYXRhLWJzLWRlbGF5Jyk7XHJcblxyXG4gICAgICAgIGlmIChhdXRvaGlkZSAmJiBhdXRvaGlkZSA+IDApIHtcclxuICAgICAgICAgICAgaWYgKGF1dG9oaWRlIDwgMTAwMCkgYXV0b2hpZGUgPSAxMDAwO1xyXG4gICAgICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnZGF0YS1icy1hdXRvaGlkZScsICd0cnVlJyk7XHJcbiAgICAgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdkYXRhLWJzLWRlbGF5JywgU3RyaW5nKGF1dG9oaWRlKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBlbHNlIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdkYXRhLWJzLWF1dG9oaWRlJywgJ2ZhbHNlJyk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgcHJpdmF0ZSBHZXRJY29uKHRpdGxlOiBzdHJpbmcsIGljb246IHN0cmluZyB8IG51bGwsIGljb25EZWZhdWx0OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmIChpY29uID09IG51bGwgfHwgaWNvbiA9PSAnJykge1xyXG4gICAgICAgICAgICB0aXRsZSA9IHRpdGxlLnJlcGxhY2VBbGwoJyAnLCAnJykudG9VcHBlckNhc2UoKTtcclxuXHJcbiAgICAgICAgICAgIHN3aXRjaCh0aXRsZSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnRU5BQkxFRCc6IHJldHVybiAnZmEtc29saWQgZmEtdGh1bWJzLXVwIGZhLWZsaXAtaG9yaXpvbnRhbCc7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdBQ1RJVkUnOiByZXR1cm4gJ2ZhLXNvbGlkIGZhLXRodW1icy11cCBmYS1mbGlwLWhvcml6b250YWwnO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnQUNUSVZFRCc6IHJldHVybiAnZmEtc29saWQgZmEtdGh1bWJzLXVwIGZhLWZsaXAtaG9yaXpvbnRhbCc7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdESVNBQkxFJzogcmV0dXJuICdmYS1zb2xpZCBmYS10aHVtYnMtZG93biBmYS1mbGlwLWhvcml6b250YWwnO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnRElTQUJMRUQnOiByZXR1cm4gJ2ZhLXNvbGlkIGZhLXRodW1icy1kb3duIGZhLWZsaXAtaG9yaXpvbnRhbCc7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdERUxFVEUnOiByZXR1cm4gJ2ZhLXJlZ3VsYXIgZmEtdHJhc2gtY2FuJztcclxuICAgICAgICAgICAgICAgIGNhc2UgJ0RFTEVURUQnOiByZXR1cm4gJ2ZhLXJlZ3VsYXIgZmEtdHJhc2gtY2FuJztcclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IHJldHVybiBpY29uRGVmYXVsdDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGljb247XHJcbiAgICB9XHJcbn0iLCI8YXNpZGUgY2xhc3M9XCJ0b2FzdC1jb250YWluZXIgY29lci1hbGVydFwiPlxyXG4gICAgPCEtLSBTdWNjZXNzIC0tPlxyXG4gICAgPGRpdiBpZD1cImFsZXJ0LXN1Y2Nlc3NcIiByb2xlPVwiYWxlcnRcIiBhcmlhLWxpdmU9XCJhc3NlcnRpdmVcIiBhcmlhLWF0b21pYz1cInRydWVcIiBjbGFzcz1cInRvYXN0XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRvYXN0LWhlYWRlclwiPlxyXG4gICAgICAgICAgICA8aSBpZD1cImFsZXJ0LXN1Y2Nlc3MtaWNvblwiPjwvaT5cclxuICAgICAgICAgICAgPHN0cm9uZyBpZD1cImFsZXJ0LXN1Y2Nlc3MtdGl0bGVcIj48L3N0cm9uZz5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIkNsb3NlKCdhbGVydC1zdWNjZXNzJylcIiBjbGFzcz1cImJ0bi1jbG9zZSBidG4tY2xvc2Utd2hpdGVcIj48L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRvYXN0LWJvZHlcIj5cclxuICAgICAgICAgICAgPHByZSBpZD1cImFsZXJ0LXN1Y2Nlc3MtbWVzc2FnZVwiPjwvcHJlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG5cclxuICAgIDwhLS0gRXJyb3IgLS0+XHJcbiAgICA8ZGl2IGlkPVwiYWxlcnQtZXJyb3JcIiByb2xlPVwiYWxlcnRcIiBhcmlhLWxpdmU9XCJhc3NlcnRpdmVcIiBhcmlhLWF0b21pYz1cInRydWVcIiBjbGFzcz1cInRvYXN0XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRvYXN0LWhlYWRlclwiPlxyXG4gICAgICAgICAgICA8aSBpZD1cImFsZXJ0LWVycm9yLWljb25cIj48L2k+XHJcbiAgICAgICAgICAgIDxzdHJvbmcgaWQ9XCJhbGVydC1lcnJvci10aXRsZVwiPjwvc3Ryb25nPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiQ2xvc2UoJ2FsZXJ0LWVycm9yJylcIiBjbGFzcz1cImJ0bi1jbG9zZSBidG4tY2xvc2Utd2hpdGVcIj48L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRvYXN0LWJvZHlcIj5cclxuICAgICAgICAgICAgPHByZSBpZD1cImFsZXJ0LWVycm9yLW1lc3NhZ2VcIj48L3ByZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICA8IS0tIEluZm8gLS0+XHJcbiAgICA8ZGl2IGlkPVwiYWxlcnQtaW5mb1wiIHJvbGU9XCJhbGVydFwiIGFyaWEtbGl2ZT1cImFzc2VydGl2ZVwiIGFyaWEtYXRvbWljPVwidHJ1ZVwiIGNsYXNzPVwidG9hc3RcIj5cclxuICAgICAgIDxkaXYgY2xhc3M9XCJ0b2FzdC1oZWFkZXJcIj5cclxuICAgICAgICAgICAgPGkgaWQ9XCJhbGVydC1pbmZvLWljb25cIj48L2k+XHJcbiAgICAgICAgICAgIDxzdHJvbmcgaWQ9XCJhbGVydC1pbmZvLXRpdGxlXCI+PC9zdHJvbmc+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJDbG9zZSgnYWxlcnQtaW5mbycpXCIgY2xhc3M9XCJidG4tY2xvc2UgYnRuLWNsb3NlLXdoaXRlXCI+PC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0b2FzdC1ib2R5XCI+XHJcbiAgICAgICAgICAgIDxwcmUgaWQ9XCJhbGVydC1pbmZvLW1lc3NhZ2VcIj48L3ByZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICA8IS0tIFdhcm5pbmcgLS0+XHJcbiAgICA8ZGl2IGlkPVwiYWxlcnQtd2FybmluZ1wiIHJvbGU9XCJhbGVydFwiIGFyaWEtbGl2ZT1cImFzc2VydGl2ZVwiIGFyaWEtYXRvbWljPVwidHJ1ZVwiIGNsYXNzPVwidG9hc3RcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidG9hc3QtaGVhZGVyXCI+XHJcbiAgICAgICAgICAgIDxpIGlkPVwiYWxlcnQtd2FybmluZy1pY29uXCI+PC9pPlxyXG4gICAgICAgICAgICA8c3Ryb25nIGlkPVwiYWxlcnQtd2FybmluZy10aXRsZVwiPjwvc3Ryb25nPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiQ2xvc2UoJ2FsZXJ0LXdhcm5pbmcnKVwiIGNsYXNzPVwiYnRuLWNsb3NlXCI+PC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0b2FzdC1ib2R5XCI+XHJcbiAgICAgICAgICAgIDxwcmUgaWQ9XCJhbGVydC13YXJuaW5nLW1lc3NhZ2VcIj48L3ByZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2FzaWRlPiJdfQ==
228
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29lci1hbGVydC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2VyLWVsZW1lbnRzL3Rvb2xzL2xpYi9jb2VyLWFsZXJ0L2NvZXItYWxlcnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29lci1lbGVtZW50cy90b29scy9saWIvY29lci1hbGVydC9jb2VyLWFsZXJ0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNqQyxPQUFPLEtBQUssU0FBUyxNQUFNLFdBQVcsQ0FBQztBQUN2QyxPQUFPLElBQUksTUFBTSxhQUFhLENBQUE7O0FBUTlCLE1BQU0sT0FBTyxTQUFTO0lBRWxCLE1BQU07SUFDQyxPQUFPLENBQUMsVUFBeUIsSUFBSSxFQUFFLFFBQXVCLElBQUksRUFBRSxPQUFzQixJQUFJLEVBQUUsV0FBMEIsSUFBSTtRQUNqSSxPQUFPO1FBQ1AsSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO1lBQUUsS0FBSyxHQUFHLFNBQVMsQ0FBQztRQUNyRCxNQUFNLGlCQUFpQixHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMscUJBQXFCLENBQUUsQ0FBQztRQUMxRSxpQkFBaUIsQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBRXRDLE1BQU07UUFDTixJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFNLEVBQUUsSUFBSSxFQUFFLHlCQUF5QixDQUFDLENBQUM7UUFDN0QsTUFBTSxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLG9CQUFvQixDQUFFLENBQUM7UUFDeEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsQ0FB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S0FBSyxTQUFTLENBQUMsQ0FBQyxPQUFPLDBDQUEwQyxDQUFDO2dCQUNsRSxLQUFLLFNBQVMsQ0FBQyxDQUFDLE9BQU8sNENBQTRDLENBQUM7Z0JBQ3BFLEtBQUssVUFBVSxDQUFDLENBQUMsT0FBTyw0Q0FBNEMsQ0FBQztnQkFDckUsS0FBSyxRQUFRLENBQUMsQ0FBQyxPQUFPLHlCQUF5QixDQUFDO2dCQUNoRCxLQUFLLFNBQVMsQ0FBQyxDQUFDLE9BQU8seUJBQXlCLENBQUM7Z0JBQ2pELE9BQU8sQ0FBQyxDQUFDLE9BQU8sV0FBVyxDQUFDO1lBQ2hDLENBQUM7UUFDTCxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQzsrR0E5T1EsU0FBUzttR0FBVCxTQUFTLHNFQ1h0QiwrckVBdURROzs0RkQ1Q0ssU0FBUztrQkFOckIsU0FBUzsrQkFDSSxZQUFZLGNBR1YsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUb29scyB9IGZyb20gJy4uL3Rvb2xzJztcclxuaW1wb3J0ICogYXMgYm9vdHN0cmFwIGZyb20gJ2Jvb3RzdHJhcCc7XHJcbmltcG9ydCBTd2FsIGZyb20gJ3N3ZWV0YWxlcnQyJ1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2NvZXItYWxlcnQnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NvZXItYWxlcnQuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vY29lci1hbGVydC5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29lckFsZXJ0IHtcclxuXHJcbiAgICAvKiogKi9cclxuICAgIHB1YmxpYyBTdWNjZXNzKG1lc3NhZ2U6IHN0cmluZyB8IG51bGwgPSBudWxsLCB0aXRsZTogc3RyaW5nIHwgbnVsbCA9IG51bGwsIGljb246IHN0cmluZyB8IG51bGwgPSBudWxsLCBhdXRvaGlkZTogbnVtYmVyIHwgbnVsbCA9IDMwMDApOiB2b2lkIHtcclxuICAgICAgICAvL1RpdGxlXHJcbiAgICAgICAgaWYgKFRvb2xzLklzT25seVdoaXRlU3BhY2UodGl0bGUpKSB0aXRsZSA9ICdTdWNjZXNzJztcclxuICAgICAgICBjb25zdCBhbGVydFN1Y2Nlc3NUaXRsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhbGVydC1zdWNjZXNzLXRpdGxlJykhO1xyXG4gICAgICAgIGFsZXJ0U3VjY2Vzc1RpdGxlLnRleHRDb250ZW50ID0gdGl0bGU7XHJcblxyXG4gICAgICAgIC8vSWNvblxyXG4gICAgICAgIGljb24gPSB0aGlzLkdldEljb24odGl0bGUhLCBpY29uLCAnYmktY2hlY2stY2lyY2xlIGZhLWJlYXQnKTtcclxuICAgICAgICBjb25zdCBhbGVydFN1Y2Nlc3NJY29uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FsZXJ0LXN1Y2Nlc3MtaWNvbicpITtcclxuICAgICAgICB0aGlzLlNldEljb24oYWxlcnRTdWNjZXNzSWNvbiwgaWNvbik7XHJcblxyXG4gICAgICAgIC8vTWVzc2FnZVxyXG4gICAgICAgIGlmIChUb29scy5Jc051bGwobWVzc2FnZSkpIG1lc3NhZ2UgPSAnJztcclxuICAgICAgICBjb25zdCBhbGVydFN1Y2Nlc3NNZXNzYWdlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FsZXJ0LXN1Y2Nlc3MtbWVzc2FnZScpITtcclxuICAgICAgICBhbGVydFN1Y2Nlc3NNZXNzYWdlLmlubmVySFRNTCA9IG1lc3NhZ2UhO1xyXG5cclxuICAgICAgICAvL1RvYXN0XHJcbiAgICAgICAgY29uc3QgYWxlcnRTdWNjZXNzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FsZXJ0LXN1Y2Nlc3MnKSE7XHJcbiAgICAgICAgdGhpcy5TZXRBdXRvSGlkZShhbGVydFN1Y2Nlc3MsIGF1dG9oaWRlKTtcclxuXHJcbiAgICAgICAgY29uc3QgdG9hc3QgPSBib290c3RyYXAuVG9hc3QuZ2V0T3JDcmVhdGVJbnN0YW5jZShhbGVydFN1Y2Nlc3MpO1xyXG4gICAgICAgIHRvYXN0LnNob3coKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwdWJsaWMgRXJyb3IobWVzc2FnZTogc3RyaW5nIHwgbnVsbCA9IG51bGwsIHRpdGxlOiBzdHJpbmcgfCBudWxsID0gbnVsbCwgaWNvbjogc3RyaW5nIHwgbnVsbCA9IG51bGwsIGF1dG9oaWRlOiBudW1iZXIgfCBudWxsID0gMzAwMCk6IHZvaWQge1xyXG4gICAgICAgIC8vVGl0bGVcclxuICAgICAgICBpZiAoVG9vbHMuSXNPbmx5V2hpdGVTcGFjZSh0aXRsZSkpIHRpdGxlID0gJ0Vycm9yJztcclxuICAgICAgICBjb25zdCBhbGVydEVycm9yVGl0bGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWxlcnQtZXJyb3ItdGl0bGUnKSE7XHJcbiAgICAgICAgYWxlcnRFcnJvclRpdGxlLnRleHRDb250ZW50ID0gdGl0bGU7XHJcblxyXG4gICAgICAgIC8vSWNvblxyXG4gICAgICAgIGljb24gPSB0aGlzLkdldEljb24odGl0bGUhLCBpY29uLCAnYmktZXhjbGFtYXRpb24tb2N0YWdvbiBmYS1iZWF0Jyk7XHJcbiAgICAgICAgY29uc3QgYWxlcnRFcnJvckljb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWxlcnQtZXJyb3ItaWNvbicpITtcclxuICAgICAgICB0aGlzLlNldEljb24oYWxlcnRFcnJvckljb24sIGljb24pO1xyXG5cclxuICAgICAgICAvL01lc3NhZ2VcclxuICAgICAgICBpZiAoVG9vbHMuSXNOdWxsKG1lc3NhZ2UpKSBtZXNzYWdlID0gJyc7XHJcbiAgICAgICAgY29uc3QgYWxlcnRFcnJvckJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWxlcnQtZXJyb3ItbWVzc2FnZScpITtcclxuICAgICAgICBhbGVydEVycm9yQm9keS5pbm5lckhUTUwgPSBtZXNzYWdlITtcclxuXHJcbiAgICAgICAgLy9Ub2FzdFxyXG4gICAgICAgIGNvbnN0IGFsZXJ0RXJyb3IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWxlcnQtZXJyb3InKSE7XHJcbiAgICAgICAgdGhpcy5TZXRBdXRvSGlkZShhbGVydEVycm9yLCBhdXRvaGlkZSk7XHJcblxyXG4gICAgICAgIGNvbnN0IHRvYXN0ID0gYm9vdHN0cmFwLlRvYXN0LmdldE9yQ3JlYXRlSW5zdGFuY2UoYWxlcnRFcnJvcik7XHJcbiAgICAgICAgdG9hc3Quc2hvdygpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogKi9cclxuICAgIHB1YmxpYyBJbmZvKG1lc3NhZ2U6IHN0cmluZyB8IG51bGwgPSBudWxsLCB0aXRsZTogc3RyaW5nIHwgbnVsbCA9IG51bGwsIGljb246IHN0cmluZyB8IG51bGwgPSBudWxsLCBhdXRvaGlkZTogbnVtYmVyIHwgbnVsbCA9IDMwMDApOiB2b2lkIHtcclxuICAgICAgICAvL1RpdGxlXHJcbiAgICAgICAgaWYgKFRvb2xzLklzT25seVdoaXRlU3BhY2UodGl0bGUpKSB0aXRsZSA9ICdJbmZvJztcclxuICAgICAgICBjb25zdCBhbGVydEluZm9UaXRsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhbGVydC1pbmZvLXRpdGxlJykhO1xyXG4gICAgICAgIGFsZXJ0SW5mb1RpdGxlLnRleHRDb250ZW50ID0gdGl0bGU7XHJcblxyXG4gICAgICAgIC8vSWNvblxyXG4gICAgICAgIGljb24gPSB0aGlzLkdldEljb24odGl0bGUhLCBpY29uLCAnYmktaW5mby1jaXJjbGUgZmEtYmVhdCcpO1xyXG4gICAgICAgIGNvbnN0IGFsZXJ0SW5mb0ljb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWxlcnQtaW5mby1pY29uJykhO1xyXG4gICAgICAgIHRoaXMuU2V0SWNvbihhbGVydEluZm9JY29uLCBpY29uKTtcclxuXHJcbiAgICAgICAgLy9NZXNzYWdlXHJcbiAgICAgICAgaWYgKFRvb2xzLklzTnVsbChtZXNzYWdlKSkgbWVzc2FnZSA9ICcnO1xyXG4gICAgICAgIGNvbnN0IGFsZXJ0SW5mb0JvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWxlcnQtaW5mby1tZXNzYWdlJykhO1xyXG4gICAgICAgIGFsZXJ0SW5mb0JvZHkuaW5uZXJIVE1MID0gbWVzc2FnZSE7XHJcblxyXG4gICAgICAgIC8vVG9hc3RcclxuICAgICAgICBjb25zdCBhbGVydEluZm8gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWxlcnQtaW5mbycpITtcclxuICAgICAgICB0aGlzLlNldEF1dG9IaWRlKGFsZXJ0SW5mbywgYXV0b2hpZGUpO1xyXG5cclxuICAgICAgICBjb25zdCB0b2FzdCA9IGJvb3RzdHJhcC5Ub2FzdC5nZXRPckNyZWF0ZUluc3RhbmNlKGFsZXJ0SW5mbyk7XHJcbiAgICAgICAgdG9hc3Quc2hvdygpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogKi9cclxuICAgIHB1YmxpYyBXYXJuaW5nKG1lc3NhZ2U6IHN0cmluZyB8IG51bGwgPSBudWxsLCB0aXRsZTogc3RyaW5nIHwgbnVsbCA9IG51bGwsIGljb246IHN0cmluZyB8IG51bGwgPSBudWxsLCBhdXRvaGlkZTogbnVtYmVyIHwgbnVsbCA9IDMwMDApOiB2b2lkIHtcclxuICAgICAgICAvL1RpdGxlXHJcbiAgICAgICAgaWYgKFRvb2xzLklzT25seVdoaXRlU3BhY2UodGl0bGUpKSB0aXRsZSA9ICdXYXJuaW5nJztcclxuICAgICAgICBjb25zdCBhbGVydFdhcm5pbmdUaXRsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhbGVydC13YXJuaW5nLXRpdGxlJykhO1xyXG4gICAgICAgIGFsZXJ0V2FybmluZ1RpdGxlLnRleHRDb250ZW50ID0gdGl0bGU7XHJcblxyXG4gICAgICAgIC8vSWNvblxyXG4gICAgICAgIGljb24gPSB0aGlzLkdldEljb24odGl0bGUhLCBpY29uLCAnYmktZXhjbGFtYXRpb24tdHJpYW5nbGUtZmlsbCBmYS1iZWF0Jyk7XHJcbiAgICAgICAgY29uc3QgYWxlcnRXYXJuaW5nSWNvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhbGVydC13YXJuaW5nLWljb24nKSE7XHJcbiAgICAgICAgdGhpcy5TZXRJY29uKGFsZXJ0V2FybmluZ0ljb24sIGljb24pO1xyXG5cclxuICAgICAgICAvL01lc3NhZ2VcclxuICAgICAgICBpZiAoVG9vbHMuSXNOdWxsKG1lc3NhZ2UpKSBtZXNzYWdlID0gJyc7XHJcbiAgICAgICAgY29uc3QgYWxlcnRXYXJuaW5nQm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhbGVydC13YXJuaW5nLW1lc3NhZ2UnKSE7XHJcbiAgICAgICAgYWxlcnRXYXJuaW5nQm9keS5pbm5lckhUTUwgPSBtZXNzYWdlITtcclxuXHJcbiAgICAgICAgLy9Ub2FzdFxyXG4gICAgICAgIGNvbnN0IGFsZXJ0V2FybmluZyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhbGVydC13YXJuaW5nJykhO1xyXG4gICAgICAgIHRoaXMuU2V0QXV0b0hpZGUoYWxlcnRXYXJuaW5nLCBhdXRvaGlkZSk7XHJcblxyXG4gICAgICAgIGNvbnN0IHRvYXN0ID0gYm9vdHN0cmFwLlRvYXN0LmdldE9yQ3JlYXRlSW5zdGFuY2UoYWxlcnRXYXJuaW5nKTtcclxuICAgICAgICB0b2FzdC5zaG93KCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgcHJvdGVjdGVkIENsb3NlKGFsZXJ0OiAnYWxlcnQtc3VjY2VzcycgfCAnYWxlcnQtZXJyb3InIHwgJ2FsZXJ0LWluZm8nIHwgJ2FsZXJ0LXdhcm5pbmcnKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KFJlc29sdmUgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYWxlcnQpITtcclxuICAgICAgICAgICAgY29uc3QgdG9hc3QgPSBib290c3RyYXAuVG9hc3QuZ2V0T3JDcmVhdGVJbnN0YW5jZShlbGVtZW50KTtcclxuICAgICAgICAgICAgdG9hc3QuaGlkZSgpO1xyXG5cclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7IFJlc29sdmUoKSB9LCAyMDApO1xyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgcHVibGljIENvbmZpcm0oXHJcbiAgICAgICAgbWVzc2FnZTogc3RyaW5nID0gJ1Byb2NlZWQ/JyxcclxuICAgICAgICBhbGVydFR5cGU6ICd3YXJuaW5nJyB8ICdkYW5nZXInIHwgJ3N1Y2Nlc3MnIHwgJ2luZm8nID0gJ3dhcm5pbmcnLFxyXG4gICAgICAgIGljb246IHN0cmluZyB8IG51bGwgPSBudWxsKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPGJvb2xlYW4+KFJlc29sdmUgPT4ge1xyXG4gICAgICAgICAgICBsZXQgY29sb3I6IHN0cmluZztcclxuICAgICAgICAgICAgbGV0IGljb25UeXBlOiAnd2FybmluZycgfCAnZXJyb3InIHwgJ3N1Y2Nlc3MnIHwgJ2luZm8nO1xyXG4gICAgICAgICAgICBzd2l0Y2goYWxlcnRUeXBlKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdkYW5nZXInOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKFRvb2xzLklzTnVsbChpY29uKSkgaWNvbiA9ICdiaS1leGNsYW1hdGlvbi1vY3RhZ29uJztcclxuICAgICAgICAgICAgICAgICAgICBpY29uVHlwZSA9ICdlcnJvcic7XHJcbiAgICAgICAgICAgICAgICAgICAgY29sb3IgPSAnI2RjMzU0NSc7IC8vcmVkXHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgICAgIGNhc2UgJ3N1Y2Nlc3MnOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKFRvb2xzLklzTnVsbChpY29uKSkgaWNvbiA9ICdiaS1jaGVjay1jaXJjbGUnO1xyXG4gICAgICAgICAgICAgICAgICAgIGljb25UeXBlID0gJ2luZm8nO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yID0gJyMxOTg3NTQnOyAvL2dyZWVuXHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgICAgIGNhc2UgJ2luZm8nOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKFRvb2xzLklzTnVsbChpY29uKSkgaWNvbiA9ICdiaS1pbmZvLWNpcmNsZSc7XHJcbiAgICAgICAgICAgICAgICAgICAgaWNvblR5cGUgPSAnZXJyb3InO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yID0gJyMwZDZlZmQnOyAvL2JsdWVcclxuICAgICAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKFRvb2xzLklzTnVsbChpY29uKSkgaWNvbiA9ICdiaS1leGNsYW1hdGlvbi10cmlhbmdsZS1maWxsJztcclxuICAgICAgICAgICAgICAgICAgICBpY29uVHlwZSA9ICd3YXJuaW5nJztcclxuICAgICAgICAgICAgICAgICAgICBjb2xvciA9ICcjZmZjMTA3JzsgLy95ZWxsb3dcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgc3dpdGNoKGljb24pIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgJ2RlbGV0ZSc6IGljb24gPSAnZmEtcmVndWxhciBmYS10cmFzaC1jYW4nOyBicmVhaztcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgU3dhbC5maXJlKHtcclxuICAgICAgICAgICAgICAgIGljb246IGljb25UeXBlLFxyXG4gICAgICAgICAgICAgICAgaWNvbkNvbG9yOiAndHJhbnNwYXJlbnQnLFxyXG4gICAgICAgICAgICAgICAgaWNvbkh0bWw6IGA8aSBjbGFzcz1cIiR7aWNvbn1cIiBzdHlsZT1cImNvbG9yOiAke2NvbG9yfTtcIj48L2k+YCxcclxuICAgICAgICAgICAgICAgIGh0bWw6IG1lc3NhZ2UsXHJcbiAgICAgICAgICAgICAgICBzaG93Q29uZmlybUJ1dHRvbjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAnWWVzJyxcclxuICAgICAgICAgICAgICAgIGNvbmZpcm1CdXR0b25Db2xvcjogY29sb3IsXHJcbiAgICAgICAgICAgICAgICBmb2N1c0NvbmZpcm06IHRydWUsXHJcbiAgICAgICAgICAgICAgICBzaG93RGVueUJ1dHRvbjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGRlbnlCdXR0b25Db2xvcjogY29sb3IsXHJcbiAgICAgICAgICAgICAgICBmb2N1c0Rlbnk6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgcmV2ZXJzZUJ1dHRvbnM6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBhbGxvd091dHNpZGVDbGljazogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBhbGxvd0VzY2FwZUtleTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBhbGxvd0VudGVyS2V5OiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgY3VzdG9tQ2xhc3M6IHtcclxuICAgICAgICAgICAgICAgICAgICBkZW55QnV0dG9uOiAnc3dlZXQtYWxlcnQtYnV0dG9uJyxcclxuICAgICAgICAgICAgICAgICAgICBjb25maXJtQnV0dG9uOiAnc3dlZXQtYWxlcnQtYnV0dG9uJ1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KS50aGVuKCh7IHZhbHVlIH0pID0+IHNldFRpbWVvdXQoKCkgPT4gUmVzb2x2ZSh2YWx1ZSkpKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwcml2YXRlIFNldEljb24oZWxlbWVudDogSFRNTEVsZW1lbnQsIGljb246IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBbLi4uZWxlbWVudC5jbGFzc0xpc3QudmFsdWUuc3BsaXQoJyAnKV0pIHtcclxuICAgICAgICAgICAgaWYgKGl0ZW0ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKGl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdxJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGljb24gPSBpY29uLnRyaW0oKTtcclxuICAgICAgICBjb25zdCBoYXNXaGl0ZVNwYWNlczogUmVnRXhwID0gLyAvO1xyXG4gICAgICAgIGlmIChoYXNXaGl0ZVNwYWNlcy50ZXN0KGljb24pKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNsYXNzZXMgPSBpY29uLnNwbGl0KCcgJyk7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgaWNvbiBvZiBjbGFzc2VzKSBlbGVtZW50LmNsYXNzTGlzdC5hZGQoaWNvbik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBlbHNlIGVsZW1lbnQuY2xhc3NMaXN0LmFkZChpY29uKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwcml2YXRlIFNldEF1dG9IaWRlKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBhdXRvaGlkZTogbnVtYmVyIHwgbnVsbCk6IHZvaWQge1xyXG4gICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdkYXRhLWJzLWF1dG9oaWRlJyk7XHJcbiAgICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ2RhdGEtYnMtZGVsYXknKTtcclxuXHJcbiAgICAgICAgaWYgKGF1dG9oaWRlICYmIGF1dG9oaWRlID4gMCkge1xyXG4gICAgICAgICAgICBpZiAoYXV0b2hpZGUgPCAxMDAwKSBhdXRvaGlkZSA9IDEwMDA7XHJcbiAgICAgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdkYXRhLWJzLWF1dG9oaWRlJywgJ3RydWUnKTtcclxuICAgICAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RhdGEtYnMtZGVsYXknLCBTdHJpbmcoYXV0b2hpZGUpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGVsc2UgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RhdGEtYnMtYXV0b2hpZGUnLCAnZmFsc2UnKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwcml2YXRlIEdldEljb24odGl0bGU6IHN0cmluZywgaWNvbjogc3RyaW5nIHwgbnVsbCwgaWNvbkRlZmF1bHQ6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgaWYgKGljb24gPT0gbnVsbCB8fCBpY29uID09ICcnKSB7XHJcbiAgICAgICAgICAgIHRpdGxlID0gdGl0bGUucmVwbGFjZUFsbCgnICcsICcnKS50b1VwcGVyQ2FzZSgpO1xyXG5cclxuICAgICAgICAgICAgc3dpdGNoKHRpdGxlKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdFTkFCTEVEJzogcmV0dXJuICdmYS1zb2xpZCBmYS10aHVtYnMtdXAgZmEtZmxpcC1ob3Jpem9udGFsJztcclxuICAgICAgICAgICAgICAgIGNhc2UgJ0FDVElWRSc6IHJldHVybiAnZmEtc29saWQgZmEtdGh1bWJzLXVwIGZhLWZsaXAtaG9yaXpvbnRhbCc7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdBQ1RJVkVEJzogcmV0dXJuICdmYS1zb2xpZCBmYS10aHVtYnMtdXAgZmEtZmxpcC1ob3Jpem9udGFsJztcclxuICAgICAgICAgICAgICAgIGNhc2UgJ0RJU0FCTEUnOiByZXR1cm4gJ2ZhLXNvbGlkIGZhLXRodW1icy1kb3duIGZhLWZsaXAtaG9yaXpvbnRhbCc7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdESVNBQkxFRCc6IHJldHVybiAnZmEtc29saWQgZmEtdGh1bWJzLWRvd24gZmEtZmxpcC1ob3Jpem9udGFsJztcclxuICAgICAgICAgICAgICAgIGNhc2UgJ0RFTEVURSc6IHJldHVybiAnZmEtcmVndWxhciBmYS10cmFzaC1jYW4nO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnREVMRVRFRCc6IHJldHVybiAnZmEtcmVndWxhciBmYS10cmFzaC1jYW4nO1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDogcmV0dXJuIGljb25EZWZhdWx0O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gaWNvbjtcclxuICAgIH1cclxufSIsIjxhc2lkZSBjbGFzcz1cInRvYXN0LWNvbnRhaW5lciBjb2VyLWFsZXJ0XCI+XHJcbiAgICA8IS0tIFN1Y2Nlc3MgLS0+XHJcbiAgICA8ZGl2IGlkPVwiYWxlcnQtc3VjY2Vzc1wiIHJvbGU9XCJhbGVydFwiIGFyaWEtbGl2ZT1cImFzc2VydGl2ZVwiIGFyaWEtYXRvbWljPVwidHJ1ZVwiIGNsYXNzPVwidG9hc3RcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidG9hc3QtaGVhZGVyXCI+XHJcbiAgICAgICAgICAgIDxpIGlkPVwiYWxlcnQtc3VjY2Vzcy1pY29uXCI+PC9pPlxyXG4gICAgICAgICAgICA8c3Ryb25nIGlkPVwiYWxlcnQtc3VjY2Vzcy10aXRsZVwiPjwvc3Ryb25nPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiQ2xvc2UoJ2FsZXJ0LXN1Y2Nlc3MnKVwiIGNsYXNzPVwiYnRuLWNsb3NlIGJ0bi1jbG9zZS13aGl0ZVwiPjwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidG9hc3QtYm9keVwiPlxyXG4gICAgICAgICAgICA8cHJlIGlkPVwiYWxlcnQtc3VjY2Vzcy1tZXNzYWdlXCI+PC9wcmU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgPCEtLSBFcnJvciAtLT5cclxuICAgIDxkaXYgaWQ9XCJhbGVydC1lcnJvclwiIHJvbGU9XCJhbGVydFwiIGFyaWEtbGl2ZT1cImFzc2VydGl2ZVwiIGFyaWEtYXRvbWljPVwidHJ1ZVwiIGNsYXNzPVwidG9hc3RcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidG9hc3QtaGVhZGVyXCI+XHJcbiAgICAgICAgICAgIDxpIGlkPVwiYWxlcnQtZXJyb3ItaWNvblwiPjwvaT5cclxuICAgICAgICAgICAgPHN0cm9uZyBpZD1cImFsZXJ0LWVycm9yLXRpdGxlXCI+PC9zdHJvbmc+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJDbG9zZSgnYWxlcnQtZXJyb3InKVwiIGNsYXNzPVwiYnRuLWNsb3NlIGJ0bi1jbG9zZS13aGl0ZVwiPjwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidG9hc3QtYm9keVwiPlxyXG4gICAgICAgICAgICA8cHJlIGlkPVwiYWxlcnQtZXJyb3ItbWVzc2FnZVwiPjwvcHJlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG5cclxuICAgIDwhLS0gSW5mbyAtLT5cclxuICAgIDxkaXYgaWQ9XCJhbGVydC1pbmZvXCIgcm9sZT1cImFsZXJ0XCIgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCIgYXJpYS1hdG9taWM9XCJ0cnVlXCIgY2xhc3M9XCJ0b2FzdFwiPlxyXG4gICAgICAgPGRpdiBjbGFzcz1cInRvYXN0LWhlYWRlclwiPlxyXG4gICAgICAgICAgICA8aSBpZD1cImFsZXJ0LWluZm8taWNvblwiPjwvaT5cclxuICAgICAgICAgICAgPHN0cm9uZyBpZD1cImFsZXJ0LWluZm8tdGl0bGVcIj48L3N0cm9uZz5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIkNsb3NlKCdhbGVydC1pbmZvJylcIiBjbGFzcz1cImJ0bi1jbG9zZSBidG4tY2xvc2Utd2hpdGVcIj48L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRvYXN0LWJvZHlcIj5cclxuICAgICAgICAgICAgPHByZSBpZD1cImFsZXJ0LWluZm8tbWVzc2FnZVwiPjwvcHJlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG5cclxuICAgIDwhLS0gV2FybmluZyAtLT5cclxuICAgIDxkaXYgaWQ9XCJhbGVydC13YXJuaW5nXCIgcm9sZT1cImFsZXJ0XCIgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCIgYXJpYS1hdG9taWM9XCJ0cnVlXCIgY2xhc3M9XCJ0b2FzdFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0b2FzdC1oZWFkZXJcIj5cclxuICAgICAgICAgICAgPGkgaWQ9XCJhbGVydC13YXJuaW5nLWljb25cIj48L2k+XHJcbiAgICAgICAgICAgIDxzdHJvbmcgaWQ9XCJhbGVydC13YXJuaW5nLXRpdGxlXCI+PC9zdHJvbmc+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJDbG9zZSgnYWxlcnQtd2FybmluZycpXCIgY2xhc3M9XCJidG4tY2xvc2VcIj48L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRvYXN0LWJvZHlcIj5cclxuICAgICAgICAgICAgPHByZSBpZD1cImFsZXJ0LXdhcm5pbmctbWVzc2FnZVwiPjwvcHJlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvYXNpZGU+Il19
@@ -43,7 +43,7 @@ export class Service {
43
43
  },
44
44
  error: (httpError) => {
45
45
  this.ReleaseSubscription(this._GET$);
46
- //this.AlertError(httpError, request.alertError);
46
+ this.AlertError(httpError, request.alertError);
47
47
  Resolve({
48
48
  body: {},
49
49
  status: httpError.status,
@@ -54,7 +54,7 @@ export class Service {
54
54
  complete: () => {
55
55
  this.ReleaseSubscription(this._GET$);
56
56
  if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {
57
- ////this.alert.Success(request.alertSuccess);
57
+ this.alert.Success(request.alertSuccess);
58
58
  }
59
59
  }
60
60
  });
@@ -77,7 +77,7 @@ export class Service {
77
77
  },
78
78
  error: (httpError) => {
79
79
  this.ReleaseSubscription(this._POST$);
80
- //this.AlertError(httpError, request.alertError);
80
+ this.AlertError(httpError, request.alertError);
81
81
  Resolve({
82
82
  body: {},
83
83
  status: httpError.status,
@@ -88,7 +88,7 @@ export class Service {
88
88
  complete: () => {
89
89
  this.ReleaseSubscription(this._POST$);
90
90
  if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {
91
- //this.alert.Success(request.alertSuccess);
91
+ this.alert.Success(request.alertSuccess);
92
92
  }
93
93
  }
94
94
  });
@@ -111,7 +111,7 @@ export class Service {
111
111
  },
112
112
  error: (httpError) => {
113
113
  this.ReleaseSubscription(this._PUT$);
114
- //this.AlertError(httpError, request.alertError);
114
+ this.AlertError(httpError, request.alertError);
115
115
  Resolve({
116
116
  body: {},
117
117
  status: httpError.status,
@@ -122,7 +122,7 @@ export class Service {
122
122
  complete: () => {
123
123
  this.ReleaseSubscription(this._PUT$);
124
124
  if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {
125
- //this.alert.Success(request.alertSuccess, 'Updated', 'fa-solid fa-arrows-rotate fa-spin');
125
+ this.alert.Success(request.alertSuccess, 'Updated', 'fa-solid fa-arrows-rotate fa-spin');
126
126
  }
127
127
  }
128
128
  });
@@ -145,7 +145,7 @@ export class Service {
145
145
  },
146
146
  error: (httpError) => {
147
147
  this.ReleaseSubscription(this._PATCH$);
148
- //this.AlertError(httpError, request.alertError);
148
+ this.AlertError(httpError, request.alertError);
149
149
  Resolve({
150
150
  body: {},
151
151
  status: httpError.status,
@@ -156,7 +156,7 @@ export class Service {
156
156
  complete: () => {
157
157
  this.ReleaseSubscription(this._PATCH$);
158
158
  if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {
159
- //this.alert.Success(request.alertSuccess, 'Updated', 'fa-solid fa-arrows-rotate fa-spin');
159
+ this.alert.Success(request.alertSuccess, 'Updated', 'fa-solid fa-arrows-rotate fa-spin');
160
160
  }
161
161
  }
162
162
  });
@@ -179,7 +179,7 @@ export class Service {
179
179
  },
180
180
  error: (httpError) => {
181
181
  this.ReleaseSubscription(this._DELETE$);
182
- //this.AlertError(httpError, request.alertError);
182
+ this.AlertError(httpError, request.alertError);
183
183
  Resolve({
184
184
  body: {},
185
185
  status: httpError.status,
@@ -190,7 +190,7 @@ export class Service {
190
190
  complete: () => {
191
191
  this.ReleaseSubscription(this._DELETE$);
192
192
  if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {
193
- //this.alert.Success(request.alertSuccess, 'Deleted', 'fa-regular fa-trash-can');
193
+ this.alert.Success(request.alertSuccess, 'Deleted', 'fa-regular fa-trash-can');
194
194
  }
195
195
  }
196
196
  });
@@ -200,48 +200,49 @@ export class Service {
200
200
  AlertError(httpError, message) {
201
201
  if (httpError.status >= 500) {
202
202
  if (Tools.IsNotOnlyWhiteSpace(message)) {
203
- //this.alert.Error('', message, 'fa-solid fa-bug', null);
203
+ this.alert.Error('', message, 'fa-solid fa-bug', null);
204
204
  }
205
205
  }
206
206
  else if (httpError.status < 500) {
207
207
  switch (httpError.status) {
208
208
  case 400: {
209
- //this.alert.Warning(httpError.error?.message || httpError.error, 'Bad Request', 'fa-regular fa-face-grin-beam-sweat fa-lg');
209
+ this.alert.Warning(httpError.error?.message || httpError.error, 'Bad Request', 'fa-regular fa-face-grin-beam-sweat fa-lg');
210
210
  break;
211
211
  }
212
212
  case 401: {
213
- //this.alert.Warning(httpError.error?.message || httpError.error, 'Unauthorize', 'fa-regular fa-face-rolling-eyes fa-lg');
213
+ this.alert.Warning(httpError.error?.message || httpError.error, 'Unauthorize', 'fa-regular fa-face-rolling-eyes fa-lg');
214
214
  break;
215
215
  }
216
216
  case 404: {
217
- //this.alert.Warning(httpError.error?.message || httpError.error, 'Not Found', 'fa-regular fa-face-meh fa-lg');
217
+ this.alert.Warning(httpError.error?.message || httpError.error, 'Not Found', 'fa-regular fa-face-meh fa-lg');
218
218
  break;
219
219
  }
220
220
  case 405: {
221
- //this.alert.Warning(httpError.error?.message || httpError.error, 'Not Allowed', 'fa-regular fa-face-grimace fa-lg');
221
+ this.alert.Warning(httpError.error?.message || httpError.error, 'Not Allowed', 'fa-regular fa-face-grimace fa-lg');
222
222
  break;
223
223
  }
224
224
  case 406: {
225
- //this.alert.Warning(httpError.error?.message || httpError.error, 'Not Acceptable', 'fa-regular fa-face-frown-open fa-lg');
225
+ this.alert.Warning(httpError.error?.message || httpError.error, 'Not Acceptable', 'fa-regular fa-face-frown-open fa-lg');
226
226
  break;
227
227
  }
228
228
  case 409: {
229
- //this.alert.Warning(httpError.error?.message || httpError.error, 'Conflict', 'fa-regular fa-face-dizzy fa-lg');
229
+ this.alert.Warning(httpError.error?.message || httpError.error, 'Conflict', 'fa-regular fa-face-dizzy fa-lg');
230
230
  break;
231
231
  }
232
232
  case 413: {
233
- //this.alert.Warning(httpError.error?.message || httpError.error, 'Too Large', 'fa-regular fa-face-flushed fa-lg');
233
+ this.alert.Warning(httpError.error?.message || httpError.error, 'Too Large', 'fa-regular fa-face-flushed fa-lg');
234
234
  break;
235
235
  }
236
236
  default: {
237
237
  if (httpError.status <= 0) {
238
- //this.alert.Warning('Without Connection', 'WEB API DOWN', 'fa-solid fa-plug-circle-xmark fa-lg', null);
238
+ this.alert.Warning('Without Connection', 'WEB API DOWN', 'fa-solid fa-plug-circle-xmark fa-lg', null);
239
239
  }
240
- else //this.alert.Warning(httpError.error?.message || httpError.error);
241
- break;
240
+ else
241
+ this.alert.Warning(httpError.error?.message || httpError.error);
242
+ break;
242
243
  }
243
244
  }
244
245
  }
245
246
  }
246
247
  }
247
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvZXItZWxlbWVudHMvdG9vbHMvbGliL3NlcnZpY2UuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsVUFBVSxFQUFnQyxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFOUQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUdoQyxNQUFNLE9BQU8sT0FBTztJQUFwQjtRQUVJLFlBQVk7UUFDTyxVQUFLLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzFCLFNBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFbkMsYUFBUSxHQUFHO1lBQ2pCLEVBQUUsRUFBRSxHQUFHO1lBQ1AsT0FBTyxFQUFFLEdBQUc7WUFDWixTQUFTLEVBQUUsR0FBRztZQUNkLFVBQVUsRUFBRSxHQUFHO1lBQ2YsV0FBVyxFQUFFLEdBQUc7WUFDaEIsUUFBUSxFQUFFLEdBQUc7WUFDYixVQUFVLEVBQUUsR0FBRztZQUNmLGFBQWEsRUFBRSxHQUFHO1lBQ2xCLFFBQVEsRUFBRSxHQUFHO1lBQ2IsZUFBZSxFQUFFLEdBQUc7WUFDcEIsVUFBVSxFQUFFLEdBQUc7U0FDbEIsQ0FBQTtJQXFSTCxDQUFDO0lBMVFHLE1BQU07SUFDRSxtQkFBbUIsQ0FBQyxZQUEwQjtRQUNsRCxJQUFJLFlBQVksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNO1lBQUUsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3pFLENBQUM7SUFHRCxlQUFlO0lBQ0wsUUFBUSxDQUFJLE9BQXdCO1FBQzFDLE9BQU8sSUFBSSxPQUFPLENBQW1CLE9BQU8sQ0FBQyxF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Q0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSwgSHR0cEV2ZW50LCBIdHRwUmVxdWVzdCB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgeyBDb2VyQWxlcnQgfSBmcm9tIFwiLi9jb2VyLWFsZXJ0L2NvZXItYWxlcnQuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IElIdHRwUmVxdWVzdCwgSUh0dHBSZXNwb25zZSB9IGZyb20gXCJjb2VyLWVsZW1lbnRzL2ludGVyZmFjZXNcIjtcclxuaW1wb3J0IHsgVG9vbHMgfSBmcm9tIFwiLi90b29sc1wiO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xyXG5cclxuZXhwb3J0IGNsYXNzIFNlcnZpY2Uge1xyXG5cclxuICAgIC8vSW5qZWN0aW9uc1xyXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGFsZXJ0ID0gaW5qZWN0KENvZXJBbGVydCk7XHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaHR0cCA9IGluamVjdChIdHRwQ2xpZW50KTtcclxuXHJcbiAgICBwcm90ZWN0ZWQgaHR0cENvZGUgPSB7XHJcbiAgICAgICAgT2s6IDIwMCxcclxuICAgICAgICBDcmVhdGVkOiAyMDEsXHJcbiAgICAgICAgTm9Db250ZW50OiAyMDQsXHJcbiAgICAgICAgQmFkUmVxdWVzdDogNDAwLFxyXG4gICAgICAgIFVuYXV0aG9yaXplOiA0MDEsXHJcbiAgICAgICAgTm90Rm91bmQ6IDQwNCxcclxuICAgICAgICBOb3RBbGxvd2VkOiA0MDUsXHJcbiAgICAgICAgTm90QWNjZXB0YWJsZTogNDA2LFxyXG4gICAgICAgIENvbmZsaWN0OiA0MDksXHJcbiAgICAgICAgUGF5bG9hZFRvb0xhcmdlOiA0MTMsXHJcbiAgICAgICAgSW5uZXJFcnJvcjogNTAwXHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8vU3Vic2NyaXB0aW9uc1xyXG4gICAgcHJpdmF0ZSBfR0VUJCE6IFN1YnNjcmlwdGlvbjtcclxuICAgIHByaXZhdGUgX1BPU1QkITogU3Vic2NyaXB0aW9uO1xyXG4gICAgcHJpdmF0ZSBfUFVUJCE6IFN1YnNjcmlwdGlvbjtcclxuICAgIHByaXZhdGUgX1BBVENIJCE6IFN1YnNjcmlwdGlvbjtcclxuICAgIHByaXZhdGUgX0RFTEVURSQhOiBTdWJzY3JpcHRpb247XHJcblxyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgcHJpdmF0ZSBSZWxlYXNlU3Vic2NyaXB0aW9uKHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHN1YnNjcmlwdGlvbiAmJiAhc3Vic2NyaXB0aW9uLmNsb3NlZCkgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiBIVFRQIEdFVCAqL1xyXG4gICAgcHJvdGVjdGVkIEhUVFBfR0VUPFQ+KHJlcXVlc3Q6IElIdHRwUmVxdWVzdDxUPikge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxJSHR0cFJlc3BvbnNlPFQ+PihSZXNvbHZlID0+IHtcclxuICAgICAgICAgICAgdGhpcy5SZWxlYXNlU3Vic2NyaXB0aW9uKHRoaXMuX0dFVCQpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fR0VUJCA9IHRoaXMuaHR0cC5yZXF1ZXN0PFQ+KG5ldyBIdHRwUmVxdWVzdChcIkdFVFwiLCByZXF1ZXN0LnVybCwgeyBwYXJhbXM6IHJlcXVlc3QucXVlcnlQYXJhbXMsIGhlYWRlcnM6IHJlcXVlc3QuaGVhZGVycyB9KSkuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgICAgIG5leHQ6IChyZXNwb25zZTogSHR0cEV2ZW50PFQ+IHwgYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnR5cGUgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlc29sdmUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keTogVG9vbHMuQnJlYWtSZWZlcmVuY2U8VD4ocmVzcG9uc2UuYm9keSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IHJlc3BvbnNlLnN0YXR1cyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHJlc3BvbnNlLnN0YXR1c1RleHQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvazogdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgICAgIGVycm9yOiAoaHR0cEVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuUmVsZWFzZVN1YnNjcmlwdGlvbih0aGlzLl9HRVQkKTtcclxuICAgICAgICAgICAgICAgICAgICAvL3RoaXMuQWxlcnRFcnJvcihodHRwRXJyb3IsIHJlcXVlc3QuYWxlcnRFcnJvcik7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIFJlc29sdmUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBib2R5OiB7fSBhcyBhbnksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czogaHR0cEVycm9yLnN0YXR1cyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogaHR0cEVycm9yLmVycm9yPy5tZXNzYWdlIHx8IGh0dHBFcnJvci5lcnJvcixcclxuICAgICAgICAgICAgICAgICAgICAgICAgb2s6IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5SZWxlYXNlU3Vic2NyaXB0aW9uKHRoaXMuX0dFVCQpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoVG9vbHMuSXNOb3RPbmx5V2hpdGVTcGFjZShyZXF1ZXN0LmFsZXJ0U3VjY2VzcykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8vL3RoaXMuYWxlcnQuU3VjY2VzcyhyZXF1ZXN0LmFsZXJ0U3VjY2Vzcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqIEhUVFAgUE9TVCAqL1xyXG4gICAgcHJvdGVjdGVkIEhUVFBfUE9TVDxUPihyZXF1ZXN0OiBJSHR0cFJlcXVlc3Q8VD4pIHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8SUh0dHBSZXNwb25zZTxUPj4oUmVzb2x2ZSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuUmVsZWFzZVN1YnNjcmlwdGlvbih0aGlzLl9QT1NUJCk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9QT1NUJCA9IHRoaXMuaHR0cC5yZXF1ZXN0PFQ+KG5ldyBIdHRwUmVxdWVzdChcIlBPU1RcIiwgcmVxdWVzdC51cmwsIHJlcXVlc3QuYm9keSwgeyBwYXJhbXM6IHJlcXVlc3QucXVlcnlQYXJhbXMsIGhlYWRlcnM6IHJlcXVlc3QuaGVhZGVycyB9KSkuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgICAgIG5leHQ6IChyZXNwb25zZTogSHR0cEV2ZW50PFQ+IHwgYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnR5cGUgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlc29sdmUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keTogVG9vbHMuQnJlYWtSZWZlcmVuY2U8VD4ocmVzcG9uc2UuYm9keSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IHJlc3BvbnNlLnN0YXR1cyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHJlc3BvbnNlLnN0YXR1c1RleHQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvazogdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgICAgIGVycm9yOiAoaHR0cEVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuUmVsZWFzZVN1YnNjcmlwdGlvbih0aGlzLl9QT1NUJCk7XHJcbiAgICAgICAgICAgICAgICAgICAgLy90aGlzLkFsZXJ0RXJyb3IoaHR0cEVycm9yLCByZXF1ZXN0LmFsZXJ0RXJyb3IpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBSZXNvbHZlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYm9keToge30gYXMgYW55LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IGh0dHBFcnJvci5zdGF0dXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGh0dHBFcnJvci5lcnJvcj8ubWVzc2FnZSB8fCBodHRwRXJyb3IuZXJyb3IsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9rOiBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuXHJcbiAgICAgICAgICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuUmVsZWFzZVN1YnNjcmlwdGlvbih0aGlzLl9QT1NUJCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChUb29scy5Jc05vdE9ubHlXaGl0ZVNwYWNlKHJlcXVlc3QuYWxlcnRTdWNjZXNzKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL3RoaXMuYWxlcnQuU3VjY2VzcyhyZXF1ZXN0LmFsZXJ0U3VjY2Vzcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqIEhUVFAgUFVUICovXHJcbiAgICBwcm90ZWN0ZWQgSFRUUF9QVVQ8VD4ocmVxdWVzdDogSUh0dHBSZXF1ZXN0PFQ+KSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPElIdHRwUmVzcG9uc2U8dm9pZD4+KFJlc29sdmUgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLlJlbGVhc2VTdWJzY3JpcHRpb24odGhpcy5fUFVUJCk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9QVVQkID0gdGhpcy5odHRwLnJlcXVlc3Q8VD4obmV3IEh0dHBSZXF1ZXN0KFwiUFVUXCIsIHJlcXVlc3QudXJsLCByZXF1ZXN0LmJvZHksIHsgcGFyYW1zOiByZXF1ZXN0LnF1ZXJ5UGFyYW1zLCBoZWFkZXJzOiByZXF1ZXN0LmhlYWRlcnMgfSkpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgICAgICBuZXh0OiAocmVzcG9uc2U6IEh0dHBFdmVudDxUPiB8IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS50eXBlID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBSZXNvbHZlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IHt9IGFzIGFueSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czogcmVzcG9uc2Uuc3RhdHVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogcmVzcG9uc2Uuc3RhdHVzVGV4dCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9rOiB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICAgICAgZXJyb3I6IChodHRwRXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5SZWxlYXNlU3Vic2NyaXB0aW9uKHRoaXMuX1BVVCQpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vdGhpcy5BbGVydEVycm9yKGh0dHBFcnJvciwgcmVxdWVzdC5hbGVydEVycm9yKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgUmVzb2x2ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IHt9IGFzIGFueSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiBodHRwRXJyb3Iuc3RhdHVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBodHRwRXJyb3IuZXJyb3I/Lm1lc3NhZ2UgfHwgaHR0cEVycm9yLmVycm9yLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvazogZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICAgICAgY29tcGxldGU6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLlJlbGVhc2VTdWJzY3JpcHRpb24odGhpcy5fUFVUJCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChUb29scy5Jc05vdE9ubHlXaGl0ZVNwYWNlKHJlcXVlc3QuYWxlcnRTdWNjZXNzKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL3RoaXMuYWxlcnQuU3VjY2VzcyhyZXF1ZXN0LmFsZXJ0U3VjY2VzcywgJ1VwZGF0ZWQnLCAnZmEtc29saWQgZmEtYXJyb3dzLXJvdGF0ZSBmYS1zcGluJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqIEhUVFAgUEFUQ0ggKi9cclxuICAgIHByb3RlY3RlZCBIVFRQX1BBVENIPFQ+KHJlcXVlc3Q6IElIdHRwUmVxdWVzdDxUPikge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxJSHR0cFJlc3BvbnNlPHZvaWQ+PihSZXNvbHZlID0+IHtcclxuICAgICAgICAgICAgdGhpcy5SZWxlYXNlU3Vic2NyaXB0aW9uKHRoaXMuX1BBVENIJCk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9QQVRDSCQgPSB0aGlzLmh0dHAucmVxdWVzdDxUPihuZXcgSHR0cFJlcXVlc3QoXCJQQVRDSFwiLCByZXF1ZXN0LnVybCwgcmVxdWVzdC5ib2R5LCB7IHBhcmFtczogcmVxdWVzdC5xdWVyeVBhcmFtcywgaGVhZGVyczogcmVxdWVzdC5oZWFkZXJzIH0pKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgbmV4dDogKHJlc3BvbnNlOiBIdHRwRXZlbnQ8VD4gfCBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UudHlwZSA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgUmVzb2x2ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5OiB7fSBhcyBhbnksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IHJlc3BvbnNlLnN0YXR1cyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHJlc3BvbnNlLnN0YXR1c1RleHQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvazogdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgICAgIGVycm9yOiAoaHR0cEVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuUmVsZWFzZVN1YnNjcmlwdGlvbih0aGlzLl9QQVRDSCQpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vdGhpcy5BbGVydEVycm9yKGh0dHBFcnJvciwgcmVxdWVzdC5hbGVydEVycm9yKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgUmVzb2x2ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IHt9IGFzIGFueSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiBodHRwRXJyb3Iuc3RhdHVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBodHRwRXJyb3IuZXJyb3I/Lm1lc3NhZ2UgfHwgaHR0cEVycm9yLmVycm9yLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvazogZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICAgICAgY29tcGxldGU6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLlJlbGVhc2VTdWJzY3JpcHRpb24odGhpcy5fUEFUQ0gkKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKFRvb2xzLklzTm90T25seVdoaXRlU3BhY2UocmVxdWVzdC5hbGVydFN1Y2Nlc3MpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vdGhpcy5hbGVydC5TdWNjZXNzKHJlcXVlc3QuYWxlcnRTdWNjZXNzLCAnVXBkYXRlZCcsICdmYS1zb2xpZCBmYS1hcnJvd3Mtcm90YXRlIGZhLXNwaW4nKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogSFRUUCBERUxFVEUgKi9cclxuICAgIHByb3RlY3RlZCBIVFRQX0RFTEVURTxUPihyZXF1ZXN0OiBJSHR0cFJlcXVlc3Q8VD4pIHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8SUh0dHBSZXNwb25zZTx2b2lkPj4oUmVzb2x2ZSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuUmVsZWFzZVN1YnNjcmlwdGlvbih0aGlzLl9ERUxFVEUkKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX0RFTEVURSQgPSB0aGlzLmh0dHAucmVxdWVzdDxUPihuZXcgSHR0cFJlcXVlc3QoXCJERUxFVEVcIiwgcmVxdWVzdC51cmwsIHsgcGFyYW1zOiByZXF1ZXN0LnF1ZXJ5UGFyYW1zLCBoZWFkZXJzOiByZXF1ZXN0LmhlYWRlcnMgfSkpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgICAgICBuZXh0OiAocmVzcG9uc2U6IEh0dHBFdmVudDxUPiB8IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS50eXBlID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBSZXNvbHZlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IHt9IGFzIGFueSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czogcmVzcG9uc2Uuc3RhdHVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogcmVzcG9uc2Uuc3RhdHVzVGV4dCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9rOiB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICAgICAgZXJyb3I6IChodHRwRXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5SZWxlYXNlU3Vic2NyaXB0aW9uKHRoaXMuX0RFTEVURSQpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vdGhpcy5BbGVydEVycm9yKGh0dHBFcnJvciwgcmVxdWVzdC5hbGVydEVycm9yKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgUmVzb2x2ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IHt9IGFzIGFueSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiBodHRwRXJyb3Iuc3RhdHVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBodHRwRXJyb3IuZXJyb3I/Lm1lc3NhZ2UgfHwgaHR0cEVycm9yLmVycm9yLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvazogZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICAgICAgY29tcGxldGU6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLlJlbGVhc2VTdWJzY3JpcHRpb24odGhpcy5fREVMRVRFJCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKFRvb2xzLklzTm90T25seVdoaXRlU3BhY2UocmVxdWVzdC5hbGVydFN1Y2Nlc3MpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vdGhpcy5hbGVydC5TdWNjZXNzKHJlcXVlc3QuYWxlcnRTdWNjZXNzLCAnRGVsZXRlZCcsICdmYS1yZWd1bGFyIGZhLXRyYXNoLWNhbicpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgcHJpdmF0ZSBBbGVydEVycm9yKGh0dHBFcnJvcjogSHR0cEVycm9yUmVzcG9uc2UsIG1lc3NhZ2U/OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICBpZiAoaHR0cEVycm9yLnN0YXR1cyA+PSA1MDApIHtcclxuICAgICAgICAgICAgaWYgKFRvb2xzLklzTm90T25seVdoaXRlU3BhY2UobWVzc2FnZSkpIHtcclxuICAgICAgICAgICAgICAgIC8vdGhpcy5hbGVydC5FcnJvcignJywgbWVzc2FnZSwgJ2ZhLXNvbGlkIGZhLWJ1ZycsIG51bGwpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBlbHNlIGlmIChodHRwRXJyb3Iuc3RhdHVzIDwgNTAwKSB7XHJcbiAgICAgICAgICAgIHN3aXRjaChodHRwRXJyb3Iuc3RhdHVzKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDQwMDoge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vdGhpcy5hbGVydC5XYXJuaW5nKGh0dHBFcnJvci5lcnJvcj8ubWVzc2FnZSB8fCBodHRwRXJyb3IuZXJyb3IsICdCYWQgUmVxdWVzdCcsICdmYS1yZWd1bGFyIGZhLWZhY2UtZ3Jpbi1iZWFtLXN3ZWF0IGZhLWxnJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgY2FzZSA0MDE6IHtcclxuICAgICAgICAgICAgICAgICAgICAvL3RoaXMuYWxlcnQuV2FybmluZyhodHRwRXJyb3IuZXJyb3I/Lm1lc3NhZ2UgfHwgaHR0cEVycm9yLmVycm9yLCAnVW5hdXRob3JpemUnLCAnZmEtcmVndWxhciBmYS1mYWNlLXJvbGxpbmctZXllcyBmYS1sZycpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGNhc2UgNDA0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy90aGlzLmFsZXJ0Lldhcm5pbmcoaHR0cEVycm9yLmVycm9yPy5tZXNzYWdlIHx8IGh0dHBFcnJvci5lcnJvciwgJ05vdCBGb3VuZCcsICdmYS1yZWd1bGFyIGZhLWZhY2UtbWVoIGZhLWxnJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgY2FzZSA0MDU6IHtcclxuICAgICAgICAgICAgICAgICAgICAvL3RoaXMuYWxlcnQuV2FybmluZyhodHRwRXJyb3IuZXJyb3I/Lm1lc3NhZ2UgfHwgaHR0cEVycm9yLmVycm9yLCAnTm90IEFsbG93ZWQnLCAnZmEtcmVndWxhciBmYS1mYWNlLWdyaW1hY2UgZmEtbGcnKTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBjYXNlIDQwNjoge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vdGhpcy5hbGVydC5XYXJuaW5nKGh0dHBFcnJvci5lcnJvcj8ubWVzc2FnZSB8fCBodHRwRXJyb3IuZXJyb3IsICdOb3QgQWNjZXB0YWJsZScsICdmYS1yZWd1bGFyIGZhLWZhY2UtZnJvd24tb3BlbiBmYS1sZycpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGNhc2UgNDA5OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy90aGlzLmFsZXJ0Lldhcm5pbmcoaHR0cEVycm9yLmVycm9yPy5tZXNzYWdlIHx8IGh0dHBFcnJvci5lcnJvciwgJ0NvbmZsaWN0JywgJ2ZhLXJlZ3VsYXIgZmEtZmFjZS1kaXp6eSBmYS1sZycpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGNhc2UgNDEzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy90aGlzLmFsZXJ0Lldhcm5pbmcoaHR0cEVycm9yLmVycm9yPy5tZXNzYWdlIHx8IGh0dHBFcnJvci5lcnJvciwgJ1RvbyBMYXJnZScsICdmYS1yZWd1bGFyIGZhLWZhY2UtZmx1c2hlZCBmYS1sZycpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaHR0cEVycm9yLnN0YXR1cyA8PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vdGhpcy5hbGVydC5XYXJuaW5nKCdXaXRob3V0IENvbm5lY3Rpb24nLCAnV0VCIEFQSSBET1dOJywgJ2ZhLXNvbGlkIGZhLXBsdWctY2lyY2xlLXhtYXJrIGZhLWxnJywgbnVsbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIC8vdGhpcy5hbGVydC5XYXJuaW5nKGh0dHBFcnJvci5lcnJvcj8ubWVzc2FnZSB8fCBodHRwRXJyb3IuZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59Il19
248
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvZXItZWxlbWVudHMvdG9vbHMvbGliL3NlcnZpY2UuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsVUFBVSxFQUFnQyxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFOUQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUdoQyxNQUFNLE9BQU8sT0FBTztJQUFwQjtRQUVJLFlBQVk7UUFDTyxVQUFLLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzFCLFNBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFbkMsYUFBUSxHQUFHO1lBQ2pCLEVBQUUsRUFBRSxHQUFHO1lBQ1AsT0FBTyxFQUFFLEdBQUc7WUFDWixTQUFTLEVBQUUsR0FBRztZQUNkLFVBQVUsRUFBRSxHQUFHO1lBQ2YsV0FBVyxFQUFFLEdBQUc7WUFDaEIsUUFBUSxFQUFFLEdBQUc7WUFDYixVQUFVLEVBQUUsR0FBRztZQUNmLGFBQWEsRUFBRSxHQUFHO1lBQ2xCLFFBQVEsRUFBRSxHQUFHO1lBQ2IsZUFBZSxFQUFFLEdBQUc7WUFDcEIsVUFBVSxFQUFFLEdBQUc7U0FDbEIsQ0FBQTtJQXFSTCxDQUFDO0lBMVFHLE1BQU07SUFDRSxtQkFBbUIsQ0FBQyxZQUEwQjtRQUNsRCxJQUFJLFlBQVksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNO1lBQUUsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3pFLENBQUM7SUFHRCxlQUFlO0lBQ0wsUUFBUSxDQUFJLE9BQXdCO1FBQzFDLE9BQU8sSUFBSSxPQUFPLENBQW1CLE9BQU8sQ0FBQyxF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QyxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxPQUFPLElBQUksU0FBUyxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsZ0NBQWdDLENBQUMsQ0FBQztvQkFDOUcsTUFBTTtnQkFDVixDQUFDO2dCQUVELEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztvQkFDUCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLE9BQU8sSUFBSSxTQUFTLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxrQ0FBa0MsQ0FBQyxDQUFDO29CQUNqSCxNQUFNO2dCQUNWLENBQUM7Z0JBRUQsT0FBTyxDQUFDLENBQUMsQ0FBQztvQkFDTixJQUFJLFNBQVMsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUM7d0JBQ3hCLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLG9CQUFvQixFQUFFLGNBQWMsRUFBRSxxQ0FBcUMsRUFBRSxJQUFJLENBQUMsQ0FBQztvQkFDMUcsQ0FBQzs7d0JBRUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxPQUFPLElBQUksU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUNyRSxNQUFNO2dCQUNWLENBQUM7WUFDTCxDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBFcnJvclJlc3BvbnNlLCBIdHRwRXZlbnQsIEh0dHBSZXF1ZXN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7IENvZXJBbGVydCB9IGZyb20gXCIuL2NvZXItYWxlcnQvY29lci1hbGVydC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgSUh0dHBSZXF1ZXN0LCBJSHR0cFJlc3BvbnNlIH0gZnJvbSBcImNvZXItZWxlbWVudHMvaW50ZXJmYWNlc1wiO1xyXG5pbXBvcnQgeyBUb29scyB9IGZyb20gXCIuL3Rvb2xzXCI7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gXCJyeGpzXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgU2VydmljZSB7XHJcblxyXG4gICAgLy9JbmplY3Rpb25zXHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgYWxlcnQgPSBpbmplY3QoQ29lckFsZXJ0KTtcclxuICAgIHByb3RlY3RlZCByZWFkb25seSBodHRwID0gaW5qZWN0KEh0dHBDbGllbnQpO1xyXG5cclxuICAgIHByb3RlY3RlZCBodHRwQ29kZSA9IHtcclxuICAgICAgICBPazogMjAwLFxyXG4gICAgICAgIENyZWF0ZWQ6IDIwMSxcclxuICAgICAgICBOb0NvbnRlbnQ6IDIwNCxcclxuICAgICAgICBCYWRSZXF1ZXN0OiA0MDAsXHJcbiAgICAgICAgVW5hdXRob3JpemU6IDQwMSxcclxuICAgICAgICBOb3RGb3VuZDogNDA0LFxyXG4gICAgICAgIE5vdEFsbG93ZWQ6IDQwNSxcclxuICAgICAgICBOb3RBY2NlcHRhYmxlOiA0MDYsXHJcbiAgICAgICAgQ29uZmxpY3Q6IDQwOSxcclxuICAgICAgICBQYXlsb2FkVG9vTGFyZ2U6IDQxMyxcclxuICAgICAgICBJbm5lckVycm9yOiA1MDBcclxuICAgIH1cclxuXHJcblxyXG4gICAgLy9TdWJzY3JpcHRpb25zXHJcbiAgICBwcml2YXRlIF9HRVQkITogU3Vic2NyaXB0aW9uO1xyXG4gICAgcHJpdmF0ZSBfUE9TVCQhOiBTdWJzY3JpcHRpb247XHJcbiAgICBwcml2YXRlIF9QVVQkITogU3Vic2NyaXB0aW9uO1xyXG4gICAgcHJpdmF0ZSBfUEFUQ0gkITogU3Vic2NyaXB0aW9uO1xyXG4gICAgcHJpdmF0ZSBfREVMRVRFJCE6IFN1YnNjcmlwdGlvbjtcclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwcml2YXRlIFJlbGVhc2VTdWJzY3JpcHRpb24oc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24pOiB2b2lkIHtcclxuICAgICAgICBpZiAoc3Vic2NyaXB0aW9uICYmICFzdWJzY3JpcHRpb24uY2xvc2VkKSBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqIEhUVFAgR0VUICovXHJcbiAgICBwcm90ZWN0ZWQgSFRUUF9HRVQ8VD4ocmVxdWVzdDogSUh0dHBSZXF1ZXN0PFQ+KSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPElIdHRwUmVzcG9uc2U8VD4+KFJlc29sdmUgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLlJlbGVhc2VTdWJzY3JpcHRpb24odGhpcy5fR0VUJCk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9HRVQkID0gdGhpcy5odHRwLnJlcXVlc3Q8VD4obmV3IEh0dHBSZXF1ZXN0KFwiR0VUXCIsIHJlcXVlc3QudXJsLCB7IHBhcmFtczogcmVxdWVzdC5xdWVyeVBhcmFtcywgaGVhZGVyczogcmVxdWVzdC5oZWFkZXJzIH0pKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgbmV4dDogKHJlc3BvbnNlOiBIdHRwRXZlbnQ8VD4gfCBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UudHlwZSA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgUmVzb2x2ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5OiBUb29scy5CcmVha1JlZmVyZW5jZTxUPihyZXNwb25zZS5ib2R5KSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czogcmVzcG9uc2Uuc3RhdHVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogcmVzcG9uc2Uuc3RhdHVzVGV4dCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9rOiB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICAgICAgZXJyb3I6IChodHRwRXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5SZWxlYXNlU3Vic2NyaXB0aW9uKHRoaXMuX0dFVCQpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuQWxlcnRFcnJvcihodHRwRXJyb3IsIHJlcXVlc3QuYWxlcnRFcnJvcik7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIFJlc29sdmUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBib2R5OiB7fSBhcyBhbnksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czogaHR0cEVycm9yLnN0YXR1cyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogaHR0cEVycm9yLmVycm9yPy5tZXNzYWdlIHx8IGh0dHBFcnJvci5lcnJvcixcclxuICAgICAgICAgICAgICAgICAgICAgICAgb2s6IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5SZWxlYXNlU3Vic2NyaXB0aW9uKHRoaXMuX0dFVCQpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoVG9vbHMuSXNOb3RPbmx5V2hpdGVTcGFjZShyZXF1ZXN0LmFsZXJ0U3VjY2VzcykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hbGVydC5TdWNjZXNzKHJlcXVlc3QuYWxlcnRTdWNjZXNzKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogSFRUUCBQT1NUICovXHJcbiAgICBwcm90ZWN0ZWQgSFRUUF9QT1NUPFQ+KHJlcXVlc3Q6IElIdHRwUmVxdWVzdDxUPikge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxJSHR0cFJlc3BvbnNlPFQ+PihSZXNvbHZlID0+IHtcclxuICAgICAgICAgICAgdGhpcy5SZWxlYXNlU3Vic2NyaXB0aW9uKHRoaXMuX1BPU1QkKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX1BPU1QkID0gdGhpcy5odHRwLnJlcXVlc3Q8VD4obmV3IEh0dHBSZXF1ZXN0KFwiUE9TVFwiLCByZXF1ZXN0LnVybCwgcmVxdWVzdC5ib2R5LCB7IHBhcmFtczogcmVxdWVzdC5xdWVyeVBhcmFtcywgaGVhZGVyczogcmVxdWVzdC5oZWFkZXJzIH0pKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgbmV4dDogKHJlc3BvbnNlOiBIdHRwRXZlbnQ8VD4gfCBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UudHlwZSA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgUmVzb2x2ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5OiBUb29scy5CcmVha1JlZmVyZW5jZTxUPihyZXNwb25zZS5ib2R5KSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czogcmVzcG9uc2Uuc3RhdHVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogcmVzcG9uc2Uuc3RhdHVzVGV4dCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9rOiB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICAgICAgZXJyb3I6IChodHRwRXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5SZWxlYXNlU3Vic2NyaXB0aW9uKHRoaXMuX1BPU1QkKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLkFsZXJ0RXJyb3IoaHR0cEVycm9yLCByZXF1ZXN0LmFsZXJ0RXJyb3IpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBSZXNvbHZlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYm9keToge30gYXMgYW55LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IGh0dHBFcnJvci5zdGF0dXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGh0dHBFcnJvci5lcnJvcj8ubWVzc2FnZSB8fCBodHRwRXJyb3IuZXJyb3IsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9rOiBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuXHJcbiAgICAgICAgICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuUmVsZWFzZVN1YnNjcmlwdGlvbih0aGlzLl9QT1NUJCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChUb29scy5Jc05vdE9ubHlXaGl0ZVNwYWNlKHJlcXVlc3QuYWxlcnRTdWNjZXNzKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFsZXJ0LlN1Y2Nlc3MocmVxdWVzdC5hbGVydFN1Y2Nlc3MpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiBIVFRQIFBVVCAqL1xyXG4gICAgcHJvdGVjdGVkIEhUVFBfUFVUPFQ+KHJlcXVlc3Q6IElIdHRwUmVxdWVzdDxUPikge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxJSHR0cFJlc3BvbnNlPHZvaWQ+PihSZXNvbHZlID0+IHtcclxuICAgICAgICAgICAgdGhpcy5SZWxlYXNlU3Vic2NyaXB0aW9uKHRoaXMuX1BVVCQpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fUFVUJCA9IHRoaXMuaHR0cC5yZXF1ZXN0PFQ+KG5ldyBIdHRwUmVxdWVzdChcIlBVVFwiLCByZXF1ZXN0LnVybCwgcmVxdWVzdC5ib2R5LCB7IHBhcmFtczogcmVxdWVzdC5xdWVyeVBhcmFtcywgaGVhZGVyczogcmVxdWVzdC5oZWFkZXJzIH0pKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgbmV4dDogKHJlc3BvbnNlOiBIdHRwRXZlbnQ8VD4gfCBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UudHlwZSA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgUmVzb2x2ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5OiB7fSBhcyBhbnksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IHJlc3BvbnNlLnN0YXR1cyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHJlc3BvbnNlLnN0YXR1c1RleHQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvazogdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgICAgIGVycm9yOiAoaHR0cEVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuUmVsZWFzZVN1YnNjcmlwdGlvbih0aGlzLl9QVVQkKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLkFsZXJ0RXJyb3IoaHR0cEVycm9yLCByZXF1ZXN0LmFsZXJ0RXJyb3IpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBSZXNvbHZlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYm9keToge30gYXMgYW55LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IGh0dHBFcnJvci5zdGF0dXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGh0dHBFcnJvci5lcnJvcj8ubWVzc2FnZSB8fCBodHRwRXJyb3IuZXJyb3IsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9rOiBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuXHJcbiAgICAgICAgICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuUmVsZWFzZVN1YnNjcmlwdGlvbih0aGlzLl9QVVQkKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKFRvb2xzLklzTm90T25seVdoaXRlU3BhY2UocmVxdWVzdC5hbGVydFN1Y2Nlc3MpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWxlcnQuU3VjY2VzcyhyZXF1ZXN0LmFsZXJ0U3VjY2VzcywgJ1VwZGF0ZWQnLCAnZmEtc29saWQgZmEtYXJyb3dzLXJvdGF0ZSBmYS1zcGluJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqIEhUVFAgUEFUQ0ggKi9cclxuICAgIHByb3RlY3RlZCBIVFRQX1BBVENIPFQ+KHJlcXVlc3Q6IElIdHRwUmVxdWVzdDxUPikge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxJSHR0cFJlc3BvbnNlPHZvaWQ+PihSZXNvbHZlID0+IHtcclxuICAgICAgICAgICAgdGhpcy5SZWxlYXNlU3Vic2NyaXB0aW9uKHRoaXMuX1BBVENIJCk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9QQVRDSCQgPSB0aGlzLmh0dHAucmVxdWVzdDxUPihuZXcgSHR0cFJlcXVlc3QoXCJQQVRDSFwiLCByZXF1ZXN0LnVybCwgcmVxdWVzdC5ib2R5LCB7IHBhcmFtczogcmVxdWVzdC5xdWVyeVBhcmFtcywgaGVhZGVyczogcmVxdWVzdC5oZWFkZXJzIH0pKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgbmV4dDogKHJlc3BvbnNlOiBIdHRwRXZlbnQ8VD4gfCBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UudHlwZSA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgUmVzb2x2ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5OiB7fSBhcyBhbnksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IHJlc3BvbnNlLnN0YXR1cyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHJlc3BvbnNlLnN0YXR1c1RleHQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvazogdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgICAgIGVycm9yOiAoaHR0cEVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuUmVsZWFzZVN1YnNjcmlwdGlvbih0aGlzLl9QQVRDSCQpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuQWxlcnRFcnJvcihodHRwRXJyb3IsIHJlcXVlc3QuYWxlcnRFcnJvcik7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIFJlc29sdmUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBib2R5OiB7fSBhcyBhbnksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czogaHR0cEVycm9yLnN0YXR1cyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogaHR0cEVycm9yLmVycm9yPy5tZXNzYWdlIHx8IGh0dHBFcnJvci5lcnJvcixcclxuICAgICAgICAgICAgICAgICAgICAgICAgb2s6IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5SZWxlYXNlU3Vic2NyaXB0aW9uKHRoaXMuX1BBVENIJCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChUb29scy5Jc05vdE9ubHlXaGl0ZVNwYWNlKHJlcXVlc3QuYWxlcnRTdWNjZXNzKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFsZXJ0LlN1Y2Nlc3MocmVxdWVzdC5hbGVydFN1Y2Nlc3MsICdVcGRhdGVkJywgJ2ZhLXNvbGlkIGZhLWFycm93cy1yb3RhdGUgZmEtc3BpbicpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiBIVFRQIERFTEVURSAqL1xyXG4gICAgcHJvdGVjdGVkIEhUVFBfREVMRVRFPFQ+KHJlcXVlc3Q6IElIdHRwUmVxdWVzdDxUPikge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxJSHR0cFJlc3BvbnNlPHZvaWQ+PihSZXNvbHZlID0+IHtcclxuICAgICAgICAgICAgdGhpcy5SZWxlYXNlU3Vic2NyaXB0aW9uKHRoaXMuX0RFTEVURSQpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fREVMRVRFJCA9IHRoaXMuaHR0cC5yZXF1ZXN0PFQ+KG5ldyBIdHRwUmVxdWVzdChcIkRFTEVURVwiLCByZXF1ZXN0LnVybCwgeyBwYXJhbXM6IHJlcXVlc3QucXVlcnlQYXJhbXMsIGhlYWRlcnM6IHJlcXVlc3QuaGVhZGVycyB9KSkuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgICAgIG5leHQ6IChyZXNwb25zZTogSHR0cEV2ZW50PFQ+IHwgYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnR5cGUgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlc29sdmUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keToge30gYXMgYW55LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiByZXNwb25zZS5zdGF0dXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiByZXNwb25zZS5zdGF0dXNUZXh0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2s6IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSxcclxuXHJcbiAgICAgICAgICAgICAgICBlcnJvcjogKGh0dHBFcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLlJlbGVhc2VTdWJzY3JpcHRpb24odGhpcy5fREVMRVRFJCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5BbGVydEVycm9yKGh0dHBFcnJvciwgcmVxdWVzdC5hbGVydEVycm9yKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgUmVzb2x2ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IHt9IGFzIGFueSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiBodHRwRXJyb3Iuc3RhdHVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBodHRwRXJyb3IuZXJyb3I/Lm1lc3NhZ2UgfHwgaHR0cEVycm9yLmVycm9yLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvazogZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICAgICAgY29tcGxldGU6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLlJlbGVhc2VTdWJzY3JpcHRpb24odGhpcy5fREVMRVRFJCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKFRvb2xzLklzTm90T25seVdoaXRlU3BhY2UocmVxdWVzdC5hbGVydFN1Y2Nlc3MpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWxlcnQuU3VjY2VzcyhyZXF1ZXN0LmFsZXJ0U3VjY2VzcywgJ0RlbGV0ZWQnLCAnZmEtcmVndWxhciBmYS10cmFzaC1jYW4nKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogKi9cclxuICAgIHByaXZhdGUgQWxlcnRFcnJvcihodHRwRXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlLCBtZXNzYWdlPzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKGh0dHBFcnJvci5zdGF0dXMgPj0gNTAwKSB7XHJcbiAgICAgICAgICAgIGlmIChUb29scy5Jc05vdE9ubHlXaGl0ZVNwYWNlKG1lc3NhZ2UpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFsZXJ0LkVycm9yKCcnLCBtZXNzYWdlLCAnZmEtc29saWQgZmEtYnVnJywgbnVsbCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGVsc2UgaWYgKGh0dHBFcnJvci5zdGF0dXMgPCA1MDApIHtcclxuICAgICAgICAgICAgc3dpdGNoKGh0dHBFcnJvci5zdGF0dXMpIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgNDAwOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hbGVydC5XYXJuaW5nKGh0dHBFcnJvci5lcnJvcj8ubWVzc2FnZSB8fCBodHRwRXJyb3IuZXJyb3IsICdCYWQgUmVxdWVzdCcsICdmYS1yZWd1bGFyIGZhLWZhY2UtZ3Jpbi1iZWFtLXN3ZWF0IGZhLWxnJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgY2FzZSA0MDE6IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFsZXJ0Lldhcm5pbmcoaHR0cEVycm9yLmVycm9yPy5tZXNzYWdlIHx8IGh0dHBFcnJvci5lcnJvciwgJ1VuYXV0aG9yaXplJywgJ2ZhLXJlZ3VsYXIgZmEtZmFjZS1yb2xsaW5nLWV5ZXMgZmEtbGcnKTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBjYXNlIDQwNDoge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWxlcnQuV2FybmluZyhodHRwRXJyb3IuZXJyb3I/Lm1lc3NhZ2UgfHwgaHR0cEVycm9yLmVycm9yLCAnTm90IEZvdW5kJywgJ2ZhLXJlZ3VsYXIgZmEtZmFjZS1tZWggZmEtbGcnKTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBjYXNlIDQwNToge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWxlcnQuV2FybmluZyhodHRwRXJyb3IuZXJyb3I/Lm1lc3NhZ2UgfHwgaHR0cEVycm9yLmVycm9yLCAnTm90IEFsbG93ZWQnLCAnZmEtcmVndWxhciBmYS1mYWNlLWdyaW1hY2UgZmEtbGcnKTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBjYXNlIDQwNjoge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWxlcnQuV2FybmluZyhodHRwRXJyb3IuZXJyb3I/Lm1lc3NhZ2UgfHwgaHR0cEVycm9yLmVycm9yLCAnTm90IEFjY2VwdGFibGUnLCAnZmEtcmVndWxhciBmYS1mYWNlLWZyb3duLW9wZW4gZmEtbGcnKTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBjYXNlIDQwOToge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWxlcnQuV2FybmluZyhodHRwRXJyb3IuZXJyb3I/Lm1lc3NhZ2UgfHwgaHR0cEVycm9yLmVycm9yLCAnQ29uZmxpY3QnLCAnZmEtcmVndWxhciBmYS1mYWNlLWRpenp5IGZhLWxnJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgY2FzZSA0MTM6IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFsZXJ0Lldhcm5pbmcoaHR0cEVycm9yLmVycm9yPy5tZXNzYWdlIHx8IGh0dHBFcnJvci5lcnJvciwgJ1RvbyBMYXJnZScsICdmYS1yZWd1bGFyIGZhLWZhY2UtZmx1c2hlZCBmYS1sZycpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaHR0cEVycm9yLnN0YXR1cyA8PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWxlcnQuV2FybmluZygnV2l0aG91dCBDb25uZWN0aW9uJywgJ1dFQiBBUEkgRE9XTicsICdmYS1zb2xpZCBmYS1wbHVnLWNpcmNsZS14bWFyayBmYS1sZycsIG51bGwpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB0aGlzLmFsZXJ0Lldhcm5pbmcoaHR0cEVycm9yLmVycm9yPy5tZXNzYWdlIHx8IGh0dHBFcnJvci5lcnJvcik7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn0iXX0=
@@ -444,11 +444,11 @@ class CoerAlert {
444
444
  return icon;
445
445
  }
446
446
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CoerAlert, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
447
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CoerAlert, selector: "coer-alert", ngImport: i0, template: "<aside class=\"toast-container coer-alert\">\r\n <!-- Success -->\r\n <div id=\"alert-success\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-success-icon\"></i>\r\n <strong id=\"alert-success-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-success')\" class=\"btn-close btn-close-white\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-success-message\"></pre>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Error -->\r\n <div id=\"alert-error\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-error-icon\"></i>\r\n <strong id=\"alert-error-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-error')\" class=\"btn-close btn-close-white\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-error-message\"></pre>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Info -->\r\n <div id=\"alert-info\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-info-icon\"></i>\r\n <strong id=\"alert-info-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-info')\" class=\"btn-close btn-close-white\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-info-message\"></pre>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Warning -->\r\n <div id=\"alert-warning\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-warning-icon\"></i>\r\n <strong id=\"alert-warning-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-warning')\" class=\"btn-close\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-warning-message\"></pre>\r\n </div>\r\n </div>\r\n</aside>", styles: ["*{--blue: #0d6efd;--gray: #6c757d;--green: #198754;--yellow: #ffc107;--red: #dc3545;--white: #f5f5f5;--black: #252525;--orange: #fd6031}.text-blue{color:#0d6efd!important}.text-blue-bold{color:#0d6efd!important;font-weight:700!important}.background-blue{background-color:#0d6efd!important}.background-border-blue{background-color:#0d6efd!important;border-color:#0d6efd!important}.border-blue{border-color:#0d6efd!important}.text-gray{color:#6c757d!important}.text-gray-bold{color:#6c757d!important;font-weight:700!important}.background-gray{background-color:#6c757d!important}.background-border-gray{background-color:#6c757d!important;border-color:#6c757d!important}.border-gray{border-color:#6c757d!important}.text-green{color:#198754!important}.text-green-bold{color:#198754!important;font-weight:700!important}.background-green{background-color:#198754!important}.background-border-green{background-color:#198754!important;border-color:#198754!important}.border-green{border-color:#198754!important}.text-yellow{color:#ffc107!important}.text-yellow-bold{color:#ffc107!important;font-weight:700!important}.background-yellow{background-color:#ffc107!important}.background-border-yellow{background-color:#ffc107!important;border-color:#ffc107!important}.border-yellow{border-color:#ffc107!important}.text-red{color:#dc3545!important}.text-red-bold{color:#dc3545!important;font-weight:700!important}.background-red{background-color:#dc3545!important}.background-border-red{background-color:#dc3545!important;border-color:#dc3545!important}.border-red{border-color:#dc3545!important}.text-white{color:#f5f5f5!important}.text-white-bold{color:#f5f5f5!important;font-weight:700!important}.background-white{background-color:#f5f5f5!important}.background-border-white{background-color:#f5f5f5!important;border-color:#f5f5f5!important}.border-white{border-color:#f5f5f5!important}.text-black{color:#252525!important}.text-black-bold{color:#252525!important;font-weight:700!important}.background-black{background-color:#252525!important}.background-border-black{background-color:#252525!important;border-color:#252525!important}.border-black{border-color:#252525!important}.text-orange{color:#fd6031!important}.text-orange-bold{color:#fd6031!important;font-weight:700!important}.background-orange{background-color:#fd6031!important}.background-border-orange{background-color:#fd6031!important;border-color:#fd6031!important}.border-orange{border-color:#fd6031!important}aside.toast-container{position:fixed;bottom:0;right:0;padding:15px!important;z-index:2000!important}aside.toast-container i,aside.toast-container svg{display:flex;align-items:center}aside.toast-container strong{margin:0 auto 0 5px}aside.toast-container div.toast,aside.toast-container div.toast-header{border-top-left-radius:10px;border-top-right-radius:10px;color:#f5f5f5}aside.toast-container div.toast,aside.toast-container div.toast-body{border-bottom-left-radius:10px;border-bottom-right-radius:10px;color:#f5f5f5}aside.toast-container div.toast-body{min-height:36px}aside.toast-container pre{font-family:Roboto,RobotoFallback,Noto Kufi Arabic,Helvetica,Arial,sans-serif;white-space:pre-wrap;font-size:medium}aside.toast-container button{margin:0 2px!important;width:10px!important;height:10px!important;box-shadow:none!important;outline:none!important;border:none!important}aside.toast-container div#alert-success div.toast-header,aside.toast-container div#alert-success div.toast-body{background-color:#198754}aside.toast-container div#alert-info div.toast-header,aside.toast-container div#alert-info div.toast-body{background-color:#0d6efd}aside.toast-container div#alert-error div.toast-header,aside.toast-container div#alert-error div.toast-body{background-color:#dc3545}aside.toast-container div#alert-warning div.toast-header,aside.toast-container div#alert-warning div.toast-body{background-color:#ffc107;border-color:#252525;color:#252525}aside.toast-container div#alert-success:hover,aside.toast-container div#alert-info:hover,aside.toast-container div#alert-error:hover,aside.toast-container div#alert-warning:hover{transform:scale(1.01);box-shadow:2px 2px 10px #789;cursor:default}button.sweet-alert-button{width:100px!important;height:40px!important;display:flex!important;align-items:center!important;justify-content:center!important;margin:0 5px!important;outline:none!important;border:none!important;box-shadow:none!important}aside.toast-container>*{border:none!important;z-index:2000!important;margin:15px 0 0!important}\n"] }); }
447
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CoerAlert, isStandalone: true, selector: "coer-alert", ngImport: i0, template: "<aside class=\"toast-container coer-alert\">\r\n <!-- Success -->\r\n <div id=\"alert-success\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-success-icon\"></i>\r\n <strong id=\"alert-success-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-success')\" class=\"btn-close btn-close-white\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-success-message\"></pre>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Error -->\r\n <div id=\"alert-error\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-error-icon\"></i>\r\n <strong id=\"alert-error-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-error')\" class=\"btn-close btn-close-white\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-error-message\"></pre>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Info -->\r\n <div id=\"alert-info\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-info-icon\"></i>\r\n <strong id=\"alert-info-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-info')\" class=\"btn-close btn-close-white\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-info-message\"></pre>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Warning -->\r\n <div id=\"alert-warning\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-warning-icon\"></i>\r\n <strong id=\"alert-warning-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-warning')\" class=\"btn-close\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-warning-message\"></pre>\r\n </div>\r\n </div>\r\n</aside>", styles: ["*{--blue: #0d6efd;--gray: #6c757d;--green: #198754;--yellow: #ffc107;--red: #dc3545;--white: #f5f5f5;--black: #252525;--orange: #fd6031}.text-blue{color:#0d6efd!important}.text-blue-bold{color:#0d6efd!important;font-weight:700!important}.background-blue{background-color:#0d6efd!important}.background-border-blue{background-color:#0d6efd!important;border-color:#0d6efd!important}.border-blue{border-color:#0d6efd!important}.text-gray{color:#6c757d!important}.text-gray-bold{color:#6c757d!important;font-weight:700!important}.background-gray{background-color:#6c757d!important}.background-border-gray{background-color:#6c757d!important;border-color:#6c757d!important}.border-gray{border-color:#6c757d!important}.text-green{color:#198754!important}.text-green-bold{color:#198754!important;font-weight:700!important}.background-green{background-color:#198754!important}.background-border-green{background-color:#198754!important;border-color:#198754!important}.border-green{border-color:#198754!important}.text-yellow{color:#ffc107!important}.text-yellow-bold{color:#ffc107!important;font-weight:700!important}.background-yellow{background-color:#ffc107!important}.background-border-yellow{background-color:#ffc107!important;border-color:#ffc107!important}.border-yellow{border-color:#ffc107!important}.text-red{color:#dc3545!important}.text-red-bold{color:#dc3545!important;font-weight:700!important}.background-red{background-color:#dc3545!important}.background-border-red{background-color:#dc3545!important;border-color:#dc3545!important}.border-red{border-color:#dc3545!important}.text-white{color:#f5f5f5!important}.text-white-bold{color:#f5f5f5!important;font-weight:700!important}.background-white{background-color:#f5f5f5!important}.background-border-white{background-color:#f5f5f5!important;border-color:#f5f5f5!important}.border-white{border-color:#f5f5f5!important}.text-black{color:#252525!important}.text-black-bold{color:#252525!important;font-weight:700!important}.background-black{background-color:#252525!important}.background-border-black{background-color:#252525!important;border-color:#252525!important}.border-black{border-color:#252525!important}.text-orange{color:#fd6031!important}.text-orange-bold{color:#fd6031!important;font-weight:700!important}.background-orange{background-color:#fd6031!important}.background-border-orange{background-color:#fd6031!important;border-color:#fd6031!important}.border-orange{border-color:#fd6031!important}aside.toast-container{position:fixed;bottom:0;right:0;padding:15px!important;z-index:2000!important}aside.toast-container i,aside.toast-container svg{display:flex;align-items:center}aside.toast-container strong{margin:0 auto 0 5px}aside.toast-container div.toast,aside.toast-container div.toast-header{border-top-left-radius:10px;border-top-right-radius:10px;color:#f5f5f5}aside.toast-container div.toast,aside.toast-container div.toast-body{border-bottom-left-radius:10px;border-bottom-right-radius:10px;color:#f5f5f5}aside.toast-container div.toast-body{min-height:36px}aside.toast-container pre{font-family:Roboto,RobotoFallback,Noto Kufi Arabic,Helvetica,Arial,sans-serif;white-space:pre-wrap;font-size:medium}aside.toast-container button{margin:0 2px!important;width:10px!important;height:10px!important;box-shadow:none!important;outline:none!important;border:none!important}aside.toast-container div#alert-success div.toast-header,aside.toast-container div#alert-success div.toast-body{background-color:#198754}aside.toast-container div#alert-info div.toast-header,aside.toast-container div#alert-info div.toast-body{background-color:#0d6efd}aside.toast-container div#alert-error div.toast-header,aside.toast-container div#alert-error div.toast-body{background-color:#dc3545}aside.toast-container div#alert-warning div.toast-header,aside.toast-container div#alert-warning div.toast-body{background-color:#ffc107;border-color:#252525;color:#252525}aside.toast-container div#alert-success:hover,aside.toast-container div#alert-info:hover,aside.toast-container div#alert-error:hover,aside.toast-container div#alert-warning:hover{transform:scale(1.01);box-shadow:2px 2px 10px #789;cursor:default}button.sweet-alert-button{width:100px!important;height:40px!important;display:flex!important;align-items:center!important;justify-content:center!important;margin:0 5px!important;outline:none!important;border:none!important;box-shadow:none!important}aside.toast-container>*{border:none!important;z-index:2000!important;margin:15px 0 0!important}\n"] }); }
448
448
  }
449
449
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CoerAlert, decorators: [{
450
450
  type: Component,
451
- args: [{ selector: 'coer-alert', template: "<aside class=\"toast-container coer-alert\">\r\n <!-- Success -->\r\n <div id=\"alert-success\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-success-icon\"></i>\r\n <strong id=\"alert-success-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-success')\" class=\"btn-close btn-close-white\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-success-message\"></pre>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Error -->\r\n <div id=\"alert-error\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-error-icon\"></i>\r\n <strong id=\"alert-error-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-error')\" class=\"btn-close btn-close-white\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-error-message\"></pre>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Info -->\r\n <div id=\"alert-info\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-info-icon\"></i>\r\n <strong id=\"alert-info-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-info')\" class=\"btn-close btn-close-white\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-info-message\"></pre>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Warning -->\r\n <div id=\"alert-warning\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-warning-icon\"></i>\r\n <strong id=\"alert-warning-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-warning')\" class=\"btn-close\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-warning-message\"></pre>\r\n </div>\r\n </div>\r\n</aside>", styles: ["*{--blue: #0d6efd;--gray: #6c757d;--green: #198754;--yellow: #ffc107;--red: #dc3545;--white: #f5f5f5;--black: #252525;--orange: #fd6031}.text-blue{color:#0d6efd!important}.text-blue-bold{color:#0d6efd!important;font-weight:700!important}.background-blue{background-color:#0d6efd!important}.background-border-blue{background-color:#0d6efd!important;border-color:#0d6efd!important}.border-blue{border-color:#0d6efd!important}.text-gray{color:#6c757d!important}.text-gray-bold{color:#6c757d!important;font-weight:700!important}.background-gray{background-color:#6c757d!important}.background-border-gray{background-color:#6c757d!important;border-color:#6c757d!important}.border-gray{border-color:#6c757d!important}.text-green{color:#198754!important}.text-green-bold{color:#198754!important;font-weight:700!important}.background-green{background-color:#198754!important}.background-border-green{background-color:#198754!important;border-color:#198754!important}.border-green{border-color:#198754!important}.text-yellow{color:#ffc107!important}.text-yellow-bold{color:#ffc107!important;font-weight:700!important}.background-yellow{background-color:#ffc107!important}.background-border-yellow{background-color:#ffc107!important;border-color:#ffc107!important}.border-yellow{border-color:#ffc107!important}.text-red{color:#dc3545!important}.text-red-bold{color:#dc3545!important;font-weight:700!important}.background-red{background-color:#dc3545!important}.background-border-red{background-color:#dc3545!important;border-color:#dc3545!important}.border-red{border-color:#dc3545!important}.text-white{color:#f5f5f5!important}.text-white-bold{color:#f5f5f5!important;font-weight:700!important}.background-white{background-color:#f5f5f5!important}.background-border-white{background-color:#f5f5f5!important;border-color:#f5f5f5!important}.border-white{border-color:#f5f5f5!important}.text-black{color:#252525!important}.text-black-bold{color:#252525!important;font-weight:700!important}.background-black{background-color:#252525!important}.background-border-black{background-color:#252525!important;border-color:#252525!important}.border-black{border-color:#252525!important}.text-orange{color:#fd6031!important}.text-orange-bold{color:#fd6031!important;font-weight:700!important}.background-orange{background-color:#fd6031!important}.background-border-orange{background-color:#fd6031!important;border-color:#fd6031!important}.border-orange{border-color:#fd6031!important}aside.toast-container{position:fixed;bottom:0;right:0;padding:15px!important;z-index:2000!important}aside.toast-container i,aside.toast-container svg{display:flex;align-items:center}aside.toast-container strong{margin:0 auto 0 5px}aside.toast-container div.toast,aside.toast-container div.toast-header{border-top-left-radius:10px;border-top-right-radius:10px;color:#f5f5f5}aside.toast-container div.toast,aside.toast-container div.toast-body{border-bottom-left-radius:10px;border-bottom-right-radius:10px;color:#f5f5f5}aside.toast-container div.toast-body{min-height:36px}aside.toast-container pre{font-family:Roboto,RobotoFallback,Noto Kufi Arabic,Helvetica,Arial,sans-serif;white-space:pre-wrap;font-size:medium}aside.toast-container button{margin:0 2px!important;width:10px!important;height:10px!important;box-shadow:none!important;outline:none!important;border:none!important}aside.toast-container div#alert-success div.toast-header,aside.toast-container div#alert-success div.toast-body{background-color:#198754}aside.toast-container div#alert-info div.toast-header,aside.toast-container div#alert-info div.toast-body{background-color:#0d6efd}aside.toast-container div#alert-error div.toast-header,aside.toast-container div#alert-error div.toast-body{background-color:#dc3545}aside.toast-container div#alert-warning div.toast-header,aside.toast-container div#alert-warning div.toast-body{background-color:#ffc107;border-color:#252525;color:#252525}aside.toast-container div#alert-success:hover,aside.toast-container div#alert-info:hover,aside.toast-container div#alert-error:hover,aside.toast-container div#alert-warning:hover{transform:scale(1.01);box-shadow:2px 2px 10px #789;cursor:default}button.sweet-alert-button{width:100px!important;height:40px!important;display:flex!important;align-items:center!important;justify-content:center!important;margin:0 5px!important;outline:none!important;border:none!important;box-shadow:none!important}aside.toast-container>*{border:none!important;z-index:2000!important;margin:15px 0 0!important}\n"] }]
451
+ args: [{ selector: 'coer-alert', standalone: true, template: "<aside class=\"toast-container coer-alert\">\r\n <!-- Success -->\r\n <div id=\"alert-success\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-success-icon\"></i>\r\n <strong id=\"alert-success-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-success')\" class=\"btn-close btn-close-white\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-success-message\"></pre>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Error -->\r\n <div id=\"alert-error\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-error-icon\"></i>\r\n <strong id=\"alert-error-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-error')\" class=\"btn-close btn-close-white\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-error-message\"></pre>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Info -->\r\n <div id=\"alert-info\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-info-icon\"></i>\r\n <strong id=\"alert-info-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-info')\" class=\"btn-close btn-close-white\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-info-message\"></pre>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Warning -->\r\n <div id=\"alert-warning\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-warning-icon\"></i>\r\n <strong id=\"alert-warning-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-warning')\" class=\"btn-close\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-warning-message\"></pre>\r\n </div>\r\n </div>\r\n</aside>", styles: ["*{--blue: #0d6efd;--gray: #6c757d;--green: #198754;--yellow: #ffc107;--red: #dc3545;--white: #f5f5f5;--black: #252525;--orange: #fd6031}.text-blue{color:#0d6efd!important}.text-blue-bold{color:#0d6efd!important;font-weight:700!important}.background-blue{background-color:#0d6efd!important}.background-border-blue{background-color:#0d6efd!important;border-color:#0d6efd!important}.border-blue{border-color:#0d6efd!important}.text-gray{color:#6c757d!important}.text-gray-bold{color:#6c757d!important;font-weight:700!important}.background-gray{background-color:#6c757d!important}.background-border-gray{background-color:#6c757d!important;border-color:#6c757d!important}.border-gray{border-color:#6c757d!important}.text-green{color:#198754!important}.text-green-bold{color:#198754!important;font-weight:700!important}.background-green{background-color:#198754!important}.background-border-green{background-color:#198754!important;border-color:#198754!important}.border-green{border-color:#198754!important}.text-yellow{color:#ffc107!important}.text-yellow-bold{color:#ffc107!important;font-weight:700!important}.background-yellow{background-color:#ffc107!important}.background-border-yellow{background-color:#ffc107!important;border-color:#ffc107!important}.border-yellow{border-color:#ffc107!important}.text-red{color:#dc3545!important}.text-red-bold{color:#dc3545!important;font-weight:700!important}.background-red{background-color:#dc3545!important}.background-border-red{background-color:#dc3545!important;border-color:#dc3545!important}.border-red{border-color:#dc3545!important}.text-white{color:#f5f5f5!important}.text-white-bold{color:#f5f5f5!important;font-weight:700!important}.background-white{background-color:#f5f5f5!important}.background-border-white{background-color:#f5f5f5!important;border-color:#f5f5f5!important}.border-white{border-color:#f5f5f5!important}.text-black{color:#252525!important}.text-black-bold{color:#252525!important;font-weight:700!important}.background-black{background-color:#252525!important}.background-border-black{background-color:#252525!important;border-color:#252525!important}.border-black{border-color:#252525!important}.text-orange{color:#fd6031!important}.text-orange-bold{color:#fd6031!important;font-weight:700!important}.background-orange{background-color:#fd6031!important}.background-border-orange{background-color:#fd6031!important;border-color:#fd6031!important}.border-orange{border-color:#fd6031!important}aside.toast-container{position:fixed;bottom:0;right:0;padding:15px!important;z-index:2000!important}aside.toast-container i,aside.toast-container svg{display:flex;align-items:center}aside.toast-container strong{margin:0 auto 0 5px}aside.toast-container div.toast,aside.toast-container div.toast-header{border-top-left-radius:10px;border-top-right-radius:10px;color:#f5f5f5}aside.toast-container div.toast,aside.toast-container div.toast-body{border-bottom-left-radius:10px;border-bottom-right-radius:10px;color:#f5f5f5}aside.toast-container div.toast-body{min-height:36px}aside.toast-container pre{font-family:Roboto,RobotoFallback,Noto Kufi Arabic,Helvetica,Arial,sans-serif;white-space:pre-wrap;font-size:medium}aside.toast-container button{margin:0 2px!important;width:10px!important;height:10px!important;box-shadow:none!important;outline:none!important;border:none!important}aside.toast-container div#alert-success div.toast-header,aside.toast-container div#alert-success div.toast-body{background-color:#198754}aside.toast-container div#alert-info div.toast-header,aside.toast-container div#alert-info div.toast-body{background-color:#0d6efd}aside.toast-container div#alert-error div.toast-header,aside.toast-container div#alert-error div.toast-body{background-color:#dc3545}aside.toast-container div#alert-warning div.toast-header,aside.toast-container div#alert-warning div.toast-body{background-color:#ffc107;border-color:#252525;color:#252525}aside.toast-container div#alert-success:hover,aside.toast-container div#alert-info:hover,aside.toast-container div#alert-error:hover,aside.toast-container div#alert-warning:hover{transform:scale(1.01);box-shadow:2px 2px 10px #789;cursor:default}button.sweet-alert-button{width:100px!important;height:40px!important;display:flex!important;align-items:center!important;justify-content:center!important;margin:0 5px!important;outline:none!important;border:none!important;box-shadow:none!important}aside.toast-container>*{border:none!important;z-index:2000!important;margin:15px 0 0!important}\n"] }]
452
452
  }] });
453
453
 
454
454
  class Breadcrumbs {
@@ -1013,7 +1013,7 @@ class Service {
1013
1013
  },
1014
1014
  error: (httpError) => {
1015
1015
  this.ReleaseSubscription(this._GET$);
1016
- //this.AlertError(httpError, request.alertError);
1016
+ this.AlertError(httpError, request.alertError);
1017
1017
  Resolve({
1018
1018
  body: {},
1019
1019
  status: httpError.status,
@@ -1024,7 +1024,7 @@ class Service {
1024
1024
  complete: () => {
1025
1025
  this.ReleaseSubscription(this._GET$);
1026
1026
  if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {
1027
- ////this.alert.Success(request.alertSuccess);
1027
+ this.alert.Success(request.alertSuccess);
1028
1028
  }
1029
1029
  }
1030
1030
  });
@@ -1047,7 +1047,7 @@ class Service {
1047
1047
  },
1048
1048
  error: (httpError) => {
1049
1049
  this.ReleaseSubscription(this._POST$);
1050
- //this.AlertError(httpError, request.alertError);
1050
+ this.AlertError(httpError, request.alertError);
1051
1051
  Resolve({
1052
1052
  body: {},
1053
1053
  status: httpError.status,
@@ -1058,7 +1058,7 @@ class Service {
1058
1058
  complete: () => {
1059
1059
  this.ReleaseSubscription(this._POST$);
1060
1060
  if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {
1061
- //this.alert.Success(request.alertSuccess);
1061
+ this.alert.Success(request.alertSuccess);
1062
1062
  }
1063
1063
  }
1064
1064
  });
@@ -1081,7 +1081,7 @@ class Service {
1081
1081
  },
1082
1082
  error: (httpError) => {
1083
1083
  this.ReleaseSubscription(this._PUT$);
1084
- //this.AlertError(httpError, request.alertError);
1084
+ this.AlertError(httpError, request.alertError);
1085
1085
  Resolve({
1086
1086
  body: {},
1087
1087
  status: httpError.status,
@@ -1092,7 +1092,7 @@ class Service {
1092
1092
  complete: () => {
1093
1093
  this.ReleaseSubscription(this._PUT$);
1094
1094
  if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {
1095
- //this.alert.Success(request.alertSuccess, 'Updated', 'fa-solid fa-arrows-rotate fa-spin');
1095
+ this.alert.Success(request.alertSuccess, 'Updated', 'fa-solid fa-arrows-rotate fa-spin');
1096
1096
  }
1097
1097
  }
1098
1098
  });
@@ -1115,7 +1115,7 @@ class Service {
1115
1115
  },
1116
1116
  error: (httpError) => {
1117
1117
  this.ReleaseSubscription(this._PATCH$);
1118
- //this.AlertError(httpError, request.alertError);
1118
+ this.AlertError(httpError, request.alertError);
1119
1119
  Resolve({
1120
1120
  body: {},
1121
1121
  status: httpError.status,
@@ -1126,7 +1126,7 @@ class Service {
1126
1126
  complete: () => {
1127
1127
  this.ReleaseSubscription(this._PATCH$);
1128
1128
  if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {
1129
- //this.alert.Success(request.alertSuccess, 'Updated', 'fa-solid fa-arrows-rotate fa-spin');
1129
+ this.alert.Success(request.alertSuccess, 'Updated', 'fa-solid fa-arrows-rotate fa-spin');
1130
1130
  }
1131
1131
  }
1132
1132
  });
@@ -1149,7 +1149,7 @@ class Service {
1149
1149
  },
1150
1150
  error: (httpError) => {
1151
1151
  this.ReleaseSubscription(this._DELETE$);
1152
- //this.AlertError(httpError, request.alertError);
1152
+ this.AlertError(httpError, request.alertError);
1153
1153
  Resolve({
1154
1154
  body: {},
1155
1155
  status: httpError.status,
@@ -1160,7 +1160,7 @@ class Service {
1160
1160
  complete: () => {
1161
1161
  this.ReleaseSubscription(this._DELETE$);
1162
1162
  if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {
1163
- //this.alert.Success(request.alertSuccess, 'Deleted', 'fa-regular fa-trash-can');
1163
+ this.alert.Success(request.alertSuccess, 'Deleted', 'fa-regular fa-trash-can');
1164
1164
  }
1165
1165
  }
1166
1166
  });
@@ -1170,45 +1170,46 @@ class Service {
1170
1170
  AlertError(httpError, message) {
1171
1171
  if (httpError.status >= 500) {
1172
1172
  if (Tools.IsNotOnlyWhiteSpace(message)) {
1173
- //this.alert.Error('', message, 'fa-solid fa-bug', null);
1173
+ this.alert.Error('', message, 'fa-solid fa-bug', null);
1174
1174
  }
1175
1175
  }
1176
1176
  else if (httpError.status < 500) {
1177
1177
  switch (httpError.status) {
1178
1178
  case 400: {
1179
- //this.alert.Warning(httpError.error?.message || httpError.error, 'Bad Request', 'fa-regular fa-face-grin-beam-sweat fa-lg');
1179
+ this.alert.Warning(httpError.error?.message || httpError.error, 'Bad Request', 'fa-regular fa-face-grin-beam-sweat fa-lg');
1180
1180
  break;
1181
1181
  }
1182
1182
  case 401: {
1183
- //this.alert.Warning(httpError.error?.message || httpError.error, 'Unauthorize', 'fa-regular fa-face-rolling-eyes fa-lg');
1183
+ this.alert.Warning(httpError.error?.message || httpError.error, 'Unauthorize', 'fa-regular fa-face-rolling-eyes fa-lg');
1184
1184
  break;
1185
1185
  }
1186
1186
  case 404: {
1187
- //this.alert.Warning(httpError.error?.message || httpError.error, 'Not Found', 'fa-regular fa-face-meh fa-lg');
1187
+ this.alert.Warning(httpError.error?.message || httpError.error, 'Not Found', 'fa-regular fa-face-meh fa-lg');
1188
1188
  break;
1189
1189
  }
1190
1190
  case 405: {
1191
- //this.alert.Warning(httpError.error?.message || httpError.error, 'Not Allowed', 'fa-regular fa-face-grimace fa-lg');
1191
+ this.alert.Warning(httpError.error?.message || httpError.error, 'Not Allowed', 'fa-regular fa-face-grimace fa-lg');
1192
1192
  break;
1193
1193
  }
1194
1194
  case 406: {
1195
- //this.alert.Warning(httpError.error?.message || httpError.error, 'Not Acceptable', 'fa-regular fa-face-frown-open fa-lg');
1195
+ this.alert.Warning(httpError.error?.message || httpError.error, 'Not Acceptable', 'fa-regular fa-face-frown-open fa-lg');
1196
1196
  break;
1197
1197
  }
1198
1198
  case 409: {
1199
- //this.alert.Warning(httpError.error?.message || httpError.error, 'Conflict', 'fa-regular fa-face-dizzy fa-lg');
1199
+ this.alert.Warning(httpError.error?.message || httpError.error, 'Conflict', 'fa-regular fa-face-dizzy fa-lg');
1200
1200
  break;
1201
1201
  }
1202
1202
  case 413: {
1203
- //this.alert.Warning(httpError.error?.message || httpError.error, 'Too Large', 'fa-regular fa-face-flushed fa-lg');
1203
+ this.alert.Warning(httpError.error?.message || httpError.error, 'Too Large', 'fa-regular fa-face-flushed fa-lg');
1204
1204
  break;
1205
1205
  }
1206
1206
  default: {
1207
1207
  if (httpError.status <= 0) {
1208
- //this.alert.Warning('Without Connection', 'WEB API DOWN', 'fa-solid fa-plug-circle-xmark fa-lg', null);
1208
+ this.alert.Warning('Without Connection', 'WEB API DOWN', 'fa-solid fa-plug-circle-xmark fa-lg', null);
1209
1209
  }
1210
- else //this.alert.Warning(httpError.error?.message || httpError.error);
1211
- break;
1210
+ else
1211
+ this.alert.Warning(httpError.error?.message || httpError.error);
1212
+ break;
1212
1213
  }
1213
1214
  }
1214
1215
  }
@@ -1 +1 @@
1
- {"version":3,"file":"coer-elements-tools.mjs","sources":["../../../projects/coer-elements/tools/lib/tools.ts","../../../projects/coer-elements/tools/lib/coer-alert/coer-alert.component.ts","../../../projects/coer-elements/tools/lib/coer-alert/coer-alert.component.html","../../../projects/coer-elements/tools/lib/breadcrumbs.class.ts","../../../projects/coer-elements/tools/lib/control-value.class.ts","../../../projects/coer-elements/tools/lib/date-time.class.ts","../../../projects/coer-elements/tools/lib/files.class.ts","../../../projects/coer-elements/tools/lib/menu.class.ts","../../../projects/coer-elements/tools/lib/source.class.ts","../../../projects/coer-elements/tools/lib/page.class.ts","../../../projects/coer-elements/tools/lib/screen.class.ts","../../../projects/coer-elements/tools/lib/service.class.ts","../../../projects/coer-elements/tools/coer-elements-tools.ts"],"sourcesContent":["import { signal } from \"@angular/core\";\r\nconst reference_signal = signal<any>({});\r\n\r\nexport const Tools = {\r\n /** Generate a Guid */\r\n GetGuid: (seed: string = 'coer-system') => {\r\n let time = new Date().getTime();\r\n seed = seed.toString().trim()\r\n return seed + `-xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx`.replace(/[xy]/g, (c) => {\r\n const random = (time + Math.random() * 16) % 16 | 0\r\n time = Math.floor(time / 16)\r\n return (c == 'x' ? random : (random & 0x3 | 0x8)).toString(16)\r\n })\r\n },\r\n\r\n\r\n /** Returns true if the value is null or undefined, false otherwise */\r\n IsNull: <T>(value: T | null | undefined): boolean => {\r\n if (value === undefined) return true;\r\n if (value === null) return true;\r\n return false;\r\n },\r\n\r\n\r\n /** Returns true if the value is not null or undefined, false otherwise */\r\n IsNotNull: <T>(value: T | null | undefined): boolean => {\r\n if (value === undefined) return false;\r\n if (value === null) return false;\r\n return true;\r\n },\r\n\r\n\r\n /** Returns true if the value is null or undefined or contains only whitespace, false otherwise */\r\n IsOnlyWhiteSpace: <T>(value: T | null | undefined): boolean => {\r\n if (value === undefined) return true;\r\n if (value === null) return true;\r\n if (typeof value === 'string' && value.trim() === '') return true;\r\n return false;\r\n },\r\n\r\n\r\n /** Returns true if has string value and is not only whitespace, false otherwise */\r\n IsNotOnlyWhiteSpace: <T>(value: T | null | undefined): boolean => {\r\n if (value === undefined) return false;\r\n if (value === null) return false;\r\n if (typeof value === 'string' && value.trim() === '') return false;\r\n return true;\r\n },\r\n\r\n\r\n /** Break reference of a object or array */\r\n BreakReference: <T>(object: T): T => {\r\n if (object === null) return object;\r\n if (typeof object === 'undefined') return object;\r\n if (typeof object === 'string') return object;\r\n if (typeof object === 'number') return object;\r\n if (typeof object === 'boolean') return object;\r\n const OBJECT = JSON.parse(JSON.stringify(object))\r\n return (Array.isArray(OBJECT)) ? [...OBJECT] : { ...OBJECT }\r\n },\r\n\r\n\r\n /** Clean extra whitespaces */\r\n CleanUpBlanks: (text: string | number): string => {\r\n if(Tools.IsNull(text)) return '';\r\n let worlds: string[] = String(text).split(' ');\r\n worlds = worlds.filter(x => x.length > 0);\r\n return worlds.join(' ');\r\n },\r\n\r\n\r\n /** Get properties of an object */\r\n GetObjectProperties: <T>(obj: T | null | undefined): string[] => {\r\n const properties: string[] = [];\r\n if (obj === null) return properties;\r\n if (typeof obj === 'undefined') return properties;\r\n if (typeof obj === 'string') return properties;\r\n if (typeof obj === 'number') return properties;\r\n if (typeof obj === 'boolean') return properties;\r\n for(const property in obj) properties.push(String(property));\r\n return properties;\r\n },\r\n\r\n\r\n /**\r\n * Set an index and merge more arrays of the same type\r\n * */\r\n SetIndex: <T>(array: T[], ...args: T[][]): T[] => {\r\n let index = 0;\r\n for (const arg of args) {\r\n array = Tools.BreakReference(array).concat(Tools.BreakReference(arg));\r\n }\r\n\r\n return Tools.BreakReference(array).map(item => Object.assign({ index: index++ }, item));\r\n },\r\n\r\n\r\n /** Set First Char To Lower */\r\n FirstCharToLower: (text: string | null | undefined): string => {\r\n if (Tools.IsOnlyWhiteSpace(text)) return '';\r\n\r\n const textArray: string[] = [];\r\n for(let i = 0; i < text!.length; i++) {\r\n if(i === 0) textArray.push(text![i].toLowerCase());\r\n else textArray.push(text![i]);\r\n }\r\n\r\n return textArray.join('');\r\n },\r\n\r\n\r\n /** Set First Char To Upper */\r\n FirstCharToUpper: (text: string | null | undefined): string => {\r\n if (Tools.IsOnlyWhiteSpace(text)) return '';\r\n\r\n const textArray: string[] = [];\r\n for(let i = 0; i < text!.length; i++) {\r\n if(i === 0) textArray.push(text![i].toUpperCase());\r\n else textArray.push(text![i]);\r\n }\r\n\r\n return textArray.join('');\r\n },\r\n\r\n\r\n /** Sort an array in ascending order by property */\r\n SortBy: <T>(array: T[], property: string, propertyType: 'string' | 'number' = 'string'): T[] => {\r\n switch (propertyType) {\r\n case 'string': {\r\n return array.sort((x: any, y: any) => {\r\n if (String(x[property]).toUpperCase().trim() < String(y[property]).toUpperCase().trim()) return -1;\r\n else if (String(x[property]).toUpperCase().trim() > String(y[property]).toUpperCase().trim()) return 1;\r\n else return 0;\r\n });\r\n }\r\n\r\n case 'number': {\r\n return array.sort((x: any, y: any) => Number(x[property] - Number(y[property])));\r\n }\r\n }\r\n },\r\n\r\n\r\n /** Sort an array in descending order by property */\r\n SortByDesc: <T>(array: T[], property: string, propertyType: 'string' | 'number' = 'string'): T[] => {\r\n switch (propertyType) {\r\n case 'string': {\r\n return array.sort((x: any, y: any) => {\r\n if (String(x[property]).toUpperCase().trim() < String(y[property]).toUpperCase().trim()) return 1;\r\n else if (String(x[property]).toUpperCase().trim() > String(y[property]).toUpperCase().trim()) return -1;\r\n else return 0;\r\n });\r\n }\r\n\r\n case 'number': {\r\n return array.sort((x: any, y: any) => Number(Number(y[property])) - x[property]);\r\n }\r\n }\r\n },\r\n\r\n\r\n /** Return a string with forman numeric */\r\n GetNumericFormat: (value: string | number | null | undefined, decimals: number = 0): string => {\r\n if (Tools.IsOnlyWhiteSpace(value) || isNaN(Number(value))) {\r\n return '0';\r\n }\r\n\r\n let valueInteger = '';\r\n let valueDecimal = '';\r\n value = value!.toString().replaceAll(' ', '');\r\n\r\n if (value.includes('.') || (decimals > 0)) {\r\n valueInteger = value.includes('.') ? value.split('.')[0] : value;\r\n\r\n if (decimals > 0) {\r\n const PADDING = decimals - valueDecimal.length;\r\n valueDecimal = value.includes('.') ? value.split('.')[1] : '';\r\n for(let i = 0; i < PADDING; i++) valueDecimal += '0';\r\n valueDecimal = valueDecimal.substring(0, decimals);\r\n valueDecimal = `.${valueDecimal}`;\r\n }\r\n }\r\n\r\n else {\r\n valueInteger = value;\r\n }\r\n\r\n let counter = 0;\r\n const VALUE_INTEGER_ARRAY: string[] = [];\r\n for(const char of valueInteger.split('').reverse()) {\r\n if (counter == 3) {\r\n VALUE_INTEGER_ARRAY.push(',');\r\n counter = 0;\r\n }\r\n\r\n VALUE_INTEGER_ARRAY.push(char);\r\n ++counter;\r\n }\r\n\r\n valueInteger = VALUE_INTEGER_ARRAY.reverse().join('');\r\n return `${valueInteger}${valueDecimal}`;\r\n },\r\n\r\n\r\n /** Wait the time indicated */\r\n Sleep: (milliseconds: number = 0, reference: string | null = null) => {\r\n if (Tools.IsNull(reference)) {\r\n return new Promise(Resolve => setTimeout(Resolve, milliseconds));\r\n }\r\n\r\n else return new Promise<void>(Resolve => {\r\n reference = reference!.replaceAll(' ', '_').toLowerCase();\r\n\r\n if (reference_signal().hasOwnProperty(reference)) {\r\n clearInterval(reference_signal()[reference!]);\r\n }\r\n\r\n reference_signal.set(Object.assign(reference_signal(), {\r\n [reference!]: setTimeout(() => {\r\n Resolve();\r\n clearInterval(reference_signal()[reference!]);\r\n const _reference = { ...reference_signal() };\r\n delete _reference[reference!];\r\n reference_signal.set({ ..._reference });\r\n }, milliseconds)\r\n }));\r\n });\r\n }\r\n};","import { Component } from '@angular/core';\r\nimport { Tools } from '../tools';\r\nimport * as bootstrap from 'bootstrap';\r\nimport Swal from 'sweetalert2'\r\n\r\n@Component({\r\n selector: 'coer-alert',\r\n templateUrl: './coer-alert.component.html',\r\n styleUrls: ['./coer-alert.component.scss']\r\n})\r\nexport class CoerAlert {\r\n\r\n /** */\r\n public Success(message: string | null = null, title: string | null = null, icon: string | null = null, autohide: number | null = 3000): void {\r\n //Title\r\n if (Tools.IsOnlyWhiteSpace(title)) title = 'Success';\r\n const alertSuccessTitle = document.getElementById('alert-success-title')!;\r\n alertSuccessTitle.textContent = title;\r\n\r\n //Icon\r\n icon = this.GetIcon(title!, icon, 'bi-check-circle fa-beat');\r\n const alertSuccessIcon = document.getElementById('alert-success-icon')!;\r\n this.SetIcon(alertSuccessIcon, icon);\r\n\r\n //Message\r\n if (Tools.IsNull(message)) message = '';\r\n const alertSuccessMessage = document.getElementById('alert-success-message')!;\r\n alertSuccessMessage.innerHTML = message!;\r\n\r\n //Toast\r\n const alertSuccess = document.getElementById('alert-success')!;\r\n this.SetAutoHide(alertSuccess, autohide);\r\n\r\n const toast = bootstrap.Toast.getOrCreateInstance(alertSuccess);\r\n toast.show();\r\n }\r\n\r\n\r\n /** */\r\n public Error(message: string | null = null, title: string | null = null, icon: string | null = null, autohide: number | null = 3000): void {\r\n //Title\r\n if (Tools.IsOnlyWhiteSpace(title)) title = 'Error';\r\n const alertErrorTitle = document.getElementById('alert-error-title')!;\r\n alertErrorTitle.textContent = title;\r\n\r\n //Icon\r\n icon = this.GetIcon(title!, icon, 'bi-exclamation-octagon fa-beat');\r\n const alertErrorIcon = document.getElementById('alert-error-icon')!;\r\n this.SetIcon(alertErrorIcon, icon);\r\n\r\n //Message\r\n if (Tools.IsNull(message)) message = '';\r\n const alertErrorBody = document.getElementById('alert-error-message')!;\r\n alertErrorBody.innerHTML = message!;\r\n\r\n //Toast\r\n const alertError = document.getElementById('alert-error')!;\r\n this.SetAutoHide(alertError, autohide);\r\n\r\n const toast = bootstrap.Toast.getOrCreateInstance(alertError);\r\n toast.show();\r\n }\r\n\r\n\r\n /** */\r\n public Info(message: string | null = null, title: string | null = null, icon: string | null = null, autohide: number | null = 3000): void {\r\n //Title\r\n if (Tools.IsOnlyWhiteSpace(title)) title = 'Info';\r\n const alertInfoTitle = document.getElementById('alert-info-title')!;\r\n alertInfoTitle.textContent = title;\r\n\r\n //Icon\r\n icon = this.GetIcon(title!, icon, 'bi-info-circle fa-beat');\r\n const alertInfoIcon = document.getElementById('alert-info-icon')!;\r\n this.SetIcon(alertInfoIcon, icon);\r\n\r\n //Message\r\n if (Tools.IsNull(message)) message = '';\r\n const alertInfoBody = document.getElementById('alert-info-message')!;\r\n alertInfoBody.innerHTML = message!;\r\n\r\n //Toast\r\n const alertInfo = document.getElementById('alert-info')!;\r\n this.SetAutoHide(alertInfo, autohide);\r\n\r\n const toast = bootstrap.Toast.getOrCreateInstance(alertInfo);\r\n toast.show();\r\n }\r\n\r\n\r\n /** */\r\n public Warning(message: string | null = null, title: string | null = null, icon: string | null = null, autohide: number | null = 3000): void {\r\n //Title\r\n if (Tools.IsOnlyWhiteSpace(title)) title = 'Warning';\r\n const alertWarningTitle = document.getElementById('alert-warning-title')!;\r\n alertWarningTitle.textContent = title;\r\n\r\n //Icon\r\n icon = this.GetIcon(title!, icon, 'bi-exclamation-triangle-fill fa-beat');\r\n const alertWarningIcon = document.getElementById('alert-warning-icon')!;\r\n this.SetIcon(alertWarningIcon, icon);\r\n\r\n //Message\r\n if (Tools.IsNull(message)) message = '';\r\n const alertWarningBody = document.getElementById('alert-warning-message')!;\r\n alertWarningBody.innerHTML = message!;\r\n\r\n //Toast\r\n const alertWarning = document.getElementById('alert-warning')!;\r\n this.SetAutoHide(alertWarning, autohide);\r\n\r\n const toast = bootstrap.Toast.getOrCreateInstance(alertWarning);\r\n toast.show();\r\n }\r\n\r\n\r\n /** */\r\n protected Close(alert: 'alert-success' | 'alert-error' | 'alert-info' | 'alert-warning') {\r\n return new Promise<void>(Resolve => {\r\n const element = document.getElementById(alert)!;\r\n const toast = bootstrap.Toast.getOrCreateInstance(element);\r\n toast.hide();\r\n\r\n setTimeout(() => { Resolve() }, 200);\r\n })\r\n }\r\n\r\n\r\n /** */\r\n public Confirm(\r\n message: string = 'Proceed?',\r\n alertType: 'warning' | 'danger' | 'success' | 'info' = 'warning',\r\n icon: string | null = null) {\r\n return new Promise<boolean>(Resolve => {\r\n let color: string;\r\n let iconType: 'warning' | 'error' | 'success' | 'info';\r\n switch(alertType) {\r\n case 'danger': {\r\n if (Tools.IsNull(icon)) icon = 'bi-exclamation-octagon';\r\n iconType = 'error';\r\n color = '#dc3545'; //red\r\n break;\r\n };\r\n\r\n case 'success': {\r\n if (Tools.IsNull(icon)) icon = 'bi-check-circle';\r\n iconType = 'info';\r\n color = '#198754'; //green\r\n break;\r\n };\r\n\r\n case 'info': {\r\n if (Tools.IsNull(icon)) icon = 'bi-info-circle';\r\n iconType = 'error';\r\n color = '#0d6efd'; //blue\r\n break\r\n };\r\n\r\n default: {\r\n if (Tools.IsNull(icon)) icon = 'bi-exclamation-triangle-fill';\r\n iconType = 'warning';\r\n color = '#ffc107'; //yellow\r\n break;\r\n }\r\n }\r\n\r\n switch(icon) {\r\n case 'delete': icon = 'fa-regular fa-trash-can'; break;\r\n }\r\n\r\n Swal.fire({\r\n icon: iconType,\r\n iconColor: 'transparent',\r\n iconHtml: `<i class=\"${icon}\" style=\"color: ${color};\"></i>`,\r\n html: message,\r\n showConfirmButton: true,\r\n confirmButtonText: 'Yes',\r\n confirmButtonColor: color,\r\n focusConfirm: true,\r\n showDenyButton: true,\r\n denyButtonColor: color,\r\n focusDeny: false,\r\n reverseButtons: true,\r\n allowOutsideClick: false,\r\n allowEscapeKey: false,\r\n allowEnterKey: true,\r\n customClass: {\r\n denyButton: 'sweet-alert-button',\r\n confirmButton: 'sweet-alert-button'\r\n }\r\n }).then(({ value }) => setTimeout(() => Resolve(value)));\r\n });\r\n }\r\n\r\n\r\n /** */\r\n private SetIcon(element: HTMLElement, icon: string): void {\r\n for (const item of [...element.classList.value.split(' ')]) {\r\n if (item.length > 0) {\r\n element.classList.remove(item);\r\n element.classList.remove('q');\r\n }\r\n }\r\n\r\n icon = icon.trim();\r\n const hasWhiteSpaces: RegExp = / /;\r\n if (hasWhiteSpaces.test(icon)) {\r\n const classes = icon.split(' ');\r\n for (const icon of classes) element.classList.add(icon);\r\n }\r\n\r\n else element.classList.add(icon);\r\n }\r\n\r\n\r\n /** */\r\n private SetAutoHide(element: HTMLElement, autohide: number | null): void {\r\n element.removeAttribute('data-bs-autohide');\r\n element.removeAttribute('data-bs-delay');\r\n\r\n if (autohide && autohide > 0) {\r\n if (autohide < 1000) autohide = 1000;\r\n element.setAttribute('data-bs-autohide', 'true');\r\n element.setAttribute('data-bs-delay', String(autohide));\r\n }\r\n\r\n else element.setAttribute('data-bs-autohide', 'false');\r\n }\r\n\r\n\r\n /** */\r\n private GetIcon(title: string, icon: string | null, iconDefault: string): string {\r\n if (icon == null || icon == '') {\r\n title = title.replaceAll(' ', '').toUpperCase();\r\n\r\n switch(title) {\r\n case 'ENABLED': return 'fa-solid fa-thumbs-up fa-flip-horizontal';\r\n case 'ACTIVE': return 'fa-solid fa-thumbs-up fa-flip-horizontal';\r\n case 'ACTIVED': return 'fa-solid fa-thumbs-up fa-flip-horizontal';\r\n case 'DISABLE': return 'fa-solid fa-thumbs-down fa-flip-horizontal';\r\n case 'DISABLED': return 'fa-solid fa-thumbs-down fa-flip-horizontal';\r\n case 'DELETE': return 'fa-regular fa-trash-can';\r\n case 'DELETED': return 'fa-regular fa-trash-can';\r\n default: return iconDefault;\r\n }\r\n }\r\n\r\n return icon;\r\n }\r\n}","<aside class=\"toast-container coer-alert\">\r\n <!-- Success -->\r\n <div id=\"alert-success\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-success-icon\"></i>\r\n <strong id=\"alert-success-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-success')\" class=\"btn-close btn-close-white\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-success-message\"></pre>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Error -->\r\n <div id=\"alert-error\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-error-icon\"></i>\r\n <strong id=\"alert-error-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-error')\" class=\"btn-close btn-close-white\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-error-message\"></pre>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Info -->\r\n <div id=\"alert-info\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-info-icon\"></i>\r\n <strong id=\"alert-info-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-info')\" class=\"btn-close btn-close-white\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-info-message\"></pre>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Warning -->\r\n <div id=\"alert-warning\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-warning-icon\"></i>\r\n <strong id=\"alert-warning-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-warning')\" class=\"btn-close\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-warning-message\"></pre>\r\n </div>\r\n </div>\r\n</aside>","import { IAppSource } from \"coer-elements/interfaces\";\r\nimport { Tools } from './tools';\r\n\r\nexport class Breadcrumbs {\r\n\r\n private static readonly storage = 'COER-System';\r\n\r\n /** */\r\n public static Add(page: string, path: string): void {\r\n const breadcrumbs = this.Get();\r\n const paths = breadcrumbs.map(item => item.path);\r\n\r\n if (!paths.includes(path)) {\r\n breadcrumbs.push({ page, path });\r\n this.Save(breadcrumbs);\r\n }\r\n }\r\n\r\n\r\n /** */\r\n public static Get(): IAppSource[] {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n\r\n if (storage) {\r\n storage = JSON.parse(storage);\r\n\r\n if (storage.hasOwnProperty('breadcrumbs')) {\r\n return Tools.BreakReference(storage.breadcrumbs);\r\n }\r\n }\r\n\r\n return [];\r\n }\r\n\r\n\r\n /** */\r\n public static GetFirst(): IAppSource | null {\r\n const breadcrumbs = this.Get();\r\n return (breadcrumbs.length > 0) ? breadcrumbs.shift()! : null;\r\n }\r\n\r\n\r\n /** */\r\n public static Save(breadcrumbs: IAppSource[]): void {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n if (storage) storage = JSON.parse(storage);\r\n storage = Object.assign({}, storage, { breadcrumbs });\r\n sessionStorage.setItem(this.storage, JSON.stringify(storage));\r\n }\r\n\r\n\r\n /** */\r\n public static Remove(path: string): void {\r\n let breadcrumbs = this.Get();\r\n const index = breadcrumbs.findIndex(x => x.path.toLowerCase().trim() === path.toLowerCase().trim());\r\n\r\n if (index >= 0) {\r\n breadcrumbs = Tools.BreakReference(breadcrumbs).splice(0, index + 1);\r\n this.Save(breadcrumbs);\r\n }\r\n }\r\n\r\n\r\n /** */\r\n public static SetLast(page: string, path: string): void {\r\n const breadcrumbs = this.Get();\r\n\r\n if (breadcrumbs.length > 0) {\r\n breadcrumbs[breadcrumbs.length - 1] = { page, path };\r\n this.Save(breadcrumbs);\r\n }\r\n }\r\n\r\n\r\n /** */\r\n public static RemoveLast(): void {\r\n const breadcrumbs = this.Get();\r\n\r\n if (breadcrumbs.length > 0) {\r\n breadcrumbs.pop();\r\n this.Save(breadcrumbs);\r\n }\r\n }\r\n}","import { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { forwardRef } from \"@angular/core\";\r\n\r\nexport const CONTROL_VALUE = <T>(component: T) => {\r\n return {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => component),\r\n multi: true\r\n }\r\n}\r\n\r\n\r\nexport class ControlValue implements ControlValueAccessor {\r\n\r\n //Variables\r\n protected _value: any;\r\n private _isTouched: boolean = false;\r\n protected _UpdateValue!: Function;\r\n private _IsTouched!: Function;\r\n\r\n\r\n public get isTouched() {\r\n return this._isTouched;\r\n }\r\n\r\n\r\n /** */\r\n protected SetValue(value: any): void {\r\n if(typeof this._UpdateValue === 'function') {\r\n this._UpdateValue(value);\r\n }\r\n\r\n this._value = value;\r\n }\r\n\r\n\r\n /** */\r\n public SetTouched(isTouched: boolean): void {\r\n if(typeof this._IsTouched === 'function') {\r\n this._IsTouched(isTouched);\r\n }\r\n\r\n this._isTouched = isTouched;\r\n }\r\n\r\n\r\n /** */\r\n public writeValue(value: any): void {\r\n this._value = value;\r\n }\r\n\r\n\r\n /** */\r\n public registerOnChange(callback: Function): void {\r\n this._UpdateValue = callback;\r\n }\r\n\r\n\r\n /** */\r\n public registerOnTouched(callback: Function): void {\r\n this._IsTouched = callback;\r\n }\r\n\r\n \r\n /** */\r\n public setDisabledState(isDisabled: boolean): void {}\r\n}","import moment from \"moment\";\r\n\r\nexport class DateTime {\r\n /** Get UTC Offset */\r\n public static GetOffset(): number {\r\n return moment().utcOffset();\r\n }\r\n\r\n\r\n /** YYYY-MM-DD HH:mm:ss */\r\n public static GetFormatDB(date: string | Date | moment.Moment): string {\r\n if ((typeof date === 'string')) date = date.replaceAll('/', '-');\r\n return moment(date).format('YYYY-MM-DD HH:mm:ss');\r\n }\r\n\r\n\r\n /** Convert UTC Date to Local Zone */\r\n public static ToLocalZone(date: string | Date | moment.Moment): string {\r\n date = DateTime.GetFormatDB(date);\r\n return moment(date).add(DateTime.GetOffset(), 'minutes').format('YYYY-MM-DD HH:mm:ss');\r\n }\r\n\r\n\r\n /** Convert Local Zone Date to UTC */\r\n public static ToUTC(date: string | Date | moment.Moment): string {\r\n date = DateTime.GetFormatDB(date);\r\n return moment(date).subtract(DateTime.GetOffset(), 'minutes').format('YYYY-MM-DD HH:mm:ss');\r\n }\r\n\r\n\r\n /** DD MMM YYYY */\r\n public static GetDateFormat(date: string | Date | moment.Moment): string {\r\n date = DateTime.GetFormatDB(date);\r\n return moment(date).parseZone().local(true).format('DD MMM YYYY');\r\n }\r\n}","import { Tools } from \"./tools\";\r\nimport * as XLSX from 'xlsx';\r\n\r\nexport class Files {\r\n public static readonly EXCEL_EXTENSIONS: string[] = ['xls', 'xlsx', 'csv'];\r\n\r\n /** Get Extension File */\r\n public static GetExtension(file: File): string | null {\r\n const fileName = file.name;\r\n\r\n if (fileName.includes('.')) {\r\n let worlds = fileName.split('.') as string[];\r\n\r\n if (worlds.length > 0) {\r\n let extension = worlds.pop()!;\r\n extension = extension.trim().toLowerCase();\r\n if (extension.length > 0) return extension;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n\r\n /** Is Excel File */\r\n public static IsExcel(file: File): boolean {\r\n const EXTENSION = Files.GetExtension(file);\r\n\r\n return Tools.IsNotNull(EXTENSION)\r\n ? this.EXCEL_EXTENSIONS.includes(EXTENSION!)\r\n : false;\r\n }\r\n\r\n\r\n /** Read excel file */\r\n public static ReadExcel<T>(file: File) {\r\n return new Promise<{ columns: string[]; rows: T[]; }>(Resolve => {\r\n let columns: string[] = [];\r\n let rows: T[] = [];\r\n\r\n const reader = new FileReader();\r\n reader.readAsArrayBuffer(file);\r\n\r\n reader.onload = () => {\r\n const dataBytes = new Uint8Array(reader.result as any);\r\n\r\n if (dataBytes) {\r\n const workbook = XLSX.read(dataBytes, {});\r\n const sheet = workbook.Sheets[workbook.SheetNames[0]];\r\n let dataSheet: any[] = XLSX.utils.sheet_to_json(sheet, {\r\n header: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']\r\n });\r\n\r\n //Get Headers\r\n for(const column in dataSheet[0]) {\r\n columns.push(Tools.FirstCharToLower(String(dataSheet[0][column]).replaceAll(' ', '')));\r\n }\r\n\r\n //Get Rows\r\n rows = XLSX.utils.sheet_to_json(sheet, { header: columns });\r\n rows.shift();\r\n\r\n rows = rows.map(row => {\r\n const item = Tools.BreakReference<any>(row);\r\n delete item['__rowNum__'];\r\n return item;\r\n });\r\n }\r\n\r\n Resolve({ columns, rows });\r\n }\r\n\r\n reader.onerror = () => { Resolve({ columns, rows }) }\r\n });\r\n }\r\n\r\n\r\n /** Export to excel file */\r\n public static ExportExcel<T>(data: T[], fileName: string = 'coer_report', sheetName: string = 'Sheet1') {\r\n sheetName = Tools.CleanUpBlanks(sheetName);\r\n fileName = Tools.CleanUpBlanks(fileName);\r\n\r\n if(fileName.endsWith('.xls') || fileName.endsWith('.xlsx') || fileName.endsWith('.csv')) {\r\n if (fileName.includes('.xls')) {\r\n fileName = fileName.replaceAll('.xls', '.xlsx');\r\n }\r\n\r\n if (fileName.includes('.csv')) {\r\n fileName = fileName.replaceAll('.csv', '.xlsx');\r\n }\r\n }\r\n\r\n else {\r\n fileName += '.xlsx';\r\n }\r\n\r\n const WORK_SHEET = XLSX.utils.json_to_sheet(data);\r\n const WORK_BOOK = XLSX.utils.book_new();\r\n XLSX.utils.book_append_sheet(WORK_BOOK, WORK_SHEET, sheetName);\r\n XLSX.writeFile(WORK_BOOK, fileName);\r\n }\r\n\r\n\r\n /** Convert file to string base64 */\r\n public static ConvertToBase64(file: File) {\r\n return new Promise<string>(Resolve => {\r\n const reader = new FileReader();\r\n reader.readAsDataURL(file);\r\n\r\n reader.onload = () => {\r\n Resolve(reader.result?.toString() || '');\r\n }\r\n\r\n reader.onerror = () => Resolve('');\r\n });\r\n }\r\n}","import { IMenuOptionSelected } from \"coer-elements/interfaces\";\r\n\r\nexport class Menu {\r\n\r\n private static readonly storage = 'COER-System';\r\n\r\n /** */\r\n public static Set(menu: IMenuOptionSelected): void {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n if (storage) storage = JSON.parse(storage);\r\n storage = Object.assign({}, storage, { menu });\r\n sessionStorage.setItem(this.storage, JSON.stringify(storage));\r\n }\r\n\r\n\r\n /** */\r\n public static Get(): IMenuOptionSelected | null {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n\r\n if (storage) {\r\n storage = JSON.parse(storage);\r\n\r\n if (storage.hasOwnProperty('menu')) {\r\n return storage.menu;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n}","import { inject } from \"@angular/core\";\r\nimport { Router } from '@angular/router';\r\nimport { IAppSource } from \"coer-elements/interfaces\";\r\nimport { Breadcrumbs } from \"./breadcrumbs.class\";\r\nimport { Tools } from \"./tools\";\r\n\r\nexport class Source {\r\n\r\n private static readonly storage = 'COER-System';\r\n\r\n /** */\r\n public static Set(page: string): void {\r\n const ROUTER = inject(Router);\r\n\r\n let path = ROUTER.url;\r\n if (path.includes('?')) path = path.split('?')[0];\r\n\r\n Breadcrumbs.Add(page, path);\r\n\r\n const breadcrumbs = Breadcrumbs.Get();\r\n\r\n if(breadcrumbs.length >= 2) {\r\n breadcrumbs.pop();\r\n const breadcrumb = breadcrumbs.pop()!;\r\n this.Save({ page: breadcrumb.page, path: breadcrumb.path });\r\n }\r\n\r\n else this.Save(null);\r\n }\r\n\r\n\r\n /** */\r\n private static Save(source: IAppSource | null): void {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n if (storage) storage = JSON.parse(storage);\r\n storage = Object.assign({}, storage, { source });\r\n sessionStorage.setItem(this.storage, JSON.stringify(storage));\r\n }\r\n\r\n\r\n /** */\r\n public static Get(): IAppSource | null {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n\r\n if (storage) {\r\n storage = JSON.parse(storage);\r\n\r\n if (storage.hasOwnProperty('source')) {\r\n return storage.source;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n\r\n /** */\r\n public static GetRoot(): IAppSource | null {\r\n const breadcrumbs = Breadcrumbs.Get();\r\n return (breadcrumbs.length > 0) ? breadcrumbs.shift()! : null;\r\n }\r\n\r\n\r\n /** */\r\n public static SetPageResponse<T>(pageResponse: T): void {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n storage = JSON.parse(storage);\r\n storage = Object.assign({}, storage, { pageResponse });\r\n sessionStorage.setItem(this.storage, JSON.stringify(storage));\r\n }\r\n\r\n\r\n /** */\r\n public static GetPageResponse<T>(): T | null {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n\r\n if (storage) {\r\n storage = JSON.parse(storage);\r\n\r\n if (storage.hasOwnProperty('pageResponse')) {\r\n return Tools.BreakReference(storage.pageResponse);\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n\r\n /** */\r\n public static ClearPageResponse(): void {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n storage = JSON.parse(storage);\r\n\r\n if (storage.hasOwnProperty('pageResponse')) {\r\n delete storage.pageResponse;\r\n }\r\n\r\n storage = Object.assign({}, storage);\r\n sessionStorage.setItem(this.storage, JSON.stringify(storage));\r\n }\r\n\r\n\r\n /** */\r\n public static Reset(): void {\r\n sessionStorage.removeItem(this.storage);\r\n }\r\n}","import { ActivatedRoute, Router } from '@angular/router';\r\nimport { AfterViewInit, Component, Inject, inject, OnDestroy } from '@angular/core';\r\nimport { IAppSource, IBreadcrumb, IGoBack } from 'coer-elements/interfaces';\r\nimport { CoerAlert } from './coer-alert/coer-alert.component';\r\nimport { Breadcrumbs } from './breadcrumbs.class';\r\nimport { Source } from './source.class';\r\nimport { Tools } from './tools';\r\n\r\n@Component({ template: '' })\r\nexport class Page implements AfterViewInit, OnDestroy {\r\n\r\n //Injection\r\n protected readonly alert = inject(CoerAlert);\r\n protected readonly router = inject(Router);\r\n private readonly activatedRoute = inject(ActivatedRoute);\r\n\r\n /** */\r\n protected isUpdate: boolean = false;\r\n\r\n /** */\r\n protected isLoading: boolean = false;\r\n\r\n /** */\r\n protected isReadyPage: boolean = false;\r\n\r\n /** */\r\n protected enableAnimations: boolean = false;\r\n\r\n /** */\r\n protected routeParams: any;\r\n\r\n /** */\r\n protected queryParams: any;\r\n\r\n /** */\r\n protected breadcrumbs: IBreadcrumb[] = [];\r\n\r\n /** */\r\n protected pageResponse: any = null;\r\n\r\n /** */\r\n protected goBack: IGoBack = { show: false };\r\n\r\n //Private Variables\r\n private _page: string = '';\r\n private _source: IAppSource | null = null;\r\n private _preventDestroy: boolean = false;\r\n\r\n\r\n constructor(@Inject(String) page: string) {\r\n this.SetPageName(page);\r\n this.SetSource();\r\n this.GetSource();\r\n this.GetNavigation();\r\n this.SetGoBack();\r\n this.GetPageResponse();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.routeParams = this.activatedRoute.snapshot.params;\r\n this.queryParams = this.activatedRoute.snapshot.queryParams;\r\n\r\n setTimeout(() => {\r\n this.isReadyPage = true;\r\n this.RunPage();\r\n setTimeout(() => { this.enableAnimations = true }, 1000);\r\n });\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n if (!this._preventDestroy) Source.ClearPageResponse();\r\n }\r\n\r\n /** Main method. Starts after ngAfterViewInit() */\r\n protected RunPage(): void {};\r\n\r\n\r\n /** Rename the last breadcrumb and update the url id */\r\n protected SetPageName(name: string, id: string | number | null = null): void {\r\n this._page = name;\r\n\r\n let path = this.router.url;\r\n if (path.includes('?')) path = path.split('?')[0];\r\n\r\n if (id) {\r\n const PATH_ARRAY = path.split('/');\r\n const PATH_ID = Tools.BreakReference(PATH_ARRAY).pop();\r\n if (PATH_ID) {\r\n PATH_ARRAY[PATH_ARRAY.length - 1] = String(id);\r\n path = PATH_ARRAY.join('/');\r\n }\r\n }\r\n\r\n if (this.breadcrumbs.length > 0) {\r\n this.breadcrumbs[this.breadcrumbs.length - 1].page = name;\r\n this.breadcrumbs[this.breadcrumbs.length - 1].path = path;\r\n Breadcrumbs.SetLast(name, path);\r\n }\r\n\r\n this.router.navigateByUrl(path)\r\n }\r\n\r\n\r\n /** */\r\n private SetSource(): void {\r\n Source.Set(this._page);\r\n }\r\n\r\n\r\n /** */\r\n private GetSource(): void {\r\n this._source = Source.Get();\r\n }\r\n\r\n\r\n /** */\r\n protected GetPageResponse(): void {\r\n this.pageResponse = Source.GetPageResponse();\r\n }\r\n\r\n\r\n /** */\r\n private GetNavigation(): void {\r\n if (this._source) {\r\n this.breadcrumbs = Breadcrumbs.Get().map(item => Object.assign({\r\n page: item.page,\r\n path: item.path,\r\n click: this.GoBack(item.path)\r\n }));\r\n }\r\n\r\n else this.breadcrumbs = [{ page: this._page }];\r\n }\r\n\r\n\r\n /** */\r\n private SetGoBack(): void {\r\n if (this._source) {\r\n this.goBack = {\r\n show: true,\r\n path: this._source.path,\r\n click: this.GoBack()\r\n };\r\n }\r\n }\r\n\r\n\r\n /** */\r\n private GoBack = (path?: string) => (() => {\r\n if (path) Breadcrumbs.Remove(path);\r\n else Breadcrumbs.RemoveLast();\r\n });\r\n\r\n\r\n /** Navigate to previous page */\r\n protected GoToSource<T>(pageResponse: T | null = null): void {\r\n if(this._source) {\r\n Breadcrumbs.RemoveLast();\r\n this.SetPageResponse(pageResponse);\r\n Tools.Sleep().then(_ => this.router.navigateByUrl(this._source!.path));\r\n }\r\n };\r\n\r\n\r\n /** */\r\n protected SetPageResponse<T>(pageResponse: T | null = null): void {\r\n if (Tools.IsNotNull(pageResponse)) {\r\n this._preventDestroy = true;\r\n Source.SetPageResponse(pageResponse);\r\n }\r\n };\r\n\r\n\r\n /** */\r\n protected ReloadPage(): void {\r\n Breadcrumbs.RemoveLast();\r\n setTimeout(() => window.location.reload());\r\n }\r\n\r\n\r\n /** */\r\n protected Log(value: any, log: string | null = null): void {\r\n if (Tools.IsNotNull(log)) console.log({ log, value });\r\n else console.log(value);\r\n }\r\n}","\r\nimport { IScreenSize } from \"coer-elements/interfaces\";\r\nimport { Observable } from \"rxjs\";\r\n\r\nexport class Screen {\r\n\r\n public static get WINDOW_WIDTH(): number {\r\n return window.innerWidth;\r\n }\r\n\r\n\r\n public static get WINDOW_HEIGHT(): number {\r\n return window.innerHeight;\r\n }\r\n\r\n\r\n public static get DEVICE_WIDTH(): number {\r\n return window.screen.width;\r\n }\r\n\r\n\r\n public static get DEVICE_HEIGHT(): number {\r\n return window.screen.height;\r\n }\r\n\r\n\r\n public static get BREAKPOINT(): 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl' {\r\n if (window.innerWidth < 576) return 'xs';\r\n else if (window.innerWidth >= 576 && window.innerWidth < 768) return 'sm';\r\n else if (window.innerWidth >= 768 && window.innerWidth < 992) return 'md';\r\n else if (window.innerWidth >= 992 && window.innerWidth < 1200) return 'lg';\r\n else if (window.innerWidth >= 1200 && window.innerWidth < 1400) return 'xl';\r\n else return 'xxl';\r\n }\r\n\r\n\r\n /** */\r\n public static Resize = new Observable<IScreenSize>(subscriber => {\r\n window.addEventListener(\"load\", () => {\r\n window.dispatchEvent(new Event('resize'));\r\n });\r\n\r\n window.onresize = () => {\r\n subscriber.next({\r\n width: this.WINDOW_WIDTH,\r\n height: this.WINDOW_HEIGHT,\r\n breakpoin: this.BREAKPOINT\r\n });\r\n }\r\n });\r\n\r\n\r\n /** */\r\n public static BackButtonBrowser = new Observable<string>(subscriber => {\r\n window.addEventListener('popstate', popStateEvent => {\r\n if (popStateEvent.state && popStateEvent.target) {\r\n subscriber.next((popStateEvent.target as any).location.href);\r\n }\r\n });\r\n });\r\n}","import { inject } from \"@angular/core\";\r\nimport { HttpClient, HttpErrorResponse, HttpEvent, HttpRequest } from \"@angular/common/http\";\r\nimport { CoerAlert } from \"./coer-alert/coer-alert.component\";\r\nimport { IHttpRequest, IHttpResponse } from \"coer-elements/interfaces\";\r\nimport { Tools } from \"./tools\";\r\nimport { Subscription } from \"rxjs\";\r\n\r\nexport class Service {\r\n\r\n //Injections\r\n protected readonly alert = inject(CoerAlert);\r\n protected readonly http = inject(HttpClient);\r\n\r\n protected httpCode = {\r\n Ok: 200,\r\n Created: 201,\r\n NoContent: 204,\r\n BadRequest: 400,\r\n Unauthorize: 401,\r\n NotFound: 404,\r\n NotAllowed: 405,\r\n NotAcceptable: 406,\r\n Conflict: 409,\r\n PayloadTooLarge: 413,\r\n InnerError: 500\r\n }\r\n\r\n\r\n //Subscriptions\r\n private _GET$!: Subscription;\r\n private _POST$!: Subscription;\r\n private _PUT$!: Subscription;\r\n private _PATCH$!: Subscription;\r\n private _DELETE$!: Subscription;\r\n\r\n\r\n /** */\r\n private ReleaseSubscription(subscription: Subscription): void {\r\n if (subscription && !subscription.closed) subscription.unsubscribe();\r\n }\r\n\r\n\r\n /** HTTP GET */\r\n protected HTTP_GET<T>(request: IHttpRequest<T>) {\r\n return new Promise<IHttpResponse<T>>(Resolve => {\r\n this.ReleaseSubscription(this._GET$);\r\n\r\n this._GET$ = this.http.request<T>(new HttpRequest(\"GET\", request.url, { params: request.queryParams, headers: request.headers })).subscribe({\r\n next: (response: HttpEvent<T> | any) => {\r\n if (response.type > 0) {\r\n Resolve({\r\n body: Tools.BreakReference<T>(response.body),\r\n status: response.status,\r\n message: response.statusText,\r\n ok: true\r\n });\r\n }\r\n },\r\n\r\n error: (httpError: HttpErrorResponse) => {\r\n this.ReleaseSubscription(this._GET$);\r\n //this.AlertError(httpError, request.alertError);\r\n\r\n Resolve({\r\n body: {} as any,\r\n status: httpError.status,\r\n message: httpError.error?.message || httpError.error,\r\n ok: false\r\n });\r\n },\r\n\r\n complete: () => {\r\n this.ReleaseSubscription(this._GET$);\r\n\r\n if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {\r\n ////this.alert.Success(request.alertSuccess);\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n\r\n /** HTTP POST */\r\n protected HTTP_POST<T>(request: IHttpRequest<T>) {\r\n return new Promise<IHttpResponse<T>>(Resolve => {\r\n this.ReleaseSubscription(this._POST$);\r\n\r\n this._POST$ = this.http.request<T>(new HttpRequest(\"POST\", request.url, request.body, { params: request.queryParams, headers: request.headers })).subscribe({\r\n next: (response: HttpEvent<T> | any) => {\r\n if (response.type > 0) {\r\n Resolve({\r\n body: Tools.BreakReference<T>(response.body),\r\n status: response.status,\r\n message: response.statusText,\r\n ok: true\r\n });\r\n }\r\n },\r\n\r\n error: (httpError: HttpErrorResponse) => {\r\n this.ReleaseSubscription(this._POST$);\r\n //this.AlertError(httpError, request.alertError);\r\n\r\n Resolve({\r\n body: {} as any,\r\n status: httpError.status,\r\n message: httpError.error?.message || httpError.error,\r\n ok: false\r\n });\r\n },\r\n\r\n complete: () => {\r\n this.ReleaseSubscription(this._POST$);\r\n\r\n if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {\r\n //this.alert.Success(request.alertSuccess);\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n\r\n /** HTTP PUT */\r\n protected HTTP_PUT<T>(request: IHttpRequest<T>) {\r\n return new Promise<IHttpResponse<void>>(Resolve => {\r\n this.ReleaseSubscription(this._PUT$);\r\n\r\n this._PUT$ = this.http.request<T>(new HttpRequest(\"PUT\", request.url, request.body, { params: request.queryParams, headers: request.headers })).subscribe({\r\n next: (response: HttpEvent<T> | any) => {\r\n if (response.type > 0) {\r\n Resolve({\r\n body: {} as any,\r\n status: response.status,\r\n message: response.statusText,\r\n ok: true\r\n });\r\n }\r\n },\r\n\r\n error: (httpError: HttpErrorResponse) => {\r\n this.ReleaseSubscription(this._PUT$);\r\n //this.AlertError(httpError, request.alertError);\r\n\r\n Resolve({\r\n body: {} as any,\r\n status: httpError.status,\r\n message: httpError.error?.message || httpError.error,\r\n ok: false\r\n });\r\n },\r\n\r\n complete: () => {\r\n this.ReleaseSubscription(this._PUT$);\r\n\r\n if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {\r\n //this.alert.Success(request.alertSuccess, 'Updated', 'fa-solid fa-arrows-rotate fa-spin');\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n\r\n /** HTTP PATCH */\r\n protected HTTP_PATCH<T>(request: IHttpRequest<T>) {\r\n return new Promise<IHttpResponse<void>>(Resolve => {\r\n this.ReleaseSubscription(this._PATCH$);\r\n\r\n this._PATCH$ = this.http.request<T>(new HttpRequest(\"PATCH\", request.url, request.body, { params: request.queryParams, headers: request.headers })).subscribe({\r\n next: (response: HttpEvent<T> | any) => {\r\n if (response.type > 0) {\r\n Resolve({\r\n body: {} as any,\r\n status: response.status,\r\n message: response.statusText,\r\n ok: true\r\n });\r\n }\r\n },\r\n\r\n error: (httpError: HttpErrorResponse) => {\r\n this.ReleaseSubscription(this._PATCH$);\r\n //this.AlertError(httpError, request.alertError);\r\n\r\n Resolve({\r\n body: {} as any,\r\n status: httpError.status,\r\n message: httpError.error?.message || httpError.error,\r\n ok: false\r\n });\r\n },\r\n\r\n complete: () => {\r\n this.ReleaseSubscription(this._PATCH$);\r\n\r\n if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {\r\n //this.alert.Success(request.alertSuccess, 'Updated', 'fa-solid fa-arrows-rotate fa-spin');\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n\r\n /** HTTP DELETE */\r\n protected HTTP_DELETE<T>(request: IHttpRequest<T>) {\r\n return new Promise<IHttpResponse<void>>(Resolve => {\r\n this.ReleaseSubscription(this._DELETE$);\r\n\r\n this._DELETE$ = this.http.request<T>(new HttpRequest(\"DELETE\", request.url, { params: request.queryParams, headers: request.headers })).subscribe({\r\n next: (response: HttpEvent<T> | any) => {\r\n if (response.type > 0) {\r\n Resolve({\r\n body: {} as any,\r\n status: response.status,\r\n message: response.statusText,\r\n ok: true\r\n });\r\n }\r\n },\r\n\r\n error: (httpError: HttpErrorResponse) => {\r\n this.ReleaseSubscription(this._DELETE$);\r\n //this.AlertError(httpError, request.alertError);\r\n\r\n Resolve({\r\n body: {} as any,\r\n status: httpError.status,\r\n message: httpError.error?.message || httpError.error,\r\n ok: false\r\n });\r\n },\r\n\r\n complete: () => {\r\n this.ReleaseSubscription(this._DELETE$);\r\n if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {\r\n //this.alert.Success(request.alertSuccess, 'Deleted', 'fa-regular fa-trash-can');\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n\r\n /** */\r\n private AlertError(httpError: HttpErrorResponse, message?: string): void {\r\n if (httpError.status >= 500) {\r\n if (Tools.IsNotOnlyWhiteSpace(message)) {\r\n //this.alert.Error('', message, 'fa-solid fa-bug', null);\r\n }\r\n }\r\n\r\n else if (httpError.status < 500) {\r\n switch(httpError.status) {\r\n case 400: {\r\n //this.alert.Warning(httpError.error?.message || httpError.error, 'Bad Request', 'fa-regular fa-face-grin-beam-sweat fa-lg');\r\n break;\r\n }\r\n\r\n case 401: {\r\n //this.alert.Warning(httpError.error?.message || httpError.error, 'Unauthorize', 'fa-regular fa-face-rolling-eyes fa-lg');\r\n break;\r\n }\r\n\r\n case 404: {\r\n //this.alert.Warning(httpError.error?.message || httpError.error, 'Not Found', 'fa-regular fa-face-meh fa-lg');\r\n break;\r\n }\r\n\r\n case 405: {\r\n //this.alert.Warning(httpError.error?.message || httpError.error, 'Not Allowed', 'fa-regular fa-face-grimace fa-lg');\r\n break;\r\n }\r\n\r\n case 406: {\r\n //this.alert.Warning(httpError.error?.message || httpError.error, 'Not Acceptable', 'fa-regular fa-face-frown-open fa-lg');\r\n break;\r\n }\r\n\r\n case 409: {\r\n //this.alert.Warning(httpError.error?.message || httpError.error, 'Conflict', 'fa-regular fa-face-dizzy fa-lg');\r\n break;\r\n }\r\n\r\n case 413: {\r\n //this.alert.Warning(httpError.error?.message || httpError.error, 'Too Large', 'fa-regular fa-face-flushed fa-lg');\r\n break;\r\n }\r\n\r\n default: {\r\n if (httpError.status <= 0) {\r\n //this.alert.Warning('Without Connection', 'WEB API DOWN', 'fa-solid fa-plug-circle-xmark fa-lg', null);\r\n }\r\n\r\n else //this.alert.Warning(httpError.error?.message || httpError.error);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"coer-elements-tools.mjs","sources":["../../../projects/coer-elements/tools/lib/tools.ts","../../../projects/coer-elements/tools/lib/coer-alert/coer-alert.component.ts","../../../projects/coer-elements/tools/lib/coer-alert/coer-alert.component.html","../../../projects/coer-elements/tools/lib/breadcrumbs.class.ts","../../../projects/coer-elements/tools/lib/control-value.class.ts","../../../projects/coer-elements/tools/lib/date-time.class.ts","../../../projects/coer-elements/tools/lib/files.class.ts","../../../projects/coer-elements/tools/lib/menu.class.ts","../../../projects/coer-elements/tools/lib/source.class.ts","../../../projects/coer-elements/tools/lib/page.class.ts","../../../projects/coer-elements/tools/lib/screen.class.ts","../../../projects/coer-elements/tools/lib/service.class.ts","../../../projects/coer-elements/tools/coer-elements-tools.ts"],"sourcesContent":["import { signal } from \"@angular/core\";\r\nconst reference_signal = signal<any>({});\r\n\r\nexport const Tools = {\r\n /** Generate a Guid */\r\n GetGuid: (seed: string = 'coer-system') => {\r\n let time = new Date().getTime();\r\n seed = seed.toString().trim()\r\n return seed + `-xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx`.replace(/[xy]/g, (c) => {\r\n const random = (time + Math.random() * 16) % 16 | 0\r\n time = Math.floor(time / 16)\r\n return (c == 'x' ? random : (random & 0x3 | 0x8)).toString(16)\r\n })\r\n },\r\n\r\n\r\n /** Returns true if the value is null or undefined, false otherwise */\r\n IsNull: <T>(value: T | null | undefined): boolean => {\r\n if (value === undefined) return true;\r\n if (value === null) return true;\r\n return false;\r\n },\r\n\r\n\r\n /** Returns true if the value is not null or undefined, false otherwise */\r\n IsNotNull: <T>(value: T | null | undefined): boolean => {\r\n if (value === undefined) return false;\r\n if (value === null) return false;\r\n return true;\r\n },\r\n\r\n\r\n /** Returns true if the value is null or undefined or contains only whitespace, false otherwise */\r\n IsOnlyWhiteSpace: <T>(value: T | null | undefined): boolean => {\r\n if (value === undefined) return true;\r\n if (value === null) return true;\r\n if (typeof value === 'string' && value.trim() === '') return true;\r\n return false;\r\n },\r\n\r\n\r\n /** Returns true if has string value and is not only whitespace, false otherwise */\r\n IsNotOnlyWhiteSpace: <T>(value: T | null | undefined): boolean => {\r\n if (value === undefined) return false;\r\n if (value === null) return false;\r\n if (typeof value === 'string' && value.trim() === '') return false;\r\n return true;\r\n },\r\n\r\n\r\n /** Break reference of a object or array */\r\n BreakReference: <T>(object: T): T => {\r\n if (object === null) return object;\r\n if (typeof object === 'undefined') return object;\r\n if (typeof object === 'string') return object;\r\n if (typeof object === 'number') return object;\r\n if (typeof object === 'boolean') return object;\r\n const OBJECT = JSON.parse(JSON.stringify(object))\r\n return (Array.isArray(OBJECT)) ? [...OBJECT] : { ...OBJECT }\r\n },\r\n\r\n\r\n /** Clean extra whitespaces */\r\n CleanUpBlanks: (text: string | number): string => {\r\n if(Tools.IsNull(text)) return '';\r\n let worlds: string[] = String(text).split(' ');\r\n worlds = worlds.filter(x => x.length > 0);\r\n return worlds.join(' ');\r\n },\r\n\r\n\r\n /** Get properties of an object */\r\n GetObjectProperties: <T>(obj: T | null | undefined): string[] => {\r\n const properties: string[] = [];\r\n if (obj === null) return properties;\r\n if (typeof obj === 'undefined') return properties;\r\n if (typeof obj === 'string') return properties;\r\n if (typeof obj === 'number') return properties;\r\n if (typeof obj === 'boolean') return properties;\r\n for(const property in obj) properties.push(String(property));\r\n return properties;\r\n },\r\n\r\n\r\n /**\r\n * Set an index and merge more arrays of the same type\r\n * */\r\n SetIndex: <T>(array: T[], ...args: T[][]): T[] => {\r\n let index = 0;\r\n for (const arg of args) {\r\n array = Tools.BreakReference(array).concat(Tools.BreakReference(arg));\r\n }\r\n\r\n return Tools.BreakReference(array).map(item => Object.assign({ index: index++ }, item));\r\n },\r\n\r\n\r\n /** Set First Char To Lower */\r\n FirstCharToLower: (text: string | null | undefined): string => {\r\n if (Tools.IsOnlyWhiteSpace(text)) return '';\r\n\r\n const textArray: string[] = [];\r\n for(let i = 0; i < text!.length; i++) {\r\n if(i === 0) textArray.push(text![i].toLowerCase());\r\n else textArray.push(text![i]);\r\n }\r\n\r\n return textArray.join('');\r\n },\r\n\r\n\r\n /** Set First Char To Upper */\r\n FirstCharToUpper: (text: string | null | undefined): string => {\r\n if (Tools.IsOnlyWhiteSpace(text)) return '';\r\n\r\n const textArray: string[] = [];\r\n for(let i = 0; i < text!.length; i++) {\r\n if(i === 0) textArray.push(text![i].toUpperCase());\r\n else textArray.push(text![i]);\r\n }\r\n\r\n return textArray.join('');\r\n },\r\n\r\n\r\n /** Sort an array in ascending order by property */\r\n SortBy: <T>(array: T[], property: string, propertyType: 'string' | 'number' = 'string'): T[] => {\r\n switch (propertyType) {\r\n case 'string': {\r\n return array.sort((x: any, y: any) => {\r\n if (String(x[property]).toUpperCase().trim() < String(y[property]).toUpperCase().trim()) return -1;\r\n else if (String(x[property]).toUpperCase().trim() > String(y[property]).toUpperCase().trim()) return 1;\r\n else return 0;\r\n });\r\n }\r\n\r\n case 'number': {\r\n return array.sort((x: any, y: any) => Number(x[property] - Number(y[property])));\r\n }\r\n }\r\n },\r\n\r\n\r\n /** Sort an array in descending order by property */\r\n SortByDesc: <T>(array: T[], property: string, propertyType: 'string' | 'number' = 'string'): T[] => {\r\n switch (propertyType) {\r\n case 'string': {\r\n return array.sort((x: any, y: any) => {\r\n if (String(x[property]).toUpperCase().trim() < String(y[property]).toUpperCase().trim()) return 1;\r\n else if (String(x[property]).toUpperCase().trim() > String(y[property]).toUpperCase().trim()) return -1;\r\n else return 0;\r\n });\r\n }\r\n\r\n case 'number': {\r\n return array.sort((x: any, y: any) => Number(Number(y[property])) - x[property]);\r\n }\r\n }\r\n },\r\n\r\n\r\n /** Return a string with forman numeric */\r\n GetNumericFormat: (value: string | number | null | undefined, decimals: number = 0): string => {\r\n if (Tools.IsOnlyWhiteSpace(value) || isNaN(Number(value))) {\r\n return '0';\r\n }\r\n\r\n let valueInteger = '';\r\n let valueDecimal = '';\r\n value = value!.toString().replaceAll(' ', '');\r\n\r\n if (value.includes('.') || (decimals > 0)) {\r\n valueInteger = value.includes('.') ? value.split('.')[0] : value;\r\n\r\n if (decimals > 0) {\r\n const PADDING = decimals - valueDecimal.length;\r\n valueDecimal = value.includes('.') ? value.split('.')[1] : '';\r\n for(let i = 0; i < PADDING; i++) valueDecimal += '0';\r\n valueDecimal = valueDecimal.substring(0, decimals);\r\n valueDecimal = `.${valueDecimal}`;\r\n }\r\n }\r\n\r\n else {\r\n valueInteger = value;\r\n }\r\n\r\n let counter = 0;\r\n const VALUE_INTEGER_ARRAY: string[] = [];\r\n for(const char of valueInteger.split('').reverse()) {\r\n if (counter == 3) {\r\n VALUE_INTEGER_ARRAY.push(',');\r\n counter = 0;\r\n }\r\n\r\n VALUE_INTEGER_ARRAY.push(char);\r\n ++counter;\r\n }\r\n\r\n valueInteger = VALUE_INTEGER_ARRAY.reverse().join('');\r\n return `${valueInteger}${valueDecimal}`;\r\n },\r\n\r\n\r\n /** Wait the time indicated */\r\n Sleep: (milliseconds: number = 0, reference: string | null = null) => {\r\n if (Tools.IsNull(reference)) {\r\n return new Promise(Resolve => setTimeout(Resolve, milliseconds));\r\n }\r\n\r\n else return new Promise<void>(Resolve => {\r\n reference = reference!.replaceAll(' ', '_').toLowerCase();\r\n\r\n if (reference_signal().hasOwnProperty(reference)) {\r\n clearInterval(reference_signal()[reference!]);\r\n }\r\n\r\n reference_signal.set(Object.assign(reference_signal(), {\r\n [reference!]: setTimeout(() => {\r\n Resolve();\r\n clearInterval(reference_signal()[reference!]);\r\n const _reference = { ...reference_signal() };\r\n delete _reference[reference!];\r\n reference_signal.set({ ..._reference });\r\n }, milliseconds)\r\n }));\r\n });\r\n }\r\n};","import { Component } from '@angular/core';\r\nimport { Tools } from '../tools';\r\nimport * as bootstrap from 'bootstrap';\r\nimport Swal from 'sweetalert2'\r\n\r\n@Component({\r\n selector: 'coer-alert',\r\n templateUrl: './coer-alert.component.html',\r\n styleUrls: ['./coer-alert.component.scss'],\r\n standalone: true\r\n})\r\nexport class CoerAlert {\r\n\r\n /** */\r\n public Success(message: string | null = null, title: string | null = null, icon: string | null = null, autohide: number | null = 3000): void {\r\n //Title\r\n if (Tools.IsOnlyWhiteSpace(title)) title = 'Success';\r\n const alertSuccessTitle = document.getElementById('alert-success-title')!;\r\n alertSuccessTitle.textContent = title;\r\n\r\n //Icon\r\n icon = this.GetIcon(title!, icon, 'bi-check-circle fa-beat');\r\n const alertSuccessIcon = document.getElementById('alert-success-icon')!;\r\n this.SetIcon(alertSuccessIcon, icon);\r\n\r\n //Message\r\n if (Tools.IsNull(message)) message = '';\r\n const alertSuccessMessage = document.getElementById('alert-success-message')!;\r\n alertSuccessMessage.innerHTML = message!;\r\n\r\n //Toast\r\n const alertSuccess = document.getElementById('alert-success')!;\r\n this.SetAutoHide(alertSuccess, autohide);\r\n\r\n const toast = bootstrap.Toast.getOrCreateInstance(alertSuccess);\r\n toast.show();\r\n }\r\n\r\n\r\n /** */\r\n public Error(message: string | null = null, title: string | null = null, icon: string | null = null, autohide: number | null = 3000): void {\r\n //Title\r\n if (Tools.IsOnlyWhiteSpace(title)) title = 'Error';\r\n const alertErrorTitle = document.getElementById('alert-error-title')!;\r\n alertErrorTitle.textContent = title;\r\n\r\n //Icon\r\n icon = this.GetIcon(title!, icon, 'bi-exclamation-octagon fa-beat');\r\n const alertErrorIcon = document.getElementById('alert-error-icon')!;\r\n this.SetIcon(alertErrorIcon, icon);\r\n\r\n //Message\r\n if (Tools.IsNull(message)) message = '';\r\n const alertErrorBody = document.getElementById('alert-error-message')!;\r\n alertErrorBody.innerHTML = message!;\r\n\r\n //Toast\r\n const alertError = document.getElementById('alert-error')!;\r\n this.SetAutoHide(alertError, autohide);\r\n\r\n const toast = bootstrap.Toast.getOrCreateInstance(alertError);\r\n toast.show();\r\n }\r\n\r\n\r\n /** */\r\n public Info(message: string | null = null, title: string | null = null, icon: string | null = null, autohide: number | null = 3000): void {\r\n //Title\r\n if (Tools.IsOnlyWhiteSpace(title)) title = 'Info';\r\n const alertInfoTitle = document.getElementById('alert-info-title')!;\r\n alertInfoTitle.textContent = title;\r\n\r\n //Icon\r\n icon = this.GetIcon(title!, icon, 'bi-info-circle fa-beat');\r\n const alertInfoIcon = document.getElementById('alert-info-icon')!;\r\n this.SetIcon(alertInfoIcon, icon);\r\n\r\n //Message\r\n if (Tools.IsNull(message)) message = '';\r\n const alertInfoBody = document.getElementById('alert-info-message')!;\r\n alertInfoBody.innerHTML = message!;\r\n\r\n //Toast\r\n const alertInfo = document.getElementById('alert-info')!;\r\n this.SetAutoHide(alertInfo, autohide);\r\n\r\n const toast = bootstrap.Toast.getOrCreateInstance(alertInfo);\r\n toast.show();\r\n }\r\n\r\n\r\n /** */\r\n public Warning(message: string | null = null, title: string | null = null, icon: string | null = null, autohide: number | null = 3000): void {\r\n //Title\r\n if (Tools.IsOnlyWhiteSpace(title)) title = 'Warning';\r\n const alertWarningTitle = document.getElementById('alert-warning-title')!;\r\n alertWarningTitle.textContent = title;\r\n\r\n //Icon\r\n icon = this.GetIcon(title!, icon, 'bi-exclamation-triangle-fill fa-beat');\r\n const alertWarningIcon = document.getElementById('alert-warning-icon')!;\r\n this.SetIcon(alertWarningIcon, icon);\r\n\r\n //Message\r\n if (Tools.IsNull(message)) message = '';\r\n const alertWarningBody = document.getElementById('alert-warning-message')!;\r\n alertWarningBody.innerHTML = message!;\r\n\r\n //Toast\r\n const alertWarning = document.getElementById('alert-warning')!;\r\n this.SetAutoHide(alertWarning, autohide);\r\n\r\n const toast = bootstrap.Toast.getOrCreateInstance(alertWarning);\r\n toast.show();\r\n }\r\n\r\n\r\n /** */\r\n protected Close(alert: 'alert-success' | 'alert-error' | 'alert-info' | 'alert-warning') {\r\n return new Promise<void>(Resolve => {\r\n const element = document.getElementById(alert)!;\r\n const toast = bootstrap.Toast.getOrCreateInstance(element);\r\n toast.hide();\r\n\r\n setTimeout(() => { Resolve() }, 200);\r\n })\r\n }\r\n\r\n\r\n /** */\r\n public Confirm(\r\n message: string = 'Proceed?',\r\n alertType: 'warning' | 'danger' | 'success' | 'info' = 'warning',\r\n icon: string | null = null) {\r\n return new Promise<boolean>(Resolve => {\r\n let color: string;\r\n let iconType: 'warning' | 'error' | 'success' | 'info';\r\n switch(alertType) {\r\n case 'danger': {\r\n if (Tools.IsNull(icon)) icon = 'bi-exclamation-octagon';\r\n iconType = 'error';\r\n color = '#dc3545'; //red\r\n break;\r\n };\r\n\r\n case 'success': {\r\n if (Tools.IsNull(icon)) icon = 'bi-check-circle';\r\n iconType = 'info';\r\n color = '#198754'; //green\r\n break;\r\n };\r\n\r\n case 'info': {\r\n if (Tools.IsNull(icon)) icon = 'bi-info-circle';\r\n iconType = 'error';\r\n color = '#0d6efd'; //blue\r\n break\r\n };\r\n\r\n default: {\r\n if (Tools.IsNull(icon)) icon = 'bi-exclamation-triangle-fill';\r\n iconType = 'warning';\r\n color = '#ffc107'; //yellow\r\n break;\r\n }\r\n }\r\n\r\n switch(icon) {\r\n case 'delete': icon = 'fa-regular fa-trash-can'; break;\r\n }\r\n\r\n Swal.fire({\r\n icon: iconType,\r\n iconColor: 'transparent',\r\n iconHtml: `<i class=\"${icon}\" style=\"color: ${color};\"></i>`,\r\n html: message,\r\n showConfirmButton: true,\r\n confirmButtonText: 'Yes',\r\n confirmButtonColor: color,\r\n focusConfirm: true,\r\n showDenyButton: true,\r\n denyButtonColor: color,\r\n focusDeny: false,\r\n reverseButtons: true,\r\n allowOutsideClick: false,\r\n allowEscapeKey: false,\r\n allowEnterKey: true,\r\n customClass: {\r\n denyButton: 'sweet-alert-button',\r\n confirmButton: 'sweet-alert-button'\r\n }\r\n }).then(({ value }) => setTimeout(() => Resolve(value)));\r\n });\r\n }\r\n\r\n\r\n /** */\r\n private SetIcon(element: HTMLElement, icon: string): void {\r\n for (const item of [...element.classList.value.split(' ')]) {\r\n if (item.length > 0) {\r\n element.classList.remove(item);\r\n element.classList.remove('q');\r\n }\r\n }\r\n\r\n icon = icon.trim();\r\n const hasWhiteSpaces: RegExp = / /;\r\n if (hasWhiteSpaces.test(icon)) {\r\n const classes = icon.split(' ');\r\n for (const icon of classes) element.classList.add(icon);\r\n }\r\n\r\n else element.classList.add(icon);\r\n }\r\n\r\n\r\n /** */\r\n private SetAutoHide(element: HTMLElement, autohide: number | null): void {\r\n element.removeAttribute('data-bs-autohide');\r\n element.removeAttribute('data-bs-delay');\r\n\r\n if (autohide && autohide > 0) {\r\n if (autohide < 1000) autohide = 1000;\r\n element.setAttribute('data-bs-autohide', 'true');\r\n element.setAttribute('data-bs-delay', String(autohide));\r\n }\r\n\r\n else element.setAttribute('data-bs-autohide', 'false');\r\n }\r\n\r\n\r\n /** */\r\n private GetIcon(title: string, icon: string | null, iconDefault: string): string {\r\n if (icon == null || icon == '') {\r\n title = title.replaceAll(' ', '').toUpperCase();\r\n\r\n switch(title) {\r\n case 'ENABLED': return 'fa-solid fa-thumbs-up fa-flip-horizontal';\r\n case 'ACTIVE': return 'fa-solid fa-thumbs-up fa-flip-horizontal';\r\n case 'ACTIVED': return 'fa-solid fa-thumbs-up fa-flip-horizontal';\r\n case 'DISABLE': return 'fa-solid fa-thumbs-down fa-flip-horizontal';\r\n case 'DISABLED': return 'fa-solid fa-thumbs-down fa-flip-horizontal';\r\n case 'DELETE': return 'fa-regular fa-trash-can';\r\n case 'DELETED': return 'fa-regular fa-trash-can';\r\n default: return iconDefault;\r\n }\r\n }\r\n\r\n return icon;\r\n }\r\n}","<aside class=\"toast-container coer-alert\">\r\n <!-- Success -->\r\n <div id=\"alert-success\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-success-icon\"></i>\r\n <strong id=\"alert-success-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-success')\" class=\"btn-close btn-close-white\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-success-message\"></pre>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Error -->\r\n <div id=\"alert-error\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-error-icon\"></i>\r\n <strong id=\"alert-error-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-error')\" class=\"btn-close btn-close-white\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-error-message\"></pre>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Info -->\r\n <div id=\"alert-info\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-info-icon\"></i>\r\n <strong id=\"alert-info-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-info')\" class=\"btn-close btn-close-white\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-info-message\"></pre>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Warning -->\r\n <div id=\"alert-warning\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-warning-icon\"></i>\r\n <strong id=\"alert-warning-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-warning')\" class=\"btn-close\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-warning-message\"></pre>\r\n </div>\r\n </div>\r\n</aside>","import { IAppSource } from \"coer-elements/interfaces\";\r\nimport { Tools } from './tools';\r\n\r\nexport class Breadcrumbs {\r\n\r\n private static readonly storage = 'COER-System';\r\n\r\n /** */\r\n public static Add(page: string, path: string): void {\r\n const breadcrumbs = this.Get();\r\n const paths = breadcrumbs.map(item => item.path);\r\n\r\n if (!paths.includes(path)) {\r\n breadcrumbs.push({ page, path });\r\n this.Save(breadcrumbs);\r\n }\r\n }\r\n\r\n\r\n /** */\r\n public static Get(): IAppSource[] {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n\r\n if (storage) {\r\n storage = JSON.parse(storage);\r\n\r\n if (storage.hasOwnProperty('breadcrumbs')) {\r\n return Tools.BreakReference(storage.breadcrumbs);\r\n }\r\n }\r\n\r\n return [];\r\n }\r\n\r\n\r\n /** */\r\n public static GetFirst(): IAppSource | null {\r\n const breadcrumbs = this.Get();\r\n return (breadcrumbs.length > 0) ? breadcrumbs.shift()! : null;\r\n }\r\n\r\n\r\n /** */\r\n public static Save(breadcrumbs: IAppSource[]): void {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n if (storage) storage = JSON.parse(storage);\r\n storage = Object.assign({}, storage, { breadcrumbs });\r\n sessionStorage.setItem(this.storage, JSON.stringify(storage));\r\n }\r\n\r\n\r\n /** */\r\n public static Remove(path: string): void {\r\n let breadcrumbs = this.Get();\r\n const index = breadcrumbs.findIndex(x => x.path.toLowerCase().trim() === path.toLowerCase().trim());\r\n\r\n if (index >= 0) {\r\n breadcrumbs = Tools.BreakReference(breadcrumbs).splice(0, index + 1);\r\n this.Save(breadcrumbs);\r\n }\r\n }\r\n\r\n\r\n /** */\r\n public static SetLast(page: string, path: string): void {\r\n const breadcrumbs = this.Get();\r\n\r\n if (breadcrumbs.length > 0) {\r\n breadcrumbs[breadcrumbs.length - 1] = { page, path };\r\n this.Save(breadcrumbs);\r\n }\r\n }\r\n\r\n\r\n /** */\r\n public static RemoveLast(): void {\r\n const breadcrumbs = this.Get();\r\n\r\n if (breadcrumbs.length > 0) {\r\n breadcrumbs.pop();\r\n this.Save(breadcrumbs);\r\n }\r\n }\r\n}","import { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { forwardRef } from \"@angular/core\";\r\n\r\nexport const CONTROL_VALUE = <T>(component: T) => {\r\n return {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => component),\r\n multi: true\r\n }\r\n}\r\n\r\n\r\nexport class ControlValue implements ControlValueAccessor {\r\n\r\n //Variables\r\n protected _value: any;\r\n private _isTouched: boolean = false;\r\n protected _UpdateValue!: Function;\r\n private _IsTouched!: Function;\r\n\r\n\r\n public get isTouched() {\r\n return this._isTouched;\r\n }\r\n\r\n\r\n /** */\r\n protected SetValue(value: any): void {\r\n if(typeof this._UpdateValue === 'function') {\r\n this._UpdateValue(value);\r\n }\r\n\r\n this._value = value;\r\n }\r\n\r\n\r\n /** */\r\n public SetTouched(isTouched: boolean): void {\r\n if(typeof this._IsTouched === 'function') {\r\n this._IsTouched(isTouched);\r\n }\r\n\r\n this._isTouched = isTouched;\r\n }\r\n\r\n\r\n /** */\r\n public writeValue(value: any): void {\r\n this._value = value;\r\n }\r\n\r\n\r\n /** */\r\n public registerOnChange(callback: Function): void {\r\n this._UpdateValue = callback;\r\n }\r\n\r\n\r\n /** */\r\n public registerOnTouched(callback: Function): void {\r\n this._IsTouched = callback;\r\n }\r\n\r\n \r\n /** */\r\n public setDisabledState(isDisabled: boolean): void {}\r\n}","import moment from \"moment\";\r\n\r\nexport class DateTime {\r\n /** Get UTC Offset */\r\n public static GetOffset(): number {\r\n return moment().utcOffset();\r\n }\r\n\r\n\r\n /** YYYY-MM-DD HH:mm:ss */\r\n public static GetFormatDB(date: string | Date | moment.Moment): string {\r\n if ((typeof date === 'string')) date = date.replaceAll('/', '-');\r\n return moment(date).format('YYYY-MM-DD HH:mm:ss');\r\n }\r\n\r\n\r\n /** Convert UTC Date to Local Zone */\r\n public static ToLocalZone(date: string | Date | moment.Moment): string {\r\n date = DateTime.GetFormatDB(date);\r\n return moment(date).add(DateTime.GetOffset(), 'minutes').format('YYYY-MM-DD HH:mm:ss');\r\n }\r\n\r\n\r\n /** Convert Local Zone Date to UTC */\r\n public static ToUTC(date: string | Date | moment.Moment): string {\r\n date = DateTime.GetFormatDB(date);\r\n return moment(date).subtract(DateTime.GetOffset(), 'minutes').format('YYYY-MM-DD HH:mm:ss');\r\n }\r\n\r\n\r\n /** DD MMM YYYY */\r\n public static GetDateFormat(date: string | Date | moment.Moment): string {\r\n date = DateTime.GetFormatDB(date);\r\n return moment(date).parseZone().local(true).format('DD MMM YYYY');\r\n }\r\n}","import { Tools } from \"./tools\";\r\nimport * as XLSX from 'xlsx';\r\n\r\nexport class Files {\r\n public static readonly EXCEL_EXTENSIONS: string[] = ['xls', 'xlsx', 'csv'];\r\n\r\n /** Get Extension File */\r\n public static GetExtension(file: File): string | null {\r\n const fileName = file.name;\r\n\r\n if (fileName.includes('.')) {\r\n let worlds = fileName.split('.') as string[];\r\n\r\n if (worlds.length > 0) {\r\n let extension = worlds.pop()!;\r\n extension = extension.trim().toLowerCase();\r\n if (extension.length > 0) return extension;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n\r\n /** Is Excel File */\r\n public static IsExcel(file: File): boolean {\r\n const EXTENSION = Files.GetExtension(file);\r\n\r\n return Tools.IsNotNull(EXTENSION)\r\n ? this.EXCEL_EXTENSIONS.includes(EXTENSION!)\r\n : false;\r\n }\r\n\r\n\r\n /** Read excel file */\r\n public static ReadExcel<T>(file: File) {\r\n return new Promise<{ columns: string[]; rows: T[]; }>(Resolve => {\r\n let columns: string[] = [];\r\n let rows: T[] = [];\r\n\r\n const reader = new FileReader();\r\n reader.readAsArrayBuffer(file);\r\n\r\n reader.onload = () => {\r\n const dataBytes = new Uint8Array(reader.result as any);\r\n\r\n if (dataBytes) {\r\n const workbook = XLSX.read(dataBytes, {});\r\n const sheet = workbook.Sheets[workbook.SheetNames[0]];\r\n let dataSheet: any[] = XLSX.utils.sheet_to_json(sheet, {\r\n header: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']\r\n });\r\n\r\n //Get Headers\r\n for(const column in dataSheet[0]) {\r\n columns.push(Tools.FirstCharToLower(String(dataSheet[0][column]).replaceAll(' ', '')));\r\n }\r\n\r\n //Get Rows\r\n rows = XLSX.utils.sheet_to_json(sheet, { header: columns });\r\n rows.shift();\r\n\r\n rows = rows.map(row => {\r\n const item = Tools.BreakReference<any>(row);\r\n delete item['__rowNum__'];\r\n return item;\r\n });\r\n }\r\n\r\n Resolve({ columns, rows });\r\n }\r\n\r\n reader.onerror = () => { Resolve({ columns, rows }) }\r\n });\r\n }\r\n\r\n\r\n /** Export to excel file */\r\n public static ExportExcel<T>(data: T[], fileName: string = 'coer_report', sheetName: string = 'Sheet1') {\r\n sheetName = Tools.CleanUpBlanks(sheetName);\r\n fileName = Tools.CleanUpBlanks(fileName);\r\n\r\n if(fileName.endsWith('.xls') || fileName.endsWith('.xlsx') || fileName.endsWith('.csv')) {\r\n if (fileName.includes('.xls')) {\r\n fileName = fileName.replaceAll('.xls', '.xlsx');\r\n }\r\n\r\n if (fileName.includes('.csv')) {\r\n fileName = fileName.replaceAll('.csv', '.xlsx');\r\n }\r\n }\r\n\r\n else {\r\n fileName += '.xlsx';\r\n }\r\n\r\n const WORK_SHEET = XLSX.utils.json_to_sheet(data);\r\n const WORK_BOOK = XLSX.utils.book_new();\r\n XLSX.utils.book_append_sheet(WORK_BOOK, WORK_SHEET, sheetName);\r\n XLSX.writeFile(WORK_BOOK, fileName);\r\n }\r\n\r\n\r\n /** Convert file to string base64 */\r\n public static ConvertToBase64(file: File) {\r\n return new Promise<string>(Resolve => {\r\n const reader = new FileReader();\r\n reader.readAsDataURL(file);\r\n\r\n reader.onload = () => {\r\n Resolve(reader.result?.toString() || '');\r\n }\r\n\r\n reader.onerror = () => Resolve('');\r\n });\r\n }\r\n}","import { IMenuOptionSelected } from \"coer-elements/interfaces\";\r\n\r\nexport class Menu {\r\n\r\n private static readonly storage = 'COER-System';\r\n\r\n /** */\r\n public static Set(menu: IMenuOptionSelected): void {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n if (storage) storage = JSON.parse(storage);\r\n storage = Object.assign({}, storage, { menu });\r\n sessionStorage.setItem(this.storage, JSON.stringify(storage));\r\n }\r\n\r\n\r\n /** */\r\n public static Get(): IMenuOptionSelected | null {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n\r\n if (storage) {\r\n storage = JSON.parse(storage);\r\n\r\n if (storage.hasOwnProperty('menu')) {\r\n return storage.menu;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n}","import { inject } from \"@angular/core\";\r\nimport { Router } from '@angular/router';\r\nimport { IAppSource } from \"coer-elements/interfaces\";\r\nimport { Breadcrumbs } from \"./breadcrumbs.class\";\r\nimport { Tools } from \"./tools\";\r\n\r\nexport class Source {\r\n\r\n private static readonly storage = 'COER-System';\r\n\r\n /** */\r\n public static Set(page: string): void {\r\n const ROUTER = inject(Router);\r\n\r\n let path = ROUTER.url;\r\n if (path.includes('?')) path = path.split('?')[0];\r\n\r\n Breadcrumbs.Add(page, path);\r\n\r\n const breadcrumbs = Breadcrumbs.Get();\r\n\r\n if(breadcrumbs.length >= 2) {\r\n breadcrumbs.pop();\r\n const breadcrumb = breadcrumbs.pop()!;\r\n this.Save({ page: breadcrumb.page, path: breadcrumb.path });\r\n }\r\n\r\n else this.Save(null);\r\n }\r\n\r\n\r\n /** */\r\n private static Save(source: IAppSource | null): void {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n if (storage) storage = JSON.parse(storage);\r\n storage = Object.assign({}, storage, { source });\r\n sessionStorage.setItem(this.storage, JSON.stringify(storage));\r\n }\r\n\r\n\r\n /** */\r\n public static Get(): IAppSource | null {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n\r\n if (storage) {\r\n storage = JSON.parse(storage);\r\n\r\n if (storage.hasOwnProperty('source')) {\r\n return storage.source;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n\r\n /** */\r\n public static GetRoot(): IAppSource | null {\r\n const breadcrumbs = Breadcrumbs.Get();\r\n return (breadcrumbs.length > 0) ? breadcrumbs.shift()! : null;\r\n }\r\n\r\n\r\n /** */\r\n public static SetPageResponse<T>(pageResponse: T): void {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n storage = JSON.parse(storage);\r\n storage = Object.assign({}, storage, { pageResponse });\r\n sessionStorage.setItem(this.storage, JSON.stringify(storage));\r\n }\r\n\r\n\r\n /** */\r\n public static GetPageResponse<T>(): T | null {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n\r\n if (storage) {\r\n storage = JSON.parse(storage);\r\n\r\n if (storage.hasOwnProperty('pageResponse')) {\r\n return Tools.BreakReference(storage.pageResponse);\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n\r\n /** */\r\n public static ClearPageResponse(): void {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n storage = JSON.parse(storage);\r\n\r\n if (storage.hasOwnProperty('pageResponse')) {\r\n delete storage.pageResponse;\r\n }\r\n\r\n storage = Object.assign({}, storage);\r\n sessionStorage.setItem(this.storage, JSON.stringify(storage));\r\n }\r\n\r\n\r\n /** */\r\n public static Reset(): void {\r\n sessionStorage.removeItem(this.storage);\r\n }\r\n}","import { ActivatedRoute, Router } from '@angular/router';\r\nimport { AfterViewInit, Component, Inject, inject, OnDestroy } from '@angular/core';\r\nimport { IAppSource, IBreadcrumb, IGoBack } from 'coer-elements/interfaces';\r\nimport { CoerAlert } from './coer-alert/coer-alert.component';\r\nimport { Breadcrumbs } from './breadcrumbs.class';\r\nimport { Source } from './source.class';\r\nimport { Tools } from './tools';\r\n\r\n@Component({ template: '' })\r\nexport class Page implements AfterViewInit, OnDestroy {\r\n\r\n //Injection\r\n protected readonly alert = inject(CoerAlert);\r\n protected readonly router = inject(Router);\r\n private readonly activatedRoute = inject(ActivatedRoute);\r\n\r\n /** */\r\n protected isUpdate: boolean = false;\r\n\r\n /** */\r\n protected isLoading: boolean = false;\r\n\r\n /** */\r\n protected isReadyPage: boolean = false;\r\n\r\n /** */\r\n protected enableAnimations: boolean = false;\r\n\r\n /** */\r\n protected routeParams: any;\r\n\r\n /** */\r\n protected queryParams: any;\r\n\r\n /** */\r\n protected breadcrumbs: IBreadcrumb[] = [];\r\n\r\n /** */\r\n protected pageResponse: any = null;\r\n\r\n /** */\r\n protected goBack: IGoBack = { show: false };\r\n\r\n //Private Variables\r\n private _page: string = '';\r\n private _source: IAppSource | null = null;\r\n private _preventDestroy: boolean = false;\r\n\r\n\r\n constructor(@Inject(String) page: string) {\r\n this.SetPageName(page);\r\n this.SetSource();\r\n this.GetSource();\r\n this.GetNavigation();\r\n this.SetGoBack();\r\n this.GetPageResponse();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.routeParams = this.activatedRoute.snapshot.params;\r\n this.queryParams = this.activatedRoute.snapshot.queryParams;\r\n\r\n setTimeout(() => {\r\n this.isReadyPage = true;\r\n this.RunPage();\r\n setTimeout(() => { this.enableAnimations = true }, 1000);\r\n });\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n if (!this._preventDestroy) Source.ClearPageResponse();\r\n }\r\n\r\n /** Main method. Starts after ngAfterViewInit() */\r\n protected RunPage(): void {};\r\n\r\n\r\n /** Rename the last breadcrumb and update the url id */\r\n protected SetPageName(name: string, id: string | number | null = null): void {\r\n this._page = name;\r\n\r\n let path = this.router.url;\r\n if (path.includes('?')) path = path.split('?')[0];\r\n\r\n if (id) {\r\n const PATH_ARRAY = path.split('/');\r\n const PATH_ID = Tools.BreakReference(PATH_ARRAY).pop();\r\n if (PATH_ID) {\r\n PATH_ARRAY[PATH_ARRAY.length - 1] = String(id);\r\n path = PATH_ARRAY.join('/');\r\n }\r\n }\r\n\r\n if (this.breadcrumbs.length > 0) {\r\n this.breadcrumbs[this.breadcrumbs.length - 1].page = name;\r\n this.breadcrumbs[this.breadcrumbs.length - 1].path = path;\r\n Breadcrumbs.SetLast(name, path);\r\n }\r\n\r\n this.router.navigateByUrl(path)\r\n }\r\n\r\n\r\n /** */\r\n private SetSource(): void {\r\n Source.Set(this._page);\r\n }\r\n\r\n\r\n /** */\r\n private GetSource(): void {\r\n this._source = Source.Get();\r\n }\r\n\r\n\r\n /** */\r\n protected GetPageResponse(): void {\r\n this.pageResponse = Source.GetPageResponse();\r\n }\r\n\r\n\r\n /** */\r\n private GetNavigation(): void {\r\n if (this._source) {\r\n this.breadcrumbs = Breadcrumbs.Get().map(item => Object.assign({\r\n page: item.page,\r\n path: item.path,\r\n click: this.GoBack(item.path)\r\n }));\r\n }\r\n\r\n else this.breadcrumbs = [{ page: this._page }];\r\n }\r\n\r\n\r\n /** */\r\n private SetGoBack(): void {\r\n if (this._source) {\r\n this.goBack = {\r\n show: true,\r\n path: this._source.path,\r\n click: this.GoBack()\r\n };\r\n }\r\n }\r\n\r\n\r\n /** */\r\n private GoBack = (path?: string) => (() => {\r\n if (path) Breadcrumbs.Remove(path);\r\n else Breadcrumbs.RemoveLast();\r\n });\r\n\r\n\r\n /** Navigate to previous page */\r\n protected GoToSource<T>(pageResponse: T | null = null): void {\r\n if(this._source) {\r\n Breadcrumbs.RemoveLast();\r\n this.SetPageResponse(pageResponse);\r\n Tools.Sleep().then(_ => this.router.navigateByUrl(this._source!.path));\r\n }\r\n };\r\n\r\n\r\n /** */\r\n protected SetPageResponse<T>(pageResponse: T | null = null): void {\r\n if (Tools.IsNotNull(pageResponse)) {\r\n this._preventDestroy = true;\r\n Source.SetPageResponse(pageResponse);\r\n }\r\n };\r\n\r\n\r\n /** */\r\n protected ReloadPage(): void {\r\n Breadcrumbs.RemoveLast();\r\n setTimeout(() => window.location.reload());\r\n }\r\n\r\n\r\n /** */\r\n protected Log(value: any, log: string | null = null): void {\r\n if (Tools.IsNotNull(log)) console.log({ log, value });\r\n else console.log(value);\r\n }\r\n}","\r\nimport { IScreenSize } from \"coer-elements/interfaces\";\r\nimport { Observable } from \"rxjs\";\r\n\r\nexport class Screen {\r\n\r\n public static get WINDOW_WIDTH(): number {\r\n return window.innerWidth;\r\n }\r\n\r\n\r\n public static get WINDOW_HEIGHT(): number {\r\n return window.innerHeight;\r\n }\r\n\r\n\r\n public static get DEVICE_WIDTH(): number {\r\n return window.screen.width;\r\n }\r\n\r\n\r\n public static get DEVICE_HEIGHT(): number {\r\n return window.screen.height;\r\n }\r\n\r\n\r\n public static get BREAKPOINT(): 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl' {\r\n if (window.innerWidth < 576) return 'xs';\r\n else if (window.innerWidth >= 576 && window.innerWidth < 768) return 'sm';\r\n else if (window.innerWidth >= 768 && window.innerWidth < 992) return 'md';\r\n else if (window.innerWidth >= 992 && window.innerWidth < 1200) return 'lg';\r\n else if (window.innerWidth >= 1200 && window.innerWidth < 1400) return 'xl';\r\n else return 'xxl';\r\n }\r\n\r\n\r\n /** */\r\n public static Resize = new Observable<IScreenSize>(subscriber => {\r\n window.addEventListener(\"load\", () => {\r\n window.dispatchEvent(new Event('resize'));\r\n });\r\n\r\n window.onresize = () => {\r\n subscriber.next({\r\n width: this.WINDOW_WIDTH,\r\n height: this.WINDOW_HEIGHT,\r\n breakpoin: this.BREAKPOINT\r\n });\r\n }\r\n });\r\n\r\n\r\n /** */\r\n public static BackButtonBrowser = new Observable<string>(subscriber => {\r\n window.addEventListener('popstate', popStateEvent => {\r\n if (popStateEvent.state && popStateEvent.target) {\r\n subscriber.next((popStateEvent.target as any).location.href);\r\n }\r\n });\r\n });\r\n}","import { inject } from \"@angular/core\";\r\nimport { HttpClient, HttpErrorResponse, HttpEvent, HttpRequest } from \"@angular/common/http\";\r\nimport { CoerAlert } from \"./coer-alert/coer-alert.component\";\r\nimport { IHttpRequest, IHttpResponse } from \"coer-elements/interfaces\";\r\nimport { Tools } from \"./tools\";\r\nimport { Subscription } from \"rxjs\";\r\n\r\nexport class Service {\r\n\r\n //Injections\r\n protected readonly alert = inject(CoerAlert);\r\n protected readonly http = inject(HttpClient);\r\n\r\n protected httpCode = {\r\n Ok: 200,\r\n Created: 201,\r\n NoContent: 204,\r\n BadRequest: 400,\r\n Unauthorize: 401,\r\n NotFound: 404,\r\n NotAllowed: 405,\r\n NotAcceptable: 406,\r\n Conflict: 409,\r\n PayloadTooLarge: 413,\r\n InnerError: 500\r\n }\r\n\r\n\r\n //Subscriptions\r\n private _GET$!: Subscription;\r\n private _POST$!: Subscription;\r\n private _PUT$!: Subscription;\r\n private _PATCH$!: Subscription;\r\n private _DELETE$!: Subscription;\r\n\r\n\r\n /** */\r\n private ReleaseSubscription(subscription: Subscription): void {\r\n if (subscription && !subscription.closed) subscription.unsubscribe();\r\n }\r\n\r\n\r\n /** HTTP GET */\r\n protected HTTP_GET<T>(request: IHttpRequest<T>) {\r\n return new Promise<IHttpResponse<T>>(Resolve => {\r\n this.ReleaseSubscription(this._GET$);\r\n\r\n this._GET$ = this.http.request<T>(new HttpRequest(\"GET\", request.url, { params: request.queryParams, headers: request.headers })).subscribe({\r\n next: (response: HttpEvent<T> | any) => {\r\n if (response.type > 0) {\r\n Resolve({\r\n body: Tools.BreakReference<T>(response.body),\r\n status: response.status,\r\n message: response.statusText,\r\n ok: true\r\n });\r\n }\r\n },\r\n\r\n error: (httpError: HttpErrorResponse) => {\r\n this.ReleaseSubscription(this._GET$);\r\n this.AlertError(httpError, request.alertError);\r\n\r\n Resolve({\r\n body: {} as any,\r\n status: httpError.status,\r\n message: httpError.error?.message || httpError.error,\r\n ok: false\r\n });\r\n },\r\n\r\n complete: () => {\r\n this.ReleaseSubscription(this._GET$);\r\n\r\n if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {\r\n this.alert.Success(request.alertSuccess);\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n\r\n /** HTTP POST */\r\n protected HTTP_POST<T>(request: IHttpRequest<T>) {\r\n return new Promise<IHttpResponse<T>>(Resolve => {\r\n this.ReleaseSubscription(this._POST$);\r\n\r\n this._POST$ = this.http.request<T>(new HttpRequest(\"POST\", request.url, request.body, { params: request.queryParams, headers: request.headers })).subscribe({\r\n next: (response: HttpEvent<T> | any) => {\r\n if (response.type > 0) {\r\n Resolve({\r\n body: Tools.BreakReference<T>(response.body),\r\n status: response.status,\r\n message: response.statusText,\r\n ok: true\r\n });\r\n }\r\n },\r\n\r\n error: (httpError: HttpErrorResponse) => {\r\n this.ReleaseSubscription(this._POST$);\r\n this.AlertError(httpError, request.alertError);\r\n\r\n Resolve({\r\n body: {} as any,\r\n status: httpError.status,\r\n message: httpError.error?.message || httpError.error,\r\n ok: false\r\n });\r\n },\r\n\r\n complete: () => {\r\n this.ReleaseSubscription(this._POST$);\r\n\r\n if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {\r\n this.alert.Success(request.alertSuccess);\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n\r\n /** HTTP PUT */\r\n protected HTTP_PUT<T>(request: IHttpRequest<T>) {\r\n return new Promise<IHttpResponse<void>>(Resolve => {\r\n this.ReleaseSubscription(this._PUT$);\r\n\r\n this._PUT$ = this.http.request<T>(new HttpRequest(\"PUT\", request.url, request.body, { params: request.queryParams, headers: request.headers })).subscribe({\r\n next: (response: HttpEvent<T> | any) => {\r\n if (response.type > 0) {\r\n Resolve({\r\n body: {} as any,\r\n status: response.status,\r\n message: response.statusText,\r\n ok: true\r\n });\r\n }\r\n },\r\n\r\n error: (httpError: HttpErrorResponse) => {\r\n this.ReleaseSubscription(this._PUT$);\r\n this.AlertError(httpError, request.alertError);\r\n\r\n Resolve({\r\n body: {} as any,\r\n status: httpError.status,\r\n message: httpError.error?.message || httpError.error,\r\n ok: false\r\n });\r\n },\r\n\r\n complete: () => {\r\n this.ReleaseSubscription(this._PUT$);\r\n\r\n if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {\r\n this.alert.Success(request.alertSuccess, 'Updated', 'fa-solid fa-arrows-rotate fa-spin');\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n\r\n /** HTTP PATCH */\r\n protected HTTP_PATCH<T>(request: IHttpRequest<T>) {\r\n return new Promise<IHttpResponse<void>>(Resolve => {\r\n this.ReleaseSubscription(this._PATCH$);\r\n\r\n this._PATCH$ = this.http.request<T>(new HttpRequest(\"PATCH\", request.url, request.body, { params: request.queryParams, headers: request.headers })).subscribe({\r\n next: (response: HttpEvent<T> | any) => {\r\n if (response.type > 0) {\r\n Resolve({\r\n body: {} as any,\r\n status: response.status,\r\n message: response.statusText,\r\n ok: true\r\n });\r\n }\r\n },\r\n\r\n error: (httpError: HttpErrorResponse) => {\r\n this.ReleaseSubscription(this._PATCH$);\r\n this.AlertError(httpError, request.alertError);\r\n\r\n Resolve({\r\n body: {} as any,\r\n status: httpError.status,\r\n message: httpError.error?.message || httpError.error,\r\n ok: false\r\n });\r\n },\r\n\r\n complete: () => {\r\n this.ReleaseSubscription(this._PATCH$);\r\n\r\n if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {\r\n this.alert.Success(request.alertSuccess, 'Updated', 'fa-solid fa-arrows-rotate fa-spin');\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n\r\n /** HTTP DELETE */\r\n protected HTTP_DELETE<T>(request: IHttpRequest<T>) {\r\n return new Promise<IHttpResponse<void>>(Resolve => {\r\n this.ReleaseSubscription(this._DELETE$);\r\n\r\n this._DELETE$ = this.http.request<T>(new HttpRequest(\"DELETE\", request.url, { params: request.queryParams, headers: request.headers })).subscribe({\r\n next: (response: HttpEvent<T> | any) => {\r\n if (response.type > 0) {\r\n Resolve({\r\n body: {} as any,\r\n status: response.status,\r\n message: response.statusText,\r\n ok: true\r\n });\r\n }\r\n },\r\n\r\n error: (httpError: HttpErrorResponse) => {\r\n this.ReleaseSubscription(this._DELETE$);\r\n this.AlertError(httpError, request.alertError);\r\n\r\n Resolve({\r\n body: {} as any,\r\n status: httpError.status,\r\n message: httpError.error?.message || httpError.error,\r\n ok: false\r\n });\r\n },\r\n\r\n complete: () => {\r\n this.ReleaseSubscription(this._DELETE$);\r\n if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {\r\n this.alert.Success(request.alertSuccess, 'Deleted', 'fa-regular fa-trash-can');\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n\r\n /** */\r\n private AlertError(httpError: HttpErrorResponse, message?: string): void {\r\n if (httpError.status >= 500) {\r\n if (Tools.IsNotOnlyWhiteSpace(message)) {\r\n this.alert.Error('', message, 'fa-solid fa-bug', null);\r\n }\r\n }\r\n\r\n else if (httpError.status < 500) {\r\n switch(httpError.status) {\r\n case 400: {\r\n this.alert.Warning(httpError.error?.message || httpError.error, 'Bad Request', 'fa-regular fa-face-grin-beam-sweat fa-lg');\r\n break;\r\n }\r\n\r\n case 401: {\r\n this.alert.Warning(httpError.error?.message || httpError.error, 'Unauthorize', 'fa-regular fa-face-rolling-eyes fa-lg');\r\n break;\r\n }\r\n\r\n case 404: {\r\n this.alert.Warning(httpError.error?.message || httpError.error, 'Not Found', 'fa-regular fa-face-meh fa-lg');\r\n break;\r\n }\r\n\r\n case 405: {\r\n this.alert.Warning(httpError.error?.message || httpError.error, 'Not Allowed', 'fa-regular fa-face-grimace fa-lg');\r\n break;\r\n }\r\n\r\n case 406: {\r\n this.alert.Warning(httpError.error?.message || httpError.error, 'Not Acceptable', 'fa-regular fa-face-frown-open fa-lg');\r\n break;\r\n }\r\n\r\n case 409: {\r\n this.alert.Warning(httpError.error?.message || httpError.error, 'Conflict', 'fa-regular fa-face-dizzy fa-lg');\r\n break;\r\n }\r\n\r\n case 413: {\r\n this.alert.Warning(httpError.error?.message || httpError.error, 'Too Large', 'fa-regular fa-face-flushed fa-lg');\r\n break;\r\n }\r\n\r\n default: {\r\n if (httpError.status <= 0) {\r\n this.alert.Warning('Without Connection', 'WEB API DOWN', 'fa-solid fa-plug-circle-xmark fa-lg', null);\r\n }\r\n\r\n else this.alert.Warning(httpError.error?.message || httpError.error);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "coer-elements",
3
- "version": "0.0.24",
3
+ "version": "0.0.26",
4
4
  "author": "Christian Omar Escamilla Rodríguez",
5
5
  "keywords": [
6
6
  "coer",
@@ -19,5 +19,5 @@ export declare class CoerAlert {
19
19
  /** */
20
20
  private GetIcon;
21
21
  static ɵfac: i0.ɵɵFactoryDeclaration<CoerAlert, never>;
22
- static ɵcmp: i0.ɵɵComponentDeclaration<CoerAlert, "coer-alert", never, {}, {}, never, never, false, never>;
22
+ static ɵcmp: i0.ɵɵComponentDeclaration<CoerAlert, "coer-alert", never, {}, {}, never, never, true, never>;
23
23
  }