{"version":3,"sources":["node_modules/@auth0/angular-jwt/fesm2015/auth0-angular-jwt.js","client/app/modules/shared/dto-models/signatureType.enum.ts","client/app/modules/shared/models/declarationType.enum.ts","client/app/modules/e-permits/permit-request/permit-request-form/permit-request-signature.utils.ts","node_modules/@almothafar/angular-signature-pad/node_modules/signature_pad/dist/signature_pad.js","node_modules/@almothafar/angular-signature-pad/fesm2020/almothafar-angular-signature-pad.mjs","client/app/modules/shared/signature-dialog/signature-dialog.component.ts","client/app/modules/shared/signature-dialog/signature-dialog.component.html"],"sourcesContent":["import * as i0 from '@angular/core';\nimport { InjectionToken, Injectable, Inject, NgModule, Optional, SkipSelf } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { map, mergeMap } from 'rxjs/operators';\nimport { defer, of } from 'rxjs';\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\nconst JWT_OPTIONS = new InjectionToken('JWT_OPTIONS');\n\n// tslint:disable:no-bitwise\nclass JwtHelperService {\n constructor(config = null) {\n this.tokenGetter = config && config.tokenGetter || function () {};\n }\n urlBase64Decode(str) {\n let output = str.replace(/-/g, '+').replace(/_/g, '/');\n switch (output.length % 4) {\n case 0:\n {\n break;\n }\n case 2:\n {\n output += '==';\n break;\n }\n case 3:\n {\n output += '=';\n break;\n }\n default:\n {\n throw new Error('Illegal base64url string!');\n }\n }\n return this.b64DecodeUnicode(output);\n }\n // credits for decoder goes to https://github.com/atk\n b64decode(str) {\n const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n let output = '';\n str = String(str).replace(/=+$/, '');\n if (str.length % 4 === 1) {\n throw new Error(`'atob' failed: The string to be decoded is not correctly encoded.`);\n }\n for (\n // initialize result and counters\n let bc = 0, bs, buffer, idx = 0;\n // get next character\n buffer = str.charAt(idx++);\n // character found in table? initialize bit storage and add its ascii value;\n ~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer,\n // and if not first of each 4 characters,\n // convert the first 8 bits to one ascii character\n bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0) {\n // try to find character in table (0-63, not found => -1)\n buffer = chars.indexOf(buffer);\n }\n return output;\n }\n b64DecodeUnicode(str) {\n return decodeURIComponent(Array.prototype.map.call(this.b64decode(str), c => {\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\n }).join(''));\n }\n decodeToken(token = this.tokenGetter()) {\n if (token instanceof Promise) {\n return token.then(t => this._decodeToken(t));\n }\n return this._decodeToken(token);\n }\n _decodeToken(token) {\n if (!token || token === '') {\n return null;\n }\n const parts = token.split('.');\n if (parts.length !== 3) {\n throw new Error(`The inspected token doesn't appear to be a JWT. Check to make sure it has three parts and see https://jwt.io for more.`);\n }\n const decoded = this.urlBase64Decode(parts[1]);\n if (!decoded) {\n throw new Error('Cannot decode the token.');\n }\n return JSON.parse(decoded);\n }\n getTokenExpirationDate(token = this.tokenGetter()) {\n if (token instanceof Promise) {\n return token.then(t => this._getTokenExpirationDate(t));\n }\n return this._getTokenExpirationDate(token);\n }\n _getTokenExpirationDate(token) {\n let decoded;\n decoded = this.decodeToken(token);\n if (!decoded || !decoded.hasOwnProperty('exp')) {\n return null;\n }\n const date = new Date(0);\n date.setUTCSeconds(decoded.exp);\n return date;\n }\n isTokenExpired(token = this.tokenGetter(), offsetSeconds) {\n if (token instanceof Promise) {\n return token.then(t => this._isTokenExpired(t, offsetSeconds));\n }\n return this._isTokenExpired(token, offsetSeconds);\n }\n _isTokenExpired(token, offsetSeconds) {\n if (!token || token === '') {\n return true;\n }\n const date = this.getTokenExpirationDate(token);\n offsetSeconds = offsetSeconds || 0;\n if (date === null) {\n return false;\n }\n return !(date.valueOf() > new Date().valueOf() + offsetSeconds * 1000);\n }\n getAuthScheme(authScheme, request) {\n if (typeof authScheme === 'function') {\n return authScheme(request);\n }\n return authScheme;\n }\n}\nJwtHelperService.ɵfac = function JwtHelperService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || JwtHelperService)(i0.ɵɵinject(JWT_OPTIONS));\n};\nJwtHelperService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: JwtHelperService,\n factory: JwtHelperService.ɵfac\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(JwtHelperService, [{\n type: Injectable\n }], function () {\n return [{\n type: undefined,\n decorators: [{\n type: Inject,\n args: [JWT_OPTIONS]\n }]\n }];\n }, null);\n})();\nconst fromPromiseOrValue = input => {\n if (input instanceof Promise) {\n return defer(() => input);\n }\n return of(input);\n};\nclass JwtInterceptor {\n constructor(config, jwtHelper, document) {\n this.jwtHelper = jwtHelper;\n this.document = document;\n this.standardPorts = ['80', '443'];\n this.tokenGetter = config.tokenGetter;\n this.headerName = config.headerName || 'Authorization';\n this.authScheme = config.authScheme || config.authScheme === '' ? config.authScheme : 'Bearer ';\n this.allowedDomains = config.allowedDomains || [];\n this.disallowedRoutes = config.disallowedRoutes || [];\n this.throwNoTokenError = config.throwNoTokenError || false;\n this.skipWhenExpired = config.skipWhenExpired;\n }\n isAllowedDomain(request) {\n const requestUrl = new URL(request.url, this.document.location.origin);\n // If the host equals the current window origin,\n // the domain is allowed by default\n if (requestUrl.host === this.document.location.host) {\n return true;\n }\n // If not the current domain, check the allowed list\n const hostName = `${requestUrl.hostname}${requestUrl.port && !this.standardPorts.includes(requestUrl.port) ? ':' + requestUrl.port : ''}`;\n return this.allowedDomains.findIndex(domain => typeof domain === 'string' ? domain === hostName : domain instanceof RegExp ? domain.test(hostName) : false) > -1;\n }\n isDisallowedRoute(request) {\n const requestedUrl = new URL(request.url, this.document.location.origin);\n return this.disallowedRoutes.findIndex(route => {\n if (typeof route === 'string') {\n const parsedRoute = new URL(route, this.document.location.origin);\n return parsedRoute.hostname === requestedUrl.hostname && parsedRoute.pathname === requestedUrl.pathname;\n }\n if (route instanceof RegExp) {\n return route.test(request.url);\n }\n return false;\n }) > -1;\n }\n handleInterception(token, request, next) {\n const authScheme = this.jwtHelper.getAuthScheme(this.authScheme, request);\n if (!token && this.throwNoTokenError) {\n throw new Error('Could not get token from tokenGetter function.');\n }\n let tokenIsExpired = of(false);\n if (this.skipWhenExpired) {\n tokenIsExpired = token ? fromPromiseOrValue(this.jwtHelper.isTokenExpired(token)) : of(true);\n }\n if (token) {\n return tokenIsExpired.pipe(map(isExpired => isExpired && this.skipWhenExpired ? request.clone() : request.clone({\n setHeaders: {\n [this.headerName]: `${authScheme}${token}`\n }\n })), mergeMap(innerRequest => next.handle(innerRequest)));\n }\n return next.handle(request);\n }\n intercept(request, next) {\n if (!this.isAllowedDomain(request) || this.isDisallowedRoute(request)) {\n return next.handle(request);\n }\n const token = this.tokenGetter(request);\n return fromPromiseOrValue(token).pipe(mergeMap(asyncToken => {\n return this.handleInterception(asyncToken, request, next);\n }));\n }\n}\nJwtInterceptor.ɵfac = function JwtInterceptor_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || JwtInterceptor)(i0.ɵɵinject(JWT_OPTIONS), i0.ɵɵinject(JwtHelperService), i0.ɵɵinject(DOCUMENT));\n};\nJwtInterceptor.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: JwtInterceptor,\n factory: JwtInterceptor.ɵfac\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(JwtInterceptor, [{\n type: Injectable\n }], function () {\n return [{\n type: undefined,\n decorators: [{\n type: Inject,\n args: [JWT_OPTIONS]\n }]\n }, {\n type: JwtHelperService\n }, {\n type: Document,\n decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }]\n }];\n }, null);\n})();\nclass JwtModule {\n constructor(parentModule) {\n if (parentModule) {\n throw new Error(`JwtModule is already loaded. It should only be imported in your application's main module.`);\n }\n }\n static forRoot(options) {\n return {\n ngModule: JwtModule,\n providers: [{\n provide: HTTP_INTERCEPTORS,\n useClass: JwtInterceptor,\n multi: true\n }, options.jwtOptionsProvider || {\n provide: JWT_OPTIONS,\n useValue: options.config\n }, JwtHelperService]\n };\n }\n}\nJwtModule.ɵfac = function JwtModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || JwtModule)(i0.ɵɵinject(JwtModule, 12));\n};\nJwtModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: JwtModule\n});\nJwtModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(JwtModule, [{\n type: NgModule\n }], function () {\n return [{\n type: JwtModule,\n decorators: [{\n type: Optional\n }, {\n type: SkipSelf\n }]\n }];\n }, null);\n})();\n\n/*\n * Public API Surface of angular-jwt\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { JWT_OPTIONS, JwtHelperService, JwtInterceptor, JwtModule };\n","export enum SignatureTypeEnum {\n Issuer = 1,\n Closer,\n PiC,\n PiCAcceptance,\n PiCHandback,\n}\n","export enum DeclarationTypeEnum {\n AuthorisationText = 1,\n PiCAcceptanceText,\n TeamAcceptanceText,\n SuspensionText,\n ResumptionText,\n HandBackText,\n ClosureText,\n}\n","import { Guid } from \"../../../../../guid\";\nimport { SignatureDTO } from \"../../../shared/dto-models/signatureDTO.model\";\nimport { SignatureTypeEnum } from \"../../../shared/dto-models/signatureType.enum\";\nimport { DeclarationTypeEnum } from \"../../../shared/models/declarationType.enum\";\nimport { SignatureService } from \"../../../shared/signature-dialog/signature.service.interface\";\nimport { PermitRequestFormComponent } from \"./permit-request-form.component\";\n\nexport async function buildPiCSignature(\n context: PermitRequestFormComponent,\n userLanguage: string,\n isHandBack: boolean,\n personId?: number,\n personName?: string,\n companyName?: string\n\n): Promise { \n const baseSignature = createBaseSignature(context, userLanguage);\n\n baseSignature.personId = personId || context.permitRequest.competentPersonId;\n baseSignature.personName = personName || context.permitRequest.competentPersonName;\n baseSignature.companyName = companyName || context.permitRequest.companyName;\n \n const signatureDetails = await getSignatureDetails(context, userLanguage, isHandBack);\n\n return {\n ...baseSignature,\n ...signatureDetails,\n };\n}\n\nexport async function fetchSignatures(context: PermitRequestFormComponent) {\n const existingSignatures = getSignaturesFromPermit(context);\n return setupSignatures(context, existingSignatures);\n}\n\nexport function saveSignatures(\n context: PermitRequestFormComponent,\n signatures: SignatureDTO[]\n) {\n context.permitRequestService.saveSignatures(signatures).subscribe(\n (response) => response,\n (error) => error\n );\n}\n\nexport async function getLanguageSpecificDeclaration(\n context: SignatureService,\n language: string,\n permitAdminId: number,\n declarationType: number\n): Promise {\n return new Promise((resolve, reject) => {\n context.getDeclarationText(language, permitAdminId, declarationType).subscribe(\n (response) => resolve(response),\n (error) => reject(error)\n );\n });\n}\n\nasync function getSignatureDetails(\n context: PermitRequestFormComponent,\n userLanguage: string,\n isHandBack: boolean\n): Promise> {\n \n const signatureTypeId = isHandBack ? SignatureTypeEnum.PiCHandback : SignatureTypeEnum.PiCAcceptance;\n const declarationTypeId = isHandBack ? DeclarationTypeEnum.HandBackText : DeclarationTypeEnum.PiCAcceptanceText;\n\n const declarationText = await getLanguageSpecificDeclaration(\n context.permitRequestService,\n userLanguage,\n context.permitAdmin.id,\n declarationTypeId\n );\n\n return { signatureTypeId, declarationTypeId, declarationText };\n}\n\nfunction getSignaturesFromPermit(context: PermitRequestFormComponent): SignatureDTO[] {\n if (context.canClosePermit) {\n return filterSignaturesByType(context, [\n SignatureTypeEnum.Closer,\n SignatureTypeEnum.PiCHandback,\n ]);\n } else if (context.canIssuePermit) {\n return filterSignaturesByType(context, [\n SignatureTypeEnum.Issuer,\n SignatureTypeEnum.PiCAcceptance,\n ]);\n }\n return null;\n}\n\nasync function setupSignatures(\n context: PermitRequestFormComponent,\n existingSignatures: SignatureDTO[]\n): Promise {\n const userLanguage = context.regionalSettings?.language || \"en-GB\";\n\n if (existingSignatures) {\n await renewDeclarations(existingSignatures, context);\n return existingSignatures;\n }\n\n const isHandBack = context.canClosePermit;\n const picSignature = await buildPiCSignature(context, userLanguage, isHandBack);\n const primarySignature = buildPrimarySignature(context, userLanguage);\n\n return [primarySignature, picSignature];\n}\n\nfunction createBaseSignature(\n context: PermitRequestFormComponent,\n userLanguage: string\n): SignatureDTO {\n return {\n id: Guid.newGuid(),\n personId: null,\n personName: null,\n companyName: null,\n signatureTypeId: null,\n declarationText: null,\n declarationTypeId: null,\n signatureDate: null,\n image: null,\n imageType: \"data:image/svg+xml;base64\",\n token: null,\n objectId: context.permitRequest.id,\n requestedById: context.loggedInPerson.id,\n language: userLanguage,\n };\n}\n\nasync function renewDeclarations(\n existingSignatures: SignatureDTO[],\n context: PermitRequestFormComponent\n) {\n const permitAdminId = context.permitAdmin.id;\n for (const signature of existingSignatures) {\n if (signature.signatureDate === null) {\n signature.declarationText = await getLanguageSpecificDeclaration(\n context.permitRequestService,\n signature.language,\n permitAdminId,\n signature.declarationTypeId\n );\n }\n }\n}\n\n\nfunction filterSignaturesByType(\n context: PermitRequestFormComponent,\n signatureTypes: SignatureTypeEnum[]\n): SignatureDTO[] {\n const signatures = context.permitRequest.signatures?.filter(signature =>\n signatureTypes.includes(signature.signatureTypeId)\n );\n return signatures?.length ? signatures : null;\n}\n\nfunction buildPrimarySignature(\n context: PermitRequestFormComponent,\n userLanguage: string\n): SignatureDTO {\n if (context.canIssuePermit) {\n return buildSignature(context, userLanguage, DeclarationTypeEnum.AuthorisationText, SignatureTypeEnum.Issuer, context.permitAdmin?.authorisationText);\n } else if (context.canClosePermit) {\n return buildSignature(context, userLanguage, DeclarationTypeEnum.ClosureText, SignatureTypeEnum.Closer, context.permitAdmin?.closureText);\n }\n return null;\n}\n\nfunction buildSignature(\n context: PermitRequestFormComponent,\n userLanguage: string,\n declarationTypeId: DeclarationTypeEnum,\n signatureTypeId: SignatureTypeEnum,\n declarationText: string\n): SignatureDTO {\n return {\n id: Guid.newGuid(),\n personId: context.loggedInPerson.id,\n personName: context.loggedInPerson.fullName,\n companyName: context.loggedInPerson.owningCompanyName,\n declarationTypeId,\n declarationText,\n signatureDate: null,\n signatureTypeId,\n image: null,\n imageType: \"data:image/svg+xml;base64\",\n token: null,\n objectId: context.permitRequest.id,\n requestedById: null,\n language: userLanguage,\n };\n}\n","/*!\n * Signature Pad v4.0.10 | https://github.com/szimek/signature_pad\n * (c) 2022 Szymon Nowak | Released under the MIT license\n */\n\nclass Point {\n constructor(x, y, pressure, time) {\n if (isNaN(x) || isNaN(y)) {\n throw new Error(`Point is invalid: (${x}, ${y})`);\n }\n this.x = +x;\n this.y = +y;\n this.pressure = pressure || 0;\n this.time = time || Date.now();\n }\n distanceTo(start) {\n return Math.sqrt(Math.pow(this.x - start.x, 2) + Math.pow(this.y - start.y, 2));\n }\n equals(other) {\n return this.x === other.x && this.y === other.y && this.pressure === other.pressure && this.time === other.time;\n }\n velocityFrom(start) {\n return this.time !== start.time ? this.distanceTo(start) / (this.time - start.time) : 0;\n }\n}\nclass Bezier {\n constructor(startPoint, control2, control1, endPoint, startWidth, endWidth) {\n this.startPoint = startPoint;\n this.control2 = control2;\n this.control1 = control1;\n this.endPoint = endPoint;\n this.startWidth = startWidth;\n this.endWidth = endWidth;\n }\n static fromPoints(points, widths) {\n const c2 = this.calculateControlPoints(points[0], points[1], points[2]).c2;\n const c3 = this.calculateControlPoints(points[1], points[2], points[3]).c1;\n return new Bezier(points[1], c2, c3, points[2], widths.start, widths.end);\n }\n static calculateControlPoints(s1, s2, s3) {\n const dx1 = s1.x - s2.x;\n const dy1 = s1.y - s2.y;\n const dx2 = s2.x - s3.x;\n const dy2 = s2.y - s3.y;\n const m1 = {\n x: (s1.x + s2.x) / 2.0,\n y: (s1.y + s2.y) / 2.0\n };\n const m2 = {\n x: (s2.x + s3.x) / 2.0,\n y: (s2.y + s3.y) / 2.0\n };\n const l1 = Math.sqrt(dx1 * dx1 + dy1 * dy1);\n const l2 = Math.sqrt(dx2 * dx2 + dy2 * dy2);\n const dxm = m1.x - m2.x;\n const dym = m1.y - m2.y;\n const k = l2 / (l1 + l2);\n const cm = {\n x: m2.x + dxm * k,\n y: m2.y + dym * k\n };\n const tx = s2.x - cm.x;\n const ty = s2.y - cm.y;\n return {\n c1: new Point(m1.x + tx, m1.y + ty),\n c2: new Point(m2.x + tx, m2.y + ty)\n };\n }\n length() {\n const steps = 10;\n let length = 0;\n let px;\n let py;\n for (let i = 0; i <= steps; i += 1) {\n const t = i / steps;\n const cx = this.point(t, this.startPoint.x, this.control1.x, this.control2.x, this.endPoint.x);\n const cy = this.point(t, this.startPoint.y, this.control1.y, this.control2.y, this.endPoint.y);\n if (i > 0) {\n const xdiff = cx - px;\n const ydiff = cy - py;\n length += Math.sqrt(xdiff * xdiff + ydiff * ydiff);\n }\n px = cx;\n py = cy;\n }\n return length;\n }\n point(t, start, c1, c2, end) {\n return start * (1.0 - t) * (1.0 - t) * (1.0 - t) + 3.0 * c1 * (1.0 - t) * (1.0 - t) * t + 3.0 * c2 * (1.0 - t) * t * t + end * t * t * t;\n }\n}\nclass SignatureEventTarget {\n constructor() {\n try {\n this._et = new EventTarget();\n } catch (error) {\n this._et = document;\n }\n }\n addEventListener(type, listener, options) {\n this._et.addEventListener(type, listener, options);\n }\n dispatchEvent(event) {\n return this._et.dispatchEvent(event);\n }\n removeEventListener(type, callback, options) {\n this._et.removeEventListener(type, callback, options);\n }\n}\nfunction throttle(fn, wait = 250) {\n let previous = 0;\n let timeout = null;\n let result;\n let storedContext;\n let storedArgs;\n const later = () => {\n previous = Date.now();\n timeout = null;\n result = fn.apply(storedContext, storedArgs);\n if (!timeout) {\n storedContext = null;\n storedArgs = [];\n }\n };\n return function wrapper(...args) {\n const now = Date.now();\n const remaining = wait - (now - previous);\n storedContext = this;\n storedArgs = args;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n result = fn.apply(storedContext, storedArgs);\n if (!timeout) {\n storedContext = null;\n storedArgs = [];\n }\n } else if (!timeout) {\n timeout = window.setTimeout(later, remaining);\n }\n return result;\n };\n}\nclass SignaturePad extends SignatureEventTarget {\n constructor(canvas, options = {}) {\n super();\n this.canvas = canvas;\n this._handleMouseDown = event => {\n if (event.buttons === 1) {\n this._drawningStroke = true;\n this._strokeBegin(event);\n }\n };\n this._handleMouseMove = event => {\n if (this._drawningStroke) {\n this._strokeMoveUpdate(event);\n }\n };\n this._handleMouseUp = event => {\n if (event.buttons === 1 && this._drawningStroke) {\n this._drawningStroke = false;\n this._strokeEnd(event);\n }\n };\n this._handleTouchStart = event => {\n if (event.cancelable) {\n event.preventDefault();\n }\n if (event.targetTouches.length === 1) {\n const touch = event.changedTouches[0];\n this._strokeBegin(touch);\n }\n };\n this._handleTouchMove = event => {\n if (event.cancelable) {\n event.preventDefault();\n }\n const touch = event.targetTouches[0];\n this._strokeMoveUpdate(touch);\n };\n this._handleTouchEnd = event => {\n const wasCanvasTouched = event.target === this.canvas;\n if (wasCanvasTouched) {\n if (event.cancelable) {\n event.preventDefault();\n }\n const touch = event.changedTouches[0];\n this._strokeEnd(touch);\n }\n };\n this._handlePointerStart = event => {\n this._drawningStroke = true;\n event.preventDefault();\n this._strokeBegin(event);\n };\n this._handlePointerMove = event => {\n if (this._drawningStroke) {\n event.preventDefault();\n this._strokeMoveUpdate(event);\n }\n };\n this._handlePointerEnd = event => {\n if (this._drawningStroke) {\n event.preventDefault();\n this._drawningStroke = false;\n this._strokeEnd(event);\n }\n };\n this.velocityFilterWeight = options.velocityFilterWeight || 0.7;\n this.minWidth = options.minWidth || 0.5;\n this.maxWidth = options.maxWidth || 2.5;\n this.throttle = 'throttle' in options ? options.throttle : 16;\n this.minDistance = 'minDistance' in options ? options.minDistance : 5;\n this.dotSize = options.dotSize || 0;\n this.penColor = options.penColor || 'black';\n this.backgroundColor = options.backgroundColor || 'rgba(0,0,0,0)';\n this._strokeMoveUpdate = this.throttle ? throttle(SignaturePad.prototype._strokeUpdate, this.throttle) : SignaturePad.prototype._strokeUpdate;\n this._ctx = canvas.getContext('2d');\n this.clear();\n this.on();\n }\n clear() {\n const {\n _ctx: ctx,\n canvas\n } = this;\n ctx.fillStyle = this.backgroundColor;\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n this._data = [];\n this._reset(this._getPointGroupOptions());\n this._isEmpty = true;\n }\n fromDataURL(dataUrl, options = {}) {\n return new Promise((resolve, reject) => {\n const image = new Image();\n const ratio = options.ratio || window.devicePixelRatio || 1;\n const width = options.width || this.canvas.width / ratio;\n const height = options.height || this.canvas.height / ratio;\n const xOffset = options.xOffset || 0;\n const yOffset = options.yOffset || 0;\n this._reset(this._getPointGroupOptions());\n image.onload = () => {\n this._ctx.drawImage(image, xOffset, yOffset, width, height);\n resolve();\n };\n image.onerror = error => {\n reject(error);\n };\n image.crossOrigin = 'anonymous';\n image.src = dataUrl;\n this._isEmpty = false;\n });\n }\n toDataURL(type = 'image/png', encoderOptions) {\n switch (type) {\n case 'image/svg+xml':\n return this._toSVG();\n default:\n return this.canvas.toDataURL(type, encoderOptions);\n }\n }\n on() {\n this.canvas.style.touchAction = 'none';\n this.canvas.style.msTouchAction = 'none';\n this.canvas.style.userSelect = 'none';\n const isIOS = /Macintosh/.test(navigator.userAgent) && 'ontouchstart' in document;\n if (window.PointerEvent && !isIOS) {\n this._handlePointerEvents();\n } else {\n this._handleMouseEvents();\n if ('ontouchstart' in window) {\n this._handleTouchEvents();\n }\n }\n }\n off() {\n this.canvas.style.touchAction = 'auto';\n this.canvas.style.msTouchAction = 'auto';\n this.canvas.style.userSelect = 'auto';\n this.canvas.removeEventListener('pointerdown', this._handlePointerStart);\n this.canvas.removeEventListener('pointermove', this._handlePointerMove);\n this.canvas.ownerDocument.removeEventListener('pointerup', this._handlePointerEnd);\n this.canvas.removeEventListener('mousedown', this._handleMouseDown);\n this.canvas.removeEventListener('mousemove', this._handleMouseMove);\n this.canvas.ownerDocument.removeEventListener('mouseup', this._handleMouseUp);\n this.canvas.removeEventListener('touchstart', this._handleTouchStart);\n this.canvas.removeEventListener('touchmove', this._handleTouchMove);\n this.canvas.removeEventListener('touchend', this._handleTouchEnd);\n }\n isEmpty() {\n return this._isEmpty;\n }\n fromData(pointGroups, {\n clear = true\n } = {}) {\n if (clear) {\n this.clear();\n }\n this._fromData(pointGroups, this._drawCurve.bind(this), this._drawDot.bind(this));\n this._data = this._data.concat(pointGroups);\n }\n toData() {\n return this._data;\n }\n _getPointGroupOptions(group) {\n return {\n penColor: group && 'penColor' in group ? group.penColor : this.penColor,\n dotSize: group && 'dotSize' in group ? group.dotSize : this.dotSize,\n minWidth: group && 'minWidth' in group ? group.minWidth : this.minWidth,\n maxWidth: group && 'maxWidth' in group ? group.maxWidth : this.maxWidth,\n velocityFilterWeight: group && 'velocityFilterWeight' in group ? group.velocityFilterWeight : this.velocityFilterWeight\n };\n }\n _strokeBegin(event) {\n this.dispatchEvent(new CustomEvent('beginStroke', {\n detail: event\n }));\n const pointGroupOptions = this._getPointGroupOptions();\n const newPointGroup = Object.assign(Object.assign({}, pointGroupOptions), {\n points: []\n });\n this._data.push(newPointGroup);\n this._reset(pointGroupOptions);\n this._strokeUpdate(event);\n }\n _strokeUpdate(event) {\n if (this._data.length === 0) {\n this._strokeBegin(event);\n return;\n }\n this.dispatchEvent(new CustomEvent('beforeUpdateStroke', {\n detail: event\n }));\n const x = event.clientX;\n const y = event.clientY;\n const pressure = event.pressure !== undefined ? event.pressure : event.force !== undefined ? event.force : 0;\n const point = this._createPoint(x, y, pressure);\n const lastPointGroup = this._data[this._data.length - 1];\n const lastPoints = lastPointGroup.points;\n const lastPoint = lastPoints.length > 0 && lastPoints[lastPoints.length - 1];\n const isLastPointTooClose = lastPoint ? point.distanceTo(lastPoint) <= this.minDistance : false;\n const pointGroupOptions = this._getPointGroupOptions(lastPointGroup);\n if (!lastPoint || !(lastPoint && isLastPointTooClose)) {\n const curve = this._addPoint(point, pointGroupOptions);\n if (!lastPoint) {\n this._drawDot(point, pointGroupOptions);\n } else if (curve) {\n this._drawCurve(curve, pointGroupOptions);\n }\n lastPoints.push({\n time: point.time,\n x: point.x,\n y: point.y,\n pressure: point.pressure\n });\n }\n this.dispatchEvent(new CustomEvent('afterUpdateStroke', {\n detail: event\n }));\n }\n _strokeEnd(event) {\n this._strokeUpdate(event);\n this.dispatchEvent(new CustomEvent('endStroke', {\n detail: event\n }));\n }\n _handlePointerEvents() {\n this._drawningStroke = false;\n this.canvas.addEventListener('pointerdown', this._handlePointerStart);\n this.canvas.addEventListener('pointermove', this._handlePointerMove);\n this.canvas.ownerDocument.addEventListener('pointerup', this._handlePointerEnd);\n }\n _handleMouseEvents() {\n this._drawningStroke = false;\n this.canvas.addEventListener('mousedown', this._handleMouseDown);\n this.canvas.addEventListener('mousemove', this._handleMouseMove);\n this.canvas.ownerDocument.addEventListener('mouseup', this._handleMouseUp);\n }\n _handleTouchEvents() {\n this.canvas.addEventListener('touchstart', this._handleTouchStart);\n this.canvas.addEventListener('touchmove', this._handleTouchMove);\n this.canvas.addEventListener('touchend', this._handleTouchEnd);\n }\n _reset(options) {\n this._lastPoints = [];\n this._lastVelocity = 0;\n this._lastWidth = (options.minWidth + options.maxWidth) / 2;\n this._ctx.fillStyle = options.penColor;\n }\n _createPoint(x, y, pressure) {\n const rect = this.canvas.getBoundingClientRect();\n return new Point(x - rect.left, y - rect.top, pressure, new Date().getTime());\n }\n _addPoint(point, options) {\n const {\n _lastPoints\n } = this;\n _lastPoints.push(point);\n if (_lastPoints.length > 2) {\n if (_lastPoints.length === 3) {\n _lastPoints.unshift(_lastPoints[0]);\n }\n const widths = this._calculateCurveWidths(_lastPoints[1], _lastPoints[2], options);\n const curve = Bezier.fromPoints(_lastPoints, widths);\n _lastPoints.shift();\n return curve;\n }\n return null;\n }\n _calculateCurveWidths(startPoint, endPoint, options) {\n const velocity = options.velocityFilterWeight * endPoint.velocityFrom(startPoint) + (1 - options.velocityFilterWeight) * this._lastVelocity;\n const newWidth = this._strokeWidth(velocity, options);\n const widths = {\n end: newWidth,\n start: this._lastWidth\n };\n this._lastVelocity = velocity;\n this._lastWidth = newWidth;\n return widths;\n }\n _strokeWidth(velocity, options) {\n return Math.max(options.maxWidth / (velocity + 1), options.minWidth);\n }\n _drawCurveSegment(x, y, width) {\n const ctx = this._ctx;\n ctx.moveTo(x, y);\n ctx.arc(x, y, width, 0, 2 * Math.PI, false);\n this._isEmpty = false;\n }\n _drawCurve(curve, options) {\n const ctx = this._ctx;\n const widthDelta = curve.endWidth - curve.startWidth;\n const drawSteps = Math.ceil(curve.length()) * 2;\n ctx.beginPath();\n ctx.fillStyle = options.penColor;\n for (let i = 0; i < drawSteps; i += 1) {\n const t = i / drawSteps;\n const tt = t * t;\n const ttt = tt * t;\n const u = 1 - t;\n const uu = u * u;\n const uuu = uu * u;\n let x = uuu * curve.startPoint.x;\n x += 3 * uu * t * curve.control1.x;\n x += 3 * u * tt * curve.control2.x;\n x += ttt * curve.endPoint.x;\n let y = uuu * curve.startPoint.y;\n y += 3 * uu * t * curve.control1.y;\n y += 3 * u * tt * curve.control2.y;\n y += ttt * curve.endPoint.y;\n const width = Math.min(curve.startWidth + ttt * widthDelta, options.maxWidth);\n this._drawCurveSegment(x, y, width);\n }\n ctx.closePath();\n ctx.fill();\n }\n _drawDot(point, options) {\n const ctx = this._ctx;\n const width = options.dotSize > 0 ? options.dotSize : (options.minWidth + options.maxWidth) / 2;\n ctx.beginPath();\n this._drawCurveSegment(point.x, point.y, width);\n ctx.closePath();\n ctx.fillStyle = options.penColor;\n ctx.fill();\n }\n _fromData(pointGroups, drawCurve, drawDot) {\n for (const group of pointGroups) {\n const {\n points\n } = group;\n const pointGroupOptions = this._getPointGroupOptions(group);\n if (points.length > 1) {\n for (let j = 0; j < points.length; j += 1) {\n const basicPoint = points[j];\n const point = new Point(basicPoint.x, basicPoint.y, basicPoint.pressure, basicPoint.time);\n if (j === 0) {\n this._reset(pointGroupOptions);\n }\n const curve = this._addPoint(point, pointGroupOptions);\n if (curve) {\n drawCurve(curve, pointGroupOptions);\n }\n }\n } else {\n this._reset(pointGroupOptions);\n drawDot(points[0], pointGroupOptions);\n }\n }\n }\n _toSVG() {\n const pointGroups = this._data;\n const ratio = Math.max(window.devicePixelRatio || 1, 1);\n const minX = 0;\n const minY = 0;\n const maxX = this.canvas.width / ratio;\n const maxY = this.canvas.height / ratio;\n const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.setAttribute('width', this.canvas.width.toString());\n svg.setAttribute('height', this.canvas.height.toString());\n this._fromData(pointGroups, (curve, {\n penColor\n }) => {\n const path = document.createElement('path');\n if (!isNaN(curve.control1.x) && !isNaN(curve.control1.y) && !isNaN(curve.control2.x) && !isNaN(curve.control2.y)) {\n const attr = `M ${curve.startPoint.x.toFixed(3)},${curve.startPoint.y.toFixed(3)} ` + `C ${curve.control1.x.toFixed(3)},${curve.control1.y.toFixed(3)} ` + `${curve.control2.x.toFixed(3)},${curve.control2.y.toFixed(3)} ` + `${curve.endPoint.x.toFixed(3)},${curve.endPoint.y.toFixed(3)}`;\n path.setAttribute('d', attr);\n path.setAttribute('stroke-width', (curve.endWidth * 2.25).toFixed(3));\n path.setAttribute('stroke', penColor);\n path.setAttribute('fill', 'none');\n path.setAttribute('stroke-linecap', 'round');\n svg.appendChild(path);\n }\n }, (point, {\n penColor,\n dotSize,\n minWidth,\n maxWidth\n }) => {\n const circle = document.createElement('circle');\n const size = dotSize > 0 ? dotSize : (minWidth + maxWidth) / 2;\n circle.setAttribute('r', size.toString());\n circle.setAttribute('cx', point.x.toString());\n circle.setAttribute('cy', point.y.toString());\n circle.setAttribute('fill', penColor);\n svg.appendChild(circle);\n });\n const prefix = 'data:image/svg+xml;base64,';\n const header = '';\n let body = svg.innerHTML;\n if (body === undefined) {\n const dummy = document.createElement('dummy');\n const nodes = svg.childNodes;\n dummy.innerHTML = '';\n for (let i = 0; i < nodes.length; i += 1) {\n dummy.appendChild(nodes[i].cloneNode(true));\n }\n body = dummy.innerHTML;\n }\n const footer = '';\n const data = header + body + footer;\n return prefix + btoa(data);\n }\n}\nexport { SignaturePad as default };\n","import * as i0 from '@angular/core';\nimport { EventEmitter, Component, Input, Output, NgModule } from '@angular/core';\nimport SignaturePad from 'signature_pad';\nclass SignaturePadComponent {\n constructor(elementRef) {\n this.elementRef = elementRef;\n this.options = this.options || {};\n this.drawStart = new EventEmitter();\n this.drawBeforeUpdate = new EventEmitter();\n this.drawAfterUpdate = new EventEmitter();\n this.drawEnd = new EventEmitter();\n }\n ngAfterContentInit() {\n const canvas = this.getCanvas();\n if (this.options.canvasHeight) {\n canvas.height = this.options.canvasHeight;\n }\n if (this.options.canvasWidth) {\n canvas.width = this.options.canvasWidth;\n }\n this.signaturePad = new SignaturePad(canvas, this.options);\n this.signaturePad.addEventListener('beginStroke', event => this.beginStroke(event.detail));\n this.signaturePad.addEventListener('beforeUpdateStroke', event => this.beforeUpdateStroke(event.detail));\n this.signaturePad.addEventListener('afterUpdateStroke', event => this.afterUpdateStroke(event.detail));\n this.signaturePad.addEventListener('endStroke', event => this.endStroke(event.detail));\n }\n ngOnDestroy() {\n const canvas = this.getCanvas();\n canvas.width = 0;\n canvas.height = 0;\n }\n /**\r\n * Redraw or Resize canvas, note this will clear data.\r\n */\n redrawCanvas() {\n const canvas = this.getCanvas();\n // when zoomed out to less than 100%, for some very strange reason,\n // some browsers report devicePixelRatio as less than 1, and only part of the canvas is cleared then.\n const ratio = Math.max(window.devicePixelRatio || 1, 1);\n canvas.width = canvas.offsetWidth * ratio;\n canvas.height = canvas.offsetHeight * ratio;\n canvas.getContext('2d').scale(ratio, ratio);\n this.signaturePad.clear(); // otherwise isEmpty() might return incorrect value\n }\n /**\r\n * Returns signature image as an array of point groups\r\n */\n toData() {\n if (this.signaturePad) {\n return this.signaturePad.toData();\n } else {\n return [];\n }\n }\n /**\r\n * Draws signature image from an array of point groups\r\n */\n fromData(points) {\n this.signaturePad.fromData(points);\n }\n /**\r\n * Returns signature image as data URL (see https://mdn.io/todataurl for the list of possible parameters)\r\n */\n toDataURL(imageType, quality) {\n return this.signaturePad.toDataURL(imageType, quality); // save image as data URL\n }\n /**\r\n * Draws signature image from data URL\r\n */\n fromDataURL(dataURL, options = {}) {\n // set default height and width on read data from URL\n if (!options.hasOwnProperty('height') && this.options.canvasHeight) {\n options.height = this.options.canvasHeight;\n }\n if (!options.hasOwnProperty('width') && this.options.canvasWidth) {\n options.width = this.options.canvasWidth;\n }\n this.signaturePad.fromDataURL(dataURL, options);\n }\n /**\r\n * Clears the canvas\r\n */\n clear() {\n this.signaturePad.clear();\n }\n /**\r\n * Returns true if canvas is empty, otherwise returns false\r\n */\n isEmpty() {\n return this.signaturePad.isEmpty();\n }\n /**\r\n * Unbinds all event handlers\r\n */\n off() {\n this.signaturePad.off();\n }\n /**\r\n * Rebinds all event handlers\r\n */\n on() {\n this.signaturePad.on();\n }\n /**\r\n * set an option on the signaturePad - e.g. set('minWidth', 50);\r\n * @param option one of SignaturePad to set with value, properties of NgSignaturePadOptions\r\n * @param value the value of option\r\n */\n set(option, value) {\n const canvas = this.getCanvas();\n switch (option) {\n case 'canvasHeight':\n canvas.height = value;\n break;\n case 'canvasWidth':\n canvas.width = value;\n break;\n default:\n this.signaturePad[option] = value;\n }\n }\n /**\r\n * notify subscribers on signature begin\r\n */\n beginStroke(event) {\n this.drawStart.emit(event);\n }\n beforeUpdateStroke(event) {\n this.drawBeforeUpdate.emit(event);\n }\n afterUpdateStroke(event) {\n this.drawAfterUpdate.emit(event);\n }\n /**\r\n * notify subscribers on signature end\r\n */\n endStroke(event) {\n this.drawEnd.emit(event);\n }\n getSignaturePad() {\n return this.signaturePad;\n }\n getCanvas() {\n return this.elementRef.nativeElement.querySelector('canvas');\n }\n}\nSignaturePadComponent.ɵfac = function SignaturePadComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || SignaturePadComponent)(i0.ɵɵdirectiveInject(i0.ElementRef));\n};\nSignaturePadComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: SignaturePadComponent,\n selectors: [[\"signature-pad\"]],\n inputs: {\n options: \"options\"\n },\n outputs: {\n drawStart: \"drawStart\",\n drawBeforeUpdate: \"drawBeforeUpdate\",\n drawAfterUpdate: \"drawAfterUpdate\",\n drawEnd: \"drawEnd\"\n },\n decls: 1,\n vars: 0,\n consts: [[1, \"signature-pad-canvas\"]],\n template: function SignaturePadComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"canvas\", 0);\n }\n },\n styles: [\"[_nghost-%COMP%]{background:antiquewhite;display:flex;align-items:center;justify-content:center}[_nghost-%COMP%] .signature-pad-canvas[_ngcontent-%COMP%]{border:1px solid gray}\"]\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(SignaturePadComponent, [{\n type: Component,\n args: [{\n template: '',\n selector: 'signature-pad',\n styles: [\":host{background:antiquewhite;display:flex;align-items:center;justify-content:center}:host .signature-pad-canvas{border:1px solid gray}\\n\"]\n }]\n }], function () {\n return [{\n type: i0.ElementRef\n }];\n }, {\n options: [{\n type: Input\n }],\n drawStart: [{\n type: Output\n }],\n drawBeforeUpdate: [{\n type: Output\n }],\n drawAfterUpdate: [{\n type: Output\n }],\n drawEnd: [{\n type: Output\n }]\n });\n})();\nclass AngularSignaturePadModule {}\nAngularSignaturePadModule.ɵfac = function AngularSignaturePadModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || AngularSignaturePadModule)();\n};\nAngularSignaturePadModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: AngularSignaturePadModule\n});\nAngularSignaturePadModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(AngularSignaturePadModule, [{\n type: NgModule,\n args: [{\n declarations: [SignaturePadComponent],\n imports: [],\n exports: [SignaturePadComponent]\n }]\n }], null, null);\n})();\n\n/*\r\n * Public API Surface of angular-signature-pad\r\n */\n\n/**\r\n * Generated bundle index. Do not edit.\r\n */\n\nexport { AngularSignaturePadModule, SignaturePadComponent };\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n HostListener,\n Inject,\n OnInit,\n ViewChild,\n} from \"@angular/core\";\nimport {\n MatLegacyDialog as MatDialog,\n MatLegacyDialogRef as MatDialogRef,\n MAT_LEGACY_DIALOG_DATA as MAT_DIALOG_DATA,\n} from \"@angular/material/legacy-dialog\";\nimport { UntypedFormBuilder } from \"@angular/forms\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { SignaturePad } from \"angular2-signaturepad\";\nimport { DomSanitizer } from \"@angular/platform-browser\";\nimport { SignatureDTO } from \"../dto-models/signatureDTO.model\";\nimport { SignatureTypeEnum } from \"../dto-models/signatureType.enum\";\nimport { DateTimeFormatPipe } from \"../pipes/dateFormat.pipe\";\nimport { PermitStatusEnum } from \"../models/permitStatusName.enum\";\nimport { SignatureService } from \"./signature.service.interface\";\nimport { Router } from \"@angular/router\";\nimport { JwtHelperService } from \"@auth0/angular-jwt\";\nimport * as layout from \"./../../../core/layout/shared/layout.action\";\nimport { Store } from \"@ngrx/store\";\nimport * as fromRoot from \"../../../reducers/index\";\nimport { Observable } from \"rxjs\";\nimport { ComponentsDialogComponent } from \"../components-dialog/components-dialog.component\";\nimport { LanguagesService } from \"../../system-settings/languages/languages.service\";\nimport { AuthService } from \"../services/auth.service\";\nimport { ApplicationSystemLanguage } from \"../../system-settings/languages/system-language\";\nimport { RegionalSettingsDTO } from \"../dto-models/regionalSettingsDTO.model\";\nimport { getLanguageSpecificDeclaration } from \"../../e-permits/permit-request/permit-request-form/permit-request-signature.utils\";\n\nconst helper = new JwtHelperService();\n@Component({\n selector: \"bs-signature-dialog\",\n templateUrl: \"./signature-dialog.component.html\",\n styleUrls: [\"./signature-dialog.component.scss\"],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SignatureDialogComponent implements OnInit {\n dataService: SignatureService;\n\n @ViewChild(\"sigPad\") signaturePad: SignaturePad;\n\n public signaturePadOptions: Object = {\n minWidth: 1,\n canvasWidth: 900,\n canvasHeight: 350,\n };\n\n public signature: SignatureDTO;\n isDisabled = false;\n ok = false;\n signedByText: string;\n emailSentText: string;\n hasSignature = false;\n hasValidToken = false;\n status: number;\n nextButtonClicked = false;\n saveButtonClicked = false;\n backgroundTaskRunning$: Observable;\n\n language = \"en-GB\";\n languages: ApplicationSystemLanguage[];\n initialLanguage: string;\n regionalSettings: RegionalSettingsDTO;\n permitAdminId: any;\n token: string;\n\n constructor(\n private store: Store,\n @Inject(MAT_DIALOG_DATA) public data: any,\n public translate: TranslateService,\n public dialogRef: MatDialogRef,\n private fb: UntypedFormBuilder,\n private cd: ChangeDetectorRef,\n public dateTimeFormat: DateTimeFormatPipe,\n private domSanitizer: DomSanitizer,\n private router: Router,\n private dialog: MatDialog,\n private languageService: LanguagesService,\n private authService: AuthService,\n ) {\n this.store.select(fromRoot.getRegionalSettings).subscribe((settings) => {\n this.regionalSettings = settings;\n if (this.regionalSettings?.language) {\n this.language = this.regionalSettings.language;\n }\n });\n }\n\n async ngOnInit() {\n this.backgroundTaskRunning$ = this.store.select(\n fromRoot.getBackgroundTaskRunning,\n );\n\n if (this.data) {\n const isInternal = this.data.permitAdminId !== null;\n if (isInternal) {\n await this.loadLanguages();\n this.initialLanguage = this.translate?.currentLang ?? \"en-GB\";\n }\n\n /* this overrides the hard coded imageType within the SignatureDTO */\n this.checkSignaturesImageType();\n\n this.status = this.data.status;\n this.dataService = this.data.dataService;\n this.permitAdminId = this.data.permitAdminId;\n this.token = this.data.token;\n\n this.setCurrentSignature();\n\n this.setEmailSentText();\n\n if (this.signature?.image) {\n this.isDisabled = true;\n this.setSignedByText();\n }\n }\n }\n\n private async loadLanguages() {\n const systemId = this.authService?.identityClaims[\"application_systemId\"];\n if (systemId) {\n this.languages = await this.languageService\n .getForSystem(+systemId)\n .toPromise();\n }\n }\n\n checkSignaturesImageType() {\n this.data.signatures.map((signature, index) => {\n if (signature.image !== null) {\n if (signature.image.startsWith(\"\n [SignatureTypeEnum.Issuer].includes(x?.signatureTypeId),\n );\n } else if (this.status === PermitStatusEnum.PermitRequestIssued) {\n const sigTypes = [\n SignatureTypeEnum.PiCAcceptance,\n SignatureTypeEnum.PiCHandback,\n ];\n this.signature = this.data.signatures.find((x) =>\n sigTypes.includes(x?.signatureTypeId),\n );\n }\n\n this.loadSignature();\n }\n\n private setSignedByText() {\n let sigText = \"\";\n if (this.signature?.image) {\n const sig = this.signature;\n sigText = this.translate.instant(\"SIGNATURE.SIGNED_BY_TEXT\", {\n PersonName: sig.personName,\n CompanyName: sig.companyName,\n SignatureDate: this.dateTimeFormat.transform(sig.signatureDate),\n });\n }\n this.signedByText = sigText;\n }\n\n private setEmailSentText() {\n const sig = this.signature;\n if (sig.personName) {\n let sigText = \"\";\n sigText = this.translate.instant(\"SIGNATURE.EMAIL_SENT_TEXT\", {\n PersonName: sig.personName,\n });\n this.emailSentText = sigText;\n }\n }\n\n @HostListener(\"window:resize\", [\"$event\"])\n onResize(event) {}\n\n get hasSignedorEmailed() {\n return this.signature?.signatureDate || this.signature?.token;\n }\n get disabled() {\n return this.isDisabled;\n }\n\n get signaturesComplete() {\n return this.data.signatures.every((x) => x.image !== null);\n }\n\n get signatureTypeMatch() {\n const sigTypes = [\n SignatureTypeEnum.PiCAcceptance,\n SignatureTypeEnum.PiCHandback,\n ];\n return sigTypes.includes(this.signature?.signatureTypeId) && !this.token;\n }\n\n get titleText() {\n let title = \"\";\n\n switch (this.signature?.signatureTypeId) {\n case SignatureTypeEnum.Closer:\n title = this.translate.instant(\"SIGNATURE.CLOSER_SIGNATURE_TITLE\");\n break;\n case SignatureTypeEnum.Issuer:\n title = this.translate.instant(\"SIGNATURE.ISSUER_SIGNATURE_TITLE\");\n break;\n case SignatureTypeEnum.PiCAcceptance:\n case SignatureTypeEnum.PiCHandback:\n title = this.translate.instant(\"SIGNATURE.PIC_SIGNATURE_TITLE\");\n break;\n }\n return title;\n }\n\n clearSignature() {\n this.signaturePad?.clear();\n this.isDisabled = true;\n }\n\n undoSignature() {\n const data = this.signaturePad?.toData();\n\n if (data) {\n data.pop(); // remove the last dot or line\n this.signaturePad?.fromData(data);\n }\n }\n\n loadSignature() {\n this.signaturePad?.on();\n this.signaturePad?.clear();\n this.isDisabled = false;\n\n if (this.signature?.image) {\n const encodedSvg = btoa(this.signature.image);\n const image = `${this.signature.imageType},${encodedSvg}`;\n const data = this.signaturePad?.fromDataURL(image);\n\n this.signaturePad?.fromDataURL(image);\n this.signaturePad?.off();\n this.isDisabled = true;\n this.hasSignature = true;\n } else {\n this.hasSignature = false;\n }\n\n if (this.signature?.token) {\n const decodedToken = helper.urlBase64Decode(this.signature.token);\n this.hasValidToken = !helper.isTokenExpired(decodedToken);\n }\n\n if (this.signaturePad?.isEmpty()) {\n this.isDisabled = true;\n }\n this.language = this.signature.language;\n this.translate.use(this.language);\n\n this.setSignedByText();\n this.setEmailSentText();\n\n this.cd.detectChanges();\n }\n\n saveSignature() {\n this.saveButtonClicked = true;\n this.signature.language = this.language;\n\n if (this.signaturePad?.isEmpty()) {\n if (this.signature.token) {\n this.close();\n } else {\n this.displayMessage(\n this.translate.instant(\"SIGNATURE.PROVIDE_SIGNATURE\"),\n );\n }\n } else {\n const data = this.signaturePad?.toDataURL(\"image/png\");\n const safeData = this.domSanitizer.bypassSecurityTrustHtml(\n atob(data.split(\",\")[1]),\n );\n this.signature.image = safeData[\"changingThisBreaksApplicationSecurity\"];\n this.signature.signatureDate = new Date().toISOString();\n\n if (this.signaturesComplete) {\n this.close();\n } else {\n this.next();\n }\n }\n }\n\n async email() {\n // async get token\n if (this.dataService) {\n this.signature.language = this.language;\n this.store.dispatch(new layout.StartBackgroundTask());\n\n this.dataService.sendEmail(this.signature).subscribe((data) => {\n this.store.dispatch(new layout.StopBackgroundTask());\n this.signature.token = data;\n if (data) {\n this.displayMessage(\n this.translate.instant(\"SIGNATURE.EMAIL_SENT_TEXT\", {\n PersonName: this.signature.personName,\n }),\n );\n } else {\n this.displayMessage(\n this.translate.instant(\"SIGNATURE.EMAIL_NOT_SENT_TEXT\", {\n PersonName: this.signature.personName,\n }),\n );\n }\n });\n } else {\n this.displayMessage(\n this.translate.instant(\"SIGNATURE.EMAIL_NOT_SENT_TEXT\", {\n PersonName: this.signature.personName,\n }),\n );\n }\n }\n\n next() {\n this.nextButtonClicked = true;\n\n const index = this.data.signatures.findIndex(\n (x) => x.id === this.signature.id,\n );\n if (index === 0) {\n this.signature = this.data.signatures[1];\n } else {\n this.signature = this.data.signatures[0];\n }\n this.loadSignature();\n }\n\n async close() {\n await this.translate.use(this.initialLanguage);\n this.dialogRef.close({\n formData: this.data.signatures,\n ok: this.ok,\n });\n }\n\n async cancel() {\n if (this.saveButtonClicked) {\n this.close();\n } else {\n await this.translate.use(this.initialLanguage);\n this.dialogRef.close();\n }\n }\n\n drawComplete() {\n if (!this.signaturePad?.isEmpty()) {\n this.isDisabled = false;\n }\n }\n // not used at the mo\n downloadToFile() {\n const dataURL = this.signaturePad?.toDataURL(\"image/png\");\n this.download(dataURL, \"signature.png\");\n }\n\n download(dataURL, filename) {\n const blob = this.dataURLToBlob(dataURL);\n const url = window.URL.createObjectURL(blob);\n\n const a = document.createElement(\"a\");\n a.style.visibility = \"hidden\";\n a.href = url;\n a.download = filename;\n\n document.body.appendChild(a);\n a.click();\n\n window.URL.revokeObjectURL(url);\n }\n\n dataURLToBlob(dataURL) {\n const parts = dataURL.split(\";base64,\");\n const contentType = parts[0].split(\":\")[1];\n const raw = window.atob(parts[1]);\n const rawLength = raw.length;\n const uInt8Array = new Uint8Array(rawLength);\n\n for (let i = 0; i < rawLength; ++i) {\n uInt8Array[i] = raw.charCodeAt(i);\n }\n\n return new Blob([uInt8Array], { type: contentType });\n }\n\n signPermitDev() {\n this.dialogRef.close();\n this.router.navigate([`auth/sign/${this.signature.token}`]);\n }\n\n displayMessage(message: string): Promise {\n return new Promise((resolve, reject) => {\n this.dialog\n .open(ComponentsDialogComponent, {\n width: \"400px\",\n disableClose: true,\n data: {\n user_input: false,\n label: message,\n required: false,\n showCancel: false,\n },\n })\n .afterClosed()\n .subscribe((data: any) => {\n this.close();\n });\n });\n }\n\n async setLanguage(lang) {\n this.translate.use(lang.value);\n this.signature.declarationText = await getLanguageSpecificDeclaration(\n this.dataService,\n lang.value,\n this.permitAdminId,\n this.signature.declarationTypeId,\n );\n this.cd.detectChanges();\n }\n}\n","
\n
\n

{{ titleText }}

\n
\n
1\">\n \n \n {{ lang.displayName }}\n \n \n
\n
\n\n
\n \n

{{ signature?.personName }}

\n
\n {{\n emailSentText\n }}\n

\n {{ signature.declarationText }}\n

\n
\n \n \n
\n
\n

{{ \"SIGNATURE.SIGN\" | translate }}

\n\n
\n
\n \n {{ \"ACTIONS.CLEAR\" | translate }}\n \n
\n
\n \n {{ \"SIGNATURE.EMAIL\" | translate }}\n \n \n {{ \"ACTIONS.NEXT\" | translate }}\n \n \n {{ \"ACTIONS.SAVE\" | translate }}\n \n \n {{ \"ACTIONS.CANCEL\" | translate }}\n \n
\n
\n
\n\n
\n

{{ signedByText }}

\n
\n
\n
\n
\n
\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAMM,aAGA,kBAwIA,oBAMA,gBA6FA;AApPN;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA,IAAM,cAAc,IAAI,eAAe,aAAa;AAGpD,IAAM,mBAAN,MAAuB;AAAA,MACrB,YAAY,SAAS,MAAM;AACzB,aAAK,cAAc,UAAU,OAAO,eAAe,WAAY;AAAA,QAAC;AAAA,MAClE;AAAA,MACA,gBAAgB,KAAK;AACnB,YAAI,SAAS,IAAI,QAAQ,MAAM,GAAG,EAAE,QAAQ,MAAM,GAAG;AACrD,gBAAQ,OAAO,SAAS,GAAG;AAAA,UACzB,KAAK,GACH;AACE;AAAA,UACF;AAAA,UACF,KAAK,GACH;AACE,sBAAU;AACV;AAAA,UACF;AAAA,UACF,KAAK,GACH;AACE,sBAAU;AACV;AAAA,UACF;AAAA,UACF,SACE;AACE,kBAAM,IAAI,MAAM,2BAA2B;AAAA,UAC7C;AAAA,QACJ;AACA,eAAO,KAAK,iBAAiB,MAAM;AAAA,MACrC;AAAA;AAAA,MAEA,UAAU,KAAK;AACb,cAAM,QAAQ;AACd,YAAI,SAAS;AACb,cAAM,OAAO,GAAG,EAAE,QAAQ,OAAO,EAAE;AACnC,YAAI,IAAI,SAAS,MAAM,GAAG;AACxB,gBAAM,IAAI,MAAM,mEAAmE;AAAA,QACrF;AACA;AAAA,cAEI,KAAK,GAAG,IAAI,QAAQ,MAAM;AAAA;AAAA,UAE9B,SAAS,IAAI,OAAO,KAAK;AAAA;AAAA,UAEzB,CAAC,WAAW,KAAK,KAAK,IAAI,KAAK,KAAK,SAAS;AAAA;AAAA,UAG7C,OAAO,KAAK,UAAU,OAAO,aAAa,MAAM,OAAO,KAAK,KAAK,EAAE,IAAI;AAAA,UAAG;AAExE,mBAAS,MAAM,QAAQ,MAAM;AAAA,QAC/B;AACA,eAAO;AAAA,MACT;AAAA,MACA,iBAAiB,KAAK;AACpB,eAAO,mBAAmB,MAAM,UAAU,IAAI,KAAK,KAAK,UAAU,GAAG,GAAG,OAAK;AAC3E,iBAAO,OAAO,OAAO,EAAE,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE;AAAA,QAC7D,CAAC,EAAE,KAAK,EAAE,CAAC;AAAA,MACb;AAAA,MACA,YAAY,QAAQ,KAAK,YAAY,GAAG;AACtC,YAAI,iBAAiB,SAAS;AAC5B,iBAAO,MAAM,KAAK,OAAK,KAAK,aAAa,CAAC,CAAC;AAAA,QAC7C;AACA,eAAO,KAAK,aAAa,KAAK;AAAA,MAChC;AAAA,MACA,aAAa,OAAO;AAClB,YAAI,CAAC,SAAS,UAAU,IAAI;AAC1B,iBAAO;AAAA,QACT;AACA,cAAM,QAAQ,MAAM,MAAM,GAAG;AAC7B,YAAI,MAAM,WAAW,GAAG;AACtB,gBAAM,IAAI,MAAM,wHAAwH;AAAA,QAC1I;AACA,cAAM,UAAU,KAAK,gBAAgB,MAAM,CAAC,CAAC;AAC7C,YAAI,CAAC,SAAS;AACZ,gBAAM,IAAI,MAAM,0BAA0B;AAAA,QAC5C;AACA,eAAO,KAAK,MAAM,OAAO;AAAA,MAC3B;AAAA,MACA,uBAAuB,QAAQ,KAAK,YAAY,GAAG;AACjD,YAAI,iBAAiB,SAAS;AAC5B,iBAAO,MAAM,KAAK,OAAK,KAAK,wBAAwB,CAAC,CAAC;AAAA,QACxD;AACA,eAAO,KAAK,wBAAwB,KAAK;AAAA,MAC3C;AAAA,MACA,wBAAwB,OAAO;AAC7B,YAAI;AACJ,kBAAU,KAAK,YAAY,KAAK;AAChC,YAAI,CAAC,WAAW,CAAC,QAAQ,eAAe,KAAK,GAAG;AAC9C,iBAAO;AAAA,QACT;AACA,cAAM,OAAO,oBAAI,KAAK,CAAC;AACvB,aAAK,cAAc,QAAQ,GAAG;AAC9B,eAAO;AAAA,MACT;AAAA,MACA,eAAe,QAAQ,KAAK,YAAY,GAAG,eAAe;AACxD,YAAI,iBAAiB,SAAS;AAC5B,iBAAO,MAAM,KAAK,OAAK,KAAK,gBAAgB,GAAG,aAAa,CAAC;AAAA,QAC/D;AACA,eAAO,KAAK,gBAAgB,OAAO,aAAa;AAAA,MAClD;AAAA,MACA,gBAAgB,OAAO,eAAe;AACpC,YAAI,CAAC,SAAS,UAAU,IAAI;AAC1B,iBAAO;AAAA,QACT;AACA,cAAM,OAAO,KAAK,uBAAuB,KAAK;AAC9C,wBAAgB,iBAAiB;AACjC,YAAI,SAAS,MAAM;AACjB,iBAAO;AAAA,QACT;AACA,eAAO,EAAE,KAAK,QAAQ,KAAI,oBAAI,KAAK,GAAE,QAAQ,IAAI,gBAAgB;AAAA,MACnE;AAAA,MACA,cAAc,YAAY,SAAS;AACjC,YAAI,OAAO,eAAe,YAAY;AACpC,iBAAO,WAAW,OAAO;AAAA,QAC3B;AACA,eAAO;AAAA,MACT;AAAA,IACF;AACA,qBAAiB,YAAO,SAAS,yBAAyB,mBAAmB;AAC3E,aAAO,KAAK,qBAAqB,kBAAqB,mBAAS,WAAW,CAAC;AAAA,IAC7E;AACA,qBAAiB,aAAuB,gBAAG,6BAAmB;AAAA,MAC5D,OAAO;AAAA,MACP,SAAS,iBAAiB;AAAA,IAC5B,CAAC;AACD,KAAC,MAAM;AACL,OAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,kBAAkB,CAAC;AAAA,QACzF,MAAM;AAAA,MACR,CAAC,GAAG,WAAY;AACd,eAAO,CAAC;AAAA,UACN,MAAM;AAAA,UACN,YAAY,CAAC;AAAA,YACX,MAAM;AAAA,YACN,MAAM,CAAC,WAAW;AAAA,UACpB,CAAC;AAAA,QACH,CAAC;AAAA,MACH,GAAG,IAAI;AAAA,IACT,GAAG;AACH,IAAM,qBAAqB,WAAS;AAClC,UAAI,iBAAiB,SAAS;AAC5B,eAAO,MAAM,MAAM,KAAK;AAAA,MAC1B;AACA,aAAO,GAAG,KAAK;AAAA,IACjB;AACA,IAAM,iBAAN,MAAqB;AAAA,MACnB,YAAY,QAAQ,WAAWA,WAAU;AACvC,aAAK,YAAY;AACjB,aAAK,WAAWA;AAChB,aAAK,gBAAgB,CAAC,MAAM,KAAK;AACjC,aAAK,cAAc,OAAO;AAC1B,aAAK,aAAa,OAAO,cAAc;AACvC,aAAK,aAAa,OAAO,cAAc,OAAO,eAAe,KAAK,OAAO,aAAa;AACtF,aAAK,iBAAiB,OAAO,kBAAkB,CAAC;AAChD,aAAK,mBAAmB,OAAO,oBAAoB,CAAC;AACpD,aAAK,oBAAoB,OAAO,qBAAqB;AACrD,aAAK,kBAAkB,OAAO;AAAA,MAChC;AAAA,MACA,gBAAgB,SAAS;AACvB,cAAM,aAAa,IAAI,IAAI,QAAQ,KAAK,KAAK,SAAS,SAAS,MAAM;AAGrE,YAAI,WAAW,SAAS,KAAK,SAAS,SAAS,MAAM;AACnD,iBAAO;AAAA,QACT;AAEA,cAAM,WAAW,GAAG,WAAW,QAAQ,GAAG,WAAW,QAAQ,CAAC,KAAK,cAAc,SAAS,WAAW,IAAI,IAAI,MAAM,WAAW,OAAO,EAAE;AACvI,eAAO,KAAK,eAAe,UAAU,YAAU,OAAO,WAAW,WAAW,WAAW,WAAW,kBAAkB,SAAS,OAAO,KAAK,QAAQ,IAAI,KAAK,IAAI;AAAA,MAChK;AAAA,MACA,kBAAkB,SAAS;AACzB,cAAM,eAAe,IAAI,IAAI,QAAQ,KAAK,KAAK,SAAS,SAAS,MAAM;AACvE,eAAO,KAAK,iBAAiB,UAAU,WAAS;AAC9C,cAAI,OAAO,UAAU,UAAU;AAC7B,kBAAM,cAAc,IAAI,IAAI,OAAO,KAAK,SAAS,SAAS,MAAM;AAChE,mBAAO,YAAY,aAAa,aAAa,YAAY,YAAY,aAAa,aAAa;AAAA,UACjG;AACA,cAAI,iBAAiB,QAAQ;AAC3B,mBAAO,MAAM,KAAK,QAAQ,GAAG;AAAA,UAC/B;AACA,iBAAO;AAAA,QACT,CAAC,IAAI;AAAA,MACP;AAAA,MACA,mBAAmB,OAAO,SAAS,MAAM;AACvC,cAAM,aAAa,KAAK,UAAU,cAAc,KAAK,YAAY,OAAO;AACxE,YAAI,CAAC,SAAS,KAAK,mBAAmB;AACpC,gBAAM,IAAI,MAAM,gDAAgD;AAAA,QAClE;AACA,YAAI,iBAAiB,GAAG,KAAK;AAC7B,YAAI,KAAK,iBAAiB;AACxB,2BAAiB,QAAQ,mBAAmB,KAAK,UAAU,eAAe,KAAK,CAAC,IAAI,GAAG,IAAI;AAAA,QAC7F;AACA,YAAI,OAAO;AACT,iBAAO,eAAe,KAAK,IAAI,eAAa,aAAa,KAAK,kBAAkB,QAAQ,MAAM,IAAI,QAAQ,MAAM;AAAA,YAC9G,YAAY;AAAA,cACV,CAAC,KAAK,UAAU,GAAG,GAAG,UAAU,GAAG,KAAK;AAAA,YAC1C;AAAA,UACF,CAAC,CAAC,GAAG,SAAS,kBAAgB,KAAK,OAAO,YAAY,CAAC,CAAC;AAAA,QAC1D;AACA,eAAO,KAAK,OAAO,OAAO;AAAA,MAC5B;AAAA,MACA,UAAU,SAAS,MAAM;AACvB,YAAI,CAAC,KAAK,gBAAgB,OAAO,KAAK,KAAK,kBAAkB,OAAO,GAAG;AACrE,iBAAO,KAAK,OAAO,OAAO;AAAA,QAC5B;AACA,cAAM,QAAQ,KAAK,YAAY,OAAO;AACtC,eAAO,mBAAmB,KAAK,EAAE,KAAK,SAAS,gBAAc;AAC3D,iBAAO,KAAK,mBAAmB,YAAY,SAAS,IAAI;AAAA,QAC1D,CAAC,CAAC;AAAA,MACJ;AAAA,IACF;AACA,mBAAe,YAAO,SAAS,uBAAuB,mBAAmB;AACvE,aAAO,KAAK,qBAAqB,gBAAmB,mBAAS,WAAW,GAAM,mBAAS,gBAAgB,GAAM,mBAAS,QAAQ,CAAC;AAAA,IACjI;AACA,mBAAe,aAAuB,gBAAG,6BAAmB;AAAA,MAC1D,OAAO;AAAA,MACP,SAAS,eAAe;AAAA,IAC1B,CAAC;AACD,KAAC,MAAM;AACL,OAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,gBAAgB,CAAC;AAAA,QACvF,MAAM;AAAA,MACR,CAAC,GAAG,WAAY;AACd,eAAO,CAAC;AAAA,UACN,MAAM;AAAA,UACN,YAAY,CAAC;AAAA,YACX,MAAM;AAAA,YACN,MAAM,CAAC,WAAW;AAAA,UACpB,CAAC;AAAA,QACH,GAAG;AAAA,UACD,MAAM;AAAA,QACR,GAAG;AAAA,UACD,MAAM;AAAA,UACN,YAAY,CAAC;AAAA,YACX,MAAM;AAAA,YACN,MAAM,CAAC,QAAQ;AAAA,UACjB,CAAC;AAAA,QACH,CAAC;AAAA,MACH,GAAG,IAAI;AAAA,IACT,GAAG;AACH,IAAM,YAAN,MAAM,WAAU;AAAA,MACd,YAAY,cAAc;AACxB,YAAI,cAAc;AAChB,gBAAM,IAAI,MAAM,4FAA4F;AAAA,QAC9G;AAAA,MACF;AAAA,MACA,OAAO,QAAQ,SAAS;AACtB,eAAO;AAAA,UACL,UAAU;AAAA,UACV,WAAW,CAAC;AAAA,YACV,SAAS;AAAA,YACT,UAAU;AAAA,YACV,OAAO;AAAA,UACT,GAAG,QAAQ,sBAAsB;AAAA,YAC/B,SAAS;AAAA,YACT,UAAU,QAAQ;AAAA,UACpB,GAAG,gBAAgB;AAAA,QACrB;AAAA,MACF;AAAA,IACF;AACA,cAAU,YAAO,SAAS,kBAAkB,mBAAmB;AAC7D,aAAO,KAAK,qBAAqB,WAAc,mBAAS,WAAW,EAAE,CAAC;AAAA,IACxE;AACA,cAAU,YAAsB,gBAAG,2BAAiB;AAAA,MAClD,MAAM;AAAA,IACR,CAAC;AACD,cAAU,YAAsB,gBAAG,2BAAiB,CAAC,CAAC;AACtD,KAAC,MAAM;AACL,OAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,WAAW,CAAC;AAAA,QAClF,MAAM;AAAA,MACR,CAAC,GAAG,WAAY;AACd,eAAO,CAAC;AAAA,UACN,MAAM;AAAA,UACN,YAAY,CAAC;AAAA,YACX,MAAM;AAAA,UACR,GAAG;AAAA,YACD,MAAM;AAAA,UACR,CAAC;AAAA,QACH,CAAC;AAAA,MACH,GAAG,IAAI;AAAA,IACT,GAAG;AAAA;AAAA;;;AC5RH,IAAY;AAAZ;;AAAA,KAAA,SAAYC,oBAAiB;AAC3B,MAAAA,mBAAAA,mBAAA,QAAA,IAAA,CAAA,IAAA;AACA,MAAAA,mBAAAA,mBAAA,QAAA,IAAA,CAAA,IAAA;AACA,MAAAA,mBAAAA,mBAAA,KAAA,IAAA,CAAA,IAAA;AACA,MAAAA,mBAAAA,mBAAA,eAAA,IAAA,CAAA,IAAA;AACA,MAAAA,mBAAAA,mBAAA,aAAA,IAAA,CAAA,IAAA;IACF,GANY,sBAAA,oBAAiB,CAAA,EAAA;;;;;ACA7B,IAAY;AAAZ;;AAAA,KAAA,SAAYC,sBAAmB;AAC7B,MAAAA,qBAAAA,qBAAA,mBAAA,IAAA,CAAA,IAAA;AACA,MAAAA,qBAAAA,qBAAA,mBAAA,IAAA,CAAA,IAAA;AACA,MAAAA,qBAAAA,qBAAA,oBAAA,IAAA,CAAA,IAAA;AACA,MAAAA,qBAAAA,qBAAA,gBAAA,IAAA,CAAA,IAAA;AACA,MAAAA,qBAAAA,qBAAA,gBAAA,IAAA,CAAA,IAAA;AACA,MAAAA,qBAAAA,qBAAA,cAAA,IAAA,CAAA,IAAA;AACA,MAAAA,qBAAAA,qBAAA,aAAA,IAAA,CAAA,IAAA;IACF,GARY,wBAAA,sBAAmB,CAAA,EAAA;;;;;ACO/B,SAAsB,kBAClB,SACA,cACA,YACA,UACA,YACA,aAAoB;;AAGpB,UAAM,gBAAgB,oBAAoB,SAAS,YAAY;AAE/D,kBAAc,WAAW,YAAY,QAAQ,cAAc;AAC3D,kBAAc,aAAa,cAAc,QAAQ,cAAc;AAC/D,kBAAc,cAAc,eAAe,QAAQ,cAAc;AAEjE,UAAM,mBAAmB,MAAM,oBAAoB,SAAS,cAAc,UAAU;AAEpF,WAAO,kCACA,gBACA;EAEX;;AAEA,SAAsB,gBAAgB,SAAmC;;AACrE,UAAM,qBAAqB,wBAAwB,OAAO;AAC1D,WAAO,gBAAgB,SAAS,kBAAkB;EACtD;;AAEM,SAAU,eACZ,SACA,YAA0B;AAE1B,UAAQ,qBAAqB,eAAe,UAAU,EAAE,UACpD,CAAC,aAAa,UACd,CAAC,UAAW,KAAK;AAEzB;AAEA,SAAsB,+BAClB,SACA,UACA,eACA,iBAAuB;;AAEvB,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAU;AACnC,cAAQ,mBAAmB,UAAU,eAAe,eAAe,EAAE,UACjE,CAAC,aAAa,QAAQ,QAAQ,GAC9B,CAAC,UAAW,OAAO,KAAK,CAAC;IAEjC,CAAC;EACL;;AAEA,SAAe,oBACX,SACA,cACA,YAAmB;;AAGnB,UAAM,kBAAkB,aAAa,kBAAkB,cAAc,kBAAkB;AACvF,UAAM,oBAAoB,aAAa,oBAAoB,eAAe,oBAAoB;AAE9F,UAAM,kBAAkB,MAAM,+BAC1B,QAAQ,sBACR,cACA,QAAQ,YAAY,IACpB,iBAAiB;AAGrB,WAAO,EAAE,iBAAiB,mBAAmB,gBAAe;EAChE;;AAEA,SAAS,wBAAwB,SAAmC;AAChE,MAAI,QAAQ,gBAAgB;AACxB,WAAO,uBAAuB,SAAS;MACnC,kBAAkB;MAClB,kBAAkB;KACrB;EACL,WAAW,QAAQ,gBAAgB;AAC/B,WAAO,uBAAuB,SAAS;MACnC,kBAAkB;MAClB,kBAAkB;KACrB;EACL;AACA,SAAO;AACX;AAEA,SAAe,gBACX,SACA,oBAAkC;;AAElC,UAAM,eAAe,QAAQ,kBAAkB,YAAY;AAE3D,QAAI,oBAAoB;AACpB,YAAM,kBAAkB,oBAAoB,OAAO;AACnD,aAAO;IACX;AAEA,UAAM,aAAa,QAAQ;AAC3B,UAAM,eAAe,MAAM,kBAAkB,SAAS,cAAc,UAAU;AAC9E,UAAM,mBAAmB,sBAAsB,SAAS,YAAY;AAEpE,WAAO,CAAC,kBAAkB,YAAY;EAC1C;;AAEA,SAAS,oBACL,SACA,cAAoB;AAEpB,SAAO;IACH,IAAI,KAAK,QAAO;IAChB,UAAU;IACV,YAAY;IACZ,aAAa;IACb,iBAAiB;IACjB,iBAAiB;IACjB,mBAAmB;IACnB,eAAe;IACf,OAAO;IACP,WAAW;IACX,OAAO;IACP,UAAU,QAAQ,cAAc;IAChC,eAAe,QAAQ,eAAe;IACtC,UAAU;;AAElB;AAEA,SAAe,kBACX,oBACA,SAAmC;;AAEnC,UAAM,gBAAgB,QAAQ,YAAY;AAC1C,eAAW,aAAa,oBAAoB;AACxC,UAAI,UAAU,kBAAkB,MAAM;AAClC,kBAAU,kBAAkB,MAAM,+BAC9B,QAAQ,sBACR,UAAU,UACV,eACA,UAAU,iBAAiB;MAEnC;IACJ;EACJ;;AAGA,SAAS,uBACL,SACA,gBAAmC;AAEnC,QAAM,aAAa,QAAQ,cAAc,YAAY,OAAO,eACxD,eAAe,SAAS,UAAU,eAAe,CAAC;AAEtD,SAAO,YAAY,SAAS,aAAa;AAC7C;AAEA,SAAS,sBACL,SACA,cAAoB;AAEpB,MAAI,QAAQ,gBAAgB;AACxB,WAAO,eAAe,SAAS,cAAc,oBAAoB,mBAAmB,kBAAkB,QAAQ,QAAQ,aAAa,iBAAiB;EACxJ,WAAW,QAAQ,gBAAgB;AAC/B,WAAO,eAAe,SAAS,cAAc,oBAAoB,aAAa,kBAAkB,QAAQ,QAAQ,aAAa,WAAW;EAC5I;AACA,SAAO;AACX;AAEA,SAAS,eACL,SACA,cACA,mBACA,iBACA,iBAAuB;AAEvB,SAAO;IACH,IAAI,KAAK,QAAO;IAChB,UAAU,QAAQ,eAAe;IACjC,YAAY,QAAQ,eAAe;IACnC,aAAa,QAAQ,eAAe;IACpC;IACA;IACA,eAAe;IACf;IACA,OAAO;IACP,WAAW;IACX,OAAO;IACP,UAAU,QAAQ,cAAc;IAChC,eAAe;IACf,UAAU;;AAElB;AApMA;;;AAEA;AACA;;;;;AC0GA,SAAS,SAAS,IAAI,OAAO,KAAK;AAChC,MAAI,WAAW;AACf,MAAI,UAAU;AACd,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,QAAM,QAAQ,MAAM;AAClB,eAAW,KAAK,IAAI;AACpB,cAAU;AACV,aAAS,GAAG,MAAM,eAAe,UAAU;AAC3C,QAAI,CAAC,SAAS;AACZ,sBAAgB;AAChB,mBAAa,CAAC;AAAA,IAChB;AAAA,EACF;AACA,SAAO,SAAS,WAAW,MAAM;AAC/B,UAAM,MAAM,KAAK,IAAI;AACrB,UAAM,YAAY,QAAQ,MAAM;AAChC,oBAAgB;AAChB,iBAAa;AACb,QAAI,aAAa,KAAK,YAAY,MAAM;AACtC,UAAI,SAAS;AACX,qBAAa,OAAO;AACpB,kBAAU;AAAA,MACZ;AACA,iBAAW;AACX,eAAS,GAAG,MAAM,eAAe,UAAU;AAC3C,UAAI,CAAC,SAAS;AACZ,wBAAgB;AAChB,qBAAa,CAAC;AAAA,MAChB;AAAA,IACF,WAAW,CAAC,SAAS;AACnB,gBAAU,OAAO,WAAW,OAAO,SAAS;AAAA,IAC9C;AACA,WAAO;AAAA,EACT;AACF;AAjJA,IAKM,OAoBA,QAkEA,sBAuDA;AAlJN;AAAA;AAKA,IAAM,QAAN,MAAY;AAAA,MACV,YAAY,GAAG,GAAG,UAAU,MAAM;AAChC,YAAI,MAAM,CAAC,KAAK,MAAM,CAAC,GAAG;AACxB,gBAAM,IAAI,MAAM,sBAAsB,CAAC,KAAK,CAAC,GAAG;AAAA,QAClD;AACA,aAAK,IAAI,CAAC;AACV,aAAK,IAAI,CAAC;AACV,aAAK,WAAW,YAAY;AAC5B,aAAK,OAAO,QAAQ,KAAK,IAAI;AAAA,MAC/B;AAAA,MACA,WAAW,OAAO;AAChB,eAAO,KAAK,KAAK,KAAK,IAAI,KAAK,IAAI,MAAM,GAAG,CAAC,IAAI,KAAK,IAAI,KAAK,IAAI,MAAM,GAAG,CAAC,CAAC;AAAA,MAChF;AAAA,MACA,OAAO,OAAO;AACZ,eAAO,KAAK,MAAM,MAAM,KAAK,KAAK,MAAM,MAAM,KAAK,KAAK,aAAa,MAAM,YAAY,KAAK,SAAS,MAAM;AAAA,MAC7G;AAAA,MACA,aAAa,OAAO;AAClB,eAAO,KAAK,SAAS,MAAM,OAAO,KAAK,WAAW,KAAK,KAAK,KAAK,OAAO,MAAM,QAAQ;AAAA,MACxF;AAAA,IACF;AACA,IAAM,SAAN,MAAM,QAAO;AAAA,MACX,YAAY,YAAY,UAAU,UAAU,UAAU,YAAY,UAAU;AAC1E,aAAK,aAAa;AAClB,aAAK,WAAW;AAChB,aAAK,WAAW;AAChB,aAAK,WAAW;AAChB,aAAK,aAAa;AAClB,aAAK,WAAW;AAAA,MAClB;AAAA,MACA,OAAO,WAAW,QAAQ,QAAQ;AAChC,cAAM,KAAK,KAAK,uBAAuB,OAAO,CAAC,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE;AACxE,cAAM,KAAK,KAAK,uBAAuB,OAAO,CAAC,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE;AACxE,eAAO,IAAI,QAAO,OAAO,CAAC,GAAG,IAAI,IAAI,OAAO,CAAC,GAAG,OAAO,OAAO,OAAO,GAAG;AAAA,MAC1E;AAAA,MACA,OAAO,uBAAuB,IAAI,IAAI,IAAI;AACxC,cAAM,MAAM,GAAG,IAAI,GAAG;AACtB,cAAM,MAAM,GAAG,IAAI,GAAG;AACtB,cAAM,MAAM,GAAG,IAAI,GAAG;AACtB,cAAM,MAAM,GAAG,IAAI,GAAG;AACtB,cAAM,KAAK;AAAA,UACT,IAAI,GAAG,IAAI,GAAG,KAAK;AAAA,UACnB,IAAI,GAAG,IAAI,GAAG,KAAK;AAAA,QACrB;AACA,cAAM,KAAK;AAAA,UACT,IAAI,GAAG,IAAI,GAAG,KAAK;AAAA,UACnB,IAAI,GAAG,IAAI,GAAG,KAAK;AAAA,QACrB;AACA,cAAM,KAAK,KAAK,KAAK,MAAM,MAAM,MAAM,GAAG;AAC1C,cAAM,KAAK,KAAK,KAAK,MAAM,MAAM,MAAM,GAAG;AAC1C,cAAM,MAAM,GAAG,IAAI,GAAG;AACtB,cAAM,MAAM,GAAG,IAAI,GAAG;AACtB,cAAM,IAAI,MAAM,KAAK;AACrB,cAAM,KAAK;AAAA,UACT,GAAG,GAAG,IAAI,MAAM;AAAA,UAChB,GAAG,GAAG,IAAI,MAAM;AAAA,QAClB;AACA,cAAM,KAAK,GAAG,IAAI,GAAG;AACrB,cAAM,KAAK,GAAG,IAAI,GAAG;AACrB,eAAO;AAAA,UACL,IAAI,IAAI,MAAM,GAAG,IAAI,IAAI,GAAG,IAAI,EAAE;AAAA,UAClC,IAAI,IAAI,MAAM,GAAG,IAAI,IAAI,GAAG,IAAI,EAAE;AAAA,QACpC;AAAA,MACF;AAAA,MACA,SAAS;AACP,cAAM,QAAQ;AACd,YAAI,SAAS;AACb,YAAI;AACJ,YAAI;AACJ,iBAAS,IAAI,GAAG,KAAK,OAAO,KAAK,GAAG;AAClC,gBAAM,IAAI,IAAI;AACd,gBAAM,KAAK,KAAK,MAAM,GAAG,KAAK,WAAW,GAAG,KAAK,SAAS,GAAG,KAAK,SAAS,GAAG,KAAK,SAAS,CAAC;AAC7F,gBAAM,KAAK,KAAK,MAAM,GAAG,KAAK,WAAW,GAAG,KAAK,SAAS,GAAG,KAAK,SAAS,GAAG,KAAK,SAAS,CAAC;AAC7F,cAAI,IAAI,GAAG;AACT,kBAAM,QAAQ,KAAK;AACnB,kBAAM,QAAQ,KAAK;AACnB,sBAAU,KAAK,KAAK,QAAQ,QAAQ,QAAQ,KAAK;AAAA,UACnD;AACA,eAAK;AACL,eAAK;AAAA,QACP;AACA,eAAO;AAAA,MACT;AAAA,MACA,MAAM,GAAG,OAAO,IAAI,IAAI,KAAK;AAC3B,eAAO,SAAS,IAAM,MAAM,IAAM,MAAM,IAAM,KAAK,IAAM,MAAM,IAAM,MAAM,IAAM,KAAK,IAAI,IAAM,MAAM,IAAM,KAAK,IAAI,IAAI,MAAM,IAAI,IAAI;AAAA,MACzI;AAAA,IACF;AACA,IAAM,uBAAN,MAA2B;AAAA,MACzB,cAAc;AACZ,YAAI;AACF,eAAK,MAAM,IAAI,YAAY;AAAA,QAC7B,SAAS,OAAO;AACd,eAAK,MAAM;AAAA,QACb;AAAA,MACF;AAAA,MACA,iBAAiB,MAAM,UAAU,SAAS;AACxC,aAAK,IAAI,iBAAiB,MAAM,UAAU,OAAO;AAAA,MACnD;AAAA,MACA,cAAc,OAAO;AACnB,eAAO,KAAK,IAAI,cAAc,KAAK;AAAA,MACrC;AAAA,MACA,oBAAoB,MAAM,UAAU,SAAS;AAC3C,aAAK,IAAI,oBAAoB,MAAM,UAAU,OAAO;AAAA,MACtD;AAAA,IACF;AAsCA,IAAM,eAAN,MAAM,sBAAqB,qBAAqB;AAAA,MAC9C,YAAY,QAAQ,UAAU,CAAC,GAAG;AAChC,cAAM;AACN,aAAK,SAAS;AACd,aAAK,mBAAmB,WAAS;AAC/B,cAAI,MAAM,YAAY,GAAG;AACvB,iBAAK,kBAAkB;AACvB,iBAAK,aAAa,KAAK;AAAA,UACzB;AAAA,QACF;AACA,aAAK,mBAAmB,WAAS;AAC/B,cAAI,KAAK,iBAAiB;AACxB,iBAAK,kBAAkB,KAAK;AAAA,UAC9B;AAAA,QACF;AACA,aAAK,iBAAiB,WAAS;AAC7B,cAAI,MAAM,YAAY,KAAK,KAAK,iBAAiB;AAC/C,iBAAK,kBAAkB;AACvB,iBAAK,WAAW,KAAK;AAAA,UACvB;AAAA,QACF;AACA,aAAK,oBAAoB,WAAS;AAChC,cAAI,MAAM,YAAY;AACpB,kBAAM,eAAe;AAAA,UACvB;AACA,cAAI,MAAM,cAAc,WAAW,GAAG;AACpC,kBAAM,QAAQ,MAAM,eAAe,CAAC;AACpC,iBAAK,aAAa,KAAK;AAAA,UACzB;AAAA,QACF;AACA,aAAK,mBAAmB,WAAS;AAC/B,cAAI,MAAM,YAAY;AACpB,kBAAM,eAAe;AAAA,UACvB;AACA,gBAAM,QAAQ,MAAM,cAAc,CAAC;AACnC,eAAK,kBAAkB,KAAK;AAAA,QAC9B;AACA,aAAK,kBAAkB,WAAS;AAC9B,gBAAM,mBAAmB,MAAM,WAAW,KAAK;AAC/C,cAAI,kBAAkB;AACpB,gBAAI,MAAM,YAAY;AACpB,oBAAM,eAAe;AAAA,YACvB;AACA,kBAAM,QAAQ,MAAM,eAAe,CAAC;AACpC,iBAAK,WAAW,KAAK;AAAA,UACvB;AAAA,QACF;AACA,aAAK,sBAAsB,WAAS;AAClC,eAAK,kBAAkB;AACvB,gBAAM,eAAe;AACrB,eAAK,aAAa,KAAK;AAAA,QACzB;AACA,aAAK,qBAAqB,WAAS;AACjC,cAAI,KAAK,iBAAiB;AACxB,kBAAM,eAAe;AACrB,iBAAK,kBAAkB,KAAK;AAAA,UAC9B;AAAA,QACF;AACA,aAAK,oBAAoB,WAAS;AAChC,cAAI,KAAK,iBAAiB;AACxB,kBAAM,eAAe;AACrB,iBAAK,kBAAkB;AACvB,iBAAK,WAAW,KAAK;AAAA,UACvB;AAAA,QACF;AACA,aAAK,uBAAuB,QAAQ,wBAAwB;AAC5D,aAAK,WAAW,QAAQ,YAAY;AACpC,aAAK,WAAW,QAAQ,YAAY;AACpC,aAAK,WAAW,cAAc,UAAU,QAAQ,WAAW;AAC3D,aAAK,cAAc,iBAAiB,UAAU,QAAQ,cAAc;AACpE,aAAK,UAAU,QAAQ,WAAW;AAClC,aAAK,WAAW,QAAQ,YAAY;AACpC,aAAK,kBAAkB,QAAQ,mBAAmB;AAClD,aAAK,oBAAoB,KAAK,WAAW,SAAS,cAAa,UAAU,eAAe,KAAK,QAAQ,IAAI,cAAa,UAAU;AAChI,aAAK,OAAO,OAAO,WAAW,IAAI;AAClC,aAAK,MAAM;AACX,aAAK,GAAG;AAAA,MACV;AAAA,MACA,QAAQ;AACN,cAAM;AAAA,UACJ,MAAM;AAAA,UACN;AAAA,QACF,IAAI;AACJ,YAAI,YAAY,KAAK;AACrB,YAAI,UAAU,GAAG,GAAG,OAAO,OAAO,OAAO,MAAM;AAC/C,YAAI,SAAS,GAAG,GAAG,OAAO,OAAO,OAAO,MAAM;AAC9C,aAAK,QAAQ,CAAC;AACd,aAAK,OAAO,KAAK,sBAAsB,CAAC;AACxC,aAAK,WAAW;AAAA,MAClB;AAAA,MACA,YAAY,SAAS,UAAU,CAAC,GAAG;AACjC,eAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,gBAAM,QAAQ,IAAI,MAAM;AACxB,gBAAM,QAAQ,QAAQ,SAAS,OAAO,oBAAoB;AAC1D,gBAAM,QAAQ,QAAQ,SAAS,KAAK,OAAO,QAAQ;AACnD,gBAAM,SAAS,QAAQ,UAAU,KAAK,OAAO,SAAS;AACtD,gBAAM,UAAU,QAAQ,WAAW;AACnC,gBAAM,UAAU,QAAQ,WAAW;AACnC,eAAK,OAAO,KAAK,sBAAsB,CAAC;AACxC,gBAAM,SAAS,MAAM;AACnB,iBAAK,KAAK,UAAU,OAAO,SAAS,SAAS,OAAO,MAAM;AAC1D,oBAAQ;AAAA,UACV;AACA,gBAAM,UAAU,WAAS;AACvB,mBAAO,KAAK;AAAA,UACd;AACA,gBAAM,cAAc;AACpB,gBAAM,MAAM;AACZ,eAAK,WAAW;AAAA,QAClB,CAAC;AAAA,MACH;AAAA,MACA,UAAU,OAAO,aAAa,gBAAgB;AAC5C,gBAAQ,MAAM;AAAA,UACZ,KAAK;AACH,mBAAO,KAAK,OAAO;AAAA,UACrB;AACE,mBAAO,KAAK,OAAO,UAAU,MAAM,cAAc;AAAA,QACrD;AAAA,MACF;AAAA,MACA,KAAK;AACH,aAAK,OAAO,MAAM,cAAc;AAChC,aAAK,OAAO,MAAM,gBAAgB;AAClC,aAAK,OAAO,MAAM,aAAa;AAC/B,cAAM,QAAQ,YAAY,KAAK,UAAU,SAAS,KAAK,kBAAkB;AACzE,YAAI,OAAO,gBAAgB,CAAC,OAAO;AACjC,eAAK,qBAAqB;AAAA,QAC5B,OAAO;AACL,eAAK,mBAAmB;AACxB,cAAI,kBAAkB,QAAQ;AAC5B,iBAAK,mBAAmB;AAAA,UAC1B;AAAA,QACF;AAAA,MACF;AAAA,MACA,MAAM;AACJ,aAAK,OAAO,MAAM,cAAc;AAChC,aAAK,OAAO,MAAM,gBAAgB;AAClC,aAAK,OAAO,MAAM,aAAa;AAC/B,aAAK,OAAO,oBAAoB,eAAe,KAAK,mBAAmB;AACvE,aAAK,OAAO,oBAAoB,eAAe,KAAK,kBAAkB;AACtE,aAAK,OAAO,cAAc,oBAAoB,aAAa,KAAK,iBAAiB;AACjF,aAAK,OAAO,oBAAoB,aAAa,KAAK,gBAAgB;AAClE,aAAK,OAAO,oBAAoB,aAAa,KAAK,gBAAgB;AAClE,aAAK,OAAO,cAAc,oBAAoB,WAAW,KAAK,cAAc;AAC5E,aAAK,OAAO,oBAAoB,cAAc,KAAK,iBAAiB;AACpE,aAAK,OAAO,oBAAoB,aAAa,KAAK,gBAAgB;AAClE,aAAK,OAAO,oBAAoB,YAAY,KAAK,eAAe;AAAA,MAClE;AAAA,MACA,UAAU;AACR,eAAO,KAAK;AAAA,MACd;AAAA,MACA,SAAS,aAAa;AAAA,QACpB,QAAQ;AAAA,MACV,IAAI,CAAC,GAAG;AACN,YAAI,OAAO;AACT,eAAK,MAAM;AAAA,QACb;AACA,aAAK,UAAU,aAAa,KAAK,WAAW,KAAK,IAAI,GAAG,KAAK,SAAS,KAAK,IAAI,CAAC;AAChF,aAAK,QAAQ,KAAK,MAAM,OAAO,WAAW;AAAA,MAC5C;AAAA,MACA,SAAS;AACP,eAAO,KAAK;AAAA,MACd;AAAA,MACA,sBAAsB,OAAO;AAC3B,eAAO;AAAA,UACL,UAAU,SAAS,cAAc,QAAQ,MAAM,WAAW,KAAK;AAAA,UAC/D,SAAS,SAAS,aAAa,QAAQ,MAAM,UAAU,KAAK;AAAA,UAC5D,UAAU,SAAS,cAAc,QAAQ,MAAM,WAAW,KAAK;AAAA,UAC/D,UAAU,SAAS,cAAc,QAAQ,MAAM,WAAW,KAAK;AAAA,UAC/D,sBAAsB,SAAS,0BAA0B,QAAQ,MAAM,uBAAuB,KAAK;AAAA,QACrG;AAAA,MACF;AAAA,MACA,aAAa,OAAO;AAClB,aAAK,cAAc,IAAI,YAAY,eAAe;AAAA,UAChD,QAAQ;AAAA,QACV,CAAC,CAAC;AACF,cAAM,oBAAoB,KAAK,sBAAsB;AACrD,cAAM,gBAAgB,OAAO,OAAO,OAAO,OAAO,CAAC,GAAG,iBAAiB,GAAG;AAAA,UACxE,QAAQ,CAAC;AAAA,QACX,CAAC;AACD,aAAK,MAAM,KAAK,aAAa;AAC7B,aAAK,OAAO,iBAAiB;AAC7B,aAAK,cAAc,KAAK;AAAA,MAC1B;AAAA,MACA,cAAc,OAAO;AACnB,YAAI,KAAK,MAAM,WAAW,GAAG;AAC3B,eAAK,aAAa,KAAK;AACvB;AAAA,QACF;AACA,aAAK,cAAc,IAAI,YAAY,sBAAsB;AAAA,UACvD,QAAQ;AAAA,QACV,CAAC,CAAC;AACF,cAAM,IAAI,MAAM;AAChB,cAAM,IAAI,MAAM;AAChB,cAAM,WAAW,MAAM,aAAa,SAAY,MAAM,WAAW,MAAM,UAAU,SAAY,MAAM,QAAQ;AAC3G,cAAM,QAAQ,KAAK,aAAa,GAAG,GAAG,QAAQ;AAC9C,cAAM,iBAAiB,KAAK,MAAM,KAAK,MAAM,SAAS,CAAC;AACvD,cAAM,aAAa,eAAe;AAClC,cAAM,YAAY,WAAW,SAAS,KAAK,WAAW,WAAW,SAAS,CAAC;AAC3E,cAAM,sBAAsB,YAAY,MAAM,WAAW,SAAS,KAAK,KAAK,cAAc;AAC1F,cAAM,oBAAoB,KAAK,sBAAsB,cAAc;AACnE,YAAI,CAAC,aAAa,EAAE,aAAa,sBAAsB;AACrD,gBAAM,QAAQ,KAAK,UAAU,OAAO,iBAAiB;AACrD,cAAI,CAAC,WAAW;AACd,iBAAK,SAAS,OAAO,iBAAiB;AAAA,UACxC,WAAW,OAAO;AAChB,iBAAK,WAAW,OAAO,iBAAiB;AAAA,UAC1C;AACA,qBAAW,KAAK;AAAA,YACd,MAAM,MAAM;AAAA,YACZ,GAAG,MAAM;AAAA,YACT,GAAG,MAAM;AAAA,YACT,UAAU,MAAM;AAAA,UAClB,CAAC;AAAA,QACH;AACA,aAAK,cAAc,IAAI,YAAY,qBAAqB;AAAA,UACtD,QAAQ;AAAA,QACV,CAAC,CAAC;AAAA,MACJ;AAAA,MACA,WAAW,OAAO;AAChB,aAAK,cAAc,KAAK;AACxB,aAAK,cAAc,IAAI,YAAY,aAAa;AAAA,UAC9C,QAAQ;AAAA,QACV,CAAC,CAAC;AAAA,MACJ;AAAA,MACA,uBAAuB;AACrB,aAAK,kBAAkB;AACvB,aAAK,OAAO,iBAAiB,eAAe,KAAK,mBAAmB;AACpE,aAAK,OAAO,iBAAiB,eAAe,KAAK,kBAAkB;AACnE,aAAK,OAAO,cAAc,iBAAiB,aAAa,KAAK,iBAAiB;AAAA,MAChF;AAAA,MACA,qBAAqB;AACnB,aAAK,kBAAkB;AACvB,aAAK,OAAO,iBAAiB,aAAa,KAAK,gBAAgB;AAC/D,aAAK,OAAO,iBAAiB,aAAa,KAAK,gBAAgB;AAC/D,aAAK,OAAO,cAAc,iBAAiB,WAAW,KAAK,cAAc;AAAA,MAC3E;AAAA,MACA,qBAAqB;AACnB,aAAK,OAAO,iBAAiB,cAAc,KAAK,iBAAiB;AACjE,aAAK,OAAO,iBAAiB,aAAa,KAAK,gBAAgB;AAC/D,aAAK,OAAO,iBAAiB,YAAY,KAAK,eAAe;AAAA,MAC/D;AAAA,MACA,OAAO,SAAS;AACd,aAAK,cAAc,CAAC;AACpB,aAAK,gBAAgB;AACrB,aAAK,cAAc,QAAQ,WAAW,QAAQ,YAAY;AAC1D,aAAK,KAAK,YAAY,QAAQ;AAAA,MAChC;AAAA,MACA,aAAa,GAAG,GAAG,UAAU;AAC3B,cAAM,OAAO,KAAK,OAAO,sBAAsB;AAC/C,eAAO,IAAI,MAAM,IAAI,KAAK,MAAM,IAAI,KAAK,KAAK,WAAU,oBAAI,KAAK,GAAE,QAAQ,CAAC;AAAA,MAC9E;AAAA,MACA,UAAU,OAAO,SAAS;AACxB,cAAM;AAAA,UACJ;AAAA,QACF,IAAI;AACJ,oBAAY,KAAK,KAAK;AACtB,YAAI,YAAY,SAAS,GAAG;AAC1B,cAAI,YAAY,WAAW,GAAG;AAC5B,wBAAY,QAAQ,YAAY,CAAC,CAAC;AAAA,UACpC;AACA,gBAAM,SAAS,KAAK,sBAAsB,YAAY,CAAC,GAAG,YAAY,CAAC,GAAG,OAAO;AACjF,gBAAM,QAAQ,OAAO,WAAW,aAAa,MAAM;AACnD,sBAAY,MAAM;AAClB,iBAAO;AAAA,QACT;AACA,eAAO;AAAA,MACT;AAAA,MACA,sBAAsB,YAAY,UAAU,SAAS;AACnD,cAAM,WAAW,QAAQ,uBAAuB,SAAS,aAAa,UAAU,KAAK,IAAI,QAAQ,wBAAwB,KAAK;AAC9H,cAAM,WAAW,KAAK,aAAa,UAAU,OAAO;AACpD,cAAM,SAAS;AAAA,UACb,KAAK;AAAA,UACL,OAAO,KAAK;AAAA,QACd;AACA,aAAK,gBAAgB;AACrB,aAAK,aAAa;AAClB,eAAO;AAAA,MACT;AAAA,MACA,aAAa,UAAU,SAAS;AAC9B,eAAO,KAAK,IAAI,QAAQ,YAAY,WAAW,IAAI,QAAQ,QAAQ;AAAA,MACrE;AAAA,MACA,kBAAkB,GAAG,GAAG,OAAO;AAC7B,cAAM,MAAM,KAAK;AACjB,YAAI,OAAO,GAAG,CAAC;AACf,YAAI,IAAI,GAAG,GAAG,OAAO,GAAG,IAAI,KAAK,IAAI,KAAK;AAC1C,aAAK,WAAW;AAAA,MAClB;AAAA,MACA,WAAW,OAAO,SAAS;AACzB,cAAM,MAAM,KAAK;AACjB,cAAM,aAAa,MAAM,WAAW,MAAM;AAC1C,cAAM,YAAY,KAAK,KAAK,MAAM,OAAO,CAAC,IAAI;AAC9C,YAAI,UAAU;AACd,YAAI,YAAY,QAAQ;AACxB,iBAAS,IAAI,GAAG,IAAI,WAAW,KAAK,GAAG;AACrC,gBAAM,IAAI,IAAI;AACd,gBAAM,KAAK,IAAI;AACf,gBAAM,MAAM,KAAK;AACjB,gBAAM,IAAI,IAAI;AACd,gBAAM,KAAK,IAAI;AACf,gBAAM,MAAM,KAAK;AACjB,cAAI,IAAI,MAAM,MAAM,WAAW;AAC/B,eAAK,IAAI,KAAK,IAAI,MAAM,SAAS;AACjC,eAAK,IAAI,IAAI,KAAK,MAAM,SAAS;AACjC,eAAK,MAAM,MAAM,SAAS;AAC1B,cAAI,IAAI,MAAM,MAAM,WAAW;AAC/B,eAAK,IAAI,KAAK,IAAI,MAAM,SAAS;AACjC,eAAK,IAAI,IAAI,KAAK,MAAM,SAAS;AACjC,eAAK,MAAM,MAAM,SAAS;AAC1B,gBAAM,QAAQ,KAAK,IAAI,MAAM,aAAa,MAAM,YAAY,QAAQ,QAAQ;AAC5E,eAAK,kBAAkB,GAAG,GAAG,KAAK;AAAA,QACpC;AACA,YAAI,UAAU;AACd,YAAI,KAAK;AAAA,MACX;AAAA,MACA,SAAS,OAAO,SAAS;AACvB,cAAM,MAAM,KAAK;AACjB,cAAM,QAAQ,QAAQ,UAAU,IAAI,QAAQ,WAAW,QAAQ,WAAW,QAAQ,YAAY;AAC9F,YAAI,UAAU;AACd,aAAK,kBAAkB,MAAM,GAAG,MAAM,GAAG,KAAK;AAC9C,YAAI,UAAU;AACd,YAAI,YAAY,QAAQ;AACxB,YAAI,KAAK;AAAA,MACX;AAAA,MACA,UAAU,aAAa,WAAW,SAAS;AACzC,mBAAW,SAAS,aAAa;AAC/B,gBAAM;AAAA,YACJ;AAAA,UACF,IAAI;AACJ,gBAAM,oBAAoB,KAAK,sBAAsB,KAAK;AAC1D,cAAI,OAAO,SAAS,GAAG;AACrB,qBAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK,GAAG;AACzC,oBAAM,aAAa,OAAO,CAAC;AAC3B,oBAAM,QAAQ,IAAI,MAAM,WAAW,GAAG,WAAW,GAAG,WAAW,UAAU,WAAW,IAAI;AACxF,kBAAI,MAAM,GAAG;AACX,qBAAK,OAAO,iBAAiB;AAAA,cAC/B;AACA,oBAAM,QAAQ,KAAK,UAAU,OAAO,iBAAiB;AACrD,kBAAI,OAAO;AACT,0BAAU,OAAO,iBAAiB;AAAA,cACpC;AAAA,YACF;AAAA,UACF,OAAO;AACL,iBAAK,OAAO,iBAAiB;AAC7B,oBAAQ,OAAO,CAAC,GAAG,iBAAiB;AAAA,UACtC;AAAA,QACF;AAAA,MACF;AAAA,MACA,SAAS;AACP,cAAM,cAAc,KAAK;AACzB,cAAM,QAAQ,KAAK,IAAI,OAAO,oBAAoB,GAAG,CAAC;AACtD,cAAM,OAAO;AACb,cAAM,OAAO;AACb,cAAM,OAAO,KAAK,OAAO,QAAQ;AACjC,cAAM,OAAO,KAAK,OAAO,SAAS;AAClC,cAAM,MAAM,SAAS,gBAAgB,8BAA8B,KAAK;AACxE,YAAI,aAAa,SAAS,KAAK,OAAO,MAAM,SAAS,CAAC;AACtD,YAAI,aAAa,UAAU,KAAK,OAAO,OAAO,SAAS,CAAC;AACxD,aAAK,UAAU,aAAa,CAAC,OAAO;AAAA,UAClC;AAAA,QACF,MAAM;AACJ,gBAAM,OAAO,SAAS,cAAc,MAAM;AAC1C,cAAI,CAAC,MAAM,MAAM,SAAS,CAAC,KAAK,CAAC,MAAM,MAAM,SAAS,CAAC,KAAK,CAAC,MAAM,MAAM,SAAS,CAAC,KAAK,CAAC,MAAM,MAAM,SAAS,CAAC,GAAG;AAChH,kBAAM,OAAO,KAAK,MAAM,WAAW,EAAE,QAAQ,CAAC,CAAC,IAAI,MAAM,WAAW,EAAE,QAAQ,CAAC,CAAC,MAAW,MAAM,SAAS,EAAE,QAAQ,CAAC,CAAC,IAAI,MAAM,SAAS,EAAE,QAAQ,CAAC,CAAC,IAAS,MAAM,SAAS,EAAE,QAAQ,CAAC,CAAC,IAAI,MAAM,SAAS,EAAE,QAAQ,CAAC,CAAC,IAAS,MAAM,SAAS,EAAE,QAAQ,CAAC,CAAC,IAAI,MAAM,SAAS,EAAE,QAAQ,CAAC,CAAC;AAC3R,iBAAK,aAAa,KAAK,IAAI;AAC3B,iBAAK,aAAa,iBAAiB,MAAM,WAAW,MAAM,QAAQ,CAAC,CAAC;AACpE,iBAAK,aAAa,UAAU,QAAQ;AACpC,iBAAK,aAAa,QAAQ,MAAM;AAChC,iBAAK,aAAa,kBAAkB,OAAO;AAC3C,gBAAI,YAAY,IAAI;AAAA,UACtB;AAAA,QACF,GAAG,CAAC,OAAO;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF,MAAM;AACJ,gBAAM,SAAS,SAAS,cAAc,QAAQ;AAC9C,gBAAM,OAAO,UAAU,IAAI,WAAW,WAAW,YAAY;AAC7D,iBAAO,aAAa,KAAK,KAAK,SAAS,CAAC;AACxC,iBAAO,aAAa,MAAM,MAAM,EAAE,SAAS,CAAC;AAC5C,iBAAO,aAAa,MAAM,MAAM,EAAE,SAAS,CAAC;AAC5C,iBAAO,aAAa,QAAQ,QAAQ;AACpC,cAAI,YAAY,MAAM;AAAA,QACxB,CAAC;AACD,cAAM,SAAS;AACf,cAAM,SAAS,+FAA8G,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,YAAiB,IAAI,aAAkB,IAAI;AACpM,YAAI,OAAO,IAAI;AACf,YAAI,SAAS,QAAW;AACtB,gBAAM,QAAQ,SAAS,cAAc,OAAO;AAC5C,gBAAM,QAAQ,IAAI;AAClB,gBAAM,YAAY;AAClB,mBAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK,GAAG;AACxC,kBAAM,YAAY,MAAM,CAAC,EAAE,UAAU,IAAI,CAAC;AAAA,UAC5C;AACA,iBAAO,MAAM;AAAA,QACf;AACA,cAAM,SAAS;AACf,cAAM,OAAO,SAAS,OAAO;AAC7B,eAAO,SAAS,KAAK,IAAI;AAAA,MAC3B;AAAA,IACF;AAAA;AAAA;;;ACliBA,IAGM,uBAsMA;AAzMN;AAAA;AAAA;AACA;AACA;AACA,IAAM,wBAAN,MAA4B;AAAA,MAC1B,YAAY,YAAY;AACtB,aAAK,aAAa;AAClB,aAAK,UAAU,KAAK,WAAW,CAAC;AAChC,aAAK,YAAY,IAAI,aAAa;AAClC,aAAK,mBAAmB,IAAI,aAAa;AACzC,aAAK,kBAAkB,IAAI,aAAa;AACxC,aAAK,UAAU,IAAI,aAAa;AAAA,MAClC;AAAA,MACA,qBAAqB;AACnB,cAAM,SAAS,KAAK,UAAU;AAC9B,YAAI,KAAK,QAAQ,cAAc;AAC7B,iBAAO,SAAS,KAAK,QAAQ;AAAA,QAC/B;AACA,YAAI,KAAK,QAAQ,aAAa;AAC5B,iBAAO,QAAQ,KAAK,QAAQ;AAAA,QAC9B;AACA,aAAK,eAAe,IAAI,aAAa,QAAQ,KAAK,OAAO;AACzD,aAAK,aAAa,iBAAiB,eAAe,WAAS,KAAK,YAAY,MAAM,MAAM,CAAC;AACzF,aAAK,aAAa,iBAAiB,sBAAsB,WAAS,KAAK,mBAAmB,MAAM,MAAM,CAAC;AACvG,aAAK,aAAa,iBAAiB,qBAAqB,WAAS,KAAK,kBAAkB,MAAM,MAAM,CAAC;AACrG,aAAK,aAAa,iBAAiB,aAAa,WAAS,KAAK,UAAU,MAAM,MAAM,CAAC;AAAA,MACvF;AAAA,MACA,cAAc;AACZ,cAAM,SAAS,KAAK,UAAU;AAC9B,eAAO,QAAQ;AACf,eAAO,SAAS;AAAA,MAClB;AAAA;AAAA;AAAA;AAAA,MAIA,eAAe;AACb,cAAM,SAAS,KAAK,UAAU;AAG9B,cAAM,QAAQ,KAAK,IAAI,OAAO,oBAAoB,GAAG,CAAC;AACtD,eAAO,QAAQ,OAAO,cAAc;AACpC,eAAO,SAAS,OAAO,eAAe;AACtC,eAAO,WAAW,IAAI,EAAE,MAAM,OAAO,KAAK;AAC1C,aAAK,aAAa,MAAM;AAAA,MAC1B;AAAA;AAAA;AAAA;AAAA,MAIA,SAAS;AACP,YAAI,KAAK,cAAc;AACrB,iBAAO,KAAK,aAAa,OAAO;AAAA,QAClC,OAAO;AACL,iBAAO,CAAC;AAAA,QACV;AAAA,MACF;AAAA;AAAA;AAAA;AAAA,MAIA,SAAS,QAAQ;AACf,aAAK,aAAa,SAAS,MAAM;AAAA,MACnC;AAAA;AAAA;AAAA;AAAA,MAIA,UAAU,WAAW,SAAS;AAC5B,eAAO,KAAK,aAAa,UAAU,WAAW,OAAO;AAAA,MACvD;AAAA;AAAA;AAAA;AAAA,MAIA,YAAY,SAAS,UAAU,CAAC,GAAG;AAEjC,YAAI,CAAC,QAAQ,eAAe,QAAQ,KAAK,KAAK,QAAQ,cAAc;AAClE,kBAAQ,SAAS,KAAK,QAAQ;AAAA,QAChC;AACA,YAAI,CAAC,QAAQ,eAAe,OAAO,KAAK,KAAK,QAAQ,aAAa;AAChE,kBAAQ,QAAQ,KAAK,QAAQ;AAAA,QAC/B;AACA,aAAK,aAAa,YAAY,SAAS,OAAO;AAAA,MAChD;AAAA;AAAA;AAAA;AAAA,MAIA,QAAQ;AACN,aAAK,aAAa,MAAM;AAAA,MAC1B;AAAA;AAAA;AAAA;AAAA,MAIA,UAAU;AACR,eAAO,KAAK,aAAa,QAAQ;AAAA,MACnC;AAAA;AAAA;AAAA;AAAA,MAIA,MAAM;AACJ,aAAK,aAAa,IAAI;AAAA,MACxB;AAAA;AAAA;AAAA;AAAA,MAIA,KAAK;AACH,aAAK,aAAa,GAAG;AAAA,MACvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,IAAI,QAAQ,OAAO;AACjB,cAAM,SAAS,KAAK,UAAU;AAC9B,gBAAQ,QAAQ;AAAA,UACd,KAAK;AACH,mBAAO,SAAS;AAChB;AAAA,UACF,KAAK;AACH,mBAAO,QAAQ;AACf;AAAA,UACF;AACE,iBAAK,aAAa,MAAM,IAAI;AAAA,QAChC;AAAA,MACF;AAAA;AAAA;AAAA;AAAA,MAIA,YAAY,OAAO;AACjB,aAAK,UAAU,KAAK,KAAK;AAAA,MAC3B;AAAA,MACA,mBAAmB,OAAO;AACxB,aAAK,iBAAiB,KAAK,KAAK;AAAA,MAClC;AAAA,MACA,kBAAkB,OAAO;AACvB,aAAK,gBAAgB,KAAK,KAAK;AAAA,MACjC;AAAA;AAAA;AAAA;AAAA,MAIA,UAAU,OAAO;AACf,aAAK,QAAQ,KAAK,KAAK;AAAA,MACzB;AAAA,MACA,kBAAkB;AAChB,eAAO,KAAK;AAAA,MACd;AAAA,MACA,YAAY;AACV,eAAO,KAAK,WAAW,cAAc,cAAc,QAAQ;AAAA,MAC7D;AAAA,IACF;AACA,0BAAsB,YAAO,SAAS,8BAA8B,mBAAmB;AACrF,aAAO,KAAK,qBAAqB,uBAA0B,4BAAqB,UAAU,CAAC;AAAA,IAC7F;AACA,0BAAsB,YAAsB,gBAAG,4BAAkB;AAAA,MAC/D,MAAM;AAAA,MACN,WAAW,CAAC,CAAC,eAAe,CAAC;AAAA,MAC7B,QAAQ;AAAA,QACN,SAAS;AAAA,MACX;AAAA,MACA,SAAS;AAAA,QACP,WAAW;AAAA,QACX,kBAAkB;AAAA,QAClB,iBAAiB;AAAA,QACjB,SAAS;AAAA,MACX;AAAA,MACA,OAAO;AAAA,MACP,MAAM;AAAA,MACN,QAAQ,CAAC,CAAC,GAAG,sBAAsB,CAAC;AAAA,MACpC,UAAU,SAAS,+BAA+B,IAAI,KAAK;AACzD,YAAI,KAAK,GAAG;AACV,UAAG,oBAAU,GAAG,UAAU,CAAC;AAAA,QAC7B;AAAA,MACF;AAAA,MACA,QAAQ,CAAC,oLAAoL;AAAA,IAC/L,CAAC;AACD,KAAC,MAAM;AACL,OAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,uBAAuB,CAAC;AAAA,QAC9F,MAAM;AAAA,QACN,MAAM,CAAC;AAAA,UACL,UAAU;AAAA,UACV,UAAU;AAAA,UACV,QAAQ,CAAC,2IAA2I;AAAA,QACtJ,CAAC;AAAA,MACH,CAAC,GAAG,WAAY;AACd,eAAO,CAAC;AAAA,UACN,MAAS;AAAA,QACX,CAAC;AAAA,MACH,GAAG;AAAA,QACD,SAAS,CAAC;AAAA,UACR,MAAM;AAAA,QACR,CAAC;AAAA,QACD,WAAW,CAAC;AAAA,UACV,MAAM;AAAA,QACR,CAAC;AAAA,QACD,kBAAkB,CAAC;AAAA,UACjB,MAAM;AAAA,QACR,CAAC;AAAA,QACD,iBAAiB,CAAC;AAAA,UAChB,MAAM;AAAA,QACR,CAAC;AAAA,QACD,SAAS,CAAC;AAAA,UACR,MAAM;AAAA,QACR,CAAC;AAAA,MACH,CAAC;AAAA,IACH,GAAG;AACH,IAAM,4BAAN,MAAgC;AAAA,IAAC;AACjC,8BAA0B,YAAO,SAAS,kCAAkC,mBAAmB;AAC7F,aAAO,KAAK,qBAAqB,2BAA2B;AAAA,IAC9D;AACA,8BAA0B,YAAsB,gBAAG,2BAAiB;AAAA,MAClE,MAAM;AAAA,IACR,CAAC;AACD,8BAA0B,YAAsB,gBAAG,2BAAiB,CAAC,CAAC;AACtE,KAAC,MAAM;AACL,OAAC,OAAO,cAAc,eAAe,cAAiB,iBAAkB,2BAA2B,CAAC;AAAA,QAClG,MAAM;AAAA,QACN,MAAM,CAAC;AAAA,UACL,cAAc,CAAC,qBAAqB;AAAA,UACpC,SAAS,CAAC;AAAA,UACV,SAAS,CAAC,qBAAqB;AAAA,QACjC,CAAC;AAAA,MACH,CAAC,GAAG,MAAM,IAAI;AAAA,IAChB,GAAG;AAAA;AAAA;;;;;AE7MG,IAAA,yBAAA,GAAA,cAAA,EAAA;AACE,IAAA,iBAAA,CAAA;AACF,IAAA,uBAAA;;;;AAF2C,IAAA,qBAAA,SAAA,QAAA,QAAA;AACzC,IAAA,oBAAA;AAAA,IAAA,6BAAA,KAAA,QAAA,aAAA,GAAA;;;;;;AAVN,IAAA,yBAAA,GAAA,OAAA,EAAA,EAAoD,GAAA,cAAA,EAAA;;AAIhD,IAAA,qBAAA,mBAAA,SAAA,8EAAA,QAAA;AAAA,MAAA,wBAAA,GAAA;AAAA,YAAA,SAAA,wBAAA;AAAA,aAAA,sBAAmB,OAAA,YAAA,MAAA,CAAmB;IAAA,CAAA;AACtC,IAAA,2BAAA,iBAAA,SAAA,4EAAA,QAAA;AAAA,MAAA,wBAAA,GAAA;AAAA,YAAA,SAAA,wBAAA;AAAA,MAAA,6BAAA,OAAA,UAAA,MAAA,MAAA,OAAA,WAAA;AAAA,aAAA,sBAAA,MAAA;IAAA,CAAA;AAIA,IAAA,qBAAA,GAAA,sDAAA,GAAA,GAAA,cAAA,EAAA;AAGF,IAAA,uBAAA,EAAa;;;;AATX,IAAA,oBAAA;AAAA,IAAA,gCAAA,eAAA,sBAAA,GAAA,GAAA,wCAAA,CAAA;AADA,IAAA,qBAAA,YAAA,OAAA,sBAAA,OAAA,YAAA;AAGA,IAAA,2BAAA,WAAA,OAAA,QAAA;AAI6B,IAAA,oBAAA,CAAA;AAAA,IAAA,qBAAA,WAAA,OAAA,SAAA;;;;;AAW7B,IAAA,yBAAA,GAAA,QAAA,EAAA;AAA0D,IAAA,iBAAA,CAAA;AAExD,IAAA,uBAAA;;;;AAFwD,IAAA,oBAAA;AAAA,IAAA,4BAAA,OAAA,aAAA;;;;;AAG1D,IAAA,yBAAA,GAAA,KAAA,EAAA;AACE,IAAA,iBAAA,CAAA;AACF,IAAA,uBAAA;;;;AADE,IAAA,oBAAA;AAAA,IAAA,6BAAA,KAAA,OAAA,UAAA,iBAAA,GAAA;;;;;;AA4BI,IAAA,yBAAA,GAAA,UAAA,EAAA;;AAOE,IAAA,qBAAA,SAAA,SAAA,sEAAA;AAAA,MAAA,wBAAA,GAAA;AAAA,YAAA,SAAA,wBAAA;AAAA,aAAA,sBAAS,OAAA,MAAA,CAAO;IAAA,CAAA;AAEhB,IAAA,iBAAA,CAAA;;AACF,IAAA,uBAAA;;;;AALE,IAAA,gCAAA,MAAA,qBAAA;AAJA,IAAA,qBAAA,YAAA,sBAAA,GAAA,GAAA,OAAA,sBAAA,CAAA;AAQA,IAAA,oBAAA,CAAA;AAAA,IAAA,6BAAA,KAAA,sBAAA,GAAA,GAAA,iBAAA,GAAA,GAAA;;;;;;AAEF,IAAA,yBAAA,GAAA,UAAA,EAAA;AAOE,IAAA,qBAAA,SAAA,SAAA,sEAAA;AAAA,MAAA,wBAAA,GAAA;AAAA,YAAA,SAAA,wBAAA;AAAA,aAAA,sBAAS,OAAA,KAAA,CAAM;IAAA,CAAA;AAEf,IAAA,iBAAA,CAAA;;AACF,IAAA,uBAAA;;;AALE,IAAA,gCAAA,MAAA,oBAAA;AAIA,IAAA,oBAAA;AAAA,IAAA,6BAAA,KAAA,sBAAA,GAAA,GAAA,cAAA,GAAA,GAAA;;;;;;AAEF,IAAA,yBAAA,GAAA,UAAA,EAAA;AAOE,IAAA,qBAAA,SAAA,SAAA,sEAAA;AAAA,MAAA,wBAAA,GAAA;AAAA,YAAA,SAAA,wBAAA;AAAA,aAAA,sBAAS,OAAA,cAAA,CAAe;IAAA,CAAA;AAGxB,IAAA,iBAAA,CAAA;;AACF,IAAA,uBAAA;;;;AANE,IAAA,gCAAA,MAAA,oBAAA;AAGA,IAAA,qBAAA,WAAA,0BAAA,GAAA,KAAA,OAAA,QAAA,CAAA;AAEA,IAAA,oBAAA;AAAA,IAAA,6BAAA,KAAA,sBAAA,GAAA,GAAA,cAAA,GAAA,GAAA;;;ADxFd,cAoCM,QAOO;AA3Cb;;AASA;AAUA;AAEA;AAGA;AACA;AAEA;AAEA;AAKA;;;;;;;;;;;;;;;;;;;;AAEA,IAAM,SAAS,IAAI,iBAAgB;AAO7B,IAAO,2BAAP,MAAO,0BAAwB;MA+BzB;MACwB;MACzB;MACA;MACC;MACA;MACD;MACC;MACA;MACA;MACA;MACA;MAzCV;MAEqB;MAEd,sBAA8B;QACnC,UAAU;QACV,aAAa;QACb,cAAc;;MAGT;MACP,aAAa;MACb,KAAK;MACL;MACA;MACA,eAAe;MACf,gBAAgB;MAChB;MACA,oBAAoB;MACpB,oBAAoB;MACpB;MAEA,WAAW;MACX;MACA;MACA;MACA;MACA;MAEA,YACU,OACwB,MACzB,WACA,WACC,IACA,IACD,gBACC,cACA,QACA,QACA,iBACA,aAAwB;AAXxB,aAAA,QAAA;AACwB,aAAA,OAAA;AACzB,aAAA,YAAA;AACA,aAAA,YAAA;AACC,aAAA,KAAA;AACA,aAAA,KAAA;AACD,aAAA,iBAAA;AACC,aAAA,eAAA;AACA,aAAA,SAAA;AACA,aAAA,SAAA;AACA,aAAA,kBAAA;AACA,aAAA,cAAA;AAER,aAAK,MAAM,OAAgB,mBAAmB,EAAE,UAAU,CAAC,aAAY;AACrE,eAAK,mBAAmB;AACxB,cAAI,KAAK,kBAAkB,UAAU;AACnC,iBAAK,WAAW,KAAK,iBAAiB;UACxC;QACF,CAAC;MACH;MAEM,WAAQ;;AACZ,eAAK,yBAAyB,KAAK,MAAM,OAC9B,wBAAwB;AAGnC,cAAI,KAAK,MAAM;AACb,kBAAM,aAAa,KAAK,KAAK,kBAAkB;AAC/C,gBAAI,YAAY;AACd,oBAAM,KAAK,cAAa;AACxB,mBAAK,kBAAkB,KAAK,WAAW,eAAe;YACxD;AAGA,iBAAK,yBAAwB;AAE7B,iBAAK,SAAS,KAAK,KAAK;AACxB,iBAAK,cAAc,KAAK,KAAK;AAC7B,iBAAK,gBAAgB,KAAK,KAAK;AAC/B,iBAAK,QAAQ,KAAK,KAAK;AAEvB,iBAAK,oBAAmB;AAExB,iBAAK,iBAAgB;AAErB,gBAAI,KAAK,WAAW,OAAO;AACzB,mBAAK,aAAa;AAClB,mBAAK,gBAAe;YACtB;UACF;QACF;;MAEc,gBAAa;;AACzB,gBAAM,WAAW,KAAK,aAAa,eAAe,sBAAsB;AACxE,cAAI,UAAU;AACZ,iBAAK,YAAY,MAAM,KAAK,gBACzB,aAAa,CAAC,QAAQ,EACtB,UAAS;UACd;QACF;;MAEA,2BAAwB;AACtB,aAAK,KAAK,WAAW,IAAI,CAAC,WAAW,UAAS;AAC5C,cAAI,UAAU,UAAU,MAAM;AAC5B,gBAAI,UAAU,MAAM,WAAW,MAAM,GAAG;AACtC,mBAAK,KAAK,WAAW,KAAK,EAAE,YAAY;YAC1C,OAAO;AACL,mBAAK,KAAK,WAAW,KAAK,EAAE,YAAY;YAC1C;UACF;QACF,CAAC;MACH;MAEQ,sBAAmB;AACzB,YAAI,KAAK,KAAK,WAAW,WAAW,KAAK,KAAK,KAAK,WAAW,CAAC,EAAE,OAAO;AACtE,eAAK,YAAY,KAAK,KAAK,WAAW,CAAC;QACzC,WACE,KAAK,WAAW,iBAAiB,wBACjC,KAAK,WAAW,iBAAiB,uBACjC;AACA,eAAK,YAAY,KAAK,KAAK,WAAW,KAAK,CAAC,MAC1C,CAAC,kBAAkB,MAAM,EAAE,SAAS,GAAG,eAAe,CAAC;QAE3D,WAAW,KAAK,WAAW,iBAAiB,qBAAqB;AAC/D,gBAAM,WAAW;YACf,kBAAkB;YAClB,kBAAkB;;AAEpB,eAAK,YAAY,KAAK,KAAK,WAAW,KAAK,CAAC,MAC1C,SAAS,SAAS,GAAG,eAAe,CAAC;QAEzC;AAEA,aAAK,cAAa;MACpB;MAEQ,kBAAe;AACrB,YAAI,UAAU;AACd,YAAI,KAAK,WAAW,OAAO;AACzB,gBAAM,MAAM,KAAK;AACjB,oBAAU,KAAK,UAAU,QAAQ,4BAA4B;YAC3D,YAAY,IAAI;YAChB,aAAa,IAAI;YACjB,eAAe,KAAK,eAAe,UAAU,IAAI,aAAa;WAC/D;QACH;AACA,aAAK,eAAe;MACtB;MAEQ,mBAAgB;AACtB,cAAM,MAAM,KAAK;AACjB,YAAI,IAAI,YAAY;AAClB,cAAI,UAAU;AACd,oBAAU,KAAK,UAAU,QAAQ,6BAA6B;YAC5D,YAAY,IAAI;WACjB;AACD,eAAK,gBAAgB;QACvB;MACF;MAGA,SAAS,OAAK;MAAG;MAEjB,IAAI,qBAAkB;AACpB,eAAO,KAAK,WAAW,iBAAiB,KAAK,WAAW;MAC1D;MACA,IAAI,WAAQ;AACV,eAAO,KAAK;MACd;MAEA,IAAI,qBAAkB;AACpB,eAAO,KAAK,KAAK,WAAW,MAAM,CAAC,MAAM,EAAE,UAAU,IAAI;MAC3D;MAEA,IAAI,qBAAkB;AACpB,cAAM,WAAW;UACf,kBAAkB;UAClB,kBAAkB;;AAEpB,eAAO,SAAS,SAAS,KAAK,WAAW,eAAe,KAAK,CAAC,KAAK;MACrE;MAEA,IAAI,YAAS;AACX,YAAI,QAAQ;AAEZ,gBAAQ,KAAK,WAAW,iBAAiB;UACvC,KAAK,kBAAkB;AACrB,oBAAQ,KAAK,UAAU,QAAQ,kCAAkC;AACjE;UACF,KAAK,kBAAkB;AACrB,oBAAQ,KAAK,UAAU,QAAQ,kCAAkC;AACjE;UACF,KAAK,kBAAkB;UACvB,KAAK,kBAAkB;AACrB,oBAAQ,KAAK,UAAU,QAAQ,+BAA+B;AAC9D;QACJ;AACA,eAAO;MACT;MAEA,iBAAc;AACZ,aAAK,cAAc,MAAK;AACxB,aAAK,aAAa;MACpB;MAEA,gBAAa;AACX,cAAM,OAAO,KAAK,cAAc,OAAM;AAEtC,YAAI,MAAM;AACR,eAAK,IAAG;AACR,eAAK,cAAc,SAAS,IAAI;QAClC;MACF;MAEA,gBAAa;AACX,aAAK,cAAc,GAAE;AACrB,aAAK,cAAc,MAAK;AACxB,aAAK,aAAa;AAElB,YAAI,KAAK,WAAW,OAAO;AACzB,gBAAM,aAAa,KAAK,KAAK,UAAU,KAAK;AAC5C,gBAAM,QAAQ,GAAG,KAAK,UAAU,SAAS,IAAI,UAAU;AACvD,gBAAM,OAAO,KAAK,cAAc,YAAY,KAAK;AAEjD,eAAK,cAAc,YAAY,KAAK;AACpC,eAAK,cAAc,IAAG;AACtB,eAAK,aAAa;AAClB,eAAK,eAAe;QACtB,OAAO;AACL,eAAK,eAAe;QACtB;AAEA,YAAI,KAAK,WAAW,OAAO;AACzB,gBAAM,eAAe,OAAO,gBAAgB,KAAK,UAAU,KAAK;AAChE,eAAK,gBAAgB,CAAC,OAAO,eAAe,YAAY;QAC1D;AAEA,YAAI,KAAK,cAAc,QAAO,GAAI;AAChC,eAAK,aAAa;QACpB;AACA,aAAK,WAAW,KAAK,UAAU;AAC/B,aAAK,UAAU,IAAI,KAAK,QAAQ;AAEhC,aAAK,gBAAe;AACpB,aAAK,iBAAgB;AAErB,aAAK,GAAG,cAAa;MACvB;MAEA,gBAAa;AACX,aAAK,oBAAoB;AACzB,aAAK,UAAU,WAAW,KAAK;AAE/B,YAAI,KAAK,cAAc,QAAO,GAAI;AAChC,cAAI,KAAK,UAAU,OAAO;AACxB,iBAAK,MAAK;UACZ,OAAO;AACL,iBAAK,eACH,KAAK,UAAU,QAAQ,6BAA6B,CAAC;UAEzD;QACF,OAAO;AACL,gBAAM,OAAO,KAAK,cAAc,UAAU,WAAW;AACrD,gBAAM,WAAW,KAAK,aAAa,wBACjC,KAAK,KAAK,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC;AAE1B,eAAK,UAAU,QAAQ,SAAS,uCAAuC;AACvE,eAAK,UAAU,iBAAgB,oBAAI,KAAI,GAAG,YAAW;AAErD,cAAI,KAAK,oBAAoB;AAC3B,iBAAK,MAAK;UACZ,OAAO;AACL,iBAAK,KAAI;UACX;QACF;MACF;MAEM,QAAK;;AAET,cAAI,KAAK,aAAa;AACpB,iBAAK,UAAU,WAAW,KAAK;AAC/B,iBAAK,MAAM,SAAS,IAAW,oBAAmB,CAAE;AAEpD,iBAAK,YAAY,UAAU,KAAK,SAAS,EAAE,UAAU,CAAC,SAAQ;AAC5D,mBAAK,MAAM,SAAS,IAAW,mBAAkB,CAAE;AACnD,mBAAK,UAAU,QAAQ;AACvB,kBAAI,MAAM;AACR,qBAAK,eACH,KAAK,UAAU,QAAQ,6BAA6B;kBAClD,YAAY,KAAK,UAAU;iBAC5B,CAAC;cAEN,OAAO;AACL,qBAAK,eACH,KAAK,UAAU,QAAQ,iCAAiC;kBACtD,YAAY,KAAK,UAAU;iBAC5B,CAAC;cAEN;YACF,CAAC;UACH,OAAO;AACL,iBAAK,eACH,KAAK,UAAU,QAAQ,iCAAiC;cACtD,YAAY,KAAK,UAAU;aAC5B,CAAC;UAEN;QACF;;MAEA,OAAI;AACF,aAAK,oBAAoB;AAEzB,cAAM,QAAQ,KAAK,KAAK,WAAW,UACjC,CAAC,MAAM,EAAE,OAAO,KAAK,UAAU,EAAE;AAEnC,YAAI,UAAU,GAAG;AACf,eAAK,YAAY,KAAK,KAAK,WAAW,CAAC;QACzC,OAAO;AACL,eAAK,YAAY,KAAK,KAAK,WAAW,CAAC;QACzC;AACA,aAAK,cAAa;MACpB;MAEM,QAAK;;AACT,gBAAM,KAAK,UAAU,IAAI,KAAK,eAAe;AAC7C,eAAK,UAAU,MAAM;YACnB,UAAU,KAAK,KAAK;YACpB,IAAI,KAAK;WACV;QACH;;MAEM,SAAM;;AACV,cAAI,KAAK,mBAAmB;AAC1B,iBAAK,MAAK;UACZ,OAAO;AACL,kBAAM,KAAK,UAAU,IAAI,KAAK,eAAe;AAC7C,iBAAK,UAAU,MAAK;UACtB;QACF;;MAEA,eAAY;AACV,YAAI,CAAC,KAAK,cAAc,QAAO,GAAI;AACjC,eAAK,aAAa;QACpB;MACF;;MAEA,iBAAc;AACZ,cAAM,UAAU,KAAK,cAAc,UAAU,WAAW;AACxD,aAAK,SAAS,SAAS,eAAe;MACxC;MAEA,SAAS,SAAS,UAAQ;AACxB,cAAM,OAAO,KAAK,cAAc,OAAO;AACvC,cAAM,MAAM,OAAO,IAAI,gBAAgB,IAAI;AAE3C,cAAM,IAAI,SAAS,cAAc,GAAG;AACpC,UAAE,MAAM,aAAa;AACrB,UAAE,OAAO;AACT,UAAE,WAAW;AAEb,iBAAS,KAAK,YAAY,CAAC;AAC3B,UAAE,MAAK;AAEP,eAAO,IAAI,gBAAgB,GAAG;MAChC;MAEA,cAAc,SAAO;AACnB,cAAM,QAAQ,QAAQ,MAAM,UAAU;AACtC,cAAM,cAAc,MAAM,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC;AACzC,cAAM,MAAM,OAAO,KAAK,MAAM,CAAC,CAAC;AAChC,cAAM,YAAY,IAAI;AACtB,cAAM,aAAa,IAAI,WAAW,SAAS;AAE3C,iBAAS,IAAI,GAAG,IAAI,WAAW,EAAE,GAAG;AAClC,qBAAW,CAAC,IAAI,IAAI,WAAW,CAAC;QAClC;AAEA,eAAO,IAAI,KAAK,CAAC,UAAU,GAAG,EAAE,MAAM,YAAW,CAAE;MACrD;MAEA,gBAAa;AACX,aAAK,UAAU,MAAK;AACpB,aAAK,OAAO,SAAS,CAAC,aAAa,KAAK,UAAU,KAAK,EAAE,CAAC;MAC5D;MAEA,eAAe,SAAe;AAC5B,eAAO,IAAI,QAAQ,CAAC,SAAS,WAAU;AACrC,eAAK,OACF,KAAK,2BAA2B;YAC/B,OAAO;YACP,cAAc;YACd,MAAM;cACJ,YAAY;cACZ,OAAO;cACP,UAAU;cACV,YAAY;;WAEf,EACA,YAAW,EACX,UAAU,CAAC,SAAa;AACvB,iBAAK,MAAK;UACZ,CAAC;QACL,CAAC;MACH;MAEM,YAAY,MAAI;;AACpB,eAAK,UAAU,IAAI,KAAK,KAAK;AAC7B,eAAK,UAAU,kBAAmB,MAAM,+BACtC,KAAK,aACL,KAAK,OACL,KAAK,eACL,KAAK,UAAU,iBAAiB;AAElC,eAAK,GAAG,cAAa;QACvB;;;yCArZW,2BAAwB,4BAAA,KAAA,GAAA,4BAgCzB,sBAAe,GAAA,4BAAA,gBAAA,GAAA,4BAAA,kBAAA,GAAA,4BAAA,kBAAA,GAAA,4BAAA,iBAAA,GAAA,4BAAA,kBAAA,GAAA,4BAAA,YAAA,GAAA,4BAAA,MAAA,GAAA,4BAAA,eAAA,GAAA,4BAAA,gBAAA,GAAA,4BAAA,WAAA,CAAA;MAAA;6EAhCd,2BAAwB,WAAA,CAAA,CAAA,qBAAA,CAAA,GAAA,WAAA,SAAA,+BAAA,IAAA,KAAA;AAAA,YAAA,KAAA,GAAA;;;;;;;;;AAAxB,UAAA,qBAAA,UAAA,SAAA,mDAAA,QAAA;AAAA,mBAAA,IAAA,SAAA,MAAA;UAAgB,GAAA,OAAA,yBAAA;;;;;AC3C7B,UAAA,yBAAA,GAAA,OAAA,CAAA,EAAwD,GAAA,OAAA,CAAA,EACpB,GAAA,MAAA,CAAA;AACX,UAAA,iBAAA,CAAA;AAAe,UAAA,uBAAA,EAAK;AAE3C,UAAA,qBAAA,GAAA,yCAAA,GAAA,GAAA,OAAA,CAAA;AAcF,UAAA,uBAAA;AAEA,UAAA,yBAAA,GAAA,QAAA,CAAA;AAAM,UAAA,qBAAA,YAAA,SAAA,6DAAA;AAAA,YAAA,wBAAA,GAAA;AAAA,mBAAA,sBAAY,IAAA,MAAA,CAAO;UAAA,CAAA;AACvB,UAAA,yBAAA,GAAA,oBAAA,EAAoB,GAAA,GAAA;AACf,UAAA,iBAAA,CAAA;AAA2B,UAAA,uBAAA;AAC9B,UAAA,yBAAA,GAAA,OAAA,CAAA;AACE,UAAA,qBAAA,IAAA,2CAAA,GAAA,GAAA,QAAA,CAAA,EAA0D,IAAA,wCAAA,GAAA,GAAA,KAAA,CAAA;AAM1D,UAAA,yBAAA,IAAA,OAAA,CAAA,EAAgC,IAAA,iBAAA,IAAA,CAAA;AAI5B,UAAA,qBAAA,WAAA,SAAA,sEAAA;AAAA,YAAA,wBAAA,GAAA;AAAA,mBAAA,sBAAW,IAAA,aAAA,CAAc;UAAA,CAAA;AAG3B,UAAA,uBAAA,EAAgB;AAElB,UAAA,yBAAA,IAAA,OAAA,EAAA,EAAkC,IAAA,GAAA;AAC7B,UAAA,iBAAA,EAAA;;AAAkC,UAAA,uBAAA;AAErC,UAAA,yBAAA,IAAA,OAAA,EAAA,EAAmC,IAAA,KAAA,EAC5B,IAAA,UAAA,EAAA;AAMD,UAAA,qBAAA,SAAA,SAAA,6DAAA;AAAA,YAAA,wBAAA,GAAA;AAAA,mBAAA,sBAAS,IAAA,eAAA,CAAgB;UAAA,CAAA;AAGzB,UAAA,iBAAA,EAAA;;AACF,UAAA,uBAAA,EAAS;AAEX,UAAA,yBAAA,IAAA,KAAA;AACE,UAAA,qBAAA,IAAA,6CAAA,GAAA,GAAA,UAAA,EAAA,EAQC,IAAA,6CAAA,GAAA,GAAA,UAAA,EAAA,EAWA,IAAA,6CAAA,GAAA,GAAA,UAAA,EAAA;AAeD,UAAA,yBAAA,IAAA,UAAA,EAAA;AAKE,UAAA,qBAAA,SAAA,SAAA,6DAAA;AAAA,YAAA,wBAAA,GAAA;AAAA,mBAAA,sBAAS,IAAA,OAAA,CAAQ;UAAA,CAAA;AAEjB,UAAA,iBAAA,EAAA;;AACF,UAAA,uBAAA,EAAS,EACL,EACF;AAGR,UAAA,yBAAA,IAAA,OAAA,EAAA,EAAoC,IAAA,GAAA;AAC/B,UAAA,iBAAA,EAAA;AAAkB,UAAA,uBAAA,EAAI,EACrB,EACF;AAER,UAAA,oBAAA,IAAA,IAAA;AACF,UAAA,uBAAA;;;AA3GyB,UAAA,oBAAA,CAAA;AAAA,UAAA,4BAAA,IAAA,SAAA;AAEL,UAAA,oBAAA;AAAA,UAAA,qBAAA,SAAA,IAAA,aAAA,OAAA,OAAA,IAAA,UAAA,UAAA,CAAA;AAkBb,UAAA,oBAAA,CAAA;AAAA,UAAA,4BAAA,IAAA,aAAA,OAAA,OAAA,IAAA,UAAA,UAAA;AAEM,UAAA,oBAAA,CAAA;AAAA,UAAA,qBAAA,QAAA,IAAA,aAAA;AAGH,UAAA,oBAAA;AAAA,UAAA,qBAAA,QAAA,IAAA,aAAA,OAAA,OAAA,IAAA,UAAA,eAAA;AAMA,UAAA,oBAAA,CAAA;AAAA,UAAA,qBAAA,WAAA,IAAA,mBAAA;AAOC,UAAA,oBAAA,CAAA;AAAA,UAAA,4BAAA,sBAAA,IAAA,IAAA,gBAAA,CAAA;AAOG,UAAA,oBAAA,CAAA;AAAA,UAAA,gCAAA,MAAA,qBAAA;AAGA,UAAA,qBAAA,WAAA,0BAAA,IAAA,KAAA,IAAA,QAAA,CAAA;AAEA,UAAA,oBAAA;AAAA,UAAA,6BAAA,KAAA,sBAAA,IAAA,IAAA,eAAA,GAAA,GAAA;AAMC,UAAA,oBAAA,CAAA;AAAA,UAAA,qBAAA,QAAA,CAAA,IAAA,gBAAA,IAAA,kBAAA;AAUA,UAAA,oBAAA;AAAA,UAAA,qBAAA,QAAA,IAAA,gBAAA,CAAA,IAAA,iBAAA;AAWA,UAAA,oBAAA;AAAA,UAAA,qBAAA,QAAA,CAAA,IAAA,YAAA;AAeD,UAAA,oBAAA;AAAA,UAAA,gCAAA,MAAA,sBAAA;AAGA,UAAA,oBAAA;AAAA,UAAA,6BAAA,KAAA,sBAAA,IAAA,IAAA,gBAAA,GAAA,GAAA;AAOH,UAAA,oBAAA,CAAA;AAAA,UAAA,4BAAA,IAAA,YAAA;;;;;iFD7DE,0BAAwB,EAAA,WAAA,4BAAA,UAAA,4EAAA,YAAA,GAAA,CAAA;IAAA,GAAA;;;","names":["document","SignatureTypeEnum","DeclarationTypeEnum"],"x_google_ignoreList":[0,4,5]}