UNPKG

kipon-xrmservice

Version:

Dynamics 365 CE web api wrapper for angular, making life easier when building angular based web resources

1 lines 295 kB
{"version":3,"file":"kipon-xrmservice.mjs","sources":["../../../projects/kipon-xrmservice/src/lib/fetchxml.ts","../../../projects/kipon-xrmservice/src/lib/xrmconfig.service.ts","../../../projects/kipon-xrmservice/src/lib/xrmform.service.ts","../../../projects/kipon-xrmservice/src/lib/xrm.service.ts","../../../projects/kipon-xrmservice/src/lib/auth.service.ts","../../../projects/kipon-xrmservice/src/lib/xrmstate.service.ts","../../../projects/kipon-xrmservice/src/lib/xrm.interceptor.ts","../../../projects/kipon-xrmservice/src/lib/xrmcontext.service.ts","../../../projects/kipon-xrmservice/src/lib/metadata.service.ts","../../../projects/kipon-xrmservice/src/lib/kipon-xrmservice.module.ts","../../../projects/kipon-xrmservice/src/lib/xrmsecurity.service.ts","../../../projects/kipon-xrmservice/src/lib/kipon-xrmsecurity.module.ts","../../../projects/kipon-xrmservice/src/lib/xrmannotation.service.ts","../../../projects/kipon-xrmservice/src/lib/kipon-xrmannotation.module.ts","../../../projects/kipon-xrmservice/src/lib/kipon-xrmmetadata.module.ts","../../../projects/kipon-xrmservice/src/public-api.ts","../../../projects/kipon-xrmservice/src/kipon-xrmservice.ts"],"sourcesContent":["import { Entity, Condition } from \"./xrmcontext.service\";\r\n\r\n\r\nexport class FetchEntity {\r\n  name: string;\r\n  entityPrototype: Entity;\r\n  attributes: string[];\r\n  condition: Condition;\r\n  linkedentities: Link[];\r\n  parent: FetchEntity;\r\n\r\n  link(prototype: Entity, property: string, condition: Condition): FetchEntity;\r\n  link(prototype: Entity, property: string, condition: Condition, attributes: string[]): FetchEntity;\r\n  link(prototype: Entity, property: string, condition: Condition, attributes: string[] = null): FetchEntity {\r\n    var res = new FetchEntity();\r\n    res.entityPrototype = prototype;\r\n    res.name = prototype._logicalName;\r\n    res.condition = condition;\r\n    res.attributes = attributes\r\n    res.parent = res;\r\n\r\n    if (this.linkedentities == null) {\r\n      this.linkedentities = [];\r\n    }\r\n    var next = new Link();\r\n    next.entity = res;\r\n    next.to = property;\r\n    next.alias = property;\r\n    this.linkedentities.push(next);\r\n    return res;\r\n  }\r\n\r\n  innerjoin(prototype: Entity, alias: string, from: string, property: string, condition: Condition): FetchEntity;\r\n  innerjoin(prototype: Entity, alias: string, from: string, property: string, condition: Condition, attributes: string[]): FetchEntity;\r\n  innerjoin(prototype: Entity, alias: string, from: string, property: string, condition: Condition, attributes: string[] = null): FetchEntity {\r\n    var res = new FetchEntity();\r\n    res.entityPrototype = prototype;\r\n    res.name = prototype._logicalName;\r\n    res.condition = condition;\r\n    res.attributes = attributes\r\n    res.parent = res;\r\n\r\n    if (this.linkedentities == null) {\r\n      this.linkedentities = [];\r\n    }\r\n    var next = new Link();\r\n    next.entity = res;\r\n    next.to = property;\r\n    next.alias = alias;\r\n    next.from = from;\r\n    next.type = \"inner\";\r\n\r\n    this.linkedentities.push(next);\r\n    return res;\r\n  }\r\n\r\n  outerjoin(prototype: Entity, alias: string, from: string, property: string, condition: Condition): FetchEntity;\r\n  outerjoin(prototype: Entity, alias: string, from: string, property: string, condition: Condition, attributes: string[]): FetchEntity;\r\n  outerjoin(prototype: Entity, alias: string, from: string, property: string, condition: Condition, attributes: string[] = null): FetchEntity {\r\n    var res = new FetchEntity();\r\n    res.entityPrototype = prototype;\r\n    res.name = prototype._logicalName;\r\n    res.condition = condition;\r\n    res.attributes = attributes\r\n    res.parent = res;\r\n\r\n    if (this.linkedentities == null) {\r\n      this.linkedentities = [];\r\n    }\r\n    var next = new Link();\r\n    next.entity = res;\r\n    next.to = property;\r\n    next.alias = alias;\r\n    next.from = from;\r\n    next.type = \"outer\";\r\n\r\n    this.linkedentities.push(next);\r\n    return res;\r\n  }\r\n\r\n  aliasWithAttributes(): string[] {\r\n    var result:string[] = [];\r\n    this.resolveAlias(this.linkedentities, result);\r\n    return result;\r\n  }\r\n\r\n  private resolveAlias(links: Link[], result: string[]): void {\r\n    if (links != null && links.length > 0) {\r\n      links.forEach(l => {\r\n        if (l.entity.attributes != null && l.entity.attributes.length > 0) {\r\n          result.push(l.alias);\r\n        }\r\n        this.resolveAlias(l.entity.linkedentities, result);\r\n      });\r\n    }\r\n  }\r\n}\r\n\r\nexport class Link {\r\n  from: string;\r\n  alias: string;\r\n  type: string;\r\n  to: string;\r\n\r\n  entity: FetchEntity;\r\n\r\n  toFetchXml(populateAttrib: boolean): string {\r\n    var result: string = \"\";\r\n\r\n    var fromString = \"\";\r\n    if (this.from != null) {\r\n      fromString = \" alias='\" + this.alias + \"' from='\" + this.from + \"' link-type='\" + this.type + \"'\";\r\n    }\r\n\r\n    if (this.from == null && this.alias != null && this.alias != '') {\r\n      fromString = \" alias='\" + this.alias + \"'\";\r\n    }\r\n\r\n    result += \"<link-entity name='\" + this.entity.name + \"' to='\" + this.to + \"'\" + fromString + \">\";\r\n\r\n    if (populateAttrib) {\r\n      if (this.entity.attributes != null && this.entity.attributes.length > 0) {\r\n        this.entity.attributes.forEach(a => {\r\n          result += \"<attribute name='\" + a + \"'/>\"\r\n        });\r\n      }\r\n    }\r\n\r\n    if (this.entity.condition != null) {\r\n      result += this.entity.condition.toFetchXml();\r\n    }\r\n\r\n    if (this.entity.linkedentities != null && this.entity.linkedentities.length > 0) {\r\n      this.entity.linkedentities.forEach(l => {\r\n        result += l.toFetchXml(populateAttrib);\r\n      });\r\n    }\r\n    result += \"</link-entity>\";\r\n    return result;\r\n  }\r\n}\r\n\r\nexport class Fetchsort {\r\n  attribute: string;\r\n  descending: boolean;\r\n\r\n  toFetchXml(): string {\r\n    if (this.descending) {\r\n      return \"<order attribute='\" + this.attribute + \"' descending='true' />\";\r\n    }\r\n    return \"<order attribute='\" + this.attribute + \"' />\";\r\n  }\r\n}\r\n\r\nexport class Fetchxml {\r\n  private root: FetchEntity;\r\n  private keyname: string;\r\n\r\n  count: number;\r\n  page: number;\r\n  distinct: boolean;\r\n  private sorts: Fetchsort[];\r\n\r\n  constructor(prototype: Entity, condition: Condition) {\r\n    this.root = new FetchEntity();\r\n    this.root.entityPrototype = prototype;\r\n    this.keyname = prototype._keyName;\r\n    this.root.name = prototype._logicalName;\r\n    this.root.condition = condition;\r\n    this.root.attributes = prototype.columns(false);\r\n  }\r\n\r\n  entity(): FetchEntity {\r\n    return this.root;\r\n  }\r\n\r\n  sort(attribname: string): void;\r\n  sort(attribname: string, descending: boolean): void;\r\n  sort(attribname: string, descending: boolean = false): void {\r\n    if (this.sorts == null) {\r\n      this.sorts = [] as Fetchsort[];\r\n    }\r\n    let nextsort = new Fetchsort();\r\n    nextsort.attribute = attribname;\r\n    nextsort.descending = descending;\r\n    this.sorts.push(nextsort);\r\n  }\r\n\r\n\r\n  toCountFetchXml(): string {\r\n    let result: string = \"\";\r\n\r\n    var distinct = \"\";\r\n    if (this.distinct != null) {\r\n      distinct = \" distinct='\" + this.distinct + \"'\"\r\n    }\r\n\r\n    var aggr = \"count\";\r\n\r\n    var dist = '';\r\n    if (this.distinct) {\r\n      dist = \" distinct='true'\";\r\n      aggr = \"countcolumn\"\r\n    }\r\n\r\n\r\n    result += \"<fetch mapping='logical'\" + distinct + \" aggregate='true'>\"\r\n    result += \"<entity name='\" + this.root.name + \"'>\";\r\n    result += \"<attribute name='\" + this.keyname + \"' aggregate='\"+aggr+\"' alias='count'\"+dist+\"  />\";\r\n\r\n    if (this.root.condition != null) {\r\n      result += this.root.condition.toFetchXml();\r\n    }\r\n\r\n    if (this.root.linkedentities != null && this.root.linkedentities.length > 0) {\r\n      this.root.linkedentities.forEach(l => {\r\n        result += l.toFetchXml(false);\r\n      })\r\n    }\r\n\r\n    result += \"</entity>\";\r\n    result += \"</fetch>\";\r\n\r\n    return result;\r\n  }\r\n\r\n  toFetchXml(): string;\r\n  toFetchXml(pageCoocie: string, forPage: number): string;\r\n  toFetchXml(pageCoocie: string = null, forPage: number = null): string {\r\n    let result: string = \"\";\r\n\r\n    var page = \"\";\r\n    if (this.count != null) {\r\n      if (this.page == null) {\r\n        this.page = 1;\r\n      }\r\n\r\n      if (forPage == null) {\r\n        forPage = this.page;\r\n      }\r\n\r\n      page = \" count='\" + this.count + \"' page='\" + forPage + \"'\";\r\n    }\r\n\r\n    if (pageCoocie != null) {\r\n      page += \" paging-cookie='\" + pageCoocie + \"'\";\r\n    } else {\r\n      page += \" paging-cookie=''\";\r\n    }\r\n\r\n    var distinct = \"\";\r\n    if (this.distinct != null) {\r\n      distinct = \" distinct='\" + this.distinct + \"'\"\r\n    }\r\n\r\n    result += \"<fetch mapping='logical'\" + page + distinct + \">\"\r\n    result += \"<entity name='\" + this.root.name + \"'>\";\r\n    result += \"<attribute name='\" + this.keyname + \"' />\"\r\n    this.root.attributes.forEach(a => {\r\n      result += \"<attribute name='\"+a+\"'/>\"\r\n    });\r\n\r\n    if (this.root.condition != null) {\r\n      result += this.root.condition.toFetchXml();\r\n    }\r\n\r\n    if (this.root.linkedentities != null && this.root.linkedentities.length > 0) {\r\n      this.root.linkedentities.forEach(l => {\r\n        result += l.toFetchXml(true);\r\n      })\r\n    }\r\n\r\n    if (this.sorts != null && this.sorts.length > 0) {\r\n      this.sorts.forEach(s => {\r\n        result += s.toFetchXml();\r\n      });\r\n    }\r\n\r\n    result += \"</entity>\";\r\n    result += \"</fetch>\"\r\n    return result;\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\n\r\nimport { AuthConfig } from './auth.service';\r\n\r\n@Injectable()\r\nexport class XrmConfigService {\r\n  private appConfig: AuthConfig;\r\n\r\n  constructor(private http: HttpClient) { }\r\n\r\n  loadAppConfig();\r\n  loadAppConfig(url: string);\r\n  loadAppConfig(url: string = null) {\r\n    if (url == null) {\r\n      url = '/assets/xrmConfig.json';\r\n    }\r\n    return this.http.get<AuthConfig>(url)\r\n      .toPromise()\r\n      .then(data => {\r\n        this.appConfig = data;\r\n      }).catch(err => {\r\n        console.log('unable to load configuration /assets/xrmConfig.json');\r\n        console.log(err);\r\n      }\r\n      );\r\n  }\r\n\r\n  getConfig(): AuthConfig {\r\n    return this.appConfig;\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nconst KiponXrmLOCAL_getFormType = \"KiponXrmServiceLOCAL_getFormType\";\r\nconst KiponXrmLOCAL_formentityr = \"KiponXrmServiceLOCAL_formentityr\";\r\nconst KiponXrmLOCAL_context = \"KiponXrmServiceLOCAL_context\";\r\n\r\nexport interface XrmContext {\r\n  getClientUrl(): string;\r\n  getQueryStringParameters(): any;\r\n  getVersion(): string;\r\n  getUserName(): string;\r\n  getUserId(): string;\r\n  $devClientUrl(): string;\r\n}\r\n\r\n\r\nexport class XrmFormKey {\r\n  id: string;\r\n  type: string;\r\n}\r\n\r\nexport class XrmContextInstance implements XrmContext {\r\n  private clientUrl: string;\r\n  private queryStringParameters: any;\r\n  private version: string;\r\n  private userName: string;\r\n  private userId: string;\r\n  private apiurl: string = '/api/data/v9.0/';\r\n\r\n  constructor(ctx: XrmContext) {\r\n    this.clientUrl = ctx.getClientUrl();\r\n    this.queryStringParameters = ctx.getQueryStringParameters();\r\n    this.version = ctx.getVersion();\r\n    this.userName = ctx.getUserName();\r\n    this.userId = ctx.getUserId();\r\n  } \r\n\r\n  getClientUrl(): string {\r\n    return this.clientUrl;\r\n  }\r\n\r\n  getQueryStringParameters(): any {\r\n    return this.queryStringParameters;\r\n  }\r\n\r\n  getVersion(): string {\r\n    return this.version;\r\n  }\r\n\r\n  getUserName(): string {\r\n    return this.userName;\r\n  }\r\n\r\n  getUserId(): string {\r\n    return this.userId;\r\n  }\r\n  $devClientUrl(): string {\r\n    return this.clientUrl + this.apiurl;;\r\n  }\r\n}\r\n\r\n@Injectable()\r\nexport class XrmFormService {\r\n  constructor() { }\r\n\r\n  getContext(): XrmContext {\r\n    if (window[KiponXrmLOCAL_context]) {\r\n      return window[KiponXrmLOCAL_context];\r\n    }\r\n\r\n    if (typeof window[\"GetGlobalContext\"] != \"undefined\") {\r\n      window[KiponXrmLOCAL_context] =  new XrmContextInstance(window[\"GetGlobalContext\"]());\r\n      return window[KiponXrmLOCAL_context];\r\n    }\r\n\r\n    if (window.parent && window.parent[KiponXrmLOCAL_context]) {\r\n      window[KiponXrmLOCAL_context] = new XrmContextInstance(window.parent[KiponXrmLOCAL_context]);\r\n      return window[KiponXrmLOCAL_context];\r\n    }\r\n\r\n    if (window.opener && window.opener[KiponXrmLOCAL_context]) {\r\n      window[KiponXrmLOCAL_context] = new XrmContextInstance(window.opener[KiponXrmLOCAL_context]);\r\n      return window[KiponXrmLOCAL_context];\r\n    }\r\n\r\n    if (window[\"Xrm\"] && window[\"Xrm\"][\"Page\"] && window[\"Xrm\"][\"Page\"][\"context\"]) {\r\n      window[KiponXrmLOCAL_context] = new XrmContextInstance(window[\"Xrm\"][\"Page\"][\"context\"]);\r\n      return window[KiponXrmLOCAL_context];\r\n    }\r\n\r\n    if (window.parent && window.parent[\"Xrm\"] && window.parent[\"Xrm\"][\"Page\"] && window.parent[\"Xrm\"][\"Page\"][\"context\"]) {\r\n      window[KiponXrmLOCAL_context] = new XrmContextInstance(window.parent[\"Xrm\"][\"Page\"][\"context\"]);\r\n      return window[KiponXrmLOCAL_context];\r\n    }\r\n\r\n    if (window.opener && window.opener[\"Xrm\"] && window.opener[\"Xrm\"][\"Page\"] && window.opener[\"Xrm\"][\"Page\"][\"context\"]) {\r\n      window[KiponXrmLOCAL_context] = new XrmContextInstance(window.opener[\"Xrm\"][\"Page\"][\"context\"]);\r\n      return window[KiponXrmLOCAL_context];\r\n    }\r\n    return null;\r\n  }\r\n\r\n  // \"Xrm\", \"Page\", \"ui\", \"getFormType\"\r\n\r\n\r\n  getFormType();\r\n  getFormType(clear: boolean);\r\n  getFormType(clear: boolean = false): number {\r\n\r\n    if (!clear && window[KiponXrmLOCAL_getFormType]) delete window[KiponXrmLOCAL_getFormType];\r\n    if (window[KiponXrmLOCAL_getFormType]) {\r\n      return window[KiponXrmLOCAL_getFormType];\r\n    }\r\n\r\n    if (!clear && window.parent && window.parent[KiponXrmLOCAL_getFormType]) {\r\n      window[KiponXrmLOCAL_getFormType] = window.parent[KiponXrmLOCAL_getFormType];\r\n      return window[KiponXrmLOCAL_getFormType];\r\n    }\r\n\r\n    if (!clear && window.opener && window.opener[KiponXrmLOCAL_getFormType]) {\r\n      window[KiponXrmLOCAL_getFormType] = window.opener[KiponXrmLOCAL_getFormType];\r\n      return window[KiponXrmLOCAL_getFormType];\r\n    }\r\n\r\n    if (window[\"Xrm\"] && window[\"Xrm\"][\"Page\"] && window[\"Xrm\"][\"Page\"][\"ui\"] && window[\"Xrm\"][\"Page\"][\"ui\"][\"getFormType\"]) {\r\n      window[KiponXrmLOCAL_getFormType] = window[\"Xrm\"][\"Page\"][\"ui\"][\"getFormType\"]();\r\n      return window[KiponXrmLOCAL_getFormType];\r\n    }\r\n\r\n    if (window.parent && window.parent[\"Xrm\"] && window.parent[\"Xrm\"][\"Page\"] && window.parent[\"Xrm\"][\"Page\"][\"ui\"] && window.parent[\"Xrm\"][\"Page\"][\"ui\"][\"getFormType\"]) {\r\n      window[KiponXrmLOCAL_getFormType] = window.parent[\"Xrm\"][\"Page\"][\"ui\"][\"getFormType\"]();\r\n      return window[KiponXrmLOCAL_getFormType];\r\n    }\r\n\r\n    if (window.opener && window.opener[\"Xrm\"] && window.opener[\"Xrm\"][\"Page\"] && window.opener[\"Xrm\"][\"Page\"][\"ui\"] && window.opener[\"Xrm\"][\"Page\"][\"ui\"][\"getFormType\"]) {\r\n      window[KiponXrmLOCAL_getFormType] = window.opener[\"Xrm\"][\"Page\"][\"ui\"][\"getFormType\"]();\r\n      return window[KiponXrmLOCAL_getFormType];\r\n    }\r\n\r\n    return null;\r\n  }\r\n\r\n  // \"Xrm\", \"Page\", \"data\", \"entity\"\r\n  getFormKey(id: string, type: string): XrmFormKey;\r\n  getFormKey(id: string, type: string, clear: boolean): XrmFormKey;\r\n  getFormKey(id: string, type: string, clear: boolean = false): XrmFormKey {\r\n    if (typeof id != 'undefined' && id != null && id != '' && typeof type != 'undefined' && type != null && type != '') {\r\n      let result = new XrmFormKey();\r\n      result.id = id;\r\n      result.type = type;\r\n      window[KiponXrmLOCAL_formentityr] = result;\r\n      return result;\r\n    }\r\n\r\n    if (clear && window[KiponXrmLOCAL_formentityr]) delete window[KiponXrmLOCAL_formentityr];\r\n    if (window[KiponXrmLOCAL_formentityr]) {\r\n      return window[KiponXrmLOCAL_formentityr];\r\n    }\r\n\r\n\r\n    if (!clear && window.parent && window.parent[KiponXrmLOCAL_formentityr]) {\r\n      window[KiponXrmLOCAL_formentityr] = window.parent[KiponXrmLOCAL_formentityr];\r\n      return window[KiponXrmLOCAL_formentityr];\r\n    }\r\n\r\n    if (!clear && window.opener && window.opener[KiponXrmLOCAL_formentityr]) {\r\n      window[KiponXrmLOCAL_formentityr] = window.opener[KiponXrmLOCAL_formentityr];\r\n      return window[KiponXrmLOCAL_formentityr];\r\n    }\r\n\r\n    if (window[\"Xrm\"] && window[\"Xrm\"][\"Page\"] && window[\"Xrm\"][\"Page\"][\"data\"] && window[\"Xrm\"][\"Page\"][\"data\"][\"entity\"]) {\r\n      var result = new XrmFormKey();\r\n      result.id = window[\"Xrm\"][\"Page\"][\"data\"][\"entity\"][\"getId\"]();\r\n      result.type = window[\"Xrm\"][\"Page\"][\"data\"][\"entity\"][\"getEntityName\"]();\r\n      window[KiponXrmLOCAL_formentityr] = result;\r\n      return window[KiponXrmLOCAL_formentityr];\r\n    }\r\n\r\n    if (window.parent && window.parent[\"Xrm\"] && window.parent[\"Xrm\"][\"Page\"] && window.parent[\"Xrm\"][\"Page\"][\"data\"] && window.parent[\"Xrm\"][\"Page\"][\"data\"][\"entity\"]) {\r\n      var result = new XrmFormKey();\r\n      result.id = window.parent[\"Xrm\"][\"Page\"][\"data\"][\"entity\"][\"getId\"]();\r\n      result.type = window.parent[\"Xrm\"][\"Page\"][\"data\"][\"entity\"][\"getEntityName\"]();\r\n      window[KiponXrmLOCAL_formentityr] = result;\r\n      return window[KiponXrmLOCAL_formentityr];\r\n    }\r\n\r\n    if (window.opener && window.opener[\"Xrm\"] && window.opener[\"Xrm\"][\"Page\"] && window.opener[\"Xrm\"][\"Page\"][\"data\"] && window.opener[\"Xrm\"][\"Page\"][\"data\"][\"entity\"]) {\r\n      var result = new XrmFormKey();\r\n      result.id = window.opener[\"Xrm\"][\"Page\"][\"data\"][\"entity\"][\"getId\"]();\r\n      result.type = window.opener[\"Xrm\"][\"Page\"][\"data\"][\"entity\"][\"getEntityName\"]();\r\n\r\n      window[KiponXrmLOCAL_formentityr] = result;\r\n      return window[KiponXrmLOCAL_formentityr];\r\n    }\r\n    return null;\r\n  }\r\n}\r\n","import { Injectable, Injector } from '@angular/core';\r\n\r\nimport { HttpClient, HttpHeaders, HttpResponse } from '@angular/common/http';\r\nimport { Observable, Subscriber } from 'rxjs';\r\nimport { map } from 'rxjs/operators'\r\n\r\nimport { XrmConfigService } from './xrmconfig.service';\r\nimport { XrmFormService, XrmFormKey, XrmContext } from './xrmform.service';\r\n\r\nexport class XrmEntityKey {\r\n  id: string;\r\n  entityType: string;\r\n}\r\n\r\nexport interface XrmQueryResult<T> {\r\n  pages: string[];\r\n  pageIndex: number;\r\n  top: number;\r\n  nextLink: string;\r\n  context: string;\r\n  count: number;\r\n  value: T[];\r\n  prev(): Observable<XrmQueryResult<T>>;\r\n  next(): Observable<XrmQueryResult<T>>;\r\n}\r\n\r\n\r\nexport class Expand {\r\n  name: string;\r\n  select: string;\r\n  filter: string;\r\n  additional: Expand[];\r\n\r\n  toExpandString(): string {\r\n    let _ex = this.name;\r\n    if (this.select != null || this.filter != null) {\r\n      _ex += '(';\r\n    }\r\n    let semi = '';\r\n    if (this.select != null) {\r\n      _ex += '$select=' + this.select;\r\n      semi = ';'\r\n    }\r\n\r\n    if (this.filter != null) {\r\n      _ex += semi + '$filter=' + this.filter;\r\n    }\r\n\r\n    if (this.select != null || this.filter != null) {\r\n      _ex += ')';\r\n    }\r\n    return _ex;\r\n  }\r\n}\r\n\r\n@Injectable()\r\nexport class XrmService {\r\n  private defaultApiUrl: string = \"/api/data/v9.0/\";\r\n  private contextFallback: XrmContext = null;\r\n  apiUrl: string = '/api/data/v9.0/';\r\n  apiVersion: string = 'v9.0';\r\n  debug: boolean = false;\r\n  token: string = null;\r\n  forceHttps: boolean = false;\r\n  private keyTries: number = 0;\r\n\r\n  constructor(private http: HttpClient, private injector: Injector, private xrmformService: XrmFormService) {\r\n  }\r\n\r\n  setVersion(v: string): void {\r\n    this.apiUrl = this.defaultApiUrl.replace(\"9.0\", v);\r\n  }\r\n\r\n\r\n  getContext(): XrmContext {\r\n    if (this.contextFallback != null) {\r\n      return this.contextFallback;\r\n    }\r\n\r\n    var x: XrmContext = this.xrmformService.getContext();\r\n\r\n    if (x != null) {\r\n      if (typeof x.getVersion == 'undefined') {\r\n        x.getVersion = (): string => \"9.0.0.0\"\r\n      }\r\n\r\n      if (typeof x.$devClientUrl == 'undefined') {\r\n        x.$devClientUrl = () => { return this.getContext().getClientUrl() + this.apiUrl };\r\n        this.contextFallback = x;\r\n        this.initializeVersion(this.contextFallback.getVersion());\r\n      }\r\n      return x;\r\n    }\r\n\r\n    this.log('using fake context');\r\n    let baseUrl = \"http://localhost:4200\";\r\n    let version = 'v9.0';\r\n\r\n    var comesfrom = window.location.href.toLowerCase();\r\n    if (comesfrom.indexOf(\"webresources\") >= 0) {\r\n      var domain = window.location.href.split('/')[2];\r\n      var proto = comesfrom.startsWith(\"https://\") ? \"https://\" : \"http://\";\r\n\r\n      // to-do, find a better way to render multi org sub url from the url. (for now - never needed on online, therefore blank for https, but might be needed for onpre running https ... )\r\n      var sub = comesfrom.startsWith(\"https://\") ? \"\" : \"/\" + window.location.href.split('/')[3];\r\n      baseUrl = proto + domain + sub;\r\n    }\r\n\r\n    try {\r\n      var configService = this.injector.get(XrmConfigService) as XrmConfigService;\r\n      if (configService != null) {\r\n        let config = configService.getConfig();\r\n        if (config != null && config.endpoints != null && config.endpoints.orgUri != null && config.endpoints.orgUri != '') {\r\n          baseUrl = config.endpoints.orgUri;\r\n        }\r\n        if (config != null && config.version != null && config.version != '') {\r\n          version = config.version;\r\n        }\r\n      }\r\n    } catch (err) {\r\n      // no worry, XrmConfigService is optional\r\n    }\r\n\r\n    this.contextFallback = {\r\n      getClientUrl(): string {\r\n        return baseUrl;\r\n      },\r\n      getQueryStringParameters(): any {\r\n        let search = window.location.search;\r\n        let hashes = search.slice(search.indexOf('?') + 1).split('&');\r\n        let params = {};\r\n        hashes.map(hash => {\r\n          let [key, val] = hash.split('=')\r\n          params[key] = decodeURIComponent(val)\r\n        })\r\n        return params;\r\n      },\r\n      getVersion(): string {\r\n        return version.substring(1) + '.0.0';\r\n      },\r\n      getUserId(): string {\r\n        return this[\"userid\"];\r\n      },\r\n      getUserName(): string {\r\n        return this[\"username\"];\r\n      },\r\n      $devClientUrl(): string {\r\n        return this['$clienturl'];\r\n      }\r\n    };\r\n\r\n    var headers = this.getDefaultHeader();\r\n\r\n    this.http.get(this.forceHTTPS(baseUrl) + \"/api/data/\" + version + \"/WhoAmI()\", { headers: headers }).subscribe(r => {\r\n      this.log(r);\r\n      let url = r['@odata.context'] as string;\r\n\r\n      let firstpart = url.split('/api/data/')[0];\r\n      let version = url.split('/api/data/')[1].split('/')[0];\r\n\r\n      this.contextFallback[\"$clienturl\"] = firstpart + '/api/data/' + version + '/';\r\n\r\n      this.contextFallback[\"userid\"] = r[\"UserId\"];\r\n      this.contextFallback[\"username\"] = \"Dev. fallback from whoami\";\r\n      this.initializeVersion(this.contextFallback.getVersion());\r\n    });\r\n\r\n    var x = this.contextFallback;\r\n\r\n    return this.contextFallback;\r\n  }\r\n\r\n  getCurrentUserId(): Observable<string> {\r\n    var ctx = this.getContext();\r\n    if (ctx.getUserId() == null || ctx.getUserId() == '') {\r\n\r\n      var headers = this.getDefaultHeader();\r\n\r\n      var url = this.forceHTTPS(ctx.getClientUrl()) + this.apiUrl + \"/WhoAmI()\";\r\n      this.log(url);\r\n\r\n      return this.http.get(url, { headers: headers }).pipe(map(r => { return r[\"UserId\"] }));\r\n    } else {\r\n      this.log('get user from normal crm context');\r\n      this.log('should result in ' + ctx.getUserId());\r\n      return new Observable<string>(obs => {\r\n        setTimeout(() => obs.next(ctx.getUserId()), 100);\r\n      });\r\n    }\r\n  }\r\n\r\n  getCurrentKey(): Observable<XrmEntityKey>;\r\n  getCurrentKey(repeatForCreateForm: boolean): Observable<XrmEntityKey>;\r\n  getCurrentKey(repeatForCreateForm: boolean = false): Observable<XrmEntityKey> {\r\n    // First we try to find id and type in the url, this allow forcing a specific entity, directly from standard url parameters\r\n    let params = this.getQueryStringParameters();\r\n    let result = new XrmEntityKey();\r\n\r\n    let id = params[\"id\"];\r\n    let type = params[\"typename\"];\r\n\r\n\r\n    if (id == null || id == '') {\r\n      params = this.getContext().getQueryStringParameters();\r\n      id = params[\"id\"];\r\n      type = params[\"typename\"];\r\n    }\r\n\r\n    if (this.xrmformService.getFormType() == 1 && repeatForCreateForm) {\r\n      var obs = new Observable<XrmEntityKey>(sub => {\r\n        this.tryGetKey(sub);\r\n      });\r\n      return obs;\r\n    }\r\n\r\n\r\n    let key: XrmFormKey = this.xrmformService.getFormKey(id, type);\r\n    if (key != null && key.id != null) {\r\n      result.id = this.toGuid(key.id);\r\n      result.entityType = key.type;\r\n      return new Observable(obs => obs.next(result));\r\n    }\r\n\r\n    if (this.xrmformService.getFormType() == 2) {\r\n      key = this.xrmformService.getFormKey(id, type);\r\n      if (key != null) {\r\n        result.id = this.toGuid(key.id);\r\n        result.entityType = key.type;\r\n        return new Observable(obs => obs.next(result));\r\n      } else {\r\n        return new Observable(obs => {\r\n          var iv = setInterval(() => {\r\n            let key = this.xrmformService.getFormKey(id, type);\r\n            if (key != null) {\r\n              clearInterval(iv);\r\n              result.id = this.toGuid(key.id);\r\n              result.entityType = key.type;\r\n              obs.next(result);\r\n            }\r\n          }, 800);\r\n        });\r\n      }\r\n    } else {\r\n      // it was not an entity form, or the entity form was not in edit mode.\r\n      result.id = this.toGuid(result.id);\r\n      return new Observable<XrmEntityKey>(obs => obs.next(result));\r\n    }\r\n  }\r\n\r\n  get<T>(entityTypes: string, id: string, fields: string): Observable<T>;\r\n  get<T>(entityTypes: string, id: string, fields: string, expand: Expand): Observable<T>;\r\n  get<T>(entityTypes: string, id: string, fields: string, expand: Expand = null): Observable<T> {\r\n    let headers = new HttpHeaders({ 'Accept': 'application/json' });\r\n    if (this.token != null) {\r\n      headers = headers.append(\"Authorization\", \"Bearer \" + this.token);\r\n    }\r\n    headers = headers.append(\"OData-MaxVersion\", \"4.0\");\r\n    headers = headers.append(\"OData-Version\", \"4.0\");\r\n    headers = headers.append(\"Content-Type\", \"application/json; charset=utf-8\");\r\n    headers = headers.append(\"Prefer\", \"odata.include-annotations=*\");\r\n    headers = headers.append(\"Cache-Control\", \"no-cache\");\r\n\r\n    let addFields = '';\r\n    let sep = '?';\r\n\r\n    if (fields != null && fields != '') {\r\n      addFields = sep + \"$select=\" + fields;\r\n      sep = '&';\r\n    }\r\n\r\n    let _ex = this.expandString(expand, sep);\r\n\r\n    let _id = id.replace(\"{\", \"\").replace(\"}\", \"\");\r\n\r\n    let url = this.getContext().getClientUrl() + this.apiUrl + entityTypes + \"(\" + _id + \")\" + addFields + _ex;\r\n    this.log(url);\r\n\r\n    return this.http.get<T>(this.forceHTTPS(url), { headers: headers });\r\n  }\r\n\r\n  query<T>(entityTypes: string, fields: string, filter: string): Observable<XrmQueryResult<T>>;\r\n  query<T>(entityTypes: string, fields: string, filter: string, orderBy: string): Observable<XrmQueryResult<T>>;\r\n  query<T>(entityTypes: string, fields: string, filter: string, orderBy: string, top: number): Observable<XrmQueryResult<T>>;\r\n  query<T>(entityTypes: string, fields: string, filter: string, orderBy: string, top: number, count: boolean): Observable<XrmQueryResult<T>>;\r\n  query<T>(entityTypes: string, fields: string, filter: string, orderBy: string = null, top: number = 0, count: boolean = false): Observable<XrmQueryResult<T>> {\r\n    let me = this;\r\n    let headers = new HttpHeaders({ 'Accept': 'application/json' });\r\n    if (this.token != null) {\r\n      headers = headers.append(\"Authorization\", \"Bearer \" + this.token);\r\n    }\r\n    headers = headers.append(\"OData-MaxVersion\", \"4.0\");\r\n    headers = headers.append(\"OData-Version\", \"4.0\");\r\n    headers = headers.append(\"Content-Type\", \"application/json; charset=utf-8\");\r\n    headers = headers.append(\"Prefer\", \"odata.include-annotations=\\\"*\\\"\");\r\n    if (top > 0) {\r\n      headers = headers.append(\"Prefer\", \"odata.maxpagesize=\" + top.toString());\r\n    } else {\r\n    }\r\n    headers = headers.append(\"Cache-Control\", \"no-cache\");\r\n\r\n    let url = this.getContext().getClientUrl() + this.apiUrl + entityTypes;\r\n    if ((fields != null && fields != '') || (filter != null && filter != '') || (orderBy != null && orderBy != '') || top > 0) {\r\n      url += \"?\";\r\n    }\r\n    let sep = '';\r\n\r\n    if (fields != null && fields != '') {\r\n      url += '$select=' + fields;\r\n      sep = '&';\r\n    }\r\n\r\n    if (filter != null && filter != '') {\r\n      url += sep + '$filter=' + filter;\r\n      sep = '&';\r\n    }\r\n\r\n    if (orderBy != null && orderBy != '') {\r\n      url += sep + '$orderby=' + orderBy;\r\n      sep = '&';\r\n    }\r\n\r\n    if (count) {\r\n      url += sep + '$count=true';\r\n      sep = '&';\r\n    }\r\n\r\n    return this.http.get(this.forceHTTPS(url), { headers: headers }).pipe(map(response => {\r\n      let result = me.resolveQueryResult<T>(response, top, [url], 0);\r\n      return result;\r\n    }));\r\n  }\r\n\r\n  create<T>(entityType: string, entity: T): Observable<T> {\r\n    let headers = new HttpHeaders({ 'Accept': 'application/json' });\r\n    if (this.token != null) {\r\n      headers = headers.append(\"Authorization\", \"Bearer \" + this.token);\r\n    }\r\n    headers = headers.append(\"OData-MaxVersion\", \"4.0\");\r\n    headers = headers.append(\"OData-Version\", \"4.0\");\r\n    headers = headers.append(\"Content-Type\", \"application/json; charset=utf-8\");\r\n    headers = headers.append(\"Prefer\", \"odata.include-annotations=*\");\r\n    headers = headers.append(\"Prefer\", \"return=representation\");\r\n\r\n    let options = {\r\n      headers: headers,\r\n    }\r\n\r\n    return this.http.post(this.forceHTTPS(this.getContext().getClientUrl()) + this.apiUrl + entityType, entity, { headers: headers, observe: \"response\" }).pipe(map(\r\n      (res: HttpResponse<any>) => {\r\n        if (res.body == null) {\r\n          let entityId = res.headers.get('OData-EntityId') as string;\r\n          let result = { id: entityId.split('(')[1].replace(')', ''), $keyonly: true };\r\n          return result;\r\n        } else {\r\n          return res.body;\r\n        }\r\n      }\r\n    ));\r\n  }\r\n\r\n  update<T>(entityType: string, entity: T, id: string): Observable<T>;\r\n  update<T>(entityType: string, entity: T, id: string, fields: string): Observable<T>;\r\n  update<T>(entityType: string, entity: T, id: string, fields: string = null): Observable<T> {\r\n    let headers = new HttpHeaders({ 'Accept': 'application/json' });\r\n    if (this.token != null) {\r\n      headers = headers.append(\"Authorization\", \"Bearer \" + this.token);\r\n    }\r\n    headers = headers.append(\"OData-MaxVersion\", \"4.0\");\r\n    headers = headers.append(\"OData-Version\", \"4.0\");\r\n    headers = headers.append(\"Content-Type\", \"application/json; charset=utf-8\");\r\n    headers = headers.append(\"Prefer\", \"odata.include-annotations=*\");\r\n    headers = headers.append(\"Prefer\", \"return=representation\");\r\n\r\n    let _f = '';\r\n    if (fields != null) {\r\n      _f = '?$select=' + fields;\r\n    }\r\n\r\n    let fUrl = this.getContext().getClientUrl() + this.apiUrl + entityType + \"(\" + id + \")\" + _f;\r\n    this.log(fUrl);\r\n\r\n    return this.http.patch(this.forceHTTPS(fUrl), entity, { headers: headers }).pipe(map(response => {\r\n      if (response == null || this.getContext().getVersion().startsWith(\"8.0\") || this.getContext().getVersion().startsWith(\"8.1\")) {\r\n        return entity;\r\n      }\r\n      return response as T;\r\n    }));\r\n  }\r\n\r\n  put(entityType: string, id: string, field: string, value: any): Observable<null>;\r\n  put(entityType: string, id: string, field: string, value: any, propertyValueAs: string): Observable<null>;\r\n  put(entityType: string, id: string, field: string, value: any, propertyValueAs: string = null): Observable<null> {\r\n    if (propertyValueAs == null) propertyValueAs = 'value';\r\n\r\n    let headers = new HttpHeaders({ 'Accept': 'application/json' });\r\n    if (this.token != null) {\r\n      headers = headers.append(\"Authorization\", \"Bearer \" + this.token);\r\n    }\r\n    headers = headers.append(\"OData-MaxVersion\", \"4.0\");\r\n    headers = headers.append(\"OData-Version\", \"4.0\");\r\n    headers = headers.append(\"Content-Type\", \"application/json; charset=utf-8\");\r\n    headers = headers.append(\"Prefer\", \"odata.include-annotations=*\");\r\n\r\n    let v = {\r\n    };\r\n\r\n    v[propertyValueAs] = value;\r\n    this.log(v);\r\n\r\n\r\n    let url = this.getContext().getClientUrl() + this.apiUrl + entityType + \"(\" + id + \")/\" + field;\r\n    this.log(url);\r\n\r\n    if (v[propertyValueAs] != null) {\r\n      return this.http.put(this.forceHTTPS(url), v, { headers: headers }).pipe(map(response => null));\r\n    } else {\r\n      return this.http.delete(this.forceHTTPS(url), { headers: headers }).pipe(map(response => null));\r\n    }\r\n  }\r\n\r\n  delete(entityType: string, id: string): Observable<null> {\r\n    let headers = new HttpHeaders({ 'Accept': 'application/json' });\r\n    if (this.token != null) {\r\n      headers = headers.append(\"Authorization\", \"Bearer \" + this.token);\r\n    }\r\n    headers = headers.append(\"OData-MaxVersion\", \"4.0\");\r\n    headers = headers.append(\"OData-Version\", \"4.0\");\r\n    headers = headers.append(\"Content-Type\", \"application/json; charset=utf-8\");\r\n    headers = headers.append(\"Prefer\", \"odata.include-annotations=*\");\r\n\r\n    let url = this.getContext().getClientUrl() + this.apiUrl + entityType + \"(\" + id + \")\";\r\n    this.log(url);\r\n    return this.http.delete(this.forceHTTPS(url), { headers: headers }).pipe(map(response => null));\r\n  }\r\n\r\n  getParameter(param: string): string {\r\n    return this.getQueryStringParameters()[param];\r\n  }\r\n\r\n  associate(fromType: string, fromId: string, toType: string, toId: string, refname: string): Observable<null> {\r\n    let headers = new HttpHeaders({ 'Accept': 'application/json' });\r\n    if (this.token != null) {\r\n      headers = headers.append(\"Authorization\", \"Bearer \" + this.token);\r\n    }\r\n    headers = headers.append(\"OData-MaxVersion\", \"4.0\");\r\n    headers = headers.append(\"OData-Version\", \"4.0\");\r\n    headers = headers.append(\"Content-Type\", \"application/json; charset=utf-8\");\r\n    headers = headers.append(\"Prefer\", \"odata.include-annotations=*\");\r\n\r\n    let url = this.getContext().getClientUrl() + this.apiUrl + fromType + \"(\" + this.toGuid(fromId) + \")/\" + refname + \"/$ref\";\r\n\r\n    let data = {\r\n      \"@odata.id\": this.getContext().$devClientUrl() + toType + \"(\" + this.toGuid(toId) + \")\"\r\n    }\r\n\r\n    if (this.debug) {\r\n      this.log(url);\r\n      this.log(data);\r\n    }\r\n\r\n    return this.http.post(this.forceHTTPS(url), data, { headers: headers }).pipe(map(response => null));\r\n  }\r\n\r\n  disassociate(fromType: string, fromId: string, toType: string, toId: string, refname: string): Observable<null> {\r\n    let headers = new HttpHeaders({ 'Accept': 'application/json' });\r\n    if (this.token != null) {\r\n      headers = headers.append(\"Authorization\", \"Bearer \" + this.token);\r\n    }\r\n    headers = headers.append(\"OData-MaxVersion\", \"4.0\");\r\n    headers = headers.append(\"OData-Version\", \"4.0\");\r\n\r\n    let url = this.getContext().getClientUrl() + this.apiUrl + fromType + \"(\" + this.toGuid(fromId) + \")/\" + refname + \"/$ref?$id=\" + this.getContext().$devClientUrl() + toType + \"(\" + this.toGuid(toId) + \")\";\r\n    this.log(url);\r\n\r\n    return this.http.delete(this.forceHTTPS(url), { headers: headers }).pipe(map(response => {\r\n      this.log(response);\r\n      return null;\r\n    }));\r\n  }\r\n\r\n  func(name: string, data: string): Observable<any>;\r\n  func(name: string, data: string, boundType: string, boundId: string): Observable<any>;\r\n  func(name: string, data: string, boundType: string = null, boundId: string = null): Observable<any> {\r\n    let headers = new HttpHeaders({ 'Accept': 'application/json' });\r\n    if (this.token != null) {\r\n      headers = headers.append(\"Authorization\", \"Bearer \" + this.token);\r\n    }\r\n    headers = headers.append(\"OData-MaxVersion\", \"4.0\");\r\n    headers = headers.append(\"OData-Version\", \"4.0\");\r\n\r\n    let url = this.getContext().getClientUrl() + this.apiUrl + name;\r\n    if (boundType != null) {\r\n      url = this.getContext().getClientUrl() + this.apiUrl + boundType + \"(\" + this.toGuid(boundId) + \")/\" + name;\r\n    }\r\n\r\n    if (data != null && data.length > 0) {\r\n      url += data;\r\n    } else {\r\n      url += \"()\";\r\n    }\r\n\r\n    this.log(url);\r\n    return this.http.get(this.forceHTTPS(url), { headers: headers }).pipe(map(response => {\r\n      this.log(response);\r\n      return response;\r\n    }));\r\n  }\r\n\r\n\r\n  action(name: string, data: any): Observable<any>;\r\n  action(name: string, data: any, boundType: string, boundId: string): Observable<any>;\r\n  action(name: string, data: any, boundType: string = null, boundId: string = null): Observable<any> {\r\n    let headers = new HttpHeaders({ 'Accept': 'application/json' });\r\n    if (this.token != null) {\r\n      headers = headers.append(\"Authorization\", \"Bearer \" + this.token);\r\n    }\r\n    headers = headers.append(\"OData-MaxVersion\", \"4.0\");\r\n    headers = headers.append(\"OData-Version\", \"4.0\");\r\n\r\n    let url = this.getContext().getClientUrl() + this.apiUrl + name;\r\n    if (boundType != null) {\r\n      url = this.getContext().getClientUrl() + this.apiUrl + boundType + \"(\" + this.toGuid(boundId) + \")/\" + name;\r\n    }\r\n    this.log(url);\r\n\r\n    return this.http.post(this.forceHTTPS(url), data, { headers: headers }).pipe(map(response => {\r\n      this.log(response);\r\n      return response;\r\n    }));\r\n  }\r\n\r\n  log(message: any): void {\r\n    if (this.debug) {\r\n      if (typeof message == 'string') {\r\n        console.dir(message);\r\n      } else {\r\n        console.log(message);\r\n      }\r\n    }\r\n  }\r\n\r\n\r\n  private tryGetKey(sub: Subscriber<XrmEntityKey>): void {\r\n    setTimeout(() => {\r\n      var key = this.xrmformService.getFormKey(null, null, true);\r\n      if (key.id != null && key.id != '' && key.type != null && key.type != '') {\r\n        let result = new XrmEntityKey();\r\n        result.entityType = key.type;\r\n        result.id = key.id;\r\n        sub.next(result);\r\n      } else {\r\n        this.keyTries++;\r\n        if (this.keyTries < 900) {\r\n          // continue try for 1/2 hour at most\r\n          this.tryGetKey(sub);\r\n        }\r\n      }\r\n    }, 2000);\r\n  }\r\n\r\n  private initializeVersion(_v: string): void {\r\n    if (_v == null) { _v = '9.0.0.0'; }\r\n    let v = _v.split('.');\r\n    this.setVersion(v[0] + \".\" + v[1]);\r\n    this.apiVersion = 'v' + v[0] + '.' + v[1];\r\n  }\r\n\r\n  private expandString(expand: Expand, sep: string): string {\r\n    if (expand == null || expand.name == null || expand.name == '') return '';\r\n\r\n    let _ex = sep + '$expand=' + expand.toExpandString();\r\n\r\n    if (expand.additional != null && expand.additional.length > 0) {\r\n      expand.additional.forEach(ad => {\r\n        _ex += \",\" + ad.toExpandString();\r\n      });\r\n    }\r\n    return _ex;\r\n  }\r\n\r\n  private resolveQueryResult<T>(response: any, top: number, pages: string[], pageIndex: number): XrmQueryResult<T> {\r\n    let me = this;\r\n    let result = {\r\n      context: response[\"@odata.context\"],\r\n      count: response[\"@odata.count\"],\r\n      value: response[\"value\"] as T[],\r\n      pages: pages,\r\n      prev: null,\r\n      next: null,\r\n      pageIndex: pageIndex,\r\n      top: top,\r\n      nextLink: null\r\n    }\r\n\r\n    let nextLink = response[\"@odata.nextLink\"] as string;\r\n\r\n    if (nextLink != null && nextLink != '') {\r\n      let start = nextLink.indexOf('/api');\r\n      nextLink = me.getContext().getClientUrl() + nextLink.substring(start);\r\n      result = {\r\n        context: result.context,\r\n        count: response[\"@odata.count\"],\r\n        value: result.value,\r\n        pages: pages,\r\n        pageIndex: pageIndex,\r\n        prev: null,\r\n        top: top,\r\n        nextLink: nextLink,\r\n        next: (): Observable<XrmQueryResult<T>> => {\r\n          let headers = new HttpHeaders({ 'Accept': 'application/json' });\r\n          if (this.token != null) {\r\n            headers = headers.append(\"Authorization\", \"Bearer \" + this.token);\r\n          }\r\n          headers = headers.append(\"OData-MaxVersion\", \"4.0\");\r\n          headers = headers.append(\"OData-Version\", \"4.0\");\r\n          headers = headers.append(\"Content-Type\", \"application/json; charset=utf-8\");\r\n          headers = headers.append(\"Prefer\", \"odata.include-annotations=\\\"*\\\"\");\r\n          if (top > 0) {\r\n            headers = headers.append(\"Prefer\", \"odata.maxpagesize=\" + top.toString());\r\n          }\r\n          headers = headers.append(\"Cache-Control\", \"no-cache\");\r\n\r\n          return me.http.get(me.forceHTTPS(nextLink), { headers: headers }).pipe(map(r => {\r\n            pages.push(nextLink);\r\n            let pr = me.resolveQueryResult<T>(r, top, pages, pageIndex + 1);\r\n            return pr;\r\n          }));\r\n        }\r\n      }\r\n    }\r\n\r\n    if (result.pageIndex >= 1) {\r\n      result.prev = (): Observable<XrmQueryResult<T>> => {\r\n        let headers = new HttpHeaders({ 'Accept': 'application/json' });\r\n        if (this.token != null) {\r\n          headers = headers.append(\"Authorization\", \"Bearer \" + this.token);\r\n        }\r\n        headers = headers.append(\"OData-MaxVersion\", \"4.0\");\r\n        headers = headers.append(\"OData-Version\", \"4.0\");\r\n        headers = headers.append(\"Content-Type\", \"application/json; charset=utf-8\");\r\n        headers = headers.append(\"Prefer\", \"odata.include-annotations=\\\"*\\\"\");\r\n        if (top > 0) {\r\n          headers = headers.append(\"Prefer\", \"odata.maxpagesize=\" + top.toString());\r\n        } else {\r\n        }\r\n        headers = headers.append(\"Cache-Control\", \"no-cache\");\r\n\r\n        let lastPage = result.pages[result.pageIndex - 1];\r\n        return me.http.get(me.forceHTTPS(lastPage), { headers: headers }).pipe(map(r => {\r\n          result.pages.splice(result.pages.length - 1, 1);\r\n          let pr = me.resolveQueryResult<T>(r, top, result.pages, result.pageIndex - 1);\r\n          return pr;\r\n        }));\r\n      }\r\n    }\r\n    return result;\r\n  }\r\n\r\n  private getQueryStringParameters(): any {\r\n    let search = window.location.search;\r\n    let hashes = search.slice(search.indexOf('?') + 1).split('&');\r\n    let params = {};\r\n    hashes.map(hash => {\r\n      let [key, val] = hash.split('=')\r\n      params[key] = decodeURIComponent(val)\r\n    })\r\n    return params;\r\n  }\r\n\r\n  private toGuid(v: string): string {\r\n    // 5C48BB2A-BFC0-4E56-A262-8494E0F6A8FD\r\n    if (v == null || v == '') {\r\n      return v;\r\n    }\r\n\r\n    v = decodeURIComponent(v).replace('{', '').replace('}', '');\r\n\r\n    if (v.indexOf('-') >= 0) {\r\n      return v;\r\n    }\r\n    return v.substr(0, 8) + '-' + v.substr(8, 4) + '-' + v.substr(12, 4) + '-' + v.substr(16, 4) + '-' + v.substr(20);\r\n  }\r\n\r\n  private getDefaultHeader(): HttpHeaders {\r\n    let headers = new HttpHeaders({ 'Accept': 'application/json' });\r\n    if (this.token != null) {\r\n      this.log('crmtoken used: ' + this.token);\r\n      headers = headers.append(\"Authorization\", \"Bearer \" + this.token);\r\n    }\r\n    headers = headers.append(\"OData-MaxVersion\", \"4.0\");\r\n    headers = headers.append(\"OData-Version\", \"4.0\");\r\n    headers = headers.append(\"Content-Type\", \"application/json; charset=utf-8\");\r\n    headers = headers.append(\"Prefer\", \"odata.include-annotations=\\\"*\\\"\");\r\n    return headers;\r\n  }\r\n\r\n\r\n  forceHTTPS(v: string): string {\r\n    if (this.forceHttps && v.startsWith(\"http://\")) {\r\n      return v.replace(\"http://\", \"https://\");\r\n    }\r\n    return v;\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { HttpClient, HttpHeaders, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { XrmService } from './xrm.service';\r\nimport { XrmConfigService } from './xrmconfig.service';\r\n\r\n\r\nexport interface AuthUserProfile {\r\n    name: string;\r\n}\r\n\r\nexport interface AuthUser {\r\n    profile: AuthUserProfile;\r\n}\r\n\r\nexport interface AuthContext {\r\n    isCallback(hash: string): boolean;\r\n    handleWindowCallback(): void;\r\n    getLoginError(): string;\r\n    getCachedUser(): AuthUser;\r\n    login(): void;\r\n    logOut(): void;\r\n    acquireToken(url: string, callback: any): void;\r\n}\r\n\r\n\r\nexport interface AuthConfigEndpoint {\r\n    orgUri: string;\r\n}\r\n\r\nexport interface AuthConfig {\r\n    tenant: string;\r\n    clientId: string;\r\n    postLogoutRedirectUri: string;\r\n    endpoints: AuthConfigEndpoint;\r\n    cacheLocation: string;\r\n    version: string;\r\n}\r\n\r\n\r\n@Injectable()\r\nexport class XrmAuthService {\r\n  authConfig: AuthConfig;\r\n  obs: any;\r\n\r\n    constructor(private xrmConfigService: XrmConfigService, private xrmService: XrmService ) { }\r\n\r\n    authenticate(): Observable<boolean> {\r\n        if (window[\"AuthenticationContext\"] == null) {\r\n            throw \"You must load adal.js to the page header scripts.\";\r\n        }\r\n\r\n        this.authConfig = this.xrmConfigService.getConfig();\r\n\r\n        let authCtx = new window[\"AuthenticationContext\"](this.authConfig) as AuthContext;\r\n        let isCallback = authCtx.isCallback(window.location.hash);\r\n\r\n        if (isCallback) {\r\n            authCtx.handleWindowCallback();\r\n        }\r\n\r\n        var loginError = authCtx.getLoginError();\r\n\r\n        if (!loginError && isCallback) {\r\n          var x = Observable.create((_obs:any) => {\r\n            this.obs = _obs;\r\n          });\r\n\r\n            setTimeout(() => {\r\n                authCtx.acquireToken(this.authConfig.endpoints.orgUri, this.getToken);\r\n            }, 1);\r\n            return x;\r\n        }\r\n\r\n        if (loginError) {\r\n            throw loginError;\r\n        }\r\n\r\n        if (!isCallback) {\r\n            let user = authCtx.getCachedUser();\r\n            if (user == null) {\r\n                authCtx.login();\r\n            } else {\r\n                console.log(user);\r\n            }\r\n        }\r\n\r\n        return Observable.create((obs:any) => {\r\n            setTimeout(() => {\r\n                obs.next(true);\r\n            });\r\n        });\r\n    }\r\n\r\n    private getToken(error: string, token: string): void {\r\n        if (error) {\r\n            console.log(error);\r\n        }\r\n\r\n        if (this.xrmService.debug) {\r\n            console.log(token);\r\n        }\r\n        this.xrmService.token = token;\r\n        this.obs.next(true);\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class XrmStateService {\r\n  private statechanged$: BehaviorSubject<boolean>;\r\n\r\n  constructor() {\r\n    this.statechanged$ = new BehaviorSubject<boolean>(false);\r\n  }\r\n\r\n  public statechanged(): BehaviorSubject<boolean> {\r\n    return this.statechanged$;\r\n  }\r\n\r\n  private runnings = [];\r\n\r\n  private _running: boolean = false;\r\n\r\n\r\n  /**\r\n   * @deprecated You should subscribe to statechanged() instead of targeting this property directly\r\n   */\r\n  public get running() { return this._running };\r\n\r\n  private _success: number = 0;\r\n  public get success() { return this._success };\r\n\r\n  private _error: number = 0;\r\n  public get error() { return this._error };\r\n\r\n  private add(x: number): void {\r\n    this.runnings.push(x);\r\n    this._running = true;\r\n  }\r\n\r\n  private remove(x: number, error: boolean): void {\r\n    let pos = this.runnings.indexOf(x);\r\n    this.runnings.splice(pos, 1);\r\n\r\n    var current = this._running;\r\n\r\n    this._running = this.runnings.length > 0;\r\n\r\n    if (current != this._running) {\r\n      this.statechanged$.next(this._running);\r\n    }\r\n\r\n    if (error) {\r\n      this._error++;\r\n    } else {\r\n      this._success++;\r\n    }\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest, HttpResponse, HttpErrorResponse } from '@angular/common/http';\r\n\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { map, catchError } from 'rxjs/operators'\r\n\r\nimport { XrmStateService } from './xrmstate.service';\r\n\r\n\r\n@Injectable()\r\nexport class XrmInterceptor implements HttpInterceptor {\r\n  private nextNumber: number = 0;\r\n  constructor(private xrmState: XrmStateService) { }\r\n\r\n  intercept(req: HttpRequest<any>, next: HttpHandler): Observable<any> {\r\n    this.nextNumber++;\r\n    let me = this.nextNumber;\r\n    this.xrmState['add'](me);\r\n\r\n    return next.handle(req)\r\n      .pipe(\r\n      map((event: HttpEvent<any>) => {\r\n        if (event instanceof HttpResponse) {\r\n          this.xrmState['remove'](me, false);\r\n        }\r\n        return event;\r\n      }),\r\n      catchError(error  => {\r\n        this.xrmState['remove'](me, true);\r\n        return throwError(error);\r\n      })\r\n    );\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest, HttpResponse, HttpErrorResponse, HttpClient, HttpHeaders } from '@angular/common/http';\r\n\r\nimport { Observable, Subscriber, throwError } from 'rxjs';\r\nimport { map, catchError, startWith } from 'rxjs/operators'\r\n\r\nimport { XrmService, XrmEntityKey, XrmQueryResult, Expand } from './xrm.service';\r\nimport { XrmContext } from './xrmform.service';\r\nimport { Fetchxml } from './fetchxml';\r\n\r\nconst XRMCONTEXTSERVICE_EMPTY_GUID = \"00000000-0000-0000-0000-000000000000\";\r\n\r\nexport interface ToFunctionPropertyValue {\r\n  functionPropertyValueAsString(): string;\r\n}\r\n\r\nexport class FunctionPropertyValue implements ToFunctionPropertyValue {\r\n  private v: string = '';\r\n  constructor(v: string) {\r\n    this.v = v;\r\n  }\r\n\r\n  functionPropertyValueAsString(): string {\r\n    return this.v;\r\n  }\r\n}\r\n\r\nexport class Entity {\r\n  _pluralName: string;\r\n  _keyName: string;\r\n  _updateable: boolean = false;\r\n  _logicalName: string;\r\n  id: string;\r\n  constructor(pluralName: string, keyName: string);\r\n  constructor(pluralName: string, keyName: string, updateable: boolean);\r\n  constructor(pluralName: string, keyName: string, updateable: boolean, logicalname: string);\r\n  constructor(pluralName: string, keyName: string, updateable: boolean = false, logicalname: string = null) {\r\n    this._pluralName = pluralName;\r\n    this._keyName = keyName;\r\n    this._updateable = updateable;\r\n\r\n    if (logicalname != null && logicalname != '') {\r\n      this._logicalName = logicalname;\r\n    } else {\r\n      let x = this._pluralName != null ? this._pluralName.toLowerCase() : null;\r\n      switch (x) {\r\n        case \"emails\": this._logicalName = \"email\"; break;\r\n        case \"appointments\": this._logicalName = \"appointment\"; break;\r\n        case \"letters\": this._logicalName = \"letter\"; break;\r\n        case \"phonecalls\": this._logicalName = \"phonecall\"; break;\r\n        case \"tasks\": this._logicalName = \"task\"; break;\r\n        case \"campaignresponses\": this._logicalName = \"campaignresponse\"; break;\r\n        default: {\r\n          if (this._keyName.toLowerCase() == \"activityid\" && x != null) {\r\n            this._logicalName = x.substr(0, x.length - 1);\r\n          } else {\r\n            this._logicalName = this._keyName.substr(0, (this._keyName.length - 2)).toLowerCase();\r\n          }\r\n          break;\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  ToEntityReference(associatednavigationproperty: string): EntityReference;\r\n  ToEntityReference(associatednavigationproperty: string = null): EntityReference {\r\n    return new EntityReference(this.id, this._pluralName, associatednavigationproperty, this._logicalName);\r\n  }\r\n\r\n  ignoreColumn(prop: string): boolean {\r\n    if (prop == \"_pluralName\" || prop == \"_logicalName\" || prop == \"_keyName\" || prop == \"id\" || prop == '_updateable' || prop == '$expand' || prop == 'access') {\r\n      return true;\r\n    }\r\n    return false;\r\n  }\r\n\r\n  columns(): string[];\r\n  columns(webapi: boolean): string[];\r\n  columns(webapi: boolean = false): string[] {\r\n    let result = [] as string[];\r\n\r\n    let columns: string = this._keyName;\r\n    for (var prop in this) {\r\n      if (prop == this._keyName) continue;\r\n      if (this.ignoreColumn(prop)) continue;\r\n\r\n      let v = this[prop];\r\n      if (typeof v !== 'undefined' && v != null) {\r\n        if (Array.isArray(v)) {\r\n          continue;\r\n        }\r\n        if (v instanceof Entity) {\r\n          continue;\r\n        }\r\n      }\r\n\r\n      if (this.hasOwnProperty(prop)) {\r\n        if (webapi && this[prop] instanceof EntityReference) {\r\n          result.push(\"_\" + prop + \"_value\");\r\n        } else {\r\n          result.push(prop);\r\n        }\r\n      }\r\n    }\r\n    return result;\r\n  }\r\n}\r\n\r\nexport class Entities<T extends Entity> extends Array<T> {\r\n  constructor(fType: string, tType: string, refName: string, leftToRight: boolean, t: T) {\r\n    super(0);\r\n    Object.setPrototypeOf(this, new.target.prototype);\r\n    this.parentType = fType;\r\n    this.childType = tType;\r\n    this.refName = refName;\r\n    this.leftToRight = leftToRight;\r\n    this.push(t);\r\n  }\r\n\r\n  private parentType: string;\r\n  private parentId: string;\r\n  private childType: string;\r\n  private refName: string;\r\n  private leftToRight: boolean;\r\n  private xrmService: XrmService;\r\n\r\n  add(entity: Entity): Observable<null> {\r\n    let fromType = this.parentType;\r\n    let fromId = this.parentId;\r\n    let toType = this.childType;\r\n    let toId = entity.id;\r\n\r\n    if (!this.leftToRight) {\r\n      fromType = this.childType;\r\n      fromId = entity.id;\r\n      toType = this.parentType;\r\n      toId = this.parentId;\r\n    }\r\n    return this.xrmService.associate(fromType, fromId, toType, toId, this.refName).pipe(map(r => {\r\n      this.push(entity as T);\r\n      return null;\r\n    }));\r\n  }\r\n\r\n  remove(entity: Entity): Observable<null> {\r\n    let fromType = this.parentType;\r\n    let fromId = this.parentId;\r\n    let toType = this.childType;\r\n    let toId = entity.id;\r\n\r\n    if (!this.leftToRight) {\r\n      fromType = this.childType;\r\n      fromId = entity.id;\r\n      toType = this.parentType;\r\n      toId = this.parentId;\r\n    }\r\n\r\n    return this.xrmService.disassociate(fromType, fromId, toType, toId, this.refName).pipe(map(r => {\r\n      var index = this.indexOf(entity as T);\r\n      if (index >= 0) {\r\n        this.splice(index, 1);\r\n      }\r\n      return null;\r\n    }));\r\n  }\r\n}\r\n\r\nexport class EntityReference {\r\n  constructor();\r\n  constructor(id: string);\r\n  constructor(id: string, pluralName: string);\r\n  constructor(id: string, pluralName: string, associatednavigationproperty: string);\r\n  constructor(id: string, pluralName: string, associatednavigationproperty: string, logicalname: string);\r\n  constructor(id: string = null, pluralName: string = null, associatednavigationproperty: string = null, logicalname: string = null) {\r\n    this.id = id;\r\n    this.pluralName = pluralName;\r\n    this.associatednavigationproperty = associatednavigationproperty;\r\n    this.logicalname = logicalname;\r\n\r\n    if (this.pluralName != null && logicalname == null) {\r\n      switch (this.pluralName.toLowerCase()) {\r\n        case \"emails\": this.logicalname = \"email\"; break;\r\n        case \"appointments\": this.logicalname = \"appointment\"; break;\r\n        case \"letters\": this.logicalname = \"letter\"; break;\r\n        case \"phonecalls\": this.logicalname = \"phonecall\"; break;\r\n        case \"tasks\": this.logicalname = \"task\"; break;\r\n        default: {\r\n          this.logicalname = this.pluralName.substr(0, (this.pluralName.length - 1)).toLowerCase();\r\n          break;\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  id: string;\r\n  name: string;\r\n  logicalname: string;\r\n  associatednavigationproperty: string;\r\n  pluralName: string;\r\n\r\n  replace(v1: string, v2: string) {\r\n    this.id.replace(v1, v2);\r\n  }\r\n\r\n  meta(pluralName: string, associatednavigationproperty: string): EntityReference {\r\n    this.pluralName = pluralName;\r\n    this.associatednavigationproperty = associatednavigationproperty;\r\n    return this;\r\n  }\r\n\r\n  clone(): EntityReference {\r\n    let result = new EntityReference();\r\n    result.id = this.id;\r\n    result.name = this.name;\r\n    result.logicalname = this.name;\r\n    result.associatednavigationproperty = this.associatednavigationproperty;\r\n    return result;\r\n  }\r\n\r\n  associatednavigationpropertyname(): string {\r\n    if (this.associatednavigationproperty == null || this.associatednavigationproperty == '') {\r\n      throw 'navigation property has not been set for this EntityReference instance';\r\n    }\r\n\r\n    if (this.associatednavigationproperty.endsWith('@odata.bind')) {\r\n      return this.associatednavigationproperty;\r\n    }\r\n    return this.associatednavigationproperty + '@odata.bind';\r\n  }\r\n\r\n  equals(ref: EntityReference): boolean {\r\n    return this.id == ref.id && this.logicalname == ref.logicalname;\r\n  }\r\n\r\n  toJsonProperty(): any {\r\n    return { '@odata.id' : \"'\" + this.pluralName + \"(\" + this.id.replace(\"{\", \"\").replace(\"}\", \"\") + \")\"  + \"'\"};\r\n  }\r\n\r\n  static same(ref1: EntityReference, ref2: EntityReference): boolean {\r\n    if (ref1 == null && ref2 == null) {\r\n      return true;\r\n    }\r\n\r\n    let id1: string = null;\r\n    let id2: string = null;\r\n    if (ref1 != null) id1 = ref1.id;\r\n    if (ref2 != null) id2 = ref2.id;\r\n    return id1 == id2;\r\n  }\r\n}\r\n\r\nexport class OptionSetValue {\r\n  constructor();\r\n  constructor(value: number);\r\n  constructor(value: number, name: string);\r\n  constructor(value: number = null, name: string = null) {\r\n    this.value = value;\r\n    this.name = name;\r\n  }\r\n\r\n  value: number;\r\n  name: string;\r\n\r\n  equals(o: OptionSetValue): boolean {\r\n    if (this.value == null && (o == null || o.value == null)) return true;\r\n    return this.value == o.value;\r\n  }\r\n\r\n  clone(): OptionSetValue {\r\n    let r = new OptionSetValue();\r\n    r.name = this.name;\r\n    r.value = this.value;\r\n    return r;\r\n  }\r\n\r\n  toJsonProperty(): any {\r\n    return this.value;\r\n  }\r\n\r\n  static same(o1: OptionSetValue, o2: OptionSetValue): boolean {\r\n    if (o1 == null && o2 == null) return true;\r\n    let v1: number = null;\r\n    let v2: number = null;\r\n    if (o1 != null) v1 = o1.value;\r\n    if (o2 != null) v2 = o2.value;\r\n    return v1 == v2;\r\n  }\r\n}\r\n\r\n\r\nexport enum Operator {\r\n  And,\r\n  Or\r\n}\r\n\r\nexport enum Comparator {\r\n  Equals = 1,\r\n  NotEquals = 2,\r\n  Contains = 3,\r\n  NotContains = 4,\r\n  DoesNotContainsData = 5,\r\n  ContainsData = 6,\r\n  StartsWith = 7,\r\n  NotStartsWith = 8,\r\n  EndsWith = 9,\r\n  NotEndsWith = 10,\r\n  GreaterThan = 11,\r\n  GreaterThanOrEqual = 12,\r\n  LessThan = 13,\r\n  LessThanOrEQual = 14,\r\n  Useroruserhierarchy = 100,\r\n  Userteams = 101\r\n}\r\n\r\nexport class ColumnBuilder {\r\n  columns: string = null;\r\n  hasEntityReference: boolean = false;\r\n}\r\n\r\nexport class Filter {\r\n  field: string;\r\n  operator: Comparator;\r\n  alias: string;\r\n  value: any;\r\n\r\n  constructor() {\r\n    this[\"raw\"] = false;\r\n  }\r\n\r\n  toQueryString(prototype: Entity): string {\r\n    if (this[\"raw\"] == true) {\r\n      return this.field;\r\n    }\r\n\r\n    if (this.operator == 100) {\r\n      return 'ownerid eq-useroruserhierarchy';\r\n    }\r\n\r\n    if (this.operator == 101) {\r\n      return 'ownerid eq-userteams';\r\n    }\r\n\r\n    let result = '';\r\n    let _f = this.field;\r\n\r\n    if (this.operator == Comparator.Equals && this.value == null) {\r\n      // this.operator = Comparator.DoesNotContainsData;\r\n    }\r\n\r\n    if (this.operator == Comparator.NotEquals && this.value == null) {\r\n      // this.operator = Comparator.ContainsData;\r\n    }\r\n\r\n    switch (this.operator) {\r\n      case Comparator.ContainsData: {\r\n        return _f + ' ne null';\r\n      }\r\n      case Comparator.DoesNotContainsData: {\r\n        return _f + ' eq null';\r\n      }\r\n    }\r\n\r\n    if (this.value == null) {\r\n      throw new Error(\"value is required for operation type \" + this.operator);\r\n    }\r\n\r\n    let _v = \"'\" + this.value + \"'\";\r\n\r\n    if (typeof this.value == 'number') {\r\n      _v = this.value.toString();\r\n    }\r\n\r\n    if (typeof this.value == 'boolean') {\r\n      _v = this.value.valueOf() ? 'true' : 'false';\r\n    }\r\n\r\n    if (prototype[this.field] instanceof OptionSetValue) {\r\n      if (this.value != null && this.value.hasOwnProperty('value')) {\r\n        _v = this.value.value;\r\n      }\r\n    }\r\n\r\n\r\n    let isEref = false;\r\n    if (prototype[this.field] instanceof EntityReference) {\r\n      _f = \"_\" + this.field + \"_value\";\r\n      if (this.value != null) {\r\n        if (typeof this.value == 'string') {\r\n          _v = this.value.replace('{', '').replace('}', '');\r\n        } else {\r\n          _v = this.value.id.replace('{', '').replace('}', '');\r\n        }\r\n      }\r\n      isEref = true;\r\n    }\r\n\r\n    if (!isEref && _f.startsWith('_') && _f.endsWith('_value') && _v != null && this.value != null) {\r\n      if (typeof this.value === \"string\") {\r\n        _v = this.value.replace('{', '').replace('}', '');\r\n      } else {\r\n        if (this.value.hasOwnProperty(\"id\")) {\r\n          _v = this.value.id.replace('{', '').replace('}', '');\r\n        }\r\n      }\r\n    }\r\n\r\n    var isDate = false;\r\n    if (prototype[this.field] instanceof Date) {\r\n      if (this.value instanceof Date) {\r\n        _v = this.value.toISOString();\r\n      } else {\r\n        _v = this.value.toString();\r\n      }\r\n      isDate = true;\r\n    }\r\n\r\n    if (!isDate && this.value instanceof Date) {\r\n      _v = this.value.toISOString();\r\n      isDate = true;\r\n    }\r\n\r\n    if (_f == prototype._keyName) {\r\n      _v = this.value.replace('{', '').replace('}', '');\r\n    }\r\n\r\n    if (_v != null && _v != '') {\r\n      _v = encodeURIComponent(_v);\r\n    }\r\n\r\n    switch (this.operator) {\r\n      case Comparator.Equals: {\r\n        return _f + ' eq ' + _v;\r\n      }\r\n      case Comparator.NotEquals: {\r\n        return _f + ' ne ' + _v;\r\n      }\r\n      case Comparator.GreaterThan: {\r\n        return _f + ' gt ' + _v;\r\n      }\r\n      case Comparator.GreaterThanOrEqual: {\r\n        return _f + ' ge ' + _v;\r\n      }\r\n      case Comparator.LessThan: {\r\n        return _f + ' lt ' + _v;\r\n      }\r\n      case Comparator.LessThanOrEQual: {\r\n        return _f + ' le ' + _v;\r\n      }\r\n      case Comparator.Contains: {\r\n        return \"contains(\" + _f + \",\" + _v + \")\";\r\n      }\r\n      case Comparator.NotContains: {\r\n        return \"not contains(\" + _f + \",\" + _v + \")\";\r\n      }\r\n      case Comparator.StartsWith: {\r\n        return \"startswith(\" + _f + \",\" + _v + \")\";\r\n      }\r\n      case Comparator.NotStartsWith: {\r\n        return \"not startswith(\" + _f + \",\" + _v + \")\";\r\n      }\r\n      case Comparator.EndsWith: {\r\n        return \"endswith(\" + _f + \",\" + _v + \")\";\r\n      }\r\n      case Comparator.NotEndsWith: {\r\n        return \"not endswith(\" + _f + \",\" + _v + \")\";\r\n      }\r\n    }\r\n    return result;\r\n  }\r\n\r\n  toFetcmXml(): string {\r\n    if (this.operator == 100) {\r\n      return '<condition attribute=\"ownerid\" operator=\"eq-useroruserhierarchy\" />';\r\n    }\r\n\r\n    if (this.operator == 101) {\r\n      return '<condition attribute=\"ownerid\" operator=\"eq-userteams\" />';\r\n    }\r\n\r\n    var result: string = \"\";\r\n\r\n    let _v = this.value;\r\n\r\n    if (this.value != null) {\r\n      if (typeof this.value == 'number') {\r\n        _v = this.value.toString();\r\n      }\r\n\r\n      if (typeof this.value == 'boolean') {\r\n        _v = this.value.valueOf() ? 'true' : 'false';\r\n      }\r\n\r\n      if (this.value != null && this.value.hasOwnProperty('value')) {\r\n        _v = this.value.value;\r\n      }\r\n    }\r\n\r\n    if (_v == null) {\r\n      this.adjustOperation();\r\n    }\r\n\r\n    var op = \"eq\";\r\n    switch (this.operator) {\r\n      case Comparator.Contains: op = \"like\"; _v = \"%\" + _v + \"%\"; break;\r\n      case Comparator.ContainsData: op = \"not-null\"; break;\r\n      case Comparator.DoesNotContainsData: op = \"null\"; break;\r\n      case Comparator.EndsWith: op = \"like\"; _v = \"%\" + _v; null; break;\r\n      case Comparator.Equals: op = \"eq\"; break;\r\n      case Comparator.GreaterThan: op = \"gt\"; break;\r\n      case Comparator.GreaterThanOrEqual: op = \"ge\"; break;\r\n      case Comparator.LessThan: op = \"lt\"; break;\r\n      case Comparator.LessThanOrEQual: op = \"le\"; break;\r\n      case Comparator.NotContains: op = \"not-like\"; \"%\" + _v + \"%\"; break;\r\n      case Comparator.NotEndsWith: op = \"not-like\"; \"&\" + _v; break;\r\n      case Comparator.NotEquals: op = \"ne\"; break;\r\n      case Comparator.NotStartsWith: op = \"not-like\"; _v = _v + \"%\"; break;\r\n      case Comparator.StartsWith: op = \"like\"; _v = _v + \"%\"; break;\r\n      default: throw \"condition type not supported in fetch xml \" + this.operator;\r\n    }\r\n\r\n    var aliasString = \"\";\r\n    if (this.alias != null) {\r\n      aliasString = \" entityname='\"+this.alias+\"'\";\r\n    }\r\n\r\n    if (_v != null) {\r\n      result += \"<condition\" + aliasString + \" attribute='\" + this.field + \"' operator='\" + op + \"' value='\" + _v + \"' />\";\r\n    } else {\r\n      result += \"<condition\" + aliasString + \" attribute='\" + this.field + \"' operator='\" + op + \"' />\";\r\n    }\r\n    return result;\r\n  }\r\n\r\n  private adjustOperation() {\r\n    if (this.operator == Comparator.Equals) {\r\n      this.operator = Comparator.DoesNotContainsData;\r\n    } else\r\n      if (this.operator == Comparator.NotEquals) {\r\n        this.operator = Comparator.ContainsData;\r\n      }\r\n\r\n    if (this.operator != Comparator.DoesNotContainsData && this.operator != Comparator.ContainsData) {\r\n      throw \"null in condition value is only supported for containsdata and doesnotdontainsdata:\" + this.field + \"/\" + (this.alias != null ? \"alias:\" + this.alias : \"\") + \"/\" + this.operator;\r\n    }\r\n  }\r\n}\r\n\r\nexport class Condition {\r\n  operator: Operator = Operator.And;\r\n  filter: Filter[];\r\n  children: Condition[];\r\n  parent: Condition;\r\n\r\n  constructor();\r\n  constructor(operator: Operator);\r\n  constructor(operator: Operator = Operator.And) {\r\n    this.operator = operator;\r\n    this.filter = [];\r\n    this.children = [];\r\n  }\r\n\r\n  where(field: string, opr: Comparator): Condition;\r\n  where(field: string, opr: Comparator, value: any): Condition;\r\n  where(field: string, opr: Comparator, value: any = null): Condition {\r\n    let f = new Filter();\r\n    f.field = field;\r\n    f.value = value;\r\n    f.operator = opr;\r\n    this.filter.push(f);\r\n    return this;\r\n  }\r\n\r\n  alias(alias: string, field: string, opr: Comparator): Condition;\r\n  alias(alias: string, field: string, opr: Comparator, value: any): Condition;\r\n  alias(alias: string, field: string, opr: Comparator, value: any = null): Condition {\r\n    let f = new Filter();\r\n    f.alias = alias;\r\n    f.field = field;\r\n    f.value = value;\r\n    f.operator = opr;\r\n    this.filter.push(f);\r\n    return this;\r\n  }\r\n\r\n  group(opr: Operator): Condition {\r\n    let result: Condition = new Condition(opr);\r\n    result.parent = this;\r\n\r\n    this.children.push(result);\r\n    return result;\r\n  }\r\n\r\n  isActive(): Condition {\r\n    return this.where(\"statecode\", Comparator.Equals, 0);\r\n  }\r\n\r\n  isInactive(): Condition {\r\n    return this.where(\"statecode\", Comparator.Equals, 1);\r\n  }\r\n\r\n  owningUserIsCurrentUserOrHirachy(): Condition {\r\n    return this.where(\"ownerid\", 100)\r\n  }\r\n\r\n  currentUserIsMemberOfOwningTeam(): Condition {\r\n    return this.where(\"ownerid\", 101)\r\n  }\r\n\r\n\r\n  raw(filter: string): Condition {\r\n    let result = new Filter();\r\n    result.field = filter;\r\n    result[\"raw\"] = true;\r\n    this.filter.push(result);\r\n    return this;\r\n  }\r\n\r\n  toQueryString(prototype: Entity): string {\r\n    if ((this.children == null || this.children.length == 0) && (this.filter == null || this.filter.length == 0)) {\r\n      return null;\r\n    }\r\n\r\n    let me = this;\r\n    let result = '';\r\n    let opr = '';\r\n    if (this.filter != null && this.filter.length > 0) {\r\n      this.filter.forEach(r => {\r\n        result += opr + r.toQueryString(prototype);\r\n        if (me.operator == Operator.And) {\r\n          opr = ' and ';\r\n        } else {\r\n          opr = ' or ';\r\n        }\r\n\r\n      });\r\n    }\r\n\r\n    if (this.children != null && this.children.length > 0) {\r\n      this.children.forEach(c => {\r\n        result += opr + \"(\" + c.toQueryString(prototype) + \")\";\r\n        if (me.operator == Operator.And) {\r\n          opr = ' and ';\r\n        } else {\r\n          opr = ' or ';\r\n        }\r\n      });\r\n    }\r\n    return result;\r\n  }\r\n\r\n  toFetchXml(): string {\r\n    let result: string = \"\";\r\n\r\n    result += \"<filter type='\" + (this.operator == Operator.And ? \"and\" : \"or\") + \"'>\";\r\n    if (this.filter != null && this.filter.length > 0)\r\n      this.filter.forEach(f => {\r\n        result += f.toFetcmXml();\r\n      });\r\n\r\n    if (this.children != null && this.children.length > 0) {\r\n      this.children.forEach(c => {\r\n        result += c.toFetchXml();\r\n      });\r\n    }\r\n\r\n    result += \"</filter>\"\r\n\r\n    return result;\r\n  }\r\n}\r\n\r\nclass XrmTransactionItem {\r\n  constructor(type: string, prototype: Entity, instance: Entity);\r\n  constructor(type: string, prototype: Entity, instance: Entity, field: string, value: any);\r\n  constructor(type: string, prototype: Entity, instance: Entity, field: string = null, value: any = null) {\r\n    this.type = type;\r\n    this.prototype = prototype;\r\n    this.instance = instance;\r\n    this.field = field;\r\n    this.value = value;\r\n  }\r\n\r\n  type: string;\r\n  prototype: Entity;\r\n  instance: Entity;\r\n  field: string;\r\n  value: any;\r\n  id: number = null;\r\n}\r\n\r\n\r\nexport class XrmTransaction {\r\n  private oprs: XrmTransactionItem[] = [];\r\n\r\n  put<T extends Entity>(prototype: T, instance: T, field: string, value: any): void {\r\n    this.oprs.push(new XrmTransactionItem(\"put\", prototype, instance, field, value));\r\n  }\r\n\r\n  delete<T extends Entity>(instance: T): void {\r\n    this.oprs.push(new XrmTransactionItem(\"delete\", null, instance));\r\n  }\r\n\r\n  create<T extends Entity>(prototype: T, instance: T): void {\r\n    this.oprs.push(new XrmTransactionItem(\"create\", prototype, instance));\r\n  }\r\n\r\n  update<T extends Entity>(prototype: T, instance: T): void {\r\n    this.oprs.push(new XrmTransactionItem(\"update\", prototype, instance));\r\n  }\r\n}\r\n\r\nexport class XrmAccess {\r\n  private lazy: boolean = null;\r\n  resolved: boolean = null;\r\n  read: boolean;\r\n  write: boolean;\r\n  append: boolean;\r\n  appendTo: boolean;\r\n  create: boolean;\r\n  delete: boolean;\r\n  share: boolean;\r\n  assign: boolean;\r\n\r\n  constructor();\r\n  constructor(lasy: boolean);\r\n  constructor(lazy: boolean = false) {\r\n    this.lazy = lazy;\r\n  }\r\n}\r\n\r\nclass ExpandProperty {\r\n  name: string;\r\n  entity: Entity;\r\n  isArray: boolean;\r\n  value: any;\r\n}\r\n\r\n@Injectable()\r\nexport class XrmContextService {\r\n  private context: any = {};\r\n  private changemanager: any = {};\r\n  private tick: number = new Date().valueOf();\r\n  private includeOriginalPayload$: boolean = false;\r\n\r\n  pageCookieMatch = /[-pagingcookie=\\\"][a-z,A-Z,0-9,%-_.~]+/g;\r\n\r\n  constructor(private http: HttpClient, private xrmService: XrmService) { }\r\n\r\n  setVersion(v: string) {\r\n    this.xrmService.setVersion(v);\r\n  }\r\n\r\n  includeOroginalPayload(v: boolean): void {\r\n    this.includeOriginalPayload$ = v;\r\n  }\r\n\r\n  getContext(): XrmContext {\r\n    return this.xrmService.getContext();\r\n  }\r\n\r\n  getCurrentKey(): Observable<XrmEntityKey>;\r\n  getCurrentKey(repeatForCreateForm: boolean): Observable<XrmEntityKey>;\r\n  getCurrentKey(repeatForCreateForm: boolean = false): Observable<XrmEntityKey> {\r\n    return this.xrmService.getCurrentKey(repeatForCreateForm);\r\n  }\r\n\r\n  getServiceUrl(): string {\r\n    return this.getContext().getClientUrl() + this.xrmService.apiUrl;\r\n  }\r\n\r\n  getCurrentUserId(): Observable<string> {\r\n    return this.xrmService.getCurrentUserId();\r\n  }\r\n\r\n  get<T extends Entity>(prototype: T, id: string): Observable<T> {\r\n    let me = this;\r\n    let columnDef = this.columnBuilder(prototype);\r\n\r\n    let expand: Expand = null;\r\n\r\n    let eps = this.getExpandProperties(prototype);\r\n    if (eps != null && eps.length > 0) {\r\n      let comma = \",\";\r\n      eps.forEach(ep => {\r\n        if (expand == null) {\r\n          expand = this.$expandToExpand(ep);\r\n        } else {\r\n          if (expand.additional == null) {\r\n            expand.additional = [];\r\n          }\r\n          expand.additional.push(this.$expandToExpand(ep));\r\n        }\r\n      });\r\n    }\r\n\r\n    return this.xrmService.get<T>(prototype._pluralName, id, columnDef.columns, expand).pipe(map(r => {\r\n      return me.resolve<T>(prototype, r, prototype._updateable, null);\r\n    }));\r\n  }\r\n\r\n  debug(setting: boolean): void {\r\n    this.xrmService.debug = setting;\r\n  }\r\n\r\n  count(xml: Fetchxml): Observable<number> {\r\n    let me = this;\r\n    let headers = new HttpHeaders({ 'Accept': 'application/json' });\r\n    if (this.xrmService.token != null) {\r\n      headers = headers.append(\"Authorization\", \"Bearer \" + this.xrmService.token);\r\n    }\r\n    headers = headers.append(\"OData-MaxVersion\", \"4.0\");\r\n    headers = headers.append(\"OData-Version\", \"4.0\");\r\n    headers = headers.append(\"Content-Type\", \"application/json; charset=utf-8\");\r\n    headers = headers.append(\"Prefer\", \"odata.include-annotations=\\\"*\\\"\");\r\n    headers = headers.append(\"Cache-Control\", \"no-cache\");\r\n\r\n    let options = {\r\n      headers: headers\r\n    }\r\n\r\n    let fetchxml = xml.toCountFetchXml();\r\n    let url = this.getContext().getClientUrl() + this.xrmService.apiUrl + xml.entity().entityPrototype._pluralName + \"?fetchXml=\" + encodeURIComponent(fetchxml);\r\n\r\n    this.xrmService.log(fetchxml);\r\n    this.xrmService.log(url);\r\n\r\n    return new Observable(obs => {\r\n      this.http.get<any>(this.forceHTTPS(url), options).toPromise()\r\n        .then(response => {\r\n          if (response.value && response.value.length && response.value.length == 1) {\r\n            obs.next(response.value[0].count);\r\n          } else {\r\n            obs.next(0);\r\n          }\r\n        })\r\n        .catch(e => {\r\n          if (e[\"error\"] && e[\"error\"][\"error\"] && e[\"error\"][\"error\"][\"code\"]) {\r\n            var val = e[\"error\"][\"error\"][\"code\"];\r\n            if (val != null && val.toString() == \"0x8004e023\") {\r\n              obs.next(50000);\r\n              return;\r\n            }\r\n          }\r\n          throwError(e);\r\n        });\r\n    });\r\n  }\r\n\r\n  fetch<T extends Entity>(xml: Fetchxml): Observable<XrmQueryResult<T>> {\r\n    let me = this;\r\n    let headers = new HttpHeaders({ 'Accept': 'application/json' });\r\n    if (this.xrmService.token != null) {\r\n      headers = headers.append(\"Authorization\", \"Bearer \" + this.xrmService.token);\r\n    }\r\n    headers = headers.append(\"OData-MaxVersion\", \"4.0\");\r\n    headers = headers.append(\"OData-Version\", \"4.0\");\r\n    headers = headers.append(\"Content-Type\", \"application/json; charset=utf-8\");\r\n    headers = headers.append(\"Prefer\", \"odata.include-annotations=\\\"*\\\"\");\r\n    headers = headers.append(\"Cache-Control\", \"no-cache\");\r\n\r\n    let options = {\r\n      headers: headers\r\n    }\r\n\r\n    let fetchxml = xml.toFetchXml();\r\n    let url = this.getContext().getClientUrl() + this.xrmService.apiUrl + xml.entity().entityPrototype._pluralName + \"?fetchXml=\" + encodeURIComponent(fetchxml);\r\n\r\n    this.xrmService.log(fetchxml);\r\n    this.xrmService.log(url);\r\n\r\n    let localPrototype = xml.entity().entityPrototype as T;\r\n\r\n    return this.http.get(this.forceHTTPS(url), options).pipe(map(response => {\r\n      let result = me.resolveFetchResult<T>(localPrototype, response, xml.count, [url], 0, xml);\r\n      return result;\r\n    }));\r\n  }\r\n\r\n  fetchxml<T extends Entity>(prototype: T, fetchxml: string): Observable<XrmQueryResult<T>> {\r\n    let me = this;\r\n    let headers = new HttpHeaders({ 'Accept': 'application/json' });\r\n    if (this.xrmService.token != null) {\r\n      headers = headers.append(\"Authorization\", \"Bearer \" + this.xrmService.token);\r\n    }\r\n    headers = headers.append(\"OData-MaxVersion\", \"4.0\");\r\n    headers = headers.append(\"OData-Version\", \"4.0\");\r\n    headers = headers.append(\"Content-Type\", \"application/json; charset=utf-8\");\r\n    headers = headers.append(\"Prefer\", \"odata.include-annotations=\\\"*\\\"\");\r\n    headers = headers.append(\"Cache-Control\", \"no-cache\");\r\n\r\n    let options = {\r\n      headers: headers\r\n    }\r\n\r\n    let url = this.getContext().getClientUrl() + this.xrmService.apiUrl + prototype._pluralName + \"?fetchXml=\" + encodeURIComponent(fetchxml);\r\n\r\n    this.xrmService.log(fetchxml);\r\n    this.xrmService.log(url);\r\n\r\n    return this.http.get(this.forceHTTPS(url), options).pipe(map(response => {\r\n      let result = me.resolveQueryResult<T>(prototype, response, 0, [url], 0, null);\r\n      return result;\r\n    }));\r\n  }\r\n\r\n  query<T extends Entity>(prototype: T, condition: Condition): Observable<XrmQueryResult<T>>;\r\n  query<T extends Entity>(prototype: T, condition: Condition, orderBy: string): Observable<XrmQueryResult<T>>;\r\n  query<T extends Entity>(prototype: T, condition: Condition, orderBy: string, top: number): Observable<XrmQueryResult<T>>;\r\n  query<T extends Entity>(prototype: T, condition: Condition, orderBy: string, top: number, count: boolean): Observable<XrmQueryResult<T>>;\r\n  query<T extends Entity>(prototype: T, condition: Condition, orderBy: string = null, top: number = 0, count: boolean = false): Observable<XrmQueryResult<T>> {\r\n    let me = this;\r\n    let fields = this.columnBuilder(prototype).columns;\r\n\r\n    let con = condition;\r\n    let filter = null;\r\n    if (condition != null) {\r\n      while (con.parent != null) { con = con.parent };\r\n\r\n      filter = con.toQueryString(prototype);\r\n    }\r\n\r\n    let headers = new HttpHeaders({ 'Accept': 'application/json' });\r\n    if (this.xrmService.token != null) {\r\n      headers = headers.append(\"Authorization\", \"Bearer \" + this.xrmService.token);\r\n    }\r\n    headers = headers.append(\"OData-MaxVersion\", \"4.0\");\r\n    headers = headers.append(\"OData-Version\", \"4.0\");\r\n    headers = headers.append(\"Content-Type\", \"application/json; charset=utf-8\");\r\n    headers = headers.append(\"Prefer\", \"odata.include-annotations=\\\"*\\\"\");\r\n    if (top > 0) {\r\n      headers = headers.append(\"Prefer\", \"odata.maxpagesize=\" + top.toString());\r\n    }\r\n    headers = headers.append(\"Cache-Control\", \"no-cache\");\r\n\r\n    let options = {\r\n      headers: headers\r\n    }\r\n\r\n    let url = this.getContext().getClientUrl() + this.xrmService.apiUrl + prototype._pluralName;\r\n    if ((fields != null && fields != '') || (filter != null && filter != '') || (orderBy != null && orderBy != '') || top > 0) {\r\n      url += \"?\";\r\n    }\r\n    let sep = '';\r\n\r\n    if (fields != null && fields != '') {\r\n      url += '$select=' + fields;\r\n      sep = '&';\r\n    }\r\n\r\n    if (filter != null && filter != '') {\r\n      url += sep + '$filter=' + filter;\r\n      sep = '&';\r\n    }\r\n\r\n    if (orderBy != null && orderBy != '') {\r\n      url += sep + '$orderby=' + orderBy;\r\n      sep = '&';\r\n    }\r\n\r\n    if (count) {\r\n      url += sep + '$count=true';\r\n      sep = '&';\r\n    }\r\n\r\n    this.xrmService.log(url);\r\n\r\n    return this.http.get(this.forceHTTPS(url), options).pipe(map(response => {\r\n      let result = me.resolveQueryResult<T>(prototype, response, top, [url], 0, null);\r\n      return result;\r\n    }));\r\n  }\r\n\r\n  create<T extends Entity>(prototype: T, instance: T): Observable<T> {\r\n    let newr = this.prepareNewInstance(prototype, instance);\r\n    this.xrmService.log(newr);\r\n\r\n    return this.xrmService.create<T>(prototype._pluralName, newr as T).pipe(map(_response => {\r\n      let response = _response as T;\r\n      this.xrmService.log(response);\r\n\r\n      if (response != null) {\r\n        if (response.hasOwnProperty('$keyonly')) {\r\n          instance._pluralName = prototype._pluralName;\r\n          instance._logicalName = prototype._logicalName;\r\n          instance._keyName = prototype._keyName;\r\n          instance.id = _response.id;\r\n          instance._updateable = true;\r\n\r\n          let key = response._pluralName + ':' + response.id;\r\n          for (let prop in prototype) {\r\n            if (typeof prototype[prop] === 'function') {\r\n              response[prop] = prototype[prop];\r\n              continue;\r\n            }\r\n          }\r\n\r\n          this.context[key] = instance;\r\n          this.updateCM(prototype, instance);\r\n\r\n          return instance;\r\n        } else {\r\n          this.resolveNewInstance(prototype, instance, response);\r\n          return this.resolve(prototype, response, true, null);\r\n        }\r\n      }\r\n      return null;\r\n    }));\r\n  }\r\n\r\n  createAll<T extends Entity>(prototype: T, instances: T[]): Observable<null> {\r\n    if (prototype != null && instances != null && instances.length > 0) {\r\n      let trans = new XrmTransaction();\r\n      instances.forEach(r => {\r\n        trans.create(prototype, r);\r\n      });\r\n\r\n      return this.commit(trans);\r\n    }\r\n    throw \"You must parse a prototype and at least one instance to be created\";\r\n  }\r\n\r\n  update<T extends Entity>(prototype: T, instance: T): Observable<T>\r\n  update<T extends Entity>(prototype: T, instance: T, deleteReferenceAsEmptyGuid: boolean): Observable<T>\r\n  update<T extends Entity>(prototype: T, instance: T, deleteReferenceAsEmptyGuid: boolean = false): Observable<T> {\r\n    let me = this;\r\n    let upd = this.prepareUpdate(prototype, instance, deleteReferenceAsEmptyGuid);\r\n\r\n    if (upd == null) {\r\n      upd = {};\r\n    }\r\n\r\n    this.xrmService.log(upd);\r\n\r\n    let fields = this.columnBuilder(prototype).columns;\r\n\r\n    return this.xrmService.update<T>(prototype._pluralName, upd as T, instance.id, fields).pipe(map(response => {\r\n      var wasnull = response[prototype._keyName] == null || response[prototype._keyName] == '';\r\n\r\n      if (wasnull || this.getContext().getVersion().startsWith(\"8.0\") || this.getContext().getVersion().startsWith(\"8.1\")) {\r\n        this.xrmService.log('version 8.0 update');\r\n        this.updateCM(prototype, instance);\r\n        return instance;\r\n      }\r\n\r\n      this.xrmService.log('version 9.0 or higher update');\r\n      return me.resolve(prototype, response, true, null);\r\n    }));\r\n  }\r\n\r\n  put(prototype: Entity, instance: Entity, field: string): Observable<null>;\r\n  put(prototype: Entity, instance: Entity, field: string, value: any): Observable<null>;\r\n  put(prototype: Entity, instance: Entity, field: string, value: any = 'ko-@value-not-parsed!'): Observable<null> {\r\n    let v = value;\r\n    if (value == 'ko-@value-not-parsed!') {\r\n      v = instance[field];\r\n    }\r\n\r\n    let pvx = this.preparePutValue(prototype, field, v);\r\n    return this.xrmService.put(prototype._pluralName, instance.id, pvx.field, pvx.value, pvx.propertyAs).pipe(map(response => {\r\n      if (value != 'ko-@value-not-parsed!') {\r\n        this.assignValue(prototype, instance, field, value);\r\n        return null;\r\n      }\r\n    }));\r\n  }\r\n\r\n  putAll(prototype: Entity, instances: Entity[], field: string, value: any): Observable<null> {\r\n    if (instances != null && instances.length == 1) {\r\n      return this.put(prototype, instances[0], field, value);\r\n    }\r\n\r\n    if (instances != null && instances.length > 1) {\r\n      let trans = new XrmTransaction();\r\n\r\n      let pvx = this.preparePutValue(prototype, field, value);\r\n\r\n      instances.forEach(r => {\r\n        trans.put(prototype, r, field, pvx);\r\n      });\r\n      return this.commit(trans);\r\n    }\r\n\r\n    throw 'you must parse at least one instance in the instances array';\r\n  }\r\n\r\n  delete<T extends Entity>(t: T): Observable<null> {\r\n    let me = this;\r\n    return this.xrmService.delete(t._pluralName, t.id).pipe(map(r => {\r\n      let key = t._pluralName + \":\" + t.id;\r\n      if (me.context.hasOwnProperty(key)) {\r\n        delete me.context[key];\r\n      }\r\n      return null;\r\n    }));\r\n  }\r\n\r\n  deleteAll<T extends Entity>(instances: T[]): Observable<null> {\r\n    if (instances != null && instances.length == 1) {\r\n      return this.delete(instances[0]);\r\n    }\r\n\r\n    if (instances != null && instances.length > 0) {\r\n      let trans = new XrmTransaction();\r\n      instances.forEach(r => {\r\n        trans.delete(r);\r\n      });\r\n      return this.commit(trans);\r\n    }\r\n    throw 'you must parse at least one instance in the instances array';\r\n  }\r\n\r\n  markChangesCommitted(prototype: Entity, instance: Entity): void {\r\n    this.updateCM(prototype, instance);\r\n  }\r\n\r\n  /* marked private becase the api is not well tested yet, to avoi */\r\n  func(name: string, data: any): Observable<any>;\r\n  func(name: string, data: any, entity: Entity): Observable<any>;\r\n  func(name: string, data: any, entity: Entity = null): Observable<any> {\r\n    var parameters = data;\r\n    if (parameters != null) {\r\n      parameters = this.toFuncParameterString(data);\r\n    }\r\n\r\n    if (entity == null) {\r\n      return this.xrmService.func(name, parameters);\r\n    } else {\r\n      return this.xrmService.func(name, parameters, entity._pluralName, entity.id);\r\n    }\r\n  }\r\n\r\n\r\n  action(name: string, data: any): Observable<any>;\r\n  action(name: string, data: any, entity: Entity): Observable<any>;\r\n  action(name: string, data: any, entity: Entity = null): Observable<any> {\r\n    if (entity != null) {\r\n      return this.xrmService.action(name, data, entity._pluralName, entity.id);\r\n    } else {\r\n      return this.xrmService.action(name, data);\r\n    }\r\n  }\r\n\r\n  commit(transaction: XrmTransaction): Observable<null> {\r\n    let oprs = transaction[\"oprs\"] as XrmTransactionItem[];\r\n\r\n    if (oprs != null && oprs.length > 0) {\r\n      this.tick++;\r\n      let batch = 'batch_KO' + new Date().valueOf() + \"$\" + this.tick.toString();\r\n      let change = 'changeset_KO' + new Date().valueOf() + \"!\" + this.tick.toString();\r\n      let headers = new HttpHeaders({ 'Accept': 'application/json' });\r\n      if (this.xrmService.token != null) {\r\n        headers = headers.append(\"Authorization\", \"Bearer \" + this.xrmService.token);\r\n      }\r\n      headers = headers.append(\"Content-Type\", \"multipart/mixed;boundary=\" + batch);\r\n      headers = headers.append(\"OData-MaxVersion\", \"4.0\");\r\n      headers = headers.append(\"OData-Version\", \"4.0\");\r\n\r\n      let body = '--' + batch + \"\\n\";\r\n      body += \"Content-Type: multipart/mixed;boundary=\" + change + \"\\n\";\r\n      body += \"\\n\";\r\n\r\n      let count = 1;\r\n      oprs.forEach(r => {\r\n        r.id = count;\r\n        if (r.type == \"put\") {\r\n          let nextV = this.preparePutValue(r.prototype, r.field, r.value);\r\n          body += '--' + change + \"\\n\";\r\n          body += \"Content-Type: application/http\\n\";\r\n          body += \"Content-Transfer-Encoding:binary\\n\";\r\n          body += \"Content-ID: \" + count.toString() + \"\\n\";\r\n          body += \"\\n\";\r\n          if (nextV.value != null) {\r\n            body += \"PUT \" + this.getContext().$devClientUrl() + r.prototype._pluralName + \"(\" + r.instance.id + \")/\" + nextV.field + \" HTTP/1.1\\n\";\r\n          } else {\r\n            body += \"DELETE \" + this.getContext().$devClientUrl() + r.instance._pluralName + \"(\" + r.instance.id + \")/\" + nextV.field + \" HTTP/1.1\\n\";\r\n          }\r\n\r\n          let xr = {};\r\n          if (nextV.value != null) {\r\n            xr[nextV.propertyAs] = nextV.value;\r\n          }\r\n          body += \"Content-Type: application/json;type=entry\\n\";\r\n          body += \"\\n\";\r\n          body += JSON.stringify(xr) + \"\\n\";\r\n        }\r\n\r\n        if (r.type == \"delete\") {\r\n          body += '--' + change + \"\\n\";\r\n          body += \"Content-Type: application/http\\n\";\r\n          body += \"Content-Transfer-Encoding:binary\\n\";\r\n          body += \"Content-ID: \" + count.toString() + \"\\n\";\r\n          body += \"\\n\";\r\n          body += \"DELETE \" + this.getContext().$devClientUrl() + r.instance._pluralName + \"(\" + r.instance.id + \")\" + \" HTTP/1.1\\n\";\r\n          body += \"Content-Type: application/json;type=entry\\n\";\r\n          body += \"\\n\";\r\n          body += \"{ }\\n\";\r\n        }\r\n\r\n        if (r.type == \"create\") {\r\n          let nextI = this.prepareNewInstance(r.prototype, r.instance);\r\n          body += '--' + change + \"\\n\";\r\n          body += \"Content-Type: application/http\\n\";\r\n          body += \"Content-Transfer-Encoding:binary\\n\";\r\n          body += \"Content-ID: \" + count.toString() + \"\\n\";\r\n          body += \"\\n\";\r\n          body += \"POST \" + this.getContext().$devClientUrl() + r.prototype._pluralName + \" HTTP/1.1\\n\";\r\n          body += \"Content-Type: application/json;type=entry\\n\";\r\n          body += \"\\n\";\r\n          body += JSON.stringify(nextI) + \"\\n\";\r\n        }\r\n\r\n        if (r.type == \"update\") {\r\n          let nextU = this.prepareUpdate(r.prototype, r.instance, false);\r\n          if (nextU != null) {\r\n            let fields = \"?$select=\" + this.columnBuilder(r.prototype).columns;\r\n\r\n            body += '--' + change + \"\\n\";\r\n            body += \"Content-Type: application/http\\n\";\r\n            body += \"Content-Transfer-Encoding:binary\\n\";\r\n            body += \"Content-ID: \" + count.toString() + \"\\n\";\r\n            body += \"\\n\";\r\n            body += \"PATCH \" + this.getContext().$devClientUrl() + r.prototype._pluralName + \"(\" + r.instance.id + \")\" + fields + \" HTTP/1.1\\n\";\r\n            body += \"Content-Type: application/json;type=entry\\n\";\r\n            body += \"\\n\";\r\n            body += JSON.stringify(nextU) + \"\\n\";\r\n          }\r\n        }\r\n        count++;\r\n      });\r\n      body += '--' + change + '--\\n';\r\n      body += \"\\n\";\r\n      body += \"--\" + batch + \"--\\n\";\r\n      this.xrmService.log(body);\r\n\r\n      let url = this.getContext().getClientUrl() + this.xrmService.apiUrl + \"$batch\";\r\n      this.xrmService.log(url);\r\n\r\n\r\n      return this.http.post(this.forceHTTPS(url), body, { headers: headers, responseType: \"text\" }).pipe(map(_txt => {\r\n        let txt = _txt as string;\r\n        this.xrmService.log(txt);\r\n\r\n        oprs.forEach(r => {\r\n          if (r.type == 'put') {\r\n            this.assignValue(r.prototype, r.instance, r.field, r.value);\r\n            this.updateCM(r.prototype, r.instance);\r\n          }\r\n\r\n          if (r.type == 'update') {\r\n            this.updateCM(r.prototype, r.instance);\r\n          }\r\n\r\n          if (r.type == 'delete') {\r\n            let key = r.instance._pluralName + ':' + r.instance.id;\r\n            delete this.context[key];\r\n            delete this.changemanager[key];\r\n          }\r\n        });\r\n\r\n        let index: number = 0;\r\n        txt.split('\\n').forEach(l => {\r\n          if (l.startsWith('Content-ID:')) {\r\n            index = Number(l.split(':')[1].trim());\r\n            return true;\r\n          }\r\n          if (l.startsWith('OData-EntityId:')) {\r\n            let opr = oprs.find(o => o.id == index);\r\n\r\n            if (opr != null && opr.type == 'create') {\r\n              let id = l.split('OData-EntityId:')[1].split('/' + opr.prototype._pluralName + '(')[1].replace(')', '').trim();\r\n              opr.instance.id = id;\r\n              let key = opr.prototype._pluralName + ':' + opr.instance.id;\r\n              this.context[key] = opr.instance;\r\n              opr.instance._updateable = true;\r\n              this.updateCM(opr.prototype, opr.instance);\r\n            }\r\n          }\r\n          return true;\r\n        });\r\n        return null;\r\n      }));\r\n    }\r\n    throw 'you must parse at least one operation to the transaction by calling put, create, update or delete';\r\n  }\r\n\r\n\r\n  log(type: string): void {\r\n    if (type == 'context') {\r\n      this.xrmService.log(this.context);\r\n      return;\r\n    }\r\n\r\n    if (type == 'xrmcontext') {\r\n      this.xrmService.log(this.getContext());\r\n      return;\r\n    }\r\n\r\n    if (type == 'url') {\r\n      this.xrmService.log(this.getContext().getClientUrl());\r\n    }\r\n\r\n    if (type == 'version') {\r\n      this.xrmService.log(this.getContext().getVersion());\r\n    }\r\n\r\n    this.xrmService.log('xrmContextService supported the current log types: context, xrmcontext, url, version');\r\n  }\r\n\r\n  clone(prototype: Entity, instance: Entity): Entity {\r\n    let r = new Entity(prototype._pluralName, prototype._keyName);\r\n    for (let prop in prototype) {\r\n      if (prototype.ignoreColumn(prop)) continue;\r\n\r\n      let pv = prototype[prop];\r\n      if (typeof pv == 'function') {\r\n        r[prop] = pv;\r\n        continue;\r\n      }\r\n\r\n      let v = instance[prop];\r\n\r\n      if (v == null) {\r\n        r[prop] = null;\r\n        continue;\r\n      }\r\n\r\n      if (v instanceof Date) {\r\n        r[prop] = new Date(v.valueOf());\r\n        continue;\r\n      }\r\n\r\n      if (v instanceof EntityReference) {\r\n        r[prop] = v.clone();\r\n        continue;\r\n      }\r\n\r\n      if (v instanceof OptionSetValue) {\r\n        r[prop] = v.clone();\r\n        continue;\r\n      }\r\n\r\n      if (v != null) {\r\n        r[prop] = v;\r\n      }\r\n    }\r\n    r.id = null;\r\n    this.xrmService.log('clone');\r\n    this.xrmService.log(r);\r\n\r\n    return r;\r\n  }\r\n\r\n  applyAccess(prototype: Entity, instance: Entity): Observable<Entity> {\r\n    if (!prototype.hasOwnProperty('access')) throw 'The metadata must define a property \"access\" of type XrmAccess';\r\n\r\n    if (instance.hasOwnProperty('access') && instance['access']['resolved']) {\r\n      return Observable.create(obs => obs.next(instance));\r\n    }\r\n\r\n    return this.mapAccess(prototype, instance);\r\n  }\r\n\r\n  private prepareUpdate(prototype: Entity, instance: Entity, deletedReferenceAsEmptyGuid: boolean): any {\r\n    let me = this;\r\n    let upd = {\r\n    }\r\n\r\n    let countFields = 0;\r\n\r\n    let key = instance._pluralName + ':' + instance.id;\r\n    let cm = this.changemanager[key];\r\n    if (typeof cm === 'undefined' || cm === null) {\r\n      throw 'the object is not under change control and cannot be updated within this context';\r\n    }\r\n\r\n    for (let prop in prototype) {\r\n      if (prototype.hasOwnProperty(prop) && typeof prototype[prop] != 'function') {\r\n        if (prototype.ignoreColumn(prop)) continue;\r\n        let prevValue = cm[prop];\r\n        let newValue = instance[prop];\r\n\r\n        if ((prevValue === 'undefined' || prevValue === null) && (newValue === 'undefined' || newValue === null)) continue;\r\n\r\n        if (instance[prop] instanceof EntityReference) {\r\n          if (instance[prop].associatednavigationproperty != null && instance[prop].associatednavigationproperty != '' && instance[prop]['pluralName'] != null && instance[prop]['pluralName'] != '') {\r\n            if (!EntityReference.same(prevValue, newValue)) {\r\n              if (deletedReferenceAsEmptyGuid && newValue != null && (newValue[\"id\"] == null || newValue[\"id\"] == '')) {\r\n                newValue[\"id\"] = XRMCONTEXTSERVICE_EMPTY_GUID;\r\n              }\r\n\r\n              if (newValue != null && newValue[\"id\"] != null && newValue[\"id\"] != '') {\r\n                let x = newValue[\"id\"] as string;\r\n                x = x.replace('{', '').replace('}', '');\r\n                upd[instance[prop]['associatednavigationpropertyname']()] = '/' + instance[prop]['pluralName'] + '(' + x + ')';\r\n              } else {\r\n                // this does not work, navigation properties can only be removed with SDK deleted method\r\n                upd[\"_\" + instance[prop]['logicalname'].toLowerCase() + \"_value\"] = null;\r\n              }\r\n              countFields++;\r\n            }\r\n            continue;\r\n          }\r\n        }\r\n\r\n        if (prototype[prop] instanceof EntityReference) {\r\n          if (!EntityReference.same(prevValue, newValue)) {\r\n            if ((newValue == null || newValue[\"id\"] == null || newValue[\"id\"] == \"\") && deletedReferenceAsEmptyGuid) {\r\n              newValue[\"id\"] = XRMCONTEXTSERVICE_EMPTY_GUID;\r\n            }\r\n\r\n            if (newValue != null && newValue[\"id\"] != null && newValue[\"id\"] != '') {\r\n              let x = newValue[\"id\"] as string;\r\n              x = x.replace('{', '').replace('}', '');\r\n              upd[prototype[prop]['associatednavigationpropertyname']()] = '/' + prototype[prop]['pluralName'] + '(' + x + ')';\r\n            } else {\r\n              upd[\"_\" + instance[prop]['logicalname'].toLowerCase() + \"_value\"] = null;\r\n            }\r\n            countFields++;\r\n          }\r\n          continue;\r\n        }\r\n\r\n        if (prototype[prop] instanceof OptionSetValue) {\r\n          if (!OptionSetValue.same(prevValue, newValue)) {\r\n            let o = newValue as OptionSetValue;\r\n            if (o == null || o.value == null) {\r\n              upd[prop.toString()] = null;\r\n            } else {\r\n              upd[prop.toString()] = o.value;\r\n            }\r\n            countFields++;\r\n          }\r\n          continue;\r\n        }\r\n\r\n        if (prototype[prop] instanceof Date) {\r\n          if (prevValue instanceof Date && newValue instanceof Date) {\r\n            var d1 = (prevValue as Date).toISOString();\r\n            var d2 = (newValue as Date).toISOString();\r\n\r\n            if (d1 == d2) {\r\n              continue;\r\n            }\r\n          }\r\n\r\n          if (prevValue != newValue) {\r\n\r\n            this.xrmService.log('pre-value-update-date:[' + prevValue + ']/[' + newValue + ']' );\r\n            if (newValue == null) {\r\n              upd[prop.toString()] = null;\r\n            } else {\r\n              if (newValue instanceof Date) {\r\n                let d = newValue as Date;\r\n                var sValue = d.toISOString();\r\n                if (sValue.indexOf(\"T00:00:00.000Z\") > 0) {\r\n                  sValue = sValue.replace(\"T00:00:00.000Z\", \"\");\r\n                }\r\n                upd[prop.toString()] = sValue;\r\n              } else {\r\n                upd[prop.toString()] = newValue;\r\n              }\r\n            }\r\n            countFields++;\r\n          }\r\n          continue;\r\n        }\r\n\r\n        if (typeof prototype[prop] == \"number\") {\r\n          if (typeof newValue == \"string\") {\r\n            if (newValue == \"\") {\r\n              newValue = null;\r\n            } else {\r\n              newValue = Number(newValue);\r\n              if (newValue == NaN) {\r\n                newValue = prevValue;\r\n              }\r\n            }\r\n          }\r\n\r\n          if (prevValue != newValue) {\r\n            upd[prop.toString()] = newValue;\r\n            countFields++;\r\n          }\r\n          continue;\r\n        }\r\n\r\n        if (prevValue === true && newValue === true) {\r\n          continue;\r\n        }\r\n\r\n        if (prevValue === false && newValue === false) {\r\n          continue;\r\n        }\r\n\r\n        if (prevValue != newValue) {\r\n          this.xrmService.log('pre-value-update:' + prop);\r\n          this.xrmService.log(prevValue);\r\n\r\n          this.xrmService.log('new-value-update:' + prop);\r\n          this.xrmService.log(newValue);\r\n\r\n          upd[prop.toString()] = instance[prop];\r\n          countFields++;\r\n        }\r\n      }\r\n    }\r\n\r\n    if (countFields > 0) {\r\n      return upd;\r\n    }\r\n    return null;\r\n  }\r\n\r\n  /*\r\n   * return an object that has been adjusted to patterns used in a webapi POST method. This is convinient in\r\n   * combination with actions that uses parameters of type Entity, so the entity ex.\r\n   */\r\n\r\n  getCreatePayload(prototype: Entity, instance: Entity): any {\r\n    return this.prepareNewInstance(prototype, instance);\r\n  }\r\n\r\n  /* \r\n   * return an object that has been adjused to pattern used in webapi PATCH method, for entity update. Only fields\r\n   * that has actually changed will be present in the return instance\r\n   */\r\n  getUpdatePayload(prototype: Entity, instance: Entity): any\r\n  getUpdatePayload(prototype: Entity, instance: Entity, deletedReferenceAsEmptyGuid: boolean): any\r\n  getUpdatePayload(prototype: Entity, instance: Entity, deletedReferenceAsEmptyGuid: boolean = false): any {\r\n    var next = this.prepareUpdate(prototype, instance, deletedReferenceAsEmptyGuid);\r\n\r\n    if (next != null) {\r\n      next[prototype._keyName] = instance.id;\r\n      next[\"@odata.type\"] = \"Microsoft.Dynamics.CRM.\" + prototype._logicalName;\r\n    }\r\n\r\n    return next;\r\n  }\r\n\r\n  hasChanges(prototype: Entity, instance: Entity): boolean\r\n  hasChanges(prototype: Entity, instance: Entity, deletedReferenceAsEmptyGuid: boolean): boolean\r\n  hasChanges(prototype: Entity, instance: Entity, deletedReferenceAsEmptyGuid: boolean = false): boolean {\r\n    return this.prepareUpdate(prototype, instance, deletedReferenceAsEmptyGuid) != null;\r\n  }\r\n\r\n  getEntityCollectionPayload(prototype: Entity, instances: Entity[]): any[] {\r\n    let result = [];\r\n\r\n    instances.forEach(e => {\r\n      let next = this.prepareNewInstance(prototype, e);\r\n\r\n      if (e.id != null && e.id != '') {\r\n        next[prototype._keyName] = e.id;\r\n      }\r\n\r\n      next[\"@odata.type\"] = \"Microsoft.Dynamics.CRM.\" + prototype._logicalName;\r\n      result.push(next);\r\n    });\r\n\r\n    return result;\r\n  }\r\n\r\n  private resolveAccess(prototype: Entity, instance: Entity) {\r\n    var user = this.getContext().getUserId();\r\n    if (user == null || user == '') {\r\n      setTimeout(() => {\r\n        this.resolveAccess(prototype, instance);\r\n      }, 200);\r\n      return;\r\n    }\r\n\r\n    this.mapAccess(prototype, instance).subscribe(r => { });\r\n  }\r\n\r\n  private mapAccess(prototype: Entity, instance: Entity): Observable<Entity> {\r\n    if (!prototype.hasOwnProperty('access') || !(prototype['access'] instanceof XrmAccess)) {\r\n      return null;\r\n    }\r\n\r\n    if (!instance.hasOwnProperty('access')) {\r\n      instance['access'] = new XrmAccess();\r\n    } else {\r\n      let r = instance['access'] as XrmAccess;\r\n      if (r.resolved != null) {\r\n        return null;\r\n      }\r\n    }\r\n\r\n    var user = this.getContext().getUserId().replace('{', '').replace('}','');\r\n\r\n    let r = instance['access'] as XrmAccess;\r\n    r.resolved = false;\r\n\r\n    let headers = new HttpHeaders({ 'Accept': 'application/json' });\r\n    if (this.xrmService.token != null) {\r\n      headers = headers.append(\"Authorization\", \"Bearer \" + this.xrmService.token);\r\n    }\r\n    headers = headers.append(\"OData-MaxVersion\", \"4.0\");\r\n    headers = headers.append(\"OData-Version\", \"4.0\");\r\n    headers = headers.append(\"Content-Type\", \"application/json; charset=utf-8\");\r\n    headers = headers.append(\"Prefer\", \"odata.include-annotations=\\\"*\\\"\");\r\n    headers = headers.append(\"Cache-Control\", \"no-cache\");\r\n\r\n    let url = this.getContext().getClientUrl() + this.xrmService.apiUrl + \"systemusers(\" + user + \")/Microsoft.Dynamics.CRM.RetrievePrincipalAccess(Target=@tid)?@tid={\\\"@odata.id\\\":\\\"\" + prototype._pluralName + \"(\" + instance.id + \")\\\"}\";\r\n    this.xrmService.log(url);\r\n\r\n    let _ta = instance['access'] as XrmAccess;\r\n    _ta.resolved = null;\r\n\r\n    return this.http.get(this.forceHTTPS(url), { headers: headers }).pipe(\r\n      map(r => {\r\n        this.xrmService.log(r);\r\n        let i = instance['access'] as XrmAccess;\r\n        let perm = r[\"AccessRights\"] as string;\r\n        // ReadAccess, WriteAccess, AppendAccess, AppendToAccess, CreateAccess, DeleteAccess, ShareAccess, AssignAccess\r\n        i.append = perm.indexOf('AppendAccess') >= 0;\r\n        i.appendTo = perm.indexOf('AppendToAccess') >= 0\r\n        i.assign = perm.indexOf('AssignAccess') >= 0;\r\n        i.create = perm.indexOf('CreateAccess') >= 0;\r\n        i.delete = perm.indexOf('DeleteAccess') >= 0;\r\n        i.read = perm.indexOf('ReadAccess') >= 0;\r\n        i.share = perm.indexOf('ShareAccess') >= 0;\r\n        i.write = perm.indexOf('WriteAccess') >= 0;\r\n        i.resolved = true;\r\n        return instance;\r\n      })\r\n    );\r\n  }\r\n\r\n  private preparePutValue(prototype: Entity, field: string, value: any): any {\r\n    let t = prototype[field];\r\n\r\n    if (t instanceof OptionSetValue) {\r\n      if (value == null || value['value'] == null) {\r\n        return { field: field, value: null, propertyAs: 'value' };\r\n      } else {\r\n        return { field: field, value: value['value'], propertyAs: 'value' };\r\n      }\r\n    }\r\n\r\n    if (typeof t == 'number' && typeof value == 'string') {\r\n      if (value == '') {\r\n        value = null;\r\n      } else {\r\n        value = Number(value);\r\n        if (value == NaN) {\r\n          value = null;\r\n        }\r\n      }\r\n    }\r\n\r\n    if (typeof t == 'number' && typeof value == 'number') {\r\n      if (value == null) {\r\n        return { field: field, value: null, propertyAs: null };\r\n      } else {\r\n        // this is a really really stupid hack, because dynamics do not accept Integer for decimal fields, so we force \r\n        // a decimal position into the value before it is send.\r\n        let rv = value + t;\r\n        return { field: field, value: rv, propertyAs: 'value' };\r\n      }\r\n    }\r\n\r\n    if (t instanceof EntityReference) {\r\n      field = t.associatednavigationpropertyname().split('@')[0] + \"/$ref\";\r\n\r\n      if (value.id == null || value.id == '') {\r\n        return { field: field, value: null, propertyAs: '@odata.id', isDefault: false };\r\n      } else {\r\n        return { field: field, value: this.getContext().$devClientUrl() + t.pluralName + \"(\" + value.id + \")\", propertyAs: '@odata.id', isdecimal: false };\r\n      }\r\n    }\r\n\r\n    if (value instanceof Date) {\r\n      return { field: field, value: value.toISOString(), propertyAs: 'value' };\r\n    }\r\n\r\n    return { field: field, value: value, propertyAs: 'value' };\r\n  }\r\n\r\n  private prepareNewInstance(prototype: Entity, instance: Entity): any {\r\n    let newr = {};\r\n\r\n    for (let prop in prototype) {\r\n      if (prototype.hasOwnProperty(prop) && typeof prototype[prop] !== 'function') {\r\n        if (prototype.ignoreColumn(prop)) continue;\r\n\r\n        let value = instance[prop];\r\n        if (value !== 'undefined' && value !== null) {\r\n\r\n          if (instance[prop] instanceof EntityReference) {\r\n            if (instance[prop].associatednavigationproperty != null && instance[prop].associatednavigationproperty != '' && instance[prop]['pluralName'] != null && instance[prop]['pluralName'] != '') {\r\n              let ref = instance[prop] as EntityReference;\r\n              if (ref != null && ref.id != null) {\r\n                newr[instance[prop]['associatednavigationpropertyname']()] = '/' + instance[prop]['pluralName'] + '(' + ref.id.replace('{', '').replace('}', '') + ')';\r\n              }\r\n              continue;\r\n            }\r\n          }\r\n\r\n          if (prototype[prop] instanceof EntityReference) {\r\n            let ref = instance[prop] as EntityReference;\r\n            if (ref != null && ref.id != null) {\r\n              newr[prototype[prop]['associatednavigationpropertyname']()] = '/' + prototype[prop]['pluralName'] + '(' + ref.id.replace('{', '').replace('}', '') + ')';\r\n            }\r\n            continue;\r\n          }\r\n\r\n          if (prototype[prop] instanceof OptionSetValue) {\r\n            let o = instance[prop] as OptionSetValue;\r\n            if (o != null && o.value != null) {\r\n              newr[prop.toString()] = o.value;\r\n            }\r\n            continue;\r\n          }\r\n\r\n          if (prototype[prop] instanceof Date) {\r\n            let d = value as Date;\r\n            if (d != null) {\r\n              newr[prop.toString()] = d.toISOString();\r\n            }\r\n            continue;\r\n          }\r\n\r\n          if (typeof prototype[prop] == \"number\") {\r\n            if (typeof value == \"string\") {\r\n              if (value == \"\") {\r\n                continue;\r\n              }\r\n              value = Number(value);\r\n              if (value == NaN) {\r\n                continue; \r\n              }\r\n            }\r\n\r\n            newr[prop.toString()] = value;\r\n            continue;\r\n          }\r\n\r\n          newr[prop.toString()] = instance[prop];\r\n        }\r\n      }\r\n    }\r\n    return newr;\r\n  }\r\n\r\n  private assignValue(prototype: Entity, instance: Entity, prop: string, value: any) {\r\n    if (value != null) {\r\n      instance[prop] = value;\r\n      return;\r\n    }\r\n\r\n    let t = prototype[prop];\r\n    if (t instanceof EntityReference) {\r\n      instance[prop] = t.clone();\r\n      return;\r\n    }\r\n\r\n    if (t instanceof OptionSetValue) {\r\n      instance[prop] = new OptionSetValue();\r\n      return;\r\n    }\r\n\r\n    instance[prop] = null;\r\n  }\r\n\r\n  private $expandToExpand(prop: ExpandProperty): Expand {\r\n    if (prop != null) {\r\n      let result = new Expand();\r\n      result.name = prop.name;\r\n      result.select = this.columnBuilder(prop.entity).columns;\r\n      return result;\r\n    }\r\n    return null;\r\n  }\r\n\r\n  private resolveFetchResult<T extends Entity>(prototype: T, response: any, top: number, pages: string[], pageIndex: number, fetchXml: Fetchxml): XrmQueryResult<T> {\r\n    let me = this;\r\n    var result = this.resolveQueryResult(prototype, response, top, pages, pageIndex, fetchXml.entity().aliasWithAttributes());\r\n\r\n    var pageCookie = response[\"@Microsoft.Dynamics.CRM.fetchxmlpagingcookie\"] as string;\r\n    if (pageCookie != null && pageCookie != '') {\r\n\r\n      this.xrmService.log('page-cookie');\r\n      this.xrmService.log(pageCookie);\r\n\r\n      var fragment = decodeURIComponent(decodeURIComponent(pageCookie.match(this.pageCookieMatch)[0].substring(14)));\r\n      fragment = fragment.replace(/&/g,\"&amp;\").replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\").replace(/\\\"/g, \"&quot;\");\r\n\r\n      this.xrmService.log(\"page-cookie-fragment\");\r\n      this.xrmService.log(fragment);\r\n\r\n      let fetchxml = fetchXml.toFetchXml(fragment, pageIndex + 2);\r\n      result.nextLink = this.getContext().getClientUrl() + this.xrmService.apiUrl + prototype._pluralName + \"?fetchXml=\" + encodeURIComponent(fetchxml);\r\n\r\n      result.next = (): Observable<XrmQueryResult<T>> => {\r\n        let headers = new HttpHeaders({ 'Accept': 'application/json' });\r\n        if (this.xrmService.token != null) {\r\n          headers = headers.append(\"Authorization\", \"Bearer \" + this.xrmService.token);\r\n        }\r\n        headers = headers.append(\"OData-MaxVersion\", \"4.0\");\r\n        headers = headers.append(\"OData-Version\", \"4.0\");\r\n        headers = headers.append(\"Content-Type\", \"application/json; charset=utf-8\");\r\n        headers = headers.append(\"Prefer\", \"odata.include-annotations=\\\"*\\\"\");\r\n        headers = headers.append(\"Cache-Control\", \"no-cache\");\r\n\r\n        let options = {\r\n          headers: headers\r\n        }\r\n\r\n        return this.http.get(this.forceHTTPS(result.nextLink), options).pipe(map(response => {\r\n          pages.push(result.nextLink);\r\n          let re = me.resolveFetchResult<T>(prototype, response, top, pages, (pageIndex + 1), fetchXml);\r\n          return re;\r\n        }));\r\n      }\r\n\r\n      if (pageIndex >= 1) {\r\n        result.prev = (): Observable<XrmQueryResult<T>> => {\r\n          let headers = new HttpHeaders({ 'Accept': 'application/json' });\r\n          if (this.xrmService.token != null) {\r\n            headers = headers.append(\"Authorization\", \"Bearer \" + this.xrmService.token);\r\n          }\r\n          headers = headers.append(\"OData-MaxVersion\", \"4.0\");\r\n          headers = headers.append(\"OData-Version\", \"4.0\");\r\n          headers = headers.append(\"Content-Type\", \"application/json; charset=utf-8\");\r\n          headers = headers.append(\"Prefer\", \"odata.include-annotations=\\\"*\\\"\");\r\n          headers = headers.append(\"Cache-Control\", \"no-cache\");\r\n\r\n          let options = {\r\n            headers: headers\r\n          }\r\n\r\n          let lastPage = result.pages[result.pageIndex - 1];\r\n          return me.http.get(me.forceHTTPS(lastPage), options).pipe(map(r => {\r\n            result.pages.splice(result.pages.length - 1, 1);\r\n            let pr = me.resolveFetchResult<T>(prototype, r, top, result.pages, result.pageIndex - 1, fetchXml);\r\n            return pr;\r\n          }));\r\n        }\r\n      }\r\n    }\r\n    return result;\r\n  }\r\n\r\n  private resolveQueryResult<T extends Entity>(prototype: T, response: any, top: number, pages: string[], pageIndex: number, alias: string[]): XrmQueryResult<T> {\r\n    let me = this;\r\n    let result = {\r\n      context: response[\"@odata.context\"],\r\n      count: response[\"@odata.count\"],\r\n      value: [],\r\n      pages: pages,\r\n      pageIndex: pageIndex,\r\n      top: top,\r\n      nextLink: null,\r\n      prev: null,\r\n      next: null\r\n    }\r\n\r\n    let vals = response[\"value\"] as T[];\r\n    vals.forEach(r => {\r\n      result.value.push(me.resolve(prototype, r, prototype._updateable, alias));\r\n    });\r\n\r\n    let nextLink = response[\"@odata.nextLink\"] as string;\r\n\r\n    if (nextLink != null && nextLink != '') {\r\n      let start = nextLink.indexOf('/api');\r\n      nextLink = me.getContext().getClientUrl() + nextLink.substring(start);\r\n      result = {\r\n        context: result.context,\r\n        count: result.count,\r\n        value: result.value,\r\n        pages: pages,\r\n        pageIndex: pageIndex,\r\n        top: top,\r\n        nextLink: nextLink,\r\n        prev: null,\r\n        next: (): Observable<XrmQueryResult<T>> => {\r\n          let headers = new HttpHeaders({ 'Accept': 'application/json' });\r\n          if (this.xrmService.token != null) {\r\n            headers = headers.append(\"Authorization\", \"Bearer \" + this.xrmService.token);\r\n          }\r\n          headers = headers.append(\"OData-MaxVersion\", \"4.0\");\r\n          headers = headers.append(\"OData-Version\", \"4.0\");\r\n          headers = headers.append(\"Content-Type\", \"application/json; charset=utf-8\");\r\n          if (top > 0) {\r\n            headers = headers.append(\"Prefer\", \"odata.include-annotations=\\\"*\\\",odata.maxpagesize=\" + top.toString());\r\n          } else {\r\n            headers = headers.append(\"Prefer\", \"odata.include-annotations=\\\"*\\\"\");\r\n          }\r\n          headers = headers.append(\"Cache-Control\", \"no-cache\");\r\n\r\n          let options = {\r\n            headers: headers\r\n          }\r\n          return me.http.get(me.forceHTTPS(nextLink), options).pipe(map(r => {\r\n            pages.push(nextLink);\r\n            let pr = me.resolveQueryResult<T>(prototype, r, top, pages, pageIndex + 1, alias);\r\n            return pr;\r\n          }));\r\n        }\r\n      }\r\n    }\r\n\r\n    if (result.pageIndex >= 1) {\r\n      result.prev = (): Observable<XrmQueryResult<T>> => {\r\n        let headers = new HttpHeaders({ 'Accept': 'application/json' });\r\n        if (this.xrmService.token != null) {\r\n          headers = headers.append(\"Authorization\", \"Bearer \" + this.xrmService.token);\r\n        }\r\n        headers = headers.append(\"OData-MaxVersion\", \"4.0\");\r\n        headers = headers.append(\"OData-Version\", \"4.0\");\r\n        headers = headers.append(\"Content-Type\", \"application/json; charset=utf-8\");\r\n        headers = headers.append(\"Prefer\", \"odata.include-annotations=\\\"*\\\"\");\r\n        if (top > 0) {\r\n          headers = headers.append(\"Prefer\", \"odata.maxpagesize=\" + top.toString());\r\n        } else {\r\n        }\r\n        headers = headers.append(\"Cache-Control\", \"no-cache\");\r\n\r\n        let options = {\r\n          headers: headers\r\n        }\r\n\r\n        let lastPage = result.pages[result.pageIndex - 1];\r\n        return me.http.get(me.forceHTTPS(lastPage), options).pipe(map(r => {\r\n          result.pages.splice(result.pages.length - 1, 1);\r\n          let pr = me.resolveQueryResult<T>(prototype, r, top, result.pages, result.pageIndex - 1, alias);\r\n          return pr;\r\n        }));\r\n      }\r\n    }\r\n    return result;\r\n  }\r\n\r\n  private resolveNewInstance<T extends Entity>(prototype: T, instance: any, result: any): void {\r\n    let key = prototype._pluralName + ':' + instance[prototype._keyName];\r\n    instance[\"id\"] = result[prototype._keyName];\r\n    instance[\"_pluralName\"] = prototype._pluralName;\r\n    instance[\"_logicalName\"] = prototype._logicalName;\r\n    instance[\"_keyName\"] = prototype._keyName;\r\n    this.context[key] = instance;\r\n  }\r\n\r\n  private resolve<T extends Entity>(prototype: T, instance: any, updateable: boolean, alias: string[]): T {\r\n    let me = this;\r\n\r\n    this.xrmService.log(instance);\r\n\r\n    let key = prototype._pluralName + ':' + instance[prototype._keyName];\r\n    let result = {} as any;\r\n\r\n    if (this.context.hasOwnProperty(key)) {\r\n      result = this.context[key];\r\n    } else {\r\n      this.context[key] = result;\r\n      result[\"id\"] = instance[prototype._keyName];\r\n      result[\"_pluralName\"] = prototype._pluralName;\r\n      result[\"_logicalName\"] = prototype._logicalName;\r\n      result[\"_keyName\"] = prototype._keyName;\r\n      delete result[prototype._keyName];\r\n    }\r\n\r\n    if (this.includeOriginalPayload$) {\r\n      result[\"_original$\"] = instance;\r\n    } else {\r\n      if (result.hasOwnProperty(\"_original$\")) {\r\n        delete result[\"_original$\"];\r\n      }\r\n    }\r\n\r\n    result['_updateable'] = updateable;\r\n\r\n    for (let prop in prototype) {\r\n      if (prototype.ignoreColumn(prop)) continue;\r\n\r\n      if (prototype.hasOwnProperty(prop) && typeof prototype[prop] != 'function') {\r\n        let done = false;\r\n        if (prototype[prop] instanceof EntityReference) {\r\n          let ref = new EntityReference();\r\n          let id = instance[\"_\" + prop + \"_value\"] as string;\r\n          if (id != null && id != 'undefined') {\r\n            ref.id = id.toLowerCase();\r\n            delete result[\"_\" + prop + \"_value\"];\r\n\r\n            ref.logicalname = instance[\"_\" + prop + \"_value@Microsoft.Dynamics.CRM.lookuplogicalname\"];\r\n            delete instance[\"_\" + prop + \"_value@Microsoft.Dynamics.CRM.lookuplogicalname\"];\r\n\r\n            ref.name = instance[\"_\" + prop + \"_value@OData.Community.Display.V1.FormattedValue\"];\r\n            delete instance[\"_\" + prop + \"_value@OData.Community.Display.V1.FormattedValue\"];\r\n\r\n            ref.associatednavigationproperty = instance[\"_\" + prop + \"_value@Microsoft.Dynamics.CRM.associatednavigationproperty\"];\r\n            delete instance[\"_\" + prop + \"_value@Microsoft.Dynamics.CRM.associatednavigationproperty\"];\r\n          }\r\n          result[prop] = ref;\r\n          done = true;\r\n        }\r\n\r\n        if (!done && prototype[prop] instanceof OptionSetValue) {\r\n          let opt = new OptionSetValue();\r\n          opt.value = instance[prop];\r\n          opt.name = instance[prop + '@OData.Community.Display.V1.FormattedValue'];\r\n          result[prop] = opt;\r\n          done = true;\r\n        }\r\n\r\n        if (!done && prototype[prop] instanceof Date) {\r\n          let v = instance[prop];\r\n          if (v != null && v != '') {\r\n            result[prop] = new Date(Date.parse(v));\r\n          } else {\r\n            result[prop] = null;\r\n          }\r\n\r\n          done = true;\r\n        }\r\n\r\n        if (!done) {\r\n          result[prop] = instance[prop];\r\n          done = true;\r\n        }\r\n      }\r\n    }\r\n\r\n    var names = Object.getOwnPropertyNames(Object.getPrototypeOf(prototype));\r\n    names.forEach(r => {\r\n      if (r != 'constructor' && typeof prototype[r] === 'function') {\r\n        result[r] = prototype[r];\r\n      }\r\n    });\r\n\r\n    let eps = this.getExpandProperties(prototype);\r\n\r\n    if (eps != null && eps.length > 0) {\r\n\r\n      eps.forEach(ep => {\r\n        if (ep != null) {\r\n          if (ep.isArray) {\r\n            let _v = instance[ep.name];\r\n            if (_v != null && Array.isArray(_v)) {\r\n              let _tmp = [];\r\n              _v.forEach(_r => {\r\n                _tmp.push(me.resolve(ep.entity, _r, false, alias));\r\n              });\r\n              result[ep.name] = _tmp;\r\n              if (ep.value instanceof Entities) {\r\n                _tmp[\"add\"] = ep.value[\"add\"];\r\n                _tmp[\"remove\"] = ep.value[\"remove\"];\r\n                _tmp[\"xrmService\"] = this.xrmService;\r\n                _tmp[\"parentType\"] = prototype._pluralName;\r\n                _tmp[\"parentId\"] = result[\"id\"];\r\n                _tmp[\"childType\"] = ep.value[\"childType\"];\r\n                _tmp[\"refName\"] = ep.value[\"refName\"];\r\n                _tmp[\"leftToRight\"] = ep.value[\"leftToRight\"];\r\n              }\r\n            }\r\n          } else {\r\n            let _v = instance[ep.name];\r\n            if (_v != null) {\r\n              result[ep.name] = this.resolve(ep.entity, _v, false, alias);\r\n              result[ep.name]['_keyName'] = ep.entity._keyName;\r\n              result[ep.name]['_pluralName'] = ep.entity._pluralName;\r\n              result[ep.name]['_logicalName'] = ep.entity._logicalName;\r\n            }\r\n          }\r\n        }\r\n      });\r\n    }\r\n\r\n    if (alias != null && alias.length > 0) {\r\n      alias.forEach(a => {\r\n        for (var p in result) {\r\n          if (p.startsWith(a + \".\")) {\r\n            delete result[p];\r\n          }\r\n        }\r\n        for (var p in instance) {\r\n          if (p.startsWith(a + '.')) {\r\n            result[p] = instance[p];\r\n          }\r\n        }\r\n      })\r\n    }\r\n\r\n    if (result['onFetch'] !== 'undefined' && result[\"onFetch\"] != null && typeof result[\"onFetch\"] === 'function') {\r\n      result['onFetch']();\r\n    }\r\n\r\n    if (prototype.hasOwnProperty('access') && !prototype['access']['lazy']) {\r\n      if (!result.hasOwnProperty('access') || result.access.resolved == null) {\r\n        this.resolveAccess(prototype, result);\r\n      }\r\n    }\r\n\r\n    if (updateable) {\r\n      this.updateCM(prototype, result);\r\n    }\r\n\r\n    return result as T;\r\n  }\r\n\r\n\r\n  private updateCM(prototype: any, instance: any): void {\r\n    let key = prototype._pluralName + ':' + instance['id'];\r\n    let change = {};\r\n\r\n    this.xrmService.log('Adding to cm ' + key);\r\n\r\n    this.changemanager[key] = change;\r\n\r\n    for (let prop in prototype) {\r\n      if (prototype.ignoreColumn(prop)) continue;\r\n      if (prototype.hasOwnProperty(prop) && typeof prototype[prop] != 'function') {\r\n        let v = instance[prop];\r\n        if (v == null) continue;\r\n\r\n        let done = false;\r\n\r\n        if (v instanceof EntityReference) {\r\n          change[prop] = v.clone();\r\n          done = true;\r\n        }\r\n\r\n        if (!done && v instanceof OptionSetValue) {\r\n          change[prop] = v.clone();\r\n          done = true;\r\n        }\r\n\r\n        if (!done && v instanceof Date) {\r\n\r\n          change[prop] = new Date(v.valueOf());\r\n          done = true;\r\n        }\r\n\r\n        if (!done) {\r\n          change[prop] = v;\r\n          done = true;\r\n        }\r\n      }\r\n    }\r\n    this.xrmService.log(change);\r\n  }\r\n\r\n  private columnBuilder(entity: Entity): ColumnBuilder {\r\n    let result = new ColumnBuilder();\r\n    var columns = entity.columns(true);\r\n    result.columns = columns.join(\",\")\r\n    result.hasEntityReference = columns.filter(r => r.startsWith(\"_\") && r.endsWith(\"_value\")).length > 0;\r\n    return result;\r\n  }\r\n\r\n  private getExpandProperties(entity: Entity): ExpandProperty[] {\r\n    var result = [];\r\n    for (var prop in entity) {\r\n      if (prop == entity._keyName) continue;\r\n      if (entity.ignoreColumn(prop)) continue;\r\n\r\n      let _v = entity[prop];\r\n      if (Array.isArray(_v)) {\r\n        if (_v.length > 0) {\r\n          let pt = _v[0] as Entity;\r\n          result.push({\r\n            name: prop,\r\n            entity: pt,\r\n            isArray: true,\r\n            value: _v\r\n          });\r\n        }\r\n      } else {\r\n        if (_v instanceof Entity) {\r\n          result.push({\r\n            name: prop,\r\n            entity: _v,\r\n            isArray: false,\r\n            value: _v\r\n          });\r\n        }\r\n      }\r\n    }\r\n    return result;\r\n  }\r\n\r\n  private toFuncParameterString(pam: any): string {\r\n    if (typeof pam === \"string\") return pam;\r\n\r\n    let r = '(';\r\n    var ix = 1;\r\n    var cm = '';\r\n    for (var p in pam) {\r\n      if (pam.hasOwnProperty(p)) {\r\n        r += cm + p + \"=@p\" + ix;\r\n        ix++;\r\n        cm = ',';\r\n      }\r\n    }\r\n    r += ')';\r\n\r\n    ix = 1;\r\n    cm = '?';\r\n    for (var p in pam) {\r\n      if (pam.hasOwnProperty(p)) {\r\n        r += cm + '@p' + ix + \"=\";\r\n\r\n        ix++;\r\n        cm = \"&\";\r\n\r\n\r\n        var v = pam[p];\r\n\r\n        if (v == null) {\r\n          v = '';\r\n          r += v;\r\n          continue;\r\n        }\r\n\r\n\r\n        var valueWrapper = v[\"functionPropertyValueAsString\"];\r\n        if (valueWrapper != null) {\r\n          r += valueWrapper.call(v);\r\n          continue;\r\n        }\r\n\r\n        if (v.hasOwnProperty(\"toJsonProperty\")) {\r\n          v = v[\"toJsonProperty\"]();\r\n        }\r\n\r\n        if (v instanceof Date) {\r\n          r += v.toISOString();\r\n          continue;\r\n        }\r\n\r\n        if (typeof v === \"number\") {\r\n          r += v.toString();\r\n          continue;\r\n        }\r\n\r\n        if (typeof v === \"boolean\") {\r\n          r += v ? \"true\" : \"false\";\r\n          continue;\r\n        }\r\n\r\n        if (typeof v === \"string\") {\r\n          r += \"'\" + v + \"'\";\r\n          continue;\r\n        }\r\n\r\n        r += JSON.stringify(this.transform(v));\r\n      }\r\n    }\r\n    return r;\r\n  }\r\n\r\n  private transform(input: any): any {\r\n    var transformed = false;\r\n    var result = {};\r\n\r\n    for (var pam in input) {\r\n      if (input.hasOwnProperty(pam)) {\r\n        var value = input[pam];\r\n        if (value != null && value.hasOwnProperty(\"toJsonProperty\")) {\r\n          result[pam] = value[\"toJsonProperty\"]();\r\n          transformed = true;\r\n        } else {\r\n          result[pam] = value;\r\n        }\r\n      }\r\n    }\r\n\r\n    if (!transformed) {\r\n      return input;\r\n    }\r\n\r\n    return result;\r\n  }\r\n\r\n  private forceHTTPS(v: string): string {\r\n    return this.xrmService.forceHTTPS(v);\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators'\r\n\r\nimport { XrmService, XrmQueryResult } from './xrm.service';\r\nimport { XrmContextService, Entity, OptionSetValue, Condition, Comparator } from './xrmcontext.service';\r\n\r\nexport class LabelMeta {\r\n  Label: string;\r\n  LanguageCode: number;\r\n  IsManaged: boolean;\r\n  MetadataId: string;\r\n  HasChanged: boolean;\r\n}\r\n\r\nexport class DisplayNameMeta {\r\n  LocalizedLabels: LabelMeta[];\r\n  UserLocalizedLabel: LabelMeta;\r\n}\r\n\r\nexport class EntityMeta extends Entity {\r\n  constructor() {\r\n    super(\"EntityDefinitions\", \"MetadataId\");\r\n  }\r\n\r\n  DisplayName: LabelMeta = null;\r\n  LogicalName: string = null;\r\n  ObjectTypeCode: number = null;\r\n  SchemaName: string = null;\r\n  LogicalCollectionName: string = null;\r\n  IsActivity: boolean = null;\r\n  IsActivityParty: boolean = null;\r\n  Attributes: AttributeMeta[] = null;\r\n\r\n  OneToManyRelations: OneToManyRelationship[];\r\n  ManyToManyRelations: ManyToManyRelationship[];\r\n\r\n  meta(): EntityMeta {\r\n    this.Attributes = [new AttributeMeta()];\r\n    return this;\r\n  }\r\n}\r\n\r\nexport class AttributeMeta extends Entity {\r\n  constructor() {\r\n    super(\"Attributes\", \"MetadataId\")\r\n  }\r\n  AttributeType: string = null;\r\n  DisplayName: LabelMeta = null;\r\n  LogicalName: string = null;\r\n  Description: LabelMeta = null;\r\n  SchemaName: string = null;\r\n\r\n  // virtual properties for ui purpose\r\n  selected: boolean;\r\n  Lookup: LookupAttribute;\r\n\r\n  onFetch() {\r\n    this.selected = false;\r\n  }\r\n}\r\n\r\nexport class OneToManyRelationship {\r\n  MetadataId: string = null;\r\n  RelationshipType: number = null;\r\n  SchemaName: string = null;\r\n  ReferencedAttribute: string = null;\r\n  ReferencingAttribute: string = null;\r\n  ReferencedEntity: string = null;\r\n  ReferencingEntity: string = null;\r\n  ReferencingEntityNavigationPropertyName: string;\r\n}\r\n\r\nexport class ManyToManyRelationship {\r\n  MetadataId: string = null;\r\n  Entity1LogicalName: string = null;\r\n  Entity1NavigationPropertyName: string = null;\r\n  Entity2LogicalName: string = null;\r\n  Entity2NavigationPropertyName: string = null;\r\n  SchemaName: string = null;\r\n  RelationshipType: string = null;\r\n  Other: string = null;\r\n  OtherSchemaName: string = null;\r\n  Entity1LogicalCollectionName: string = null;\r\n  Entity2LogicalCollectionName: string = null;\r\n}\r\n\r\nexport class LookupAttribute {\r\n  Targets: string[];\r\n  LogicalName: string;\r\n  SchemaName: string;\r\n}\r\n\r\ninterface IAttributeOptionsetMetaResult {\r\n  value: AttributeOptionsetMeta[];\r\n}\r\n\r\nexport class AttributeOptionsetMeta {\r\n  public LogicalName: string | undefined;\r\n  public MetadataId: string | undefined;\r\n  public OptionSet: OptionSetMeta | undefined;\r\n}\r\n\r\nclass OptionSetMeta {\r\n  public Options: OptionSetMetaValue[] | undefined;\r\n\r\n}\r\n\r\nclass OptionSetMetaValue {\r\n  public Value: number | undefined;\r\n  public Label: OptionsetLabelMeta | undefined;\r\n}\r\n\r\n\r\nclass OptionsetLabelMeta {\r\n  public UserLocalizedLabel: OptionsetLabel | undefined;\r\n  public LocalizedLabels: OptionsetLabel[] | undefined;\r\n}\r\n\r\n\r\n\r\nclass OptionsetLabel {\r\n  public Label: string | undefined;\r\n  public LanguageCode: number | undefined;\r\n  public MetadataId: string | undefined;\r\n}\r\n\r\n\r\n@Injectable()\r\nexport class XrmMetadataService {\r\n  private searchEntityMetaPrototype = new EntityMeta();\r\n  private getEntityMetaPrototype = new EntityMeta().meta();\r\n\r\n  constructor(private http: HttpClient, private xrmService: XrmContextService) { }\r\n\r\n  search(name: string): Observable<XrmQueryResult<EntityMeta>>;\r\n  search(name: string, unique: boolean): Observable<XrmQueryResult<EntityMeta>>;\r\n  search(name: string, unique: boolean = false): Observable<XrmQueryResult<EntityMeta>> {\r\n    let con = new Condition();\r\n    if (!unique) {\r\n      con\r\n        .where(\"LogicalCollectionName\", Comparator.ContainsData)\r\n        .where(\"LogicalName\", Comparator.ContainsData);\r\n    } else {\r\n      con.where(\"LogicalName\", Comparator.Equals, name);\r\n    }\r\n\r\n    return this.xrmService.query(this.searchEntityMetaPrototype, con).pipe(map(_r => {\r\n      let r = _r as XrmQueryResult<EntityMeta>;\r\n      if (name != null && name != '') {\r\n        let _s = name.toLowerCase();\r\n        let ma: EntityMeta[] = [];\r\n        // Metadata api does not support contains - therefore client site filter\r\n        r.value.forEach(e => {\r\n          if (e != null && e.LogicalName != null && e.LogicalName.toLowerCase().indexOf(_s) >= 0) {\r\n            ma.push(e);\r\n          }\r\n        });\r\n        r.value = ma;\r\n      }\r\n\r\n      r.value = r.value.sort((a, b) => a.LogicalName.toLowerCase().localeCompare(b.LogicalName.toLowerCase()))\r\n      return _r;\r\n    }));\r\n  }\r\n\r\n  get(id: string): Observable<EntityMeta> {\r\n    return this.xrmService.get<EntityMeta>(this.getEntityMetaPrototype, id).pipe(map(_r => {\r\n      let r = _r as EntityMeta;\r\n      if (r.Attributes != null && r.Attributes.length > 0) {\r\n        r.Attributes = r.Attributes.sort((a, b) => {\r\n          if (a.LogicalName == null && b.LogicalName != null) return 1;\r\n          if (a.LogicalName != null && b.LogicalName == null) return -1;\r\n          if (a.LogicalName == null && b.LogicalName == null) return 0;\r\n          return a.LogicalName.toLowerCase().localeCompare(b.LogicalName.toLowerCase())\r\n        })\r\n      }\r\n      return r;\r\n    }));\r\n  }\r\n\r\n  getManyToManyRelationships(entity: EntityMeta): Observable<EntityMeta> {\r\n    let headers = new HttpHeaders({ 'Accept': 'application/json' });\r\n    headers = headers.append(\"OData-MaxVersion\", \"4.0\");\r\n    headers = headers.append(\"OData-Version\", \"4.0\");\r\n    headers = headers.append(\"Content-Type\", \"application/json; charset=utf-8\");\r\n    headers = headers.append(\"Prefer\", \"odata.include-annotations=*\");\r\n\r\n    let options = {\r\n      headers: headers\r\n    }\r\n\r\n    return this.http.get(this.xrmService.getServiceUrl() + 'EntityDefinitions(' + entity.id + ')' + '/ManyToManyRelationships?$select=MetadataId,Entity1LogicalName,Entity1NavigationPropertyName,Entity2LogicalName,Entity2NavigationPropertyName,SchemaName,RelationshipType', options)\r\n      .pipe(map(response => {\r\n        entity.ManyToManyRelations = response[\"value\"] as ManyToManyRelationship[];\r\n\r\n        entity.ManyToManyRelations.forEach(r => {\r\n          if (r.Entity1LogicalName == entity.LogicalName) {\r\n            r.Other = r.Entity2LogicalName;\r\n            r.OtherSchemaName = entity.SchemaName;\r\n            r.Entity1LogicalCollectionName = entity.LogicalCollectionName;\r\n          } else {\r\n            r.Other = r.Entity1LogicalName;\r\n            r.Entity2LogicalCollectionName = entity.LogicalCollectionName;\r\n          }\r\n        });\r\n        this.resolveRelationshipNames(entity.ManyToManyRelations);\r\n        return entity;\r\n      }));\r\n  }\r\n\r\n  resolveRelationshipNames(relations: ManyToManyRelationship[]): void {\r\n    relations.forEach(r => {\r\n      if (r.Entity1LogicalCollectionName == null) {\r\n        this.search(r.Entity1LogicalName, true).subscribe(s => {\r\n          r.Entity1LogicalCollectionName = s.value[0].LogicalCollectionName;\r\n          if (r.Other == r.Entity1LogicalName) {\r\n            r.OtherSchemaName = s.value[0].SchemaName;\r\n          }\r\n        });\r\n      }\r\n\r\n      if (r.Entity2LogicalCollectionName == null) {\r\n        this.search(r.Entity2LogicalName, true).subscribe(s => {\r\n          r.Entity2LogicalCollectionName = s.value[0].LogicalCollectionName;\r\n          if (r.Other = r.Entity2LogicalName) {\r\n            r.OtherSchemaName = s.value[0].SchemaName;\r\n          }\r\n        });\r\n      }\r\n\r\n    });\r\n  }\r\n\r\n  getOneToManyRelationships(entity: EntityMeta): Observable<EntityMeta> {\r\n    let headers = new HttpHeaders({ 'Accept': 'application/json' });\r\n    headers = headers.append(\"OData-MaxVersion\", \"4.0\");\r\n    headers = headers.append(\"OData-Version\", \"4.0\");\r\n    headers = headers.append(\"Content-Type\", \"application/json; charset=utf-8\");\r\n    headers = headers.append(\"Prefer\", \"odata.include-annotations=*\");\r\n\r\n    let options = {\r\n      headers: headers\r\n    }\r\n\r\n    return this.http.get(this.xrmService.getServiceUrl() + 'EntityDefinitions(' + entity.id + ')' + '/OneToManyRelationships?$select=MetadataId,RelationshipType,SchemaName,ReferencedAttribute,ReferencingAttribute,ReferencedEntity,ReferencingEntity,ReferencingEntityNavigationPropertyName', options)\r\n      .pipe(map(response => {\r\n        entity.OneToManyRelations = response[\"value\"] as OneToManyRelationship[];\r\n        return entity;\r\n      }));\r\n  }\r\n\r\n  getLookup(entity: EntityMeta, attr: AttributeMeta): Observable<EntityMeta> {\r\n    if (attr.AttributeType == 'Lookup') {\r\n      let headers = new HttpHeaders({ 'Accept': 'application/json' });\r\n      headers = headers.append(\"OData-MaxVersion\", \"4.0\");\r\n      headers = headers.append(\"OData-Version\", \"4.0\");\r\n      headers = headers.append(\"Content-Type\", \"application/json; charset=utf-8\");\r\n      headers = headers.append(\"Prefer\", \"odata.include-annotations=*\");\r\n\r\n      let options = {\r\n        headers: headers\r\n      }\r\n\r\n      return this.http.get<LookupAttribute>(this.xrmService.getServiceUrl() + 'EntityDefinitions(' + entity.id + ')/Attributes(' + attr.id + ')/Microsoft.Dynamics.CRM.LookupAttributeMetadata?$select=Targets,LogicalName,SchemaName')\r\n        .pipe(map(response => {\r\n          attr.Lookup = response as LookupAttribute;\r\n          return entity;\r\n        }));\r\n    }\r\n\r\n    if (attr.AttributeType == 'Customer') {\r\n      attr.Lookup = {\r\n        LogicalName: attr.LogicalName,\r\n        SchemaName: attr.SchemaName,\r\n        Targets: ['account', 'contact']\r\n      }\r\n\r\n      return new Observable<EntityMeta>(o => {\r\n        o.next(entity);\r\n      });\r\n    }\r\n\r\n    throw 'unknown Lookup type ' + attr.AttributeType;\r\n  }\r\n\r\n  getPicklists(entity: EntityMeta): Observable<AttributeOptionsetMeta[]> {\r\n    let headers = new HttpHeaders({ 'Accept': 'application/json' });\r\n    headers = headers.append(\"OData-MaxVersion\", \"4.0\");\r\n    headers = headers.append(\"OData-Version\", \"4.0\");\r\n    headers = headers.append(\"Content-Type\", \"application/json; charset=utf-8\");\r\n    headers = headers.append(\"Prefer\", \"odata.include-annotations=*\");\r\n\r\n    let options = {\r\n      headers: headers\r\n    }\r\n\r\n    return this.http.get<IAttributeOptionsetMetaResult>(this.xrmService.getServiceUrl() + 'EntityDefinitions(LogicalName=\\'' + entity.LogicalName + '\\')/Attributes/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?$select=LogicalName&$expand=OptionSet,GlobalOptionSet').pipe(map(r => r.value));\r\n  }\r\n}\r\n","import { NgModule } from '@angular/core';\n\nimport { HttpClientModule, HttpClient, HttpHeaders, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { map, catchError } from 'rxjs/operators'\n\nimport { XrmFormService } from './xrmform.service';\nimport { XrmAuthService } from './auth.service';\nimport { XrmInterceptor } from './xrm.interceptor';\nimport { XrmService } from './xrm.service';\nimport { XrmContextService } from './xrmcontext.service';\nimport { XrmStateService } from './xrmstate.service';\nimport { XrmConfigService } from './xrmconfig.service';\n\n@NgModule({\n  imports: [\n    HttpClientModule\n  ],\n  declarations: [],\n  exports: [],\n  providers: [\n    XrmAuthService,\n    XrmService,\n    XrmContextService,\n    XrmStateService,\n    XrmConfigService,\n    XrmFormService\n  ]\n})\nexport class KiponXrmserviceModule { }\n","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { mergeMap } from 'rxjs/operators';\r\n\r\nimport { Entity, EntityReference, OptionSetValue, Entities, XrmContextService } from './xrmcontext.service';\r\n\r\nexport class Role extends Entity {\r\n  constructor() {\r\n    super('roles', 'roleid', true);\r\n  }\r\n  businessunitid: EntityReference = new EntityReference().meta(\"businessunits\", \"businessunitid\");\r\n  name: string = null;\r\n  parentroleid: EntityReference = new EntityReference().meta(\"roles\", \"parentroleid\");\r\n  parentrootroleid: EntityReference = new EntityReference().meta(\"roles\", \"parentrootroleid\");\r\n\r\n  meta(): Role {\r\n    return this;\r\n  }\r\n}\r\n\r\nexport class Team extends Entity {\r\n  constructor() {\r\n    super('teams', 'teamid', true);\r\n  }\r\n  description: string = null;\r\n  emailaddress: string = null;\r\n  name: string = null;\r\n  teamtype: OptionSetValue = new OptionSetValue();\r\n\r\n  meta(): Team {\r\n    return this;\r\n  }\r\n}\r\n\r\nexport class SystemUser extends Entity {\r\n  constructor() {\r\n    super('systemusers', 'systemuserid', true);\r\n  }\r\n  address1_name: string = null;\r\n  address2_name: string = null;\r\n  domainname: string = null;\r\n  firstname: string = null;\r\n  fullname: string = null;\r\n  lastname: string = null;\r\n  middlename: string = null;\r\n  nickname: string = null;\r\n  systemuserroles_association: Entities<Role>;\r\n  teammembership_association: Entities<Team>;\r\n\r\n  hasRole(name: string): boolean {\r\n    if (this.systemuserroles_association != null && this.systemuserroles_association.length > 0) {\r\n      for (var i = 0; i < this.systemuserroles_association.length; i++) {\r\n        if (this.systemuserroles_association[i].name == name) {\r\n          return true;\r\n        }\r\n      }\r\n    }\r\n    return false;\r\n  }\r\n\r\n  memberOf(name: string): boolean {\r\n    if (this.teammembership_association != null && this.teammembership_association.length > 0) {\r\n      for (var i = 0; i < this.teammembership_association.length; i++) {\r\n        if (name == this.teammembership_association[i].name) {\r\n          return true;\r\n        }\r\n      }\r\n    }\r\n    return false;\r\n  }\r\n\r\n  roles: Role[];\r\n  teams: Team[];\r\n\r\n  onFetch() {\r\n    this.roles = [];\r\n    if (this.systemuserroles_association != null) {\r\n      this.systemuserroles_association.forEach(r => {\r\n        this.roles.push(r);\r\n      })\r\n    }\r\n    this.teams = [];\r\n    if (this.teammembership_association != null) {\r\n      this.teammembership_association.forEach(t => {\r\n        this.teams.push(t);\r\n      });\r\n    }\r\n  }\r\n\r\n  meta(): SystemUser {\r\n    this.systemuserroles_association = new Entities<Role>('systemusers', 'roles', 'systemuserroles_association', true, new Role().meta());\r\n    this.teammembership_association = new Entities<Team>('systemusers', 'teams', 'teammembership_association', false, new Team().meta());\r\n    return this;\r\n  }\r\n}\r\n\r\n\r\n@Injectable()\r\nexport class XrmSecurityService {\r\n  private rolePrototype: Role = new Role().meta();\r\n  private teamPrototype: Team = new Team().meta();\r\n  private userPrototype: SystemUser = new SystemUser().meta();\r\n  constructor(private xrmService: XrmContextService) { }\r\n\r\n  getUser(id: string): Observable<SystemUser> {\r\n    return this.xrmService.get<SystemUser>(this.userPrototype, id);\r\n  }\r\n\r\n  getCurrentUser(): Observable<SystemUser> {\r\n    return this.xrmService.getCurrentUserId().pipe(mergeMap(u => {\r\n      return this.getUser(u);\r\n    }));\r\n  }\r\n}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { XrmSecurityService } from './xrmsecurity.service';\r\n\r\n\r\n@NgModule({\r\n  imports: [\r\n  ],\r\n  declarations: [],\r\n  exports: [],\r\n  providers: [\r\n    XrmSecurityService\r\n  ]\r\n})\r\nexport class KiponXrmSecurityModule { }\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { XrmQueryResult } from './xrm.service'\r\nimport { Entity, EntityReference, OptionSetValue, Entities, XrmContextService, Condition, Comparator } from './xrmcontext.service';\r\n\r\nexport class Annotation extends Entity {\r\n  constructor() {\r\n    super('annotations', 'annotationid', true);\r\n  }\r\n  // \tannotationid:entity key column is always included, but name is converted to id\r\n  filename: string = null;\r\n  filesize: number = null;\r\n  isdocument: boolean = null;\r\n  notetext: string = null;\r\n  objectid: EntityReference = new EntityReference().meta(\"accounts\", \"objectid_account\");\r\n  objectidtypecode: string;\r\n  ownerid: EntityReference = new EntityReference().meta(\"systemusers\", \"ownerid\");\r\n  subject: string = null;\r\n\r\n  meta(): Annotation {\r\n    return this;\r\n  }\r\n}\r\n\r\n@Injectable()\r\nexport class XrmAnnotationService {\r\n  localPrototype: Annotation = new Annotation().meta();\r\n  constructor(private xrmService: XrmContextService) { }\r\n\r\n  get(id: string): Observable<Annotation> {\r\n    return this.xrmService.get<Annotation>(this.localPrototype, id);\r\n  }\r\n\r\n  related(entity: Entity): Observable<XrmQueryResult<Annotation>> {\r\n    let condition: Condition = new Condition()\r\n      .where('objectid', Comparator.Equals, entity.id)\r\n      .where('objecttypecode', Comparator.Equals, entity._logicalName);\r\n    return this.xrmService.query<Annotation>(this.localPrototype, condition);\r\n  }\r\n\r\n  add(entity: Entity, subject: string, body: string): Observable<Annotation> {\r\n    var anno = new Annotation();\r\n    anno.isdocument = false;\r\n    anno.subject = subject;\r\n    anno.notetext = body;\r\n    anno.objectid = new EntityReference().meta(entity._pluralName, \"objectid_\" + entity._logicalName);\r\n    anno.objectid.id = entity.id;\r\n    return this.xrmService.create<Annotation>(this.localPrototype, anno);\r\n  }\r\n\r\n  update(anno: Annotation): Observable<Annotation> {\r\n    return this.xrmService.update(this.localPrototype, anno);\r\n  }\r\n\r\n  delete(anno: Annotation): Observable<null> {\r\n    return this.xrmService.delete(anno);\r\n  }\r\n}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { XrmAnnotationService } from './xrmannotation.service';\r\n\r\n\r\n@NgModule({\r\n  imports: [\r\n  ],\r\n  declarations: [],\r\n  exports: [],\r\n  providers: [\r\n    XrmAnnotationService\r\n  ]\r\n})\r\nexport class KiponXrmAnnotationModule { }\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { XrmMetadataService } from './metadata.service';\r\n\r\n\r\n@NgModule({\r\n  imports: [\r\n  ],\r\n  declarations: [],\r\n  exports: [],\r\n  providers: [\r\n    XrmMetadataService\r\n  ]\r\n})\r\nexport class KiponXrmMetadataModule { }\r\n","/*\n * Public API Surface of kipon-xrmservice\n */\n\nexport * from './lib/fetchxml';\nexport * from './lib/auth.service';\nexport * from './lib/xrm.interceptor';\nexport * from './lib/xrmform.service';\nexport * from './lib/xrm.service';\nexport * from './lib/xrmconfig.service';\nexport * from './lib/xrmcontext.service';\nexport * from './lib/xrmstate.service';\nexport * from './lib/metadata.service';\nexport * from './lib/kipon-xrmservice.module';\n\nexport * from './lib/xrmsecurity.service';\nexport * from './lib/kipon-xrmsecurity.module';\n\nexport * from './lib/xrmannotation.service';\nexport * from './lib/kipon-xrmannotation.module';\n\nexport * from './lib/metadata.service';\nexport * from './lib/kipon-xrmmetadata.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.XrmFormService","i1.XrmConfigService","i2.XrmService","i1.XrmStateService","i2.XrmContextService","i1.XrmContextService"],"mappings":";;;;;;;MAGa,WAAW,CAAA;IAUtB,IAAI,CAAC,SAAiB,EAAE,QAAgB,EAAE,SAAoB,EAAE,aAAuB,IAAI,EAAA;AACzF,QAAA,IAAI,GAAG,GAAG,IAAI,WAAW,EAAE,CAAC;AAC5B,QAAA,GAAG,CAAC,eAAe,GAAG,SAAS,CAAC;AAChC,QAAA,GAAG,CAAC,IAAI,GAAG,SAAS,CAAC,YAAY,CAAC;AAClC,QAAA,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;AAC1B,QAAA,GAAG,CAAC,UAAU,GAAG,UAAU,CAAA;AAC3B,QAAA,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC;AAEjB,QAAA,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,EAAE;AAC/B,YAAA,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;AAC1B,SAAA;AACD,QAAA,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;AAClB,QAAA,IAAI,CAAC,EAAE,GAAG,QAAQ,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;AACtB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,QAAA,OAAO,GAAG,CAAC;KACZ;AAID,IAAA,SAAS,CAAC,SAAiB,EAAE,KAAa,EAAE,IAAY,EAAE,QAAgB,EAAE,SAAoB,EAAE,UAAA,GAAuB,IAAI,EAAA;AAC3H,QAAA,IAAI,GAAG,GAAG,IAAI,WAAW,EAAE,CAAC;AAC5B,QAAA,GAAG,CAAC,eAAe,GAAG,SAAS,CAAC;AAChC,QAAA,GAAG,CAAC,IAAI,GAAG,SAAS,CAAC,YAAY,CAAC;AAClC,QAAA,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;AAC1B,QAAA,GAAG,CAAC,UAAU,GAAG,UAAU,CAAA;AAC3B,QAAA,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC;AAEjB,QAAA,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,EAAE;AAC/B,YAAA,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;AAC1B,SAAA;AACD,QAAA,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;AAClB,QAAA,IAAI,CAAC,EAAE,GAAG,QAAQ,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACjB,QAAA,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;AAEpB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,QAAA,OAAO,GAAG,CAAC;KACZ;AAID,IAAA,SAAS,CAAC,SAAiB,EAAE,KAAa,EAAE,IAAY,EAAE,QAAgB,EAAE,SAAoB,EAAE,UAAA,GAAuB,IAAI,EAAA;AAC3H,QAAA,IAAI,GAAG,GAAG,IAAI,WAAW,EAAE,CAAC;AAC5B,QAAA,GAAG,CAAC,eAAe,GAAG,SAAS,CAAC;AAChC,QAAA,GAAG,CAAC,IAAI,GAAG,SAAS,CAAC,YAAY,CAAC;AAClC,QAAA,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;AAC1B,QAAA,GAAG,CAAC,UAAU,GAAG,UAAU,CAAA;AAC3B,QAAA,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC;AAEjB,QAAA,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,EAAE;AAC/B,YAAA,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;AAC1B,SAAA;AACD,QAAA,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;AAClB,QAAA,IAAI,CAAC,EAAE,GAAG,QAAQ,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACjB,QAAA,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;AAEpB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,QAAA,OAAO,GAAG,CAAC;KACZ;IAED,mBAAmB,GAAA;QACjB,IAAI,MAAM,GAAY,EAAE,CAAC;QACzB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;AAC/C,QAAA,OAAO,MAAM,CAAC;KACf;IAEO,YAAY,CAAC,KAAa,EAAE,MAAgB,EAAA;QAClD,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACrC,YAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAG;AAChB,gBAAA,IAAI,CAAC,CAAC,MAAM,CAAC,UAAU,IAAI,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AACjE,oBAAA,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACtB,iBAAA;gBACD,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;AACrD,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;AACF,CAAA;MAEY,IAAI,CAAA;AAQf,IAAA,UAAU,CAAC,cAAuB,EAAA;QAChC,IAAI,MAAM,GAAW,EAAE,CAAC;QAExB,IAAI,UAAU,GAAG,EAAE,CAAC;AACpB,QAAA,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE;YACrB,UAAU,GAAG,UAAU,GAAG,IAAI,CAAC,KAAK,GAAG,UAAU,GAAG,IAAI,CAAC,IAAI,GAAG,eAAe,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;AACnG,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE;YAC/D,UAAU,GAAG,UAAU,GAAG,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;AAC5C,SAAA;QAED,MAAM,IAAI,qBAAqB,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,QAAQ,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,UAAU,GAAG,GAAG,CAAC;AAEjG,QAAA,IAAI,cAAc,EAAE;AAClB,YAAA,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;gBACvE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAG;AACjC,oBAAA,MAAM,IAAI,mBAAmB,GAAG,CAAC,GAAG,KAAK,CAAA;AAC3C,iBAAC,CAAC,CAAC;AACJ,aAAA;AACF,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,IAAI,EAAE;YACjC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;AAC9C,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;YAC/E,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,IAAG;AACrC,gBAAA,MAAM,IAAI,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AACzC,aAAC,CAAC,CAAC;AACJ,SAAA;QACD,MAAM,IAAI,gBAAgB,CAAC;AAC3B,QAAA,OAAO,MAAM,CAAC;KACf;AACF,CAAA;MAEY,SAAS,CAAA;IAIpB,UAAU,GAAA;QACR,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,OAAO,oBAAoB,GAAG,IAAI,CAAC,SAAS,GAAG,wBAAwB,CAAC;AACzE,SAAA;AACD,QAAA,OAAO,oBAAoB,GAAG,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;KACvD;AACF,CAAA;MAEY,QAAQ,CAAA;IASnB,WAAY,CAAA,SAAiB,EAAE,SAAoB,EAAA;AACjD,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC;AAC9B,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;AACtC,QAAA,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,YAAY,CAAC;AACxC,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;KACjD;IAED,MAAM,GAAA;QACJ,OAAO,IAAI,CAAC,IAAI,CAAC;KAClB;AAID,IAAA,IAAI,CAAC,UAAkB,EAAE,UAAA,GAAsB,KAAK,EAAA;AAClD,QAAA,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;AACtB,YAAA,IAAI,CAAC,KAAK,GAAG,EAAiB,CAAC;AAChC,SAAA;AACD,QAAA,IAAI,QAAQ,GAAG,IAAI,SAAS,EAAE,CAAC;AAC/B,QAAA,QAAQ,CAAC,SAAS,GAAG,UAAU,CAAC;AAChC,QAAA,QAAQ,CAAC,UAAU,GAAG,UAAU,CAAC;AACjC,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KAC3B;IAGD,eAAe,GAAA;QACb,IAAI,MAAM,GAAW,EAAE,CAAC;QAExB,IAAI,QAAQ,GAAG,EAAE,CAAC;AAClB,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,EAAE;YACzB,QAAQ,GAAG,aAAa,GAAG,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAA;AAC/C,SAAA;QAED,IAAI,IAAI,GAAG,OAAO,CAAC;QAEnB,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,GAAG,kBAAkB,CAAC;YAC1B,IAAI,GAAG,aAAa,CAAA;AACrB,SAAA;AAGD,QAAA,MAAM,IAAI,0BAA0B,GAAG,QAAQ,GAAG,oBAAoB,CAAA;QACtE,MAAM,IAAI,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACnD,QAAA,MAAM,IAAI,mBAAmB,GAAG,IAAI,CAAC,OAAO,GAAG,eAAe,GAAC,IAAI,GAAC,iBAAiB,GAAC,IAAI,GAAC,MAAM,CAAC;AAElG,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;YAC/B,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;AAC5C,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3E,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,IAAG;AACnC,gBAAA,MAAM,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAChC,aAAC,CAAC,CAAA;AACH,SAAA;QAED,MAAM,IAAI,WAAW,CAAC;QACtB,MAAM,IAAI,UAAU,CAAC;AAErB,QAAA,OAAO,MAAM,CAAC;KACf;AAID,IAAA,UAAU,CAAC,UAAA,GAAqB,IAAI,EAAE,UAAkB,IAAI,EAAA;QAC1D,IAAI,MAAM,GAAW,EAAE,CAAC;QAExB,IAAI,IAAI,GAAG,EAAE,CAAC;AACd,QAAA,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;AACtB,YAAA,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE;AACrB,gBAAA,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;AACf,aAAA;YAED,IAAI,OAAO,IAAI,IAAI,EAAE;AACnB,gBAAA,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;AACrB,aAAA;AAED,YAAA,IAAI,GAAG,UAAU,GAAG,IAAI,CAAC,KAAK,GAAG,UAAU,GAAG,OAAO,GAAG,GAAG,CAAC;AAC7D,SAAA;QAED,IAAI,UAAU,IAAI,IAAI,EAAE;AACtB,YAAA,IAAI,IAAI,kBAAkB,GAAG,UAAU,GAAG,GAAG,CAAC;AAC/C,SAAA;AAAM,aAAA;YACL,IAAI,IAAI,mBAAmB,CAAC;AAC7B,SAAA;QAED,IAAI,QAAQ,GAAG,EAAE,CAAC;AAClB,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,EAAE;YACzB,QAAQ,GAAG,aAAa,GAAG,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAA;AAC/C,SAAA;QAED,MAAM,IAAI,0BAA0B,GAAG,IAAI,GAAG,QAAQ,GAAG,GAAG,CAAA;QAC5D,MAAM,IAAI,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACnD,MAAM,IAAI,mBAAmB,GAAG,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;QACrD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAG;AAC/B,YAAA,MAAM,IAAI,mBAAmB,GAAC,CAAC,GAAC,KAAK,CAAA;AACvC,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;YAC/B,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;AAC5C,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3E,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,IAAG;AACnC,gBAAA,MAAM,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC/B,aAAC,CAAC,CAAA;AACH,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/C,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAG;AACrB,gBAAA,MAAM,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;AAC3B,aAAC,CAAC,CAAC;AACJ,SAAA;QAED,MAAM,IAAI,WAAW,CAAC;QACtB,MAAM,IAAI,UAAU,CAAA;AACpB,QAAA,OAAO,MAAM,CAAC;KACf;AACF;;MCpRY,gBAAgB,CAAA;AAG3B,IAAA,WAAA,CAAoB,IAAgB,EAAA;AAAhB,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;KAAK;IAIzC,aAAa,CAAC,MAAc,IAAI,EAAA;QAC9B,IAAI,GAAG,IAAI,IAAI,EAAE;YACf,GAAG,GAAG,wBAAwB,CAAC;AAChC,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAa,GAAG,CAAC;AAClC,aAAA,SAAS,EAAE;aACX,IAAI,CAAC,IAAI,IAAG;AACX,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACxB,SAAC,CAAC,CAAC,KAAK,CAAC,GAAG,IAAG;AACb,YAAA,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;AACnE,YAAA,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACnB,SAAC,CACA,CAAC;KACL;IAED,SAAS,GAAA;QACP,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;;6GAxBU,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;iHAAhB,gBAAgB,EAAA,CAAA,CAAA;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B,UAAU;;;ACHX,MAAM,yBAAyB,GAAG,kCAAkC,CAAC;AACrE,MAAM,yBAAyB,GAAG,kCAAkC,CAAC;AACrE,MAAM,qBAAqB,GAAG,8BAA8B,CAAC;MAYhD,UAAU,CAAA;AAGtB,CAAA;MAEY,kBAAkB,CAAA;AAQ7B,IAAA,WAAA,CAAY,GAAe,EAAA;AAFnB,QAAA,IAAM,CAAA,MAAA,GAAW,iBAAiB,CAAC;AAGzC,QAAA,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC;AACpC,QAAA,IAAI,CAAC,qBAAqB,GAAG,GAAG,CAAC,wBAAwB,EAAE,CAAC;AAC5D,QAAA,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;AAChC,QAAA,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;AAClC,QAAA,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC;KAC/B;IAED,YAAY,GAAA;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;IAED,wBAAwB,GAAA;QACtB,OAAO,IAAI,CAAC,qBAAqB,CAAC;KACnC;IAED,UAAU,GAAA;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;IAED,WAAW,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;IAED,SAAS,GAAA;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;IACD,aAAa,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC;QAAA,CAAC;KACtC;AACF,CAAA;MAGY,cAAc,CAAA;AACzB,IAAA,WAAA,GAAA,GAAiB;IAEjB,UAAU,GAAA;AACR,QAAA,IAAI,MAAM,CAAC,qBAAqB,CAAC,EAAE;AACjC,YAAA,OAAO,MAAM,CAAC,qBAAqB,CAAC,CAAC;AACtC,SAAA;AAED,QAAA,IAAI,OAAO,MAAM,CAAC,kBAAkB,CAAC,IAAI,WAAW,EAAE;AACpD,YAAA,MAAM,CAAC,qBAAqB,CAAC,GAAI,IAAI,kBAAkB,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;AACtF,YAAA,OAAO,MAAM,CAAC,qBAAqB,CAAC,CAAC;AACtC,SAAA;QAED,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,EAAE;AACzD,YAAA,MAAM,CAAC,qBAAqB,CAAC,GAAG,IAAI,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC;AAC7F,YAAA,OAAO,MAAM,CAAC,qBAAqB,CAAC,CAAC;AACtC,SAAA;QAED,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,EAAE;AACzD,YAAA,MAAM,CAAC,qBAAqB,CAAC,GAAG,IAAI,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC;AAC7F,YAAA,OAAO,MAAM,CAAC,qBAAqB,CAAC,CAAC;AACtC,SAAA;QAED,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,EAAE;AAC9E,YAAA,MAAM,CAAC,qBAAqB,CAAC,GAAG,IAAI,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AACzF,YAAA,OAAO,MAAM,CAAC,qBAAqB,CAAC,CAAC;AACtC,SAAA;AAED,QAAA,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,EAAE;YACpH,MAAM,CAAC,qBAAqB,CAAC,GAAG,IAAI,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAChG,YAAA,OAAO,MAAM,CAAC,qBAAqB,CAAC,CAAC;AACtC,SAAA;AAED,QAAA,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,EAAE;YACpH,MAAM,CAAC,qBAAqB,CAAC,GAAG,IAAI,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAChG,YAAA,OAAO,MAAM,CAAC,qBAAqB,CAAC,CAAC;AACtC,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACb;IAOD,WAAW,CAAC,QAAiB,KAAK,EAAA;AAEhC,QAAA,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,yBAAyB,CAAC;AAAE,YAAA,OAAO,MAAM,CAAC,yBAAyB,CAAC,CAAC;AAC1F,QAAA,IAAI,MAAM,CAAC,yBAAyB,CAAC,EAAE;AACrC,YAAA,OAAO,MAAM,CAAC,yBAAyB,CAAC,CAAC;AAC1C,SAAA;AAED,QAAA,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,yBAAyB,CAAC,EAAE;YACvE,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC;AAC7E,YAAA,OAAO,MAAM,CAAC,yBAAyB,CAAC,CAAC;AAC1C,SAAA;AAED,QAAA,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,yBAAyB,CAAC,EAAE;YACvE,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC;AAC7E,YAAA,OAAO,MAAM,CAAC,yBAAyB,CAAC,CAAC;AAC1C,SAAA;AAED,QAAA,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,EAAE;AACvH,YAAA,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC;AACjF,YAAA,OAAO,MAAM,CAAC,yBAAyB,CAAC,CAAC;AAC1C,SAAA;QAED,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,EAAE;YACpK,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC;AACxF,YAAA,OAAO,MAAM,CAAC,yBAAyB,CAAC,CAAC;AAC1C,SAAA;QAED,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,EAAE;YACpK,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC;AACxF,YAAA,OAAO,MAAM,CAAC,yBAAyB,CAAC,CAAC;AAC1C,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;KACb;AAKD,IAAA,UAAU,CAAC,EAAU,EAAE,IAAY,EAAE,QAAiB,KAAK,EAAA;QACzD,IAAI,OAAO,EAAE,IAAI,WAAW,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,IAAI,OAAO,IAAI,IAAI,WAAW,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE;AAClH,YAAA,IAAI,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;AAC9B,YAAA,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;AACf,YAAA,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;AACnB,YAAA,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,CAAC;AAC3C,YAAA,OAAO,MAAM,CAAC;AACf,SAAA;AAED,QAAA,IAAI,KAAK,IAAI,MAAM,CAAC,yBAAyB,CAAC;AAAE,YAAA,OAAO,MAAM,CAAC,yBAAyB,CAAC,CAAC;AACzF,QAAA,IAAI,MAAM,CAAC,yBAAyB,CAAC,EAAE;AACrC,YAAA,OAAO,MAAM,CAAC,yBAAyB,CAAC,CAAC;AAC1C,SAAA;AAGD,QAAA,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,yBAAyB,CAAC,EAAE;YACvE,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC;AAC7E,YAAA,OAAO,MAAM,CAAC,yBAAyB,CAAC,CAAC;AAC1C,SAAA;AAED,QAAA,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,yBAAyB,CAAC,EAAE;YACvE,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC;AAC7E,YAAA,OAAO,MAAM,CAAC,yBAAyB,CAAC,CAAC;AAC1C,SAAA;AAED,QAAA,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,EAAE;AACtH,YAAA,IAAI,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAC9B,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/D,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC;AACzE,YAAA,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,CAAC;AAC3C,YAAA,OAAO,MAAM,CAAC,yBAAyB,CAAC,CAAC;AAC1C,SAAA;QAED,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,EAAE;AACnK,YAAA,IAAI,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAC9B,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;YACtE,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC;AAChF,YAAA,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,CAAC;AAC3C,YAAA,OAAO,MAAM,CAAC,yBAAyB,CAAC,CAAC;AAC1C,SAAA;QAED,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,EAAE;AACnK,YAAA,IAAI,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAC9B,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;YACtE,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC;AAEhF,YAAA,MAAM,CAAC,yBAAyB,CAAC,GAAG,MAAM,CAAC;AAC3C,YAAA,OAAO,MAAM,CAAC,yBAAyB,CAAC,CAAC;AAC1C,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACb;;2GArIU,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;+GAAd,cAAc,EAAA,CAAA,CAAA;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,UAAU;;;MCpDE,YAAY,CAAA;AAGxB,CAAA;MAeY,MAAM,CAAA;IAMjB,cAAc,GAAA;AACZ,QAAA,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC;QACpB,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE;YAC9C,GAAG,IAAI,GAAG,CAAC;AACZ,SAAA;QACD,IAAI,IAAI,GAAG,EAAE,CAAC;AACd,QAAA,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE;AACvB,YAAA,GAAG,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;YAChC,IAAI,GAAG,GAAG,CAAA;AACX,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE;YACvB,GAAG,IAAI,IAAI,GAAG,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;AACxC,SAAA;QAED,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE;YAC9C,GAAG,IAAI,GAAG,CAAC;AACZ,SAAA;AACD,QAAA,OAAO,GAAG,CAAC;KACZ;AACF,CAAA;MAGY,UAAU,CAAA;AAUrB,IAAA,WAAA,CAAoB,IAAgB,EAAU,QAAkB,EAAU,cAA8B,EAAA;AAApF,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;AAAU,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;AAAU,QAAA,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;AAThG,QAAA,IAAa,CAAA,aAAA,GAAW,iBAAiB,CAAC;AAC1C,QAAA,IAAe,CAAA,eAAA,GAAe,IAAI,CAAC;AAC3C,QAAA,IAAM,CAAA,MAAA,GAAW,iBAAiB,CAAC;AACnC,QAAA,IAAU,CAAA,UAAA,GAAW,MAAM,CAAC;AAC5B,QAAA,IAAK,CAAA,KAAA,GAAY,KAAK,CAAC;AACvB,QAAA,IAAK,CAAA,KAAA,GAAW,IAAI,CAAC;AACrB,QAAA,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;AACpB,QAAA,IAAQ,CAAA,QAAA,GAAW,CAAC,CAAC;KAG5B;AAED,IAAA,UAAU,CAAC,CAAS,EAAA;AAClB,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;KACpD;IAGD,UAAU,GAAA;AACR,QAAA,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,EAAE;YAChC,OAAO,IAAI,CAAC,eAAe,CAAC;AAC7B,SAAA;QAED,IAAI,CAAC,GAAe,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;QAErD,IAAI,CAAC,IAAI,IAAI,EAAE;AACb,YAAA,IAAI,OAAO,CAAC,CAAC,UAAU,IAAI,WAAW,EAAE;AACtC,gBAAA,CAAC,CAAC,UAAU,GAAG,MAAc,SAAS,CAAA;AACvC,aAAA;AAED,YAAA,IAAI,OAAO,CAAC,CAAC,aAAa,IAAI,WAAW,EAAE;gBACzC,CAAC,CAAC,aAAa,GAAG,MAAQ,EAAA,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,MAAM,CAAA,EAAE,CAAC;AAClF,gBAAA,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;gBACzB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AAC3D,aAAA;AACD,YAAA,OAAO,CAAC,CAAC;AACV,SAAA;AAED,QAAA,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAC/B,IAAI,OAAO,GAAG,uBAAuB,CAAC;QACtC,IAAI,OAAO,GAAG,MAAM,CAAC;QAErB,IAAI,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACnD,IAAI,SAAS,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;AAC1C,YAAA,IAAI,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,YAAA,IAAI,KAAK,GAAG,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,UAAU,GAAG,SAAS,CAAC;;AAGtE,YAAA,IAAI,GAAG,GAAG,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3F,YAAA,OAAO,GAAG,KAAK,GAAG,MAAM,GAAG,GAAG,CAAC;AAChC,SAAA;QAED,IAAI;YACF,IAAI,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAqB,CAAC;YAC5E,IAAI,aAAa,IAAI,IAAI,EAAE;AACzB,gBAAA,IAAI,MAAM,GAAG,aAAa,CAAC,SAAS,EAAE,CAAC;gBACvC,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,SAAS,IAAI,IAAI,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,IAAI,EAAE,EAAE;AAClH,oBAAA,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC;AACnC,iBAAA;AACD,gBAAA,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,OAAO,IAAI,IAAI,IAAI,MAAM,CAAC,OAAO,IAAI,EAAE,EAAE;AACpE,oBAAA,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AAC1B,iBAAA;AACF,aAAA;AACF,SAAA;AAAC,QAAA,OAAO,GAAG,EAAE;;AAEb,SAAA;QAED,IAAI,CAAC,eAAe,GAAG;YACrB,YAAY,GAAA;AACV,gBAAA,OAAO,OAAO,CAAC;aAChB;YACD,wBAAwB,GAAA;AACtB,gBAAA,IAAI,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACpC,IAAI,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC9D,IAAI,MAAM,GAAG,EAAE,CAAC;AAChB,gBAAA,MAAM,CAAC,GAAG,CAAC,IAAI,IAAG;AAChB,oBAAA,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;oBAChC,MAAM,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAA;AACvC,iBAAC,CAAC,CAAA;AACF,gBAAA,OAAO,MAAM,CAAC;aACf;YACD,UAAU,GAAA;gBACR,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;aACtC;YACD,SAAS,GAAA;AACP,gBAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC;aACvB;YACD,WAAW,GAAA;AACT,gBAAA,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC;aACzB;YACD,aAAa,GAAA;AACX,gBAAA,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC;aAC3B;SACF,CAAC;AAEF,QAAA,IAAI,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAEtC,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,YAAY,GAAG,OAAO,GAAG,WAAW,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,IAAG;AACjH,YAAA,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACZ,YAAA,IAAI,GAAG,GAAG,CAAC,CAAC,gBAAgB,CAAW,CAAC;YAExC,IAAI,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,YAAA,IAAI,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAEvD,YAAA,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,GAAG,SAAS,GAAG,YAAY,GAAG,OAAO,GAAG,GAAG,CAAC;YAE9E,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;AAC7C,YAAA,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,GAAG,2BAA2B,CAAC;YAC/D,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AAC5D,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC;QAE7B,OAAO,IAAI,CAAC,eAAe,CAAC;KAC7B;IAED,gBAAgB,GAAA;AACd,QAAA,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;AAC5B,QAAA,IAAI,GAAG,CAAC,SAAS,EAAE,IAAI,IAAI,IAAI,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE;AAEpD,YAAA,IAAI,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAEtC,YAAA,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;AAC1E,YAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAEd,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAA,EAAE,CAAC,CAAC,CAAC;AACxF,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;YAC7C,IAAI,CAAC,GAAG,CAAC,mBAAmB,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;AAChD,YAAA,OAAO,IAAI,UAAU,CAAS,GAAG,IAAG;AAClC,gBAAA,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;AACnD,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;IAID,aAAa,CAAC,sBAA+B,KAAK,EAAA;;AAEhD,QAAA,IAAI,MAAM,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC;AAC7C,QAAA,IAAI,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;AAEhC,QAAA,IAAI,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AACtB,QAAA,IAAI,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAG9B,QAAA,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,EAAE;YAC1B,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,wBAAwB,EAAE,CAAC;AACtD,YAAA,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AAClB,YAAA,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAC3B,SAAA;QAED,IAAI,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,mBAAmB,EAAE;AACjE,YAAA,IAAI,GAAG,GAAG,IAAI,UAAU,CAAe,GAAG,IAAG;AAC3C,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AACtB,aAAC,CAAC,CAAC;AACH,YAAA,OAAO,GAAG,CAAC;AACZ,SAAA;AAGD,QAAA,IAAI,GAAG,GAAe,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAC/D,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,EAAE;YACjC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAChC,YAAA,MAAM,CAAC,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC;AAC7B,YAAA,OAAO,IAAI,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAChD,SAAA;QAED,IAAI,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE;YAC1C,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YAC/C,IAAI,GAAG,IAAI,IAAI,EAAE;gBACf,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAChC,gBAAA,MAAM,CAAC,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC;AAC7B,gBAAA,OAAO,IAAI,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAChD,aAAA;AAAM,iBAAA;AACL,gBAAA,OAAO,IAAI,UAAU,CAAC,GAAG,IAAG;AAC1B,oBAAA,IAAI,EAAE,GAAG,WAAW,CAAC,MAAK;AACxB,wBAAA,IAAI,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;wBACnD,IAAI,GAAG,IAAI,IAAI,EAAE;4BACf,aAAa,CAAC,EAAE,CAAC,CAAC;4BAClB,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAChC,4BAAA,MAAM,CAAC,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC;AAC7B,4BAAA,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAClB,yBAAA;qBACF,EAAE,GAAG,CAAC,CAAC;AACV,iBAAC,CAAC,CAAC;AACJ,aAAA;AACF,SAAA;AAAM,aAAA;;YAEL,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACnC,YAAA,OAAO,IAAI,UAAU,CAAe,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9D,SAAA;KACF;IAID,GAAG,CAAI,WAAmB,EAAE,EAAU,EAAE,MAAc,EAAE,SAAiB,IAAI,EAAA;QAC3E,IAAI,OAAO,GAAG,IAAI,WAAW,CAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAC;AAChE,QAAA,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;AACtB,YAAA,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AACnE,SAAA;QACD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;QACpD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QACjD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,iCAAiC,CAAC,CAAC;QAC5E,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,6BAA6B,CAAC,CAAC;QAClE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;QAEtD,IAAI,SAAS,GAAG,EAAE,CAAC;QACnB,IAAI,GAAG,GAAG,GAAG,CAAC;AAEd,QAAA,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI,EAAE,EAAE;AAClC,YAAA,SAAS,GAAG,GAAG,GAAG,UAAU,GAAG,MAAM,CAAC;YACtC,GAAG,GAAG,GAAG,CAAC;AACX,SAAA;QAED,IAAI,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAEzC,QAAA,IAAI,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAE/C,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,WAAW,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,SAAS,GAAG,GAAG,CAAC;AAC3G,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAEd,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;KACrE;AAMD,IAAA,KAAK,CAAI,WAAmB,EAAE,MAAc,EAAE,MAAc,EAAE,OAAkB,GAAA,IAAI,EAAE,GAAA,GAAc,CAAC,EAAE,QAAiB,KAAK,EAAA;QAC3H,IAAI,EAAE,GAAG,IAAI,CAAC;QACd,IAAI,OAAO,GAAG,IAAI,WAAW,CAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAC;AAChE,QAAA,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;AACtB,YAAA,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AACnE,SAAA;QACD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;QACpD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QACjD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,iCAAiC,CAAC,CAAC;QAC5E,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,iCAAiC,CAAC,CAAC;QACtE,IAAI,GAAG,GAAG,CAAC,EAAE;AACX,YAAA,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,oBAAoB,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC3E,SAAA;AAAM,aAAA;AACN,SAAA;QACD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;AAEtD,QAAA,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;AACvE,QAAA,IAAI,CAAC,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI,EAAE,CAAC,KAAK,OAAO,IAAI,IAAI,IAAI,OAAO,IAAI,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE;YACzH,GAAG,IAAI,GAAG,CAAC;AACZ,SAAA;QACD,IAAI,GAAG,GAAG,EAAE,CAAC;AAEb,QAAA,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI,EAAE,EAAE;AAClC,YAAA,GAAG,IAAI,UAAU,GAAG,MAAM,CAAC;YAC3B,GAAG,GAAG,GAAG,CAAC;AACX,SAAA;AAED,QAAA,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI,EAAE,EAAE;AAClC,YAAA,GAAG,IAAI,GAAG,GAAG,UAAU,GAAG,MAAM,CAAC;YACjC,GAAG,GAAG,GAAG,CAAC;AACX,SAAA;AAED,QAAA,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,IAAI,EAAE,EAAE;AACpC,YAAA,GAAG,IAAI,GAAG,GAAG,WAAW,GAAG,OAAO,CAAC;YACnC,GAAG,GAAG,GAAG,CAAC;AACX,SAAA;AAED,QAAA,IAAI,KAAK,EAAE;AACT,YAAA,GAAG,IAAI,GAAG,GAAG,aAAa,CAAC;YAC3B,GAAG,GAAG,GAAG,CAAC;AACX,SAAA;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAG;AACnF,YAAA,IAAI,MAAM,GAAG,EAAE,CAAC,kBAAkB,CAAI,QAAQ,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/D,YAAA,OAAO,MAAM,CAAC;SACf,CAAC,CAAC,CAAC;KACL;IAED,MAAM,CAAI,UAAkB,EAAE,MAAS,EAAA;QACrC,IAAI,OAAO,GAAG,IAAI,WAAW,CAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAC;AAChE,QAAA,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;AACtB,YAAA,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AACnE,SAAA;QACD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;QACpD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QACjD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,iCAAiC,CAAC,CAAC;QAC5E,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,6BAA6B,CAAC,CAAC;QAClE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,uBAAuB,CAAC,CAAC;AAE5D,QAAA,IAAI,OAAO,GAAG;AACZ,YAAA,OAAO,EAAE,OAAO;SACjB,CAAA;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,YAAY,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,UAAU,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAC7J,CAAC,GAAsB,KAAI;AACzB,YAAA,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,EAAE;gBACpB,IAAI,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAW,CAAC;gBAC3D,IAAI,MAAM,GAAG,EAAE,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC7E,gBAAA,OAAO,MAAM,CAAC;AACf,aAAA;AAAM,iBAAA;gBACL,OAAO,GAAG,CAAC,IAAI,CAAC;AACjB,aAAA;SACF,CACF,CAAC,CAAC;KACJ;IAID,MAAM,CAAI,UAAkB,EAAE,MAAS,EAAE,EAAU,EAAE,SAAiB,IAAI,EAAA;QACxE,IAAI,OAAO,GAAG,IAAI,WAAW,CAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAC;AAChE,QAAA,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;AACtB,YAAA,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AACnE,SAAA;QACD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;QACpD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QACjD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,iCAAiC,CAAC,CAAC;QAC5E,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,6BAA6B,CAAC,CAAC;QAClE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,uBAAuB,CAAC,CAAC;QAE5D,IAAI,EAAE,GAAG,EAAE,CAAC;QACZ,IAAI,MAAM,IAAI,IAAI,EAAE;AAClB,YAAA,EAAE,GAAG,WAAW,GAAG,MAAM,CAAC;AAC3B,SAAA;QAED,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,UAAU,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC;AAC7F,QAAA,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAEf,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAG;AAC9F,YAAA,IAAI,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,UAAU,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,UAAU,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;AAC5H,gBAAA,OAAO,MAAM,CAAC;AACf,aAAA;AACD,YAAA,OAAO,QAAa,CAAC;SACtB,CAAC,CAAC,CAAC;KACL;IAID,GAAG,CAAC,UAAkB,EAAE,EAAU,EAAE,KAAa,EAAE,KAAU,EAAE,eAAA,GAA0B,IAAI,EAAA;QAC3F,IAAI,eAAe,IAAI,IAAI;YAAE,eAAe,GAAG,OAAO,CAAC;QAEvD,IAAI,OAAO,GAAG,IAAI,WAAW,CAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAC;AAChE,QAAA,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;AACtB,YAAA,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AACnE,SAAA;QACD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;QACpD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QACjD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,iCAAiC,CAAC,CAAC;QAC5E,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,6BAA6B,CAAC,CAAC;QAElE,IAAI,CAAC,GAAG,EACP,CAAC;AAEF,QAAA,CAAC,CAAC,eAAe,CAAC,GAAG,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAGZ,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,UAAU,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,GAAG,KAAK,CAAC;AAChG,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAEd,QAAA,IAAI,CAAC,CAAC,eAAe,CAAC,IAAI,IAAI,EAAE;AAC9B,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC;AACjG,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC;AACjG,SAAA;KACF;IAED,MAAM,CAAC,UAAkB,EAAE,EAAU,EAAA;QACnC,IAAI,OAAO,GAAG,IAAI,WAAW,CAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAC;AAChE,QAAA,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;AACtB,YAAA,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AACnE,SAAA;QACD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;QACpD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QACjD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,iCAAiC,CAAC,CAAC;QAC5E,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,6BAA6B,CAAC,CAAC;QAElE,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,UAAU,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC;AACvF,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACd,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC;KACjG;AAED,IAAA,YAAY,CAAC,KAAa,EAAA;AACxB,QAAA,OAAO,IAAI,CAAC,wBAAwB,EAAE,CAAC,KAAK,CAAC,CAAC;KAC/C;IAED,SAAS,CAAC,QAAgB,EAAE,MAAc,EAAE,MAAc,EAAE,IAAY,EAAE,OAAe,EAAA;QACvF,IAAI,OAAO,GAAG,IAAI,WAAW,CAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAC;AAChE,QAAA,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;AACtB,YAAA,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AACnE,SAAA;QACD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;QACpD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QACjD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,iCAAiC,CAAC,CAAC;QAC5E,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,6BAA6B,CAAC,CAAC;AAElE,QAAA,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,QAAQ,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,OAAO,GAAG,OAAO,CAAC;AAE3H,QAAA,IAAI,IAAI,GAAG;YACT,WAAW,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,aAAa,EAAE,GAAG,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG;SACxF,CAAA;QAED,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACd,YAAA,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAChB,SAAA;AAED,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC;KACrG;IAED,YAAY,CAAC,QAAgB,EAAE,MAAc,EAAE,MAAc,EAAE,IAAY,EAAE,OAAe,EAAA;QAC1F,IAAI,OAAO,GAAG,IAAI,WAAW,CAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAC;AAChE,QAAA,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;AACtB,YAAA,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AACnE,SAAA;QACD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;QACpD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QAEjD,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,QAAQ,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,OAAO,GAAG,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,aAAa,EAAE,GAAG,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;AAC7M,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEd,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAG;AACtF,YAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACnB,YAAA,OAAO,IAAI,CAAC;SACb,CAAC,CAAC,CAAC;KACL;IAID,IAAI,CAAC,IAAY,EAAE,IAAY,EAAE,SAAoB,GAAA,IAAI,EAAE,OAAA,GAAkB,IAAI,EAAA;QAC/E,IAAI,OAAO,GAAG,IAAI,WAAW,CAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAC;AAChE,QAAA,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;AACtB,YAAA,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AACnE,SAAA;QACD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;QACpD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;AAEjD,QAAA,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QAChE,IAAI,SAAS,IAAI,IAAI,EAAE;YACrB,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,SAAS,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AAC7G,SAAA;QAED,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YACnC,GAAG,IAAI,IAAI,CAAC;AACb,SAAA;AAAM,aAAA;YACL,GAAG,IAAI,IAAI,CAAC;AACb,SAAA;AAED,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAG;AACnF,YAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACnB,YAAA,OAAO,QAAQ,CAAC;SACjB,CAAC,CAAC,CAAC;KACL;IAKD,MAAM,CAAC,IAAY,EAAE,IAAS,EAAE,SAAoB,GAAA,IAAI,EAAE,OAAA,GAAkB,IAAI,EAAA;QAC9E,IAAI,OAAO,GAAG,IAAI,WAAW,CAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAC;AAChE,QAAA,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;AACtB,YAAA,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AACnE,SAAA;QACD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;QACpD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;AAEjD,QAAA,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QAChE,IAAI,SAAS,IAAI,IAAI,EAAE;YACrB,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,SAAS,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AAC7G,SAAA;AACD,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAEd,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAG;AAC1F,YAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACnB,YAAA,OAAO,QAAQ,CAAC;SACjB,CAAC,CAAC,CAAC;KACL;AAED,IAAA,GAAG,CAAC,OAAY,EAAA;QACd,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,IAAI,OAAO,OAAO,IAAI,QAAQ,EAAE;AAC9B,gBAAA,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACtB,aAAA;AAAM,iBAAA;AACL,gBAAA,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACtB,aAAA;AACF,SAAA;KACF;AAGO,IAAA,SAAS,CAAC,GAA6B,EAAA;QAC7C,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAC3D,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE;AACxE,gBAAA,IAAI,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;AAChC,gBAAA,MAAM,CAAC,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC;AAC7B,gBAAA,MAAM,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC;AACnB,gBAAA,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAClB,aAAA;AAAM,iBAAA;gBACL,IAAI,CAAC,QAAQ,EAAE,CAAC;AAChB,gBAAA,IAAI,IAAI,CAAC,QAAQ,GAAG,GAAG,EAAE;;AAEvB,oBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AACrB,iBAAA;AACF,aAAA;SACF,EAAE,IAAI,CAAC,CAAC;KACV;AAEO,IAAA,iBAAiB,CAAC,EAAU,EAAA;QAClC,IAAI,EAAE,IAAI,IAAI,EAAE;YAAE,EAAE,GAAG,SAAS,CAAC;AAAE,SAAA;QACnC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACtB,QAAA,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,QAAA,IAAI,CAAC,UAAU,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;KAC3C;IAEO,YAAY,CAAC,MAAc,EAAE,GAAW,EAAA;AAC9C,QAAA,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,IAAI,IAAI,EAAE;AAAE,YAAA,OAAO,EAAE,CAAC;QAE1E,IAAI,GAAG,GAAG,GAAG,GAAG,UAAU,GAAG,MAAM,CAAC,cAAc,EAAE,CAAC;AAErD,QAAA,IAAI,MAAM,CAAC,UAAU,IAAI,IAAI,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7D,YAAA,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,IAAG;AAC7B,gBAAA,GAAG,IAAI,GAAG,GAAG,EAAE,CAAC,cAAc,EAAE,CAAC;AACnC,aAAC,CAAC,CAAC;AACJ,SAAA;AACD,QAAA,OAAO,GAAG,CAAC;KACZ;AAEO,IAAA,kBAAkB,CAAI,QAAa,EAAE,GAAW,EAAE,KAAe,EAAE,SAAiB,EAAA;QAC1F,IAAI,EAAE,GAAG,IAAI,CAAC;AACd,QAAA,IAAI,MAAM,GAAG;AACX,YAAA,OAAO,EAAE,QAAQ,CAAC,gBAAgB,CAAC;AACnC,YAAA,KAAK,EAAE,QAAQ,CAAC,cAAc,CAAC;AAC/B,YAAA,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAQ;AAC/B,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,SAAS,EAAE,SAAS;AACpB,YAAA,GAAG,EAAE,GAAG;AACR,YAAA,QAAQ,EAAE,IAAI;SACf,CAAA;AAED,QAAA,IAAI,QAAQ,GAAG,QAAQ,CAAC,iBAAiB,CAAW,CAAC;AAErD,QAAA,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,IAAI,EAAE,EAAE;YACtC,IAAI,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACrC,YAAA,QAAQ,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC,YAAY,EAAE,GAAG,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACtE,YAAA,MAAM,GAAG;gBACP,OAAO,EAAE,MAAM,CAAC,OAAO;AACvB,gBAAA,KAAK,EAAE,QAAQ,CAAC,cAAc,CAAC;gBAC/B,KAAK,EAAE,MAAM,CAAC,KAAK;AACnB,gBAAA,KAAK,EAAE,KAAK;AACZ,gBAAA,SAAS,EAAE,SAAS;AACpB,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,GAAG,EAAE,GAAG;AACR,gBAAA,QAAQ,EAAE,QAAQ;gBAClB,IAAI,EAAE,MAAoC;oBACxC,IAAI,OAAO,GAAG,IAAI,WAAW,CAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAC;AAChE,oBAAA,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;AACtB,wBAAA,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AACnE,qBAAA;oBACD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;oBACpD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;oBACjD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,iCAAiC,CAAC,CAAC;oBAC5E,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,iCAAiC,CAAC,CAAC;oBACtE,IAAI,GAAG,GAAG,CAAC,EAAE;AACX,wBAAA,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,oBAAoB,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC3E,qBAAA;oBACD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;oBAEtD,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAG;AAC7E,wBAAA,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACrB,wBAAA,IAAI,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC;AAChE,wBAAA,OAAO,EAAE,CAAC;qBACX,CAAC,CAAC,CAAC;iBACL;aACF,CAAA;AACF,SAAA;AAED,QAAA,IAAI,MAAM,CAAC,SAAS,IAAI,CAAC,EAAE;AACzB,YAAA,MAAM,CAAC,IAAI,GAAG,MAAoC;gBAChD,IAAI,OAAO,GAAG,IAAI,WAAW,CAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAC;AAChE,gBAAA,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;AACtB,oBAAA,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AACnE,iBAAA;gBACD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;gBACpD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;gBACjD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,iCAAiC,CAAC,CAAC;gBAC5E,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,iCAAiC,CAAC,CAAC;gBACtE,IAAI,GAAG,GAAG,CAAC,EAAE;AACX,oBAAA,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,oBAAoB,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC3E,iBAAA;AAAM,qBAAA;AACN,iBAAA;gBACD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;AAEtD,gBAAA,IAAI,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;gBAClD,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAG;AAC7E,oBAAA,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;oBAChD,IAAI,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAI,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;AAC9E,oBAAA,OAAO,EAAE,CAAC;iBACX,CAAC,CAAC,CAAC;AACN,aAAC,CAAA;AACF,SAAA;AACD,QAAA,OAAO,MAAM,CAAC;KACf;IAEO,wBAAwB,GAAA;AAC9B,QAAA,IAAI,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QACpC,IAAI,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9D,IAAI,MAAM,GAAG,EAAE,CAAC;AAChB,QAAA,MAAM,CAAC,GAAG,CAAC,IAAI,IAAG;AAChB,YAAA,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAChC,MAAM,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAA;AACvC,SAAC,CAAC,CAAA;AACF,QAAA,OAAO,MAAM,CAAC;KACf;AAEO,IAAA,MAAM,CAAC,CAAS,EAAA;;AAEtB,QAAA,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;AACxB,YAAA,OAAO,CAAC,CAAC;AACV,SAAA;AAED,QAAA,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAE5D,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AACvB,YAAA,OAAO,CAAC,CAAC;AACV,SAAA;QACD,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;KACnH;IAEO,gBAAgB,GAAA;QACtB,IAAI,OAAO,GAAG,IAAI,WAAW,CAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAC;AAChE,QAAA,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;YACtB,IAAI,CAAC,GAAG,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AACzC,YAAA,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AACnE,SAAA;QACD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;QACpD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QACjD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,iCAAiC,CAAC,CAAC;QAC5E,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,iCAAiC,CAAC,CAAC;AACtE,QAAA,OAAO,OAAO,CAAC;KAChB;AAGD,IAAA,UAAU,CAAC,CAAS,EAAA;QAClB,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;YAC9C,OAAO,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AACzC,SAAA;AACD,QAAA,OAAO,CAAC,CAAC;KACV;;uGAtoBU,UAAU,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;2GAAV,UAAU,EAAA,CAAA,CAAA;2FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBADtB,UAAU;;;MCZE,cAAc,CAAA;IAIvB,WAAoB,CAAA,gBAAkC,EAAU,UAAsB,EAAA;AAAlE,QAAA,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;AAAU,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;KAAM;IAE5F,YAAY,GAAA;AACR,QAAA,IAAI,MAAM,CAAC,uBAAuB,CAAC,IAAI,IAAI,EAAE;AACzC,YAAA,MAAM,mDAAmD,CAAC;AAC7D,SAAA;QAED,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC;AAEpD,QAAA,IAAI,OAAO,GAAG,IAAI,MAAM,CAAC,uBAAuB,CAAC,CAAC,IAAI,CAAC,UAAU,CAAgB,CAAC;AAClF,QAAA,IAAI,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAE1D,QAAA,IAAI,UAAU,EAAE;YACZ,OAAO,CAAC,oBAAoB,EAAE,CAAC;AAClC,SAAA;AAED,QAAA,IAAI,UAAU,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;AAEzC,QAAA,IAAI,CAAC,UAAU,IAAI,UAAU,EAAE;YAC7B,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,IAAQ,KAAI;AACrC,gBAAA,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;AAClB,aAAC,CAAC,CAAC;YAED,UAAU,CAAC,MAAK;AACZ,gBAAA,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;aACzE,EAAE,CAAC,CAAC,CAAC;AACN,YAAA,OAAO,CAAC,CAAC;AACZ,SAAA;AAED,QAAA,IAAI,UAAU,EAAE;AACZ,YAAA,MAAM,UAAU,CAAC;AACpB,SAAA;QAED,IAAI,CAAC,UAAU,EAAE;AACb,YAAA,IAAI,IAAI,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;YACnC,IAAI,IAAI,IAAI,IAAI,EAAE;gBACd,OAAO,CAAC,KAAK,EAAE,CAAC;AACnB,aAAA;AAAM,iBAAA;AACH,gBAAA,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACrB,aAAA;AACJ,SAAA;AAED,QAAA,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,GAAO,KAAI;YACjC,UAAU,CAAC,MAAK;AACZ,gBAAA,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnB,aAAC,CAAC,CAAC;AACP,SAAC,CAAC,CAAC;KACN;IAEO,QAAQ,CAAC,KAAa,EAAE,KAAa,EAAA;AACzC,QAAA,IAAI,KAAK,EAAE;AACP,YAAA,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACtB,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;AACvB,YAAA,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACtB,SAAA;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC;AAC9B,QAAA,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACvB;;2GA/DQ,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;+GAAd,cAAc,EAAA,CAAA,CAAA;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,UAAU;;;MCtCE,eAAe,CAAA;AAG1B,IAAA,WAAA,GAAA;AAQQ,QAAA,IAAQ,CAAA,QAAA,GAAG,EAAE,CAAC;AAEd,QAAA,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;AAQ1B,QAAA,IAAQ,CAAA,QAAA,GAAW,CAAC,CAAC;AAGrB,QAAA,IAAM,CAAA,MAAA,GAAW,CAAC,CAAC;QApBzB,IAAI,CAAC,aAAa,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;KAC1D;IAEM,YAAY,GAAA;QACjB,OAAO,IAAI,CAAC,aAAa,CAAC;KAC3B;AAOD;;AAEG;IACH,IAAW,OAAO,KAAK,OAAO,IAAI,CAAC,QAAQ,CAAA,EAAE;;IAG7C,IAAW,OAAO,KAAK,OAAO,IAAI,CAAC,QAAQ,CAAA,EAAE;;IAG7C,IAAW,KAAK,KAAK,OAAO,IAAI,CAAC,MAAM,CAAA,EAAE;;AAEjC,IAAA,GAAG,CAAC,CAAS,EAAA;AACnB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;KACtB;IAEO,MAAM,CAAC,CAAS,EAAE,KAAc,EAAA;QACtC,IAAI,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACnC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAE7B,QAAA,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;QAE5B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;AAEzC,QAAA,IAAI,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE;YAC5B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACxC,SAAA;AAED,QAAA,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,MAAM,EAAE,CAAC;AACf,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,QAAQ,EAAE,CAAC;AACjB,SAAA;KACF;;4GAjDU,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;gHAAf,eAAe,EAAA,CAAA,CAAA;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,UAAU;;;MCOE,cAAc,CAAA;AAEzB,IAAA,WAAA,CAAoB,QAAyB,EAAA;AAAzB,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAiB;AADrC,QAAA,IAAU,CAAA,UAAA,GAAW,CAAC,CAAC;KACmB;IAElD,SAAS,CAAC,GAAqB,EAAE,IAAiB,EAAA;QAChD,IAAI,CAAC,UAAU,EAAE,CAAC;AAClB,QAAA,IAAI,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;QACzB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AAEzB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;AACpB,aAAA,IAAI,CACL,GAAG,CAAC,CAAC,KAAqB,KAAI;YAC5B,IAAI,KAAK,YAAY,YAAY,EAAE;gBACjC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AACpC,aAAA;AACD,YAAA,OAAO,KAAK,CAAC;AACf,SAAC,CAAC,EACF,UAAU,CAAC,KAAK,IAAI;YAClB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AAClC,YAAA,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;SAC1B,CAAC,CACH,CAAC;KACH;;2GAtBU,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;+GAAd,cAAc,EAAA,CAAA,CAAA;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,UAAU;;;ACCX,MAAM,4BAA4B,GAAG,sCAAsC,CAAC;MAM/D,qBAAqB,CAAA;AAEhC,IAAA,WAAA,CAAY,CAAS,EAAA;AADb,QAAA,IAAC,CAAA,CAAA,GAAW,EAAE,CAAC;AAErB,QAAA,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;KACZ;IAED,6BAA6B,GAAA;QAC3B,OAAO,IAAI,CAAC,CAAC,CAAC;KACf;AACF,CAAA;MAEY,MAAM,CAAA;IASjB,WAAY,CAAA,UAAkB,EAAE,OAAe,EAAE,aAAsB,KAAK,EAAE,cAAsB,IAAI,EAAA;AANxG,QAAA,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;AAO3B,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;AAC9B,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;AACxB,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;AAE9B,QAAA,IAAI,WAAW,IAAI,IAAI,IAAI,WAAW,IAAI,EAAE,EAAE;AAC5C,YAAA,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;AACjC,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC;AACzE,YAAA,QAAQ,CAAC;AACP,gBAAA,KAAK,QAAQ;AAAE,oBAAA,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;oBAAC,MAAM;AAClD,gBAAA,KAAK,cAAc;AAAE,oBAAA,IAAI,CAAC,YAAY,GAAG,aAAa,CAAC;oBAAC,MAAM;AAC9D,gBAAA,KAAK,SAAS;AAAE,oBAAA,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC;oBAAC,MAAM;AACpD,gBAAA,KAAK,YAAY;AAAE,oBAAA,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;oBAAC,MAAM;AAC1D,gBAAA,KAAK,OAAO;AAAE,oBAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;oBAAC,MAAM;AAChD,gBAAA,KAAK,mBAAmB;AAAE,oBAAA,IAAI,CAAC,YAAY,GAAG,kBAAkB,CAAC;oBAAC,MAAM;AACxE,gBAAA,SAAS;AACP,oBAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,YAAY,IAAI,CAAC,IAAI,IAAI,EAAE;AAC5D,wBAAA,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC/C,qBAAA;AAAM,yBAAA;wBACL,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;AACvF,qBAAA;oBACD,MAAM;AACP,iBAAA;AACF,aAAA;AACF,SAAA;KACF;IAGD,iBAAiB,CAAC,+BAAuC,IAAI,EAAA;AAC3D,QAAA,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,4BAA4B,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;KACxG;AAED,IAAA,YAAY,CAAC,IAAY,EAAA;QACvB,IAAI,IAAI,IAAI,aAAa,IAAI,IAAI,IAAI,cAAc,IAAI,IAAI,IAAI,UAAU,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,aAAa,IAAI,IAAI,IAAI,SAAS,IAAI,IAAI,IAAI,QAAQ,EAAE;AAC3J,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd;IAID,OAAO,CAAC,SAAkB,KAAK,EAAA;QAC7B,IAAI,MAAM,GAAG,EAAc,CAAC;AAE5B,QAAA,IAAI,OAAO,GAAW,IAAI,CAAC,QAAQ,CAAC;AACpC,QAAA,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE;AACrB,YAAA,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ;gBAAE,SAAS;AACpC,YAAA,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;gBAAE,SAAS;AAEtC,YAAA,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,IAAI,OAAO,CAAC,KAAK,WAAW,IAAI,CAAC,IAAI,IAAI,EAAE;AACzC,gBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;oBACpB,SAAS;AACV,iBAAA;gBACD,IAAI,CAAC,YAAY,MAAM,EAAE;oBACvB,SAAS;AACV,iBAAA;AACF,aAAA;AAED,YAAA,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;gBAC7B,IAAI,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,eAAe,EAAE;oBACnD,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,QAAQ,CAAC,CAAC;AACpC,iBAAA;AAAM,qBAAA;AACL,oBAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnB,iBAAA;AACF,aAAA;AACF,SAAA;AACD,QAAA,OAAO,MAAM,CAAC;KACf;AACF,CAAA;AAEK,MAAO,QAA2B,SAAQ,KAAQ,CAAA;IACtD,WAAY,CAAA,KAAa,EAAE,KAAa,EAAE,OAAe,EAAE,WAAoB,EAAE,CAAI,EAAA;QACnF,KAAK,CAAC,CAAC,CAAC,CAAC;QACT,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAClD,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AACxB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACvB,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;AAC/B,QAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACd;AASD,IAAA,GAAG,CAAC,MAAc,EAAA;AAChB,QAAA,IAAI,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC;AAC/B,QAAA,IAAI,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC3B,QAAA,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC;AAC5B,QAAA,IAAI,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC;AAErB,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACrB,YAAA,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;AAC1B,YAAA,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;AACnB,YAAA,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;AACzB,YAAA,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;AACtB,SAAA;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAG;AAC1F,YAAA,IAAI,CAAC,IAAI,CAAC,MAAW,CAAC,CAAC;AACvB,YAAA,OAAO,IAAI,CAAC;SACb,CAAC,CAAC,CAAC;KACL;AAED,IAAA,MAAM,CAAC,MAAc,EAAA;AACnB,QAAA,IAAI,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC;AAC/B,QAAA,IAAI,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC3B,QAAA,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC;AAC5B,QAAA,IAAI,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC;AAErB,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACrB,YAAA,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;AAC1B,YAAA,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;AACnB,YAAA,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;AACzB,YAAA,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;AACtB,SAAA;QAED,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAG;YAC7F,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAW,CAAC,CAAC;YACtC,IAAI,KAAK,IAAI,CAAC,EAAE;AACd,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACvB,aAAA;AACD,YAAA,OAAO,IAAI,CAAC;SACb,CAAC,CAAC,CAAC;KACL;AACF,CAAA;MAEY,eAAe,CAAA;AAM1B,IAAA,WAAA,CAAY,EAAA,GAAa,IAAI,EAAE,UAAqB,GAAA,IAAI,EAAE,4BAAuC,GAAA,IAAI,EAAE,WAAA,GAAsB,IAAI,EAAA;AAC/H,QAAA,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;AACb,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AAC7B,QAAA,IAAI,CAAC,4BAA4B,GAAG,4BAA4B,CAAC;AACjE,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAE/B,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,IAAI,WAAW,IAAI,IAAI,EAAE;AAClD,YAAA,QAAQ,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;AACnC,gBAAA,KAAK,QAAQ;AAAE,oBAAA,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;oBAAC,MAAM;AACjD,gBAAA,KAAK,cAAc;AAAE,oBAAA,IAAI,CAAC,WAAW,GAAG,aAAa,CAAC;oBAAC,MAAM;AAC7D,gBAAA,KAAK,SAAS;AAAE,oBAAA,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;oBAAC,MAAM;AACnD,gBAAA,KAAK,YAAY;AAAE,oBAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;oBAAC,MAAM;AACzD,gBAAA,KAAK,OAAO;AAAE,oBAAA,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;oBAAC,MAAM;AAC/C,gBAAA,SAAS;oBACP,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;oBACzF,MAAM;AACP,iBAAA;AACF,aAAA;AACF,SAAA;KACF;IAQD,OAAO,CAAC,EAAU,EAAE,EAAU,EAAA;QAC5B,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;KACzB;IAED,IAAI,CAAC,UAAkB,EAAE,4BAAoC,EAAA;AAC3D,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AAC7B,QAAA,IAAI,CAAC,4BAA4B,GAAG,4BAA4B,CAAC;AACjE,QAAA,OAAO,IAAI,CAAC;KACb;IAED,KAAK,GAAA;AACH,QAAA,IAAI,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;AACnC,QAAA,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;AACpB,QAAA,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AACxB,QAAA,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC;AAC/B,QAAA,MAAM,CAAC,4BAA4B,GAAG,IAAI,CAAC,4BAA4B,CAAC;AACxE,QAAA,OAAO,MAAM,CAAC;KACf;IAED,gCAAgC,GAAA;QAC9B,IAAI,IAAI,CAAC,4BAA4B,IAAI,IAAI,IAAI,IAAI,CAAC,4BAA4B,IAAI,EAAE,EAAE;AACxF,YAAA,MAAM,wEAAwE,CAAC;AAChF,SAAA;QAED,IAAI,IAAI,CAAC,4BAA4B,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;YAC7D,OAAO,IAAI,CAAC,4BAA4B,CAAC;AAC1C,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,4BAA4B,GAAG,aAAa,CAAC;KAC1D;AAED,IAAA,MAAM,CAAC,GAAoB,EAAA;AACzB,QAAA,OAAO,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,WAAW,IAAI,GAAG,CAAC,WAAW,CAAC;KACjE;IAED,cAAc,GAAA;AACZ,QAAA,OAAO,EAAE,WAAW,EAAG,GAAG,GAAG,IAAI,CAAC,UAAU,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAI,GAAG,EAAC,CAAC;KAC9G;AAED,IAAA,OAAO,IAAI,CAAC,IAAqB,EAAE,IAAqB,EAAA;AACtD,QAAA,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE;AAChC,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;QAED,IAAI,GAAG,GAAW,IAAI,CAAC;QACvB,IAAI,GAAG,GAAW,IAAI,CAAC;QACvB,IAAI,IAAI,IAAI,IAAI;AAAE,YAAA,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC;QAChC,IAAI,IAAI,IAAI,IAAI;AAAE,YAAA,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC;QAChC,OAAO,GAAG,IAAI,GAAG,CAAC;KACnB;AACF,CAAA;MAEY,cAAc,CAAA;AAIzB,IAAA,WAAA,CAAY,KAAgB,GAAA,IAAI,EAAE,IAAA,GAAe,IAAI,EAAA;AACnD,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;KAClB;AAKD,IAAA,MAAM,CAAC,CAAiB,EAAA;AACtB,QAAA,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC;AAAE,YAAA,OAAO,IAAI,CAAC;AACtE,QAAA,OAAO,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC;KAC9B;IAED,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,GAAG,IAAI,cAAc,EAAE,CAAC;AAC7B,QAAA,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AACnB,QAAA,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACrB,QAAA,OAAO,CAAC,CAAC;KACV;IAED,cAAc,GAAA;QACZ,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;AAED,IAAA,OAAO,IAAI,CAAC,EAAkB,EAAE,EAAkB,EAAA;AAChD,QAAA,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,IAAI;AAAE,YAAA,OAAO,IAAI,CAAC;QAC1C,IAAI,EAAE,GAAW,IAAI,CAAC;QACtB,IAAI,EAAE,GAAW,IAAI,CAAC;QACtB,IAAI,EAAE,IAAI,IAAI;AAAE,YAAA,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC;QAC9B,IAAI,EAAE,IAAI,IAAI;AAAE,YAAA,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC;QAC9B,OAAO,EAAE,IAAI,EAAE,CAAC;KACjB;AACF,CAAA;AAGW,IAAA,SAGX;AAHD,CAAA,UAAY,QAAQ,EAAA;IAClB,QAAA,CAAA,QAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAG,CAAA;IACH,QAAA,CAAA,QAAA,CAAA,IAAA,CAAA,GAAA,CAAA,CAAA,GAAA,IAAE,CAAA;AACJ,CAAC,EAHW,QAAQ,KAAR,QAAQ,GAGnB,EAAA,CAAA,CAAA,CAAA;AAEW,IAAA,WAiBX;AAjBD,CAAA,UAAY,UAAU,EAAA;IACpB,UAAA,CAAA,UAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU,CAAA;IACV,UAAA,CAAA,UAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAa,CAAA;IACb,UAAA,CAAA,UAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAY,CAAA;IACZ,UAAA,CAAA,UAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAe,CAAA;IACf,UAAA,CAAA,UAAA,CAAA,qBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,qBAAuB,CAAA;IACvB,UAAA,CAAA,UAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAgB,CAAA;IAChB,UAAA,CAAA,UAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAc,CAAA;IACd,UAAA,CAAA,UAAA,CAAA,eAAA,CAAA,GAAA,CAAA,CAAA,GAAA,eAAiB,CAAA;IACjB,UAAA,CAAA,UAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAY,CAAA;IACZ,UAAA,CAAA,UAAA,CAAA,aAAA,CAAA,GAAA,EAAA,CAAA,GAAA,aAAgB,CAAA;IAChB,UAAA,CAAA,UAAA,CAAA,aAAA,CAAA,GAAA,EAAA,CAAA,GAAA,aAAgB,CAAA;IAChB,UAAA,CAAA,UAAA,CAAA,oBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,oBAAuB,CAAA;IACvB,UAAA,CAAA,UAAA,CAAA,UAAA,CAAA,GAAA,EAAA,CAAA,GAAA,UAAa,CAAA;IACb,UAAA,CAAA,UAAA,CAAA,iBAAA,CAAA,GAAA,EAAA,CAAA,GAAA,iBAAoB,CAAA;IACpB,UAAA,CAAA,UAAA,CAAA,qBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,qBAAyB,CAAA;IACzB,UAAA,CAAA,UAAA,CAAA,WAAA,CAAA,GAAA,GAAA,CAAA,GAAA,WAAe,CAAA;AACjB,CAAC,EAjBW,UAAU,KAAV,UAAU,GAiBrB,EAAA,CAAA,CAAA,CAAA;MAEY,aAAa,CAAA;AAA1B,IAAA,WAAA,GAAA;AACE,QAAA,IAAO,CAAA,OAAA,GAAW,IAAI,CAAC;AACvB,QAAA,IAAkB,CAAA,kBAAA,GAAY,KAAK,CAAC;KACrC;AAAA,CAAA;MAEY,MAAM,CAAA;AAMjB,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;KACrB;AAED,IAAA,aAAa,CAAC,SAAiB,EAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE;YACvB,OAAO,IAAI,CAAC,KAAK,CAAC;AACnB,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,GAAG,EAAE;AACxB,YAAA,OAAO,gCAAgC,CAAC;AACzC,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,GAAG,EAAE;AACxB,YAAA,OAAO,sBAAsB,CAAC;AAC/B,SAAA;QAED,IAAI,MAAM,GAAG,EAAE,CAAC;AAChB,QAAA,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;AAEpB,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,UAAU,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;;AAE7D,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,UAAU,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;;AAEhE,SAAA;QAED,QAAQ,IAAI,CAAC,QAAQ;AACnB,YAAA,KAAK,UAAU,CAAC,YAAY,EAAE;gBAC5B,OAAO,EAAE,GAAG,UAAU,CAAC;AACxB,aAAA;AACD,YAAA,KAAK,UAAU,CAAC,mBAAmB,EAAE;gBACnC,OAAO,EAAE,GAAG,UAAU,CAAC;AACxB,aAAA;AACF,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;YACtB,MAAM,IAAI,KAAK,CAAC,uCAAuC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC1E,SAAA;QAED,IAAI,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;AAEhC,QAAA,IAAI,OAAO,IAAI,CAAC,KAAK,IAAI,QAAQ,EAAE;AACjC,YAAA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;AAC5B,SAAA;AAED,QAAA,IAAI,OAAO,IAAI,CAAC,KAAK,IAAI,SAAS,EAAE;AAClC,YAAA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,MAAM,GAAG,OAAO,CAAC;AAC9C,SAAA;QAED,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,cAAc,EAAE;AACnD,YAAA,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;AAC5D,gBAAA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AACvB,aAAA;AACF,SAAA;QAGD,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,eAAe,EAAE;YACpD,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;AACjC,YAAA,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;AACtB,gBAAA,IAAI,OAAO,IAAI,CAAC,KAAK,IAAI,QAAQ,EAAE;AACjC,oBAAA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AACnD,iBAAA;AAAM,qBAAA;oBACL,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AACtD,iBAAA;AACF,aAAA;YACD,MAAM,GAAG,IAAI,CAAC;AACf,SAAA;QAED,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;AAC9F,YAAA,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE;AAClC,gBAAA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AACnD,aAAA;AAAM,iBAAA;gBACL,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;oBACnC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AACtD,iBAAA;AACF,aAAA;AACF,SAAA;QAED,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,EAAE;AACzC,YAAA,IAAI,IAAI,CAAC,KAAK,YAAY,IAAI,EAAE;AAC9B,gBAAA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;AAC/B,aAAA;AAAM,iBAAA;AACL,gBAAA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;AAC5B,aAAA;YACD,MAAM,GAAG,IAAI,CAAC;AACf,SAAA;QAED,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,YAAY,IAAI,EAAE;AACzC,YAAA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YAC9B,MAAM,GAAG,IAAI,CAAC;AACf,SAAA;AAED,QAAA,IAAI,EAAE,IAAI,SAAS,CAAC,QAAQ,EAAE;AAC5B,YAAA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AACnD,SAAA;AAED,QAAA,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,EAAE;AAC1B,YAAA,EAAE,GAAG,kBAAkB,CAAC,EAAE,CAAC,CAAC;AAC7B,SAAA;QAED,QAAQ,IAAI,CAAC,QAAQ;AACnB,YAAA,KAAK,UAAU,CAAC,MAAM,EAAE;AACtB,gBAAA,OAAO,EAAE,GAAG,MAAM,GAAG,EAAE,CAAC;AACzB,aAAA;AACD,YAAA,KAAK,UAAU,CAAC,SAAS,EAAE;AACzB,gBAAA,OAAO,EAAE,GAAG,MAAM,GAAG,EAAE,CAAC;AACzB,aAAA;AACD,YAAA,KAAK,UAAU,CAAC,WAAW,EAAE;AAC3B,gBAAA,OAAO,EAAE,GAAG,MAAM,GAAG,EAAE,CAAC;AACzB,aAAA;AACD,YAAA,KAAK,UAAU,CAAC,kBAAkB,EAAE;AAClC,gBAAA,OAAO,EAAE,GAAG,MAAM,GAAG,EAAE,CAAC;AACzB,aAAA;AACD,YAAA,KAAK,UAAU,CAAC,QAAQ,EAAE;AACxB,gBAAA,OAAO,EAAE,GAAG,MAAM,GAAG,EAAE,CAAC;AACzB,aAAA;AACD,YAAA,KAAK,UAAU,CAAC,eAAe,EAAE;AAC/B,gBAAA,OAAO,EAAE,GAAG,MAAM,GAAG,EAAE,CAAC;AACzB,aAAA;AACD,YAAA,KAAK,UAAU,CAAC,QAAQ,EAAE;gBACxB,OAAO,WAAW,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC;AAC1C,aAAA;AACD,YAAA,KAAK,UAAU,CAAC,WAAW,EAAE;gBAC3B,OAAO,eAAe,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC;AAC9C,aAAA;AACD,YAAA,KAAK,UAAU,CAAC,UAAU,EAAE;gBAC1B,OAAO,aAAa,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC;AAC5C,aAAA;AACD,YAAA,KAAK,UAAU,CAAC,aAAa,EAAE;gBAC7B,OAAO,iBAAiB,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC;AAChD,aAAA;AACD,YAAA,KAAK,UAAU,CAAC,QAAQ,EAAE;gBACxB,OAAO,WAAW,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC;AAC1C,aAAA;AACD,YAAA,KAAK,UAAU,CAAC,WAAW,EAAE;gBAC3B,OAAO,eAAe,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC;AAC9C,aAAA;AACF,SAAA;AACD,QAAA,OAAO,MAAM,CAAC;KACf;IAED,UAAU,GAAA;AACR,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,GAAG,EAAE;AACxB,YAAA,OAAO,qEAAqE,CAAC;AAC9E,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,GAAG,EAAE;AACxB,YAAA,OAAO,2DAA2D,CAAC;AACpE,SAAA;QAED,IAAI,MAAM,GAAW,EAAE,CAAC;AAExB,QAAA,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;AAEpB,QAAA,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;AACtB,YAAA,IAAI,OAAO,IAAI,CAAC,KAAK,IAAI,QAAQ,EAAE;AACjC,gBAAA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;AAC5B,aAAA;AAED,YAAA,IAAI,OAAO,IAAI,CAAC,KAAK,IAAI,SAAS,EAAE;AAClC,gBAAA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,MAAM,GAAG,OAAO,CAAC;AAC9C,aAAA;AAED,YAAA,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;AAC5D,gBAAA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AACvB,aAAA;AACF,SAAA;QAED,IAAI,EAAE,IAAI,IAAI,EAAE;YACd,IAAI,CAAC,eAAe,EAAE,CAAC;AACxB,SAAA;QAED,IAAI,EAAE,GAAG,IAAI,CAAC;QACd,QAAQ,IAAI,CAAC,QAAQ;YACnB,KAAK,UAAU,CAAC,QAAQ;gBAAE,EAAE,GAAG,MAAM,CAAC;AAAC,gBAAA,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC;gBAAC,MAAM;YAClE,KAAK,UAAU,CAAC,YAAY;gBAAE,EAAE,GAAG,UAAU,CAAC;gBAAC,MAAM;YACrD,KAAK,UAAU,CAAC,mBAAmB;gBAAE,EAAE,GAAG,MAAM,CAAC;gBAAC,MAAM;YACxD,KAAK,UAAU,CAAC,QAAQ;gBAAE,EAAE,GAAG,MAAM,CAAC;AAAC,gBAAA,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC;AAAC,gBAAA,IAAI,CAAC;gBAAC,MAAM;YAClE,KAAK,UAAU,CAAC,MAAM;gBAAE,EAAE,GAAG,IAAI,CAAC;gBAAC,MAAM;YACzC,KAAK,UAAU,CAAC,WAAW;gBAAE,EAAE,GAAG,IAAI,CAAC;gBAAC,MAAM;YAC9C,KAAK,UAAU,CAAC,kBAAkB;gBAAE,EAAE,GAAG,IAAI,CAAC;gBAAC,MAAM;YACrD,KAAK,UAAU,CAAC,QAAQ;gBAAE,EAAE,GAAG,IAAI,CAAC;gBAAC,MAAM;YAC3C,KAAK,UAAU,CAAC,eAAe;gBAAE,EAAE,GAAG,IAAI,CAAC;gBAAC,MAAM;YAClD,KAAK,UAAU,CAAC,WAAW;gBAAE,EAAE,GAAG,UAAU,CAAC;AAAC,gBAAA,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC;gBAAC,MAAM;YACpE,KAAK,UAAU,CAAC,WAAW;gBAAE,EAAE,GAAG,UAAU,CAAC;gBAAC,GAAG,GAAG,EAAE,CAAC;gBAAC,MAAM;YAC9D,KAAK,UAAU,CAAC,SAAS;gBAAE,EAAE,GAAG,IAAI,CAAC;gBAAC,MAAM;YAC5C,KAAK,UAAU,CAAC,aAAa;gBAAE,EAAE,GAAG,UAAU,CAAC;AAAC,gBAAA,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC;gBAAC,MAAM;YACrE,KAAK,UAAU,CAAC,UAAU;gBAAE,EAAE,GAAG,MAAM,CAAC;AAAC,gBAAA,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC;gBAAC,MAAM;YAC9D,SAAS,MAAM,4CAA4C,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC7E,SAAA;QAED,IAAI,WAAW,GAAG,EAAE,CAAC;AACrB,QAAA,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;YACtB,WAAW,GAAG,eAAe,GAAC,IAAI,CAAC,KAAK,GAAC,GAAG,CAAC;AAC9C,SAAA;QAED,IAAI,EAAE,IAAI,IAAI,EAAE;YACd,MAAM,IAAI,YAAY,GAAG,WAAW,GAAG,cAAc,GAAG,IAAI,CAAC,KAAK,GAAG,cAAc,GAAG,EAAE,GAAG,WAAW,GAAG,EAAE,GAAG,MAAM,CAAC;AACtH,SAAA;AAAM,aAAA;AACL,YAAA,MAAM,IAAI,YAAY,GAAG,WAAW,GAAG,cAAc,GAAG,IAAI,CAAC,KAAK,GAAG,cAAc,GAAG,EAAE,GAAG,MAAM,CAAC;AACnG,SAAA;AACD,QAAA,OAAO,MAAM,CAAC;KACf;IAEO,eAAe,GAAA;AACrB,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,UAAU,CAAC,MAAM,EAAE;AACtC,YAAA,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,mBAAmB,CAAC;AAChD,SAAA;AACC,aAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,UAAU,CAAC,SAAS,EAAE;AACzC,YAAA,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,YAAY,CAAC;AACzC,SAAA;AAEH,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,UAAU,CAAC,mBAAmB,IAAI,IAAI,CAAC,QAAQ,IAAI,UAAU,CAAC,YAAY,EAAE;AAC/F,YAAA,MAAM,qFAAqF,GAAG,IAAI,CAAC,KAAK,GAAG,GAAG,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,GAAG,QAAQ,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC1L,SAAA;KACF;AACF,CAAA;MAEY,SAAS,CAAA;AAQpB,IAAA,WAAA,CAAY,QAAA,GAAqB,QAAQ,CAAC,GAAG,EAAA;AAP7C,QAAA,IAAA,CAAA,QAAQ,GAAa,QAAQ,CAAC,GAAG,CAAC;AAQhC,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACzB,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;AACjB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACpB;AAID,IAAA,KAAK,CAAC,KAAa,EAAE,GAAe,EAAE,QAAa,IAAI,EAAA;AACrD,QAAA,IAAI,CAAC,GAAG,IAAI,MAAM,EAAE,CAAC;AACrB,QAAA,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC;AAChB,QAAA,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC;AAChB,QAAA,CAAC,CAAC,QAAQ,GAAG,GAAG,CAAC;AACjB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,QAAA,OAAO,IAAI,CAAC;KACb;IAID,KAAK,CAAC,KAAa,EAAE,KAAa,EAAE,GAAe,EAAE,QAAa,IAAI,EAAA;AACpE,QAAA,IAAI,CAAC,GAAG,IAAI,MAAM,EAAE,CAAC;AACrB,QAAA,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC;AAChB,QAAA,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC;AAChB,QAAA,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC;AAChB,QAAA,CAAC,CAAC,QAAQ,GAAG,GAAG,CAAC;AACjB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,KAAK,CAAC,GAAa,EAAA;AACjB,QAAA,IAAI,MAAM,GAAc,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC;AAC3C,QAAA,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;AAErB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC3B,QAAA,OAAO,MAAM,CAAC;KACf;IAED,QAAQ,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;KACtD;IAED,UAAU,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;KACtD;IAED,gCAAgC,GAAA;QAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;KAClC;IAED,+BAA+B,GAAA;QAC7B,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;KAClC;AAGD,IAAA,GAAG,CAAC,MAAc,EAAA;AAChB,QAAA,IAAI,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;AAC1B,QAAA,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC;AACtB,QAAA,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;AACrB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACzB,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,aAAa,CAAC,SAAiB,EAAA;AAC7B,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE;AAC5G,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;QAED,IAAI,EAAE,GAAG,IAAI,CAAC;QACd,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,GAAG,GAAG,EAAE,CAAC;AACb,QAAA,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACjD,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAG;gBACtB,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;AAC3C,gBAAA,IAAI,EAAE,CAAC,QAAQ,IAAI,QAAQ,CAAC,GAAG,EAAE;oBAC/B,GAAG,GAAG,OAAO,CAAC;AACf,iBAAA;AAAM,qBAAA;oBACL,GAAG,GAAG,MAAM,CAAC;AACd,iBAAA;AAEH,aAAC,CAAC,CAAC;AACJ,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AACrD,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAG;AACxB,gBAAA,MAAM,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC;AACvD,gBAAA,IAAI,EAAE,CAAC,QAAQ,IAAI,QAAQ,CAAC,GAAG,EAAE;oBAC/B,GAAG,GAAG,OAAO,CAAC;AACf,iBAAA;AAAM,qBAAA;oBACL,GAAG,GAAG,MAAM,CAAC;AACd,iBAAA;AACH,aAAC,CAAC,CAAC;AACJ,SAAA;AACD,QAAA,OAAO,MAAM,CAAC;KACf;IAED,UAAU,GAAA;QACR,IAAI,MAAM,GAAW,EAAE,CAAC;QAExB,MAAM,IAAI,gBAAgB,IAAI,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,GAAG,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;AACnF,QAAA,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;AAC/C,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAG;AACtB,gBAAA,MAAM,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;AAC3B,aAAC,CAAC,CAAC;AAEL,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AACrD,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAG;AACxB,gBAAA,MAAM,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;AAC3B,aAAC,CAAC,CAAC;AACJ,SAAA;QAED,MAAM,IAAI,WAAW,CAAA;AAErB,QAAA,OAAO,MAAM,CAAC;KACf;AACF,CAAA;AAED,MAAM,kBAAkB,CAAA;AAGtB,IAAA,WAAA,CAAY,IAAY,EAAE,SAAiB,EAAE,QAAgB,EAAE,KAAgB,GAAA,IAAI,EAAE,KAAA,GAAa,IAAI,EAAA;AAatG,QAAA,IAAE,CAAA,EAAA,GAAW,IAAI,CAAC;AAZhB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACjB,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AAC3B,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACzB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACpB;AAQF,CAAA;MAGY,cAAc,CAAA;AAA3B,IAAA,WAAA,GAAA;AACU,QAAA,IAAI,CAAA,IAAA,GAAyB,EAAE,CAAC;KAiBzC;AAfC,IAAA,GAAG,CAAmB,SAAY,EAAE,QAAW,EAAE,KAAa,EAAE,KAAU,EAAA;AACxE,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,kBAAkB,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;KAClF;AAED,IAAA,MAAM,CAAmB,QAAW,EAAA;AAClC,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;KAClE;IAED,MAAM,CAAmB,SAAY,EAAE,QAAW,EAAA;AAChD,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,kBAAkB,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;KACvE;IAED,MAAM,CAAmB,SAAY,EAAE,QAAW,EAAA;AAChD,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,kBAAkB,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;KACvE;AACF,CAAA;MAEY,SAAS,CAAA;IAcpB,WAAY,CAAA,OAAgB,KAAK,EAAA;AAbzB,QAAA,IAAI,CAAA,IAAA,GAAY,IAAI,CAAC;AAC7B,QAAA,IAAQ,CAAA,QAAA,GAAY,IAAI,CAAC;AAavB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;KAClB;AACF,CAAA;AAED,MAAM,cAAc,CAAA;AAKnB,CAAA;MAGY,iBAAiB,CAAA;IAQ5B,WAAoB,CAAA,IAAgB,EAAU,UAAsB,EAAA;AAAhD,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;AAAU,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AAP5D,QAAA,IAAO,CAAA,OAAA,GAAQ,EAAE,CAAC;AAClB,QAAA,IAAa,CAAA,aAAA,GAAQ,EAAE,CAAC;QACxB,IAAA,CAAA,IAAI,GAAW,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;AACpC,QAAA,IAAuB,CAAA,uBAAA,GAAY,KAAK,CAAC;AAEjD,QAAA,IAAe,CAAA,eAAA,GAAG,yCAAyC,CAAC;KAEa;AAEzE,IAAA,UAAU,CAAC,CAAS,EAAA;AAClB,QAAA,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;KAC/B;AAED,IAAA,sBAAsB,CAAC,CAAU,EAAA;AAC/B,QAAA,IAAI,CAAC,uBAAuB,GAAG,CAAC,CAAC;KAClC;IAED,UAAU,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;KACrC;IAID,aAAa,CAAC,sBAA+B,KAAK,EAAA;QAChD,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC;KAC3D;IAED,aAAa,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;KAClE;IAED,gBAAgB,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC;KAC3C;IAED,GAAG,CAAmB,SAAY,EAAE,EAAU,EAAA;QAC5C,IAAI,EAAE,GAAG,IAAI,CAAC;QACd,IAAI,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAE9C,IAAI,MAAM,GAAW,IAAI,CAAC;QAE1B,IAAI,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;QAC9C,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;YACjC,IAAI,KAAK,GAAG,GAAG,CAAC;AAChB,YAAA,GAAG,CAAC,OAAO,CAAC,EAAE,IAAG;gBACf,IAAI,MAAM,IAAI,IAAI,EAAE;AAClB,oBAAA,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;AACnC,iBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,MAAM,CAAC,UAAU,IAAI,IAAI,EAAE;AAC7B,wBAAA,MAAM,CAAC,UAAU,GAAG,EAAE,CAAC;AACxB,qBAAA;AACD,oBAAA,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC;AAClD,iBAAA;AACH,aAAC,CAAC,CAAC;AACJ,SAAA;QAED,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAI,SAAS,CAAC,WAAW,EAAE,EAAE,EAAE,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAG;AAC/F,YAAA,OAAO,EAAE,CAAC,OAAO,CAAI,SAAS,EAAE,CAAC,EAAE,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;SACjE,CAAC,CAAC,CAAC;KACL;AAED,IAAA,KAAK,CAAC,OAAgB,EAAA;AACpB,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,OAAO,CAAC;KACjC;AAED,IAAA,KAAK,CAAC,GAAa,EAAA;QACjB,IAAI,EAAE,GAAG,IAAI,CAAC;QACd,IAAI,OAAO,GAAG,IAAI,WAAW,CAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAC;AAChE,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,IAAI,EAAE;AACjC,YAAA,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC9E,SAAA;QACD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;QACpD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QACjD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,iCAAiC,CAAC,CAAC;QAC5E,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,iCAAiC,CAAC,CAAC;QACtE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;AAEtD,QAAA,IAAI,OAAO,GAAG;AACZ,YAAA,OAAO,EAAE,OAAO;SACjB,CAAA;AAED,QAAA,IAAI,QAAQ,GAAG,GAAG,CAAC,eAAe,EAAE,CAAC;AACrC,QAAA,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,eAAe,CAAC,WAAW,GAAG,YAAY,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;AAE7J,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC9B,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAEzB,QAAA,OAAO,IAAI,UAAU,CAAC,GAAG,IAAG;AAC1B,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,SAAS,EAAE;iBAC1D,IAAI,CAAC,QAAQ,IAAG;AACf,gBAAA,IAAI,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE;AACzE,oBAAA,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACnC,iBAAA;AAAM,qBAAA;AACL,oBAAA,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACb,iBAAA;AACH,aAAC,CAAC;iBACD,KAAK,CAAC,CAAC,IAAG;gBACT,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,EAAE;AACpE,oBAAA,IAAI,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;oBACtC,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,QAAQ,EAAE,IAAI,YAAY,EAAE;AACjD,wBAAA,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;wBAChB,OAAO;AACR,qBAAA;AACF,iBAAA;gBACD,UAAU,CAAC,CAAC,CAAC,CAAC;AAChB,aAAC,CAAC,CAAC;AACP,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,KAAK,CAAmB,GAAa,EAAA;QACnC,IAAI,EAAE,GAAG,IAAI,CAAC;QACd,IAAI,OAAO,GAAG,IAAI,WAAW,CAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAC;AAChE,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,IAAI,EAAE;AACjC,YAAA,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC9E,SAAA;QACD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;QACpD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QACjD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,iCAAiC,CAAC,CAAC;QAC5E,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,iCAAiC,CAAC,CAAC;QACtE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;AAEtD,QAAA,IAAI,OAAO,GAAG;AACZ,YAAA,OAAO,EAAE,OAAO;SACjB,CAAA;AAED,QAAA,IAAI,QAAQ,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;AAChC,QAAA,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,eAAe,CAAC,WAAW,GAAG,YAAY,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;AAE7J,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC9B,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEzB,IAAI,cAAc,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,eAAoB,CAAC;QAEvD,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAG;YACtE,IAAI,MAAM,GAAG,EAAE,CAAC,kBAAkB,CAAI,cAAc,EAAE,QAAQ,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;AAC1F,YAAA,OAAO,MAAM,CAAC;SACf,CAAC,CAAC,CAAC;KACL;IAED,QAAQ,CAAmB,SAAY,EAAE,QAAgB,EAAA;QACvD,IAAI,EAAE,GAAG,IAAI,CAAC;QACd,IAAI,OAAO,GAAG,IAAI,WAAW,CAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAC;AAChE,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,IAAI,EAAE;AACjC,YAAA,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC9E,SAAA;QACD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;QACpD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QACjD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,iCAAiC,CAAC,CAAC;QAC5E,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,iCAAiC,CAAC,CAAC;QACtE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;AAEtD,QAAA,IAAI,OAAO,GAAG;AACZ,YAAA,OAAO,EAAE,OAAO;SACjB,CAAA;QAED,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,WAAW,GAAG,YAAY,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;AAE1I,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC9B,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEzB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAG;YACtE,IAAI,MAAM,GAAG,EAAE,CAAC,kBAAkB,CAAI,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;AAC9E,YAAA,OAAO,MAAM,CAAC;SACf,CAAC,CAAC,CAAC;KACL;AAMD,IAAA,KAAK,CAAmB,SAAY,EAAE,SAAoB,EAAE,OAAA,GAAkB,IAAI,EAAE,GAAc,GAAA,CAAC,EAAE,KAAA,GAAiB,KAAK,EAAA;QACzH,IAAI,EAAE,GAAG,IAAI,CAAC;QACd,IAAI,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC;QAEnD,IAAI,GAAG,GAAG,SAAS,CAAC;QACpB,IAAI,MAAM,GAAG,IAAI,CAAC;QAClB,IAAI,SAAS,IAAI,IAAI,EAAE;AACrB,YAAA,OAAO,GAAG,CAAC,MAAM,IAAI,IAAI,EAAE;AAAE,gBAAA,GAAG,GAAG,GAAG,CAAC,MAAM,CAAA;AAAE,aAAA;YAAA,CAAC;AAEhD,YAAA,MAAM,GAAG,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;AACvC,SAAA;QAED,IAAI,OAAO,GAAG,IAAI,WAAW,CAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAC;AAChE,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,IAAI,EAAE;AACjC,YAAA,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC9E,SAAA;QACD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;QACpD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QACjD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,iCAAiC,CAAC,CAAC;QAC5E,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,iCAAiC,CAAC,CAAC;QACtE,IAAI,GAAG,GAAG,CAAC,EAAE;AACX,YAAA,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,oBAAoB,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC3E,SAAA;QACD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;AAEtD,QAAA,IAAI,OAAO,GAAG;AACZ,YAAA,OAAO,EAAE,OAAO;SACjB,CAAA;AAED,QAAA,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,WAAW,CAAC;AAC5F,QAAA,IAAI,CAAC,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI,EAAE,MAAM,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI,EAAE,CAAC,KAAK,OAAO,IAAI,IAAI,IAAI,OAAO,IAAI,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE;YACzH,GAAG,IAAI,GAAG,CAAC;AACZ,SAAA;QACD,IAAI,GAAG,GAAG,EAAE,CAAC;AAEb,QAAA,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI,EAAE,EAAE;AAClC,YAAA,GAAG,IAAI,UAAU,GAAG,MAAM,CAAC;YAC3B,GAAG,GAAG,GAAG,CAAC;AACX,SAAA;AAED,QAAA,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI,EAAE,EAAE;AAClC,YAAA,GAAG,IAAI,GAAG,GAAG,UAAU,GAAG,MAAM,CAAC;YACjC,GAAG,GAAG,GAAG,CAAC;AACX,SAAA;AAED,QAAA,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,IAAI,EAAE,EAAE;AACpC,YAAA,GAAG,IAAI,GAAG,GAAG,WAAW,GAAG,OAAO,CAAC;YACnC,GAAG,GAAG,GAAG,CAAC;AACX,SAAA;AAED,QAAA,IAAI,KAAK,EAAE;AACT,YAAA,GAAG,IAAI,GAAG,GAAG,aAAa,CAAC;YAC3B,GAAG,GAAG,GAAG,CAAC;AACX,SAAA;AAED,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEzB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAG;YACtE,IAAI,MAAM,GAAG,EAAE,CAAC,kBAAkB,CAAI,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;AAChF,YAAA,OAAO,MAAM,CAAC;SACf,CAAC,CAAC,CAAC;KACL;IAED,MAAM,CAAmB,SAAY,EAAE,QAAW,EAAA;QAChD,IAAI,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AACxD,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAE1B,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAI,SAAS,CAAC,WAAW,EAAE,IAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,IAAG;YACtF,IAAI,QAAQ,GAAG,SAAc,CAAC;AAC9B,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAE9B,IAAI,QAAQ,IAAI,IAAI,EAAE;AACpB,gBAAA,IAAI,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE;AACvC,oBAAA,QAAQ,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC;AAC7C,oBAAA,QAAQ,CAAC,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC;AAC/C,oBAAA,QAAQ,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;AACvC,oBAAA,QAAQ,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC;AAC3B,oBAAA,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC;oBAE5B,IAAI,GAAG,GAAG,QAAQ,CAAC,WAAW,GAAG,GAAG,GAAG,QAAQ,CAAC,EAAE,CAAC;AACnD,oBAAA,KAAK,IAAI,IAAI,IAAI,SAAS,EAAE;AAC1B,wBAAA,IAAI,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,UAAU,EAAE;4BACzC,QAAQ,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;4BACjC,SAAS;AACV,yBAAA;AACF,qBAAA;AAED,oBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;AAC7B,oBAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAEnC,oBAAA,OAAO,QAAQ,CAAC;AACjB,iBAAA;AAAM,qBAAA;oBACL,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACvD,oBAAA,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACtD,iBAAA;AACF,aAAA;AACD,YAAA,OAAO,IAAI,CAAC;SACb,CAAC,CAAC,CAAC;KACL;IAED,SAAS,CAAmB,SAAY,EAAE,SAAc,EAAA;AACtD,QAAA,IAAI,SAAS,IAAI,IAAI,IAAI,SAAS,IAAI,IAAI,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AAClE,YAAA,IAAI,KAAK,GAAG,IAAI,cAAc,EAAE,CAAC;AACjC,YAAA,SAAS,CAAC,OAAO,CAAC,CAAC,IAAG;AACpB,gBAAA,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAC7B,aAAC,CAAC,CAAC;AAEH,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC3B,SAAA;AACD,QAAA,MAAM,oEAAoE,CAAC;KAC5E;AAID,IAAA,MAAM,CAAmB,SAAY,EAAE,QAAW,EAAE,6BAAsC,KAAK,EAAA;QAC7F,IAAI,EAAE,GAAG,IAAI,CAAC;AACd,QAAA,IAAI,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,QAAQ,EAAE,0BAA0B,CAAC,CAAC;QAE9E,IAAI,GAAG,IAAI,IAAI,EAAE;YACf,GAAG,GAAG,EAAE,CAAC;AACV,SAAA;AAED,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEzB,IAAI,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC;QAEnD,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAI,SAAS,CAAC,WAAW,EAAE,GAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAG;AACzG,YAAA,IAAI,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YAEzF,IAAI,OAAO,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,UAAU,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,UAAU,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;AACnH,gBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;AAC1C,gBAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AACnC,gBAAA,OAAO,QAAQ,CAAC;AACjB,aAAA;AAED,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;AACpD,YAAA,OAAO,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;SACpD,CAAC,CAAC,CAAC;KACL;IAID,GAAG,CAAC,SAAiB,EAAE,QAAgB,EAAE,KAAa,EAAE,QAAa,uBAAuB,EAAA;QAC1F,IAAI,CAAC,GAAG,KAAK,CAAC;QACd,IAAI,KAAK,IAAI,uBAAuB,EAAE;AACpC,YAAA,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;AACrB,SAAA;AAED,QAAA,IAAI,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACpD,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAG;YACvH,IAAI,KAAK,IAAI,uBAAuB,EAAE;gBACpC,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AACpD,gBAAA,OAAO,IAAI,CAAC;AACb,aAAA;SACF,CAAC,CAAC,CAAC;KACL;AAED,IAAA,MAAM,CAAC,SAAiB,EAAE,SAAmB,EAAE,KAAa,EAAE,KAAU,EAAA;QACtE,IAAI,SAAS,IAAI,IAAI,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE;AAC9C,YAAA,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AACxD,SAAA;QAED,IAAI,SAAS,IAAI,IAAI,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7C,YAAA,IAAI,KAAK,GAAG,IAAI,cAAc,EAAE,CAAC;AAEjC,YAAA,IAAI,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAExD,YAAA,SAAS,CAAC,OAAO,CAAC,CAAC,IAAG;gBACpB,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AACtC,aAAC,CAAC,CAAC;AACH,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC3B,SAAA;AAED,QAAA,MAAM,6DAA6D,CAAC;KACrE;AAED,IAAA,MAAM,CAAmB,CAAI,EAAA;QAC3B,IAAI,EAAE,GAAG,IAAI,CAAC;QACd,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAG;YAC9D,IAAI,GAAG,GAAG,CAAC,CAAC,WAAW,GAAG,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC;YACrC,IAAI,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;AAClC,gBAAA,OAAO,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACxB,aAAA;AACD,YAAA,OAAO,IAAI,CAAC;SACb,CAAC,CAAC,CAAC;KACL;AAED,IAAA,SAAS,CAAmB,SAAc,EAAA;QACxC,IAAI,SAAS,IAAI,IAAI,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE;YAC9C,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,SAAA;QAED,IAAI,SAAS,IAAI,IAAI,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7C,YAAA,IAAI,KAAK,GAAG,IAAI,cAAc,EAAE,CAAC;AACjC,YAAA,SAAS,CAAC,OAAO,CAAC,CAAC,IAAG;AACpB,gBAAA,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAClB,aAAC,CAAC,CAAC;AACH,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC3B,SAAA;AACD,QAAA,MAAM,6DAA6D,CAAC;KACrE;IAED,oBAAoB,CAAC,SAAiB,EAAE,QAAgB,EAAA;AACtD,QAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;KACpC;AAKD,IAAA,IAAI,CAAC,IAAY,EAAE,IAAS,EAAE,SAAiB,IAAI,EAAA;QACjD,IAAI,UAAU,GAAG,IAAI,CAAC;QACtB,IAAI,UAAU,IAAI,IAAI,EAAE;AACtB,YAAA,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;AAC/C,SAAA;QAED,IAAI,MAAM,IAAI,IAAI,EAAE;YAClB,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AAC/C,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;AAC9E,SAAA;KACF;AAKD,IAAA,MAAM,CAAC,IAAY,EAAE,IAAS,EAAE,SAAiB,IAAI,EAAA;QACnD,IAAI,MAAM,IAAI,IAAI,EAAE;AAClB,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;AAC1E,SAAA;AAAM,aAAA;YACL,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC3C,SAAA;KACF;AAED,IAAA,MAAM,CAAC,WAA2B,EAAA;AAChC,QAAA,IAAI,IAAI,GAAG,WAAW,CAAC,MAAM,CAAyB,CAAC;QAEvD,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YACnC,IAAI,CAAC,IAAI,EAAE,CAAC;AACZ,YAAA,IAAI,KAAK,GAAG,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC3E,YAAA,IAAI,MAAM,GAAG,cAAc,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChF,IAAI,OAAO,GAAG,IAAI,WAAW,CAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAC;AAChE,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,IAAI,EAAE;AACjC,gBAAA,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC9E,aAAA;YACD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,2BAA2B,GAAG,KAAK,CAAC,CAAC;YAC9E,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;YACpD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;AAEjD,YAAA,IAAI,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC;AAC/B,YAAA,IAAI,IAAI,yCAAyC,GAAG,MAAM,GAAG,IAAI,CAAC;YAClE,IAAI,IAAI,IAAI,CAAC;YAEb,IAAI,KAAK,GAAG,CAAC,CAAC;AACd,YAAA,IAAI,CAAC,OAAO,CAAC,CAAC,IAAG;AACf,gBAAA,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC;AACb,gBAAA,IAAI,CAAC,CAAC,IAAI,IAAI,KAAK,EAAE;AACnB,oBAAA,IAAI,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;AAChE,oBAAA,IAAI,IAAI,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC;oBAC7B,IAAI,IAAI,kCAAkC,CAAC;oBAC3C,IAAI,IAAI,oCAAoC,CAAC;oBAC7C,IAAI,IAAI,cAAc,GAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC;oBACjD,IAAI,IAAI,IAAI,CAAC;AACb,oBAAA,IAAI,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE;AACvB,wBAAA,IAAI,IAAI,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,WAAW,GAAG,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,GAAG,IAAI,GAAG,KAAK,CAAC,KAAK,GAAG,aAAa,CAAC;AACzI,qBAAA;AAAM,yBAAA;AACL,wBAAA,IAAI,IAAI,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,WAAW,GAAG,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,GAAG,IAAI,GAAG,KAAK,CAAC,KAAK,GAAG,aAAa,CAAC;AAC3I,qBAAA;oBAED,IAAI,EAAE,GAAG,EAAE,CAAC;AACZ,oBAAA,IAAI,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE;wBACvB,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;AACpC,qBAAA;oBACD,IAAI,IAAI,6CAA6C,CAAC;oBACtD,IAAI,IAAI,IAAI,CAAC;oBACb,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;AACnC,iBAAA;AAED,gBAAA,IAAI,CAAC,CAAC,IAAI,IAAI,QAAQ,EAAE;AACtB,oBAAA,IAAI,IAAI,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC;oBAC7B,IAAI,IAAI,kCAAkC,CAAC;oBAC3C,IAAI,IAAI,oCAAoC,CAAC;oBAC7C,IAAI,IAAI,cAAc,GAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC;oBACjD,IAAI,IAAI,IAAI,CAAC;AACb,oBAAA,IAAI,IAAI,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,WAAW,GAAG,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,GAAG,GAAG,GAAG,aAAa,CAAC;oBAC3H,IAAI,IAAI,6CAA6C,CAAC;oBACtD,IAAI,IAAI,IAAI,CAAC;oBACb,IAAI,IAAI,OAAO,CAAC;AACjB,iBAAA;AAED,gBAAA,IAAI,CAAC,CAAC,IAAI,IAAI,QAAQ,EAAE;AACtB,oBAAA,IAAI,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;AAC7D,oBAAA,IAAI,IAAI,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC;oBAC7B,IAAI,IAAI,kCAAkC,CAAC;oBAC3C,IAAI,IAAI,oCAAoC,CAAC;oBAC7C,IAAI,IAAI,cAAc,GAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC;oBACjD,IAAI,IAAI,IAAI,CAAC;AACb,oBAAA,IAAI,IAAI,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,WAAW,GAAG,aAAa,CAAC;oBAC9F,IAAI,IAAI,6CAA6C,CAAC;oBACtD,IAAI,IAAI,IAAI,CAAC;oBACb,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;AACtC,iBAAA;AAED,gBAAA,IAAI,CAAC,CAAC,IAAI,IAAI,QAAQ,EAAE;AACtB,oBAAA,IAAI,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;oBAC/D,IAAI,KAAK,IAAI,IAAI,EAAE;AACjB,wBAAA,IAAI,MAAM,GAAG,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC;AAEnE,wBAAA,IAAI,IAAI,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC;wBAC7B,IAAI,IAAI,kCAAkC,CAAC;wBAC3C,IAAI,IAAI,oCAAoC,CAAC;wBAC7C,IAAI,IAAI,cAAc,GAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC;wBACjD,IAAI,IAAI,IAAI,CAAC;AACb,wBAAA,IAAI,IAAI,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,WAAW,GAAG,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,GAAG,GAAG,GAAG,MAAM,GAAG,aAAa,CAAC;wBACpI,IAAI,IAAI,6CAA6C,CAAC;wBACtD,IAAI,IAAI,IAAI,CAAC;wBACb,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;AACtC,qBAAA;AACF,iBAAA;AACD,gBAAA,KAAK,EAAE,CAAC;AACV,aAAC,CAAC,CAAC;AACH,YAAA,IAAI,IAAI,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;YAC/B,IAAI,IAAI,IAAI,CAAC;AACb,YAAA,IAAI,IAAI,IAAI,GAAG,KAAK,GAAG,MAAM,CAAC;AAC9B,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAE1B,YAAA,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,QAAQ,CAAC;AAC/E,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAGzB,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAG;gBAC5G,IAAI,GAAG,GAAG,IAAc,CAAC;AACzB,gBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAEzB,gBAAA,IAAI,CAAC,OAAO,CAAC,CAAC,IAAG;AACf,oBAAA,IAAI,CAAC,CAAC,IAAI,IAAI,KAAK,EAAE;AACnB,wBAAA,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;wBAC5D,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;AACxC,qBAAA;AAED,oBAAA,IAAI,CAAC,CAAC,IAAI,IAAI,QAAQ,EAAE;wBACtB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;AACxC,qBAAA;AAED,oBAAA,IAAI,CAAC,CAAC,IAAI,IAAI,QAAQ,EAAE;AACtB,wBAAA,IAAI,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,WAAW,GAAG,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;AACvD,wBAAA,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACzB,wBAAA,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AAChC,qBAAA;AACH,iBAAC,CAAC,CAAC;gBAEH,IAAI,KAAK,GAAW,CAAC,CAAC;gBACtB,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,IAAG;AAC1B,oBAAA,IAAI,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE;AAC/B,wBAAA,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AACvC,wBAAA,OAAO,IAAI,CAAC;AACb,qBAAA;AACD,oBAAA,IAAI,CAAC,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE;AACnC,wBAAA,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,KAAK,CAAC,CAAC;wBAExC,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,QAAQ,EAAE;AACvC,4BAAA,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,WAAW,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AAC/G,4BAAA,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC;AACrB,4BAAA,IAAI,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,WAAW,GAAG,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;4BAC5D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC;AACjC,4BAAA,GAAG,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC;4BAChC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC5C,yBAAA;AACF,qBAAA;AACD,oBAAA,OAAO,IAAI,CAAC;AACd,iBAAC,CAAC,CAAC;AACH,gBAAA,OAAO,IAAI,CAAC;aACb,CAAC,CAAC,CAAC;AACL,SAAA;AACD,QAAA,MAAM,mGAAmG,CAAC;KAC3G;AAGD,IAAA,GAAG,CAAC,IAAY,EAAA;QACd,IAAI,IAAI,IAAI,SAAS,EAAE;YACrB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAClC,OAAO;AACR,SAAA;QAED,IAAI,IAAI,IAAI,YAAY,EAAE;YACxB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;YACvC,OAAO;AACR,SAAA;QAED,IAAI,IAAI,IAAI,KAAK,EAAE;AACjB,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC;AACvD,SAAA;QAED,IAAI,IAAI,IAAI,SAAS,EAAE;AACrB,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC;AACrD,SAAA;AAED,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,sFAAsF,CAAC,CAAC;KAC7G;IAED,KAAK,CAAC,SAAiB,EAAE,QAAgB,EAAA;AACvC,QAAA,IAAI,CAAC,GAAG,IAAI,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;AAC9D,QAAA,KAAK,IAAI,IAAI,IAAI,SAAS,EAAE;AAC1B,YAAA,IAAI,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC;gBAAE,SAAS;AAE3C,YAAA,IAAI,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AACzB,YAAA,IAAI,OAAO,EAAE,IAAI,UAAU,EAAE;AAC3B,gBAAA,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACb,SAAS;AACV,aAAA;AAED,YAAA,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;YAEvB,IAAI,CAAC,IAAI,IAAI,EAAE;AACb,gBAAA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;gBACf,SAAS;AACV,aAAA;YAED,IAAI,CAAC,YAAY,IAAI,EAAE;AACrB,gBAAA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;gBAChC,SAAS;AACV,aAAA;YAED,IAAI,CAAC,YAAY,eAAe,EAAE;gBAChC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;gBACpB,SAAS;AACV,aAAA;YAED,IAAI,CAAC,YAAY,cAAc,EAAE;gBAC/B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;gBACpB,SAAS;AACV,aAAA;YAED,IAAI,CAAC,IAAI,IAAI,EAAE;AACb,gBAAA,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACb,aAAA;AACF,SAAA;AACD,QAAA,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC;AACZ,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC7B,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAEvB,QAAA,OAAO,CAAC,CAAC;KACV;IAED,WAAW,CAAC,SAAiB,EAAE,QAAgB,EAAA;AAC7C,QAAA,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,QAAQ,CAAC;AAAE,YAAA,MAAM,gEAAgE,CAAC;AAEhH,QAAA,IAAI,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,EAAE;AACvE,YAAA,OAAO,UAAU,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;AACrD,SAAA;QAED,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;KAC5C;AAEO,IAAA,aAAa,CAAC,SAAiB,EAAE,QAAgB,EAAE,2BAAoC,EAAA;QAC7F,IAAI,EAAE,GAAG,IAAI,CAAC;QACd,IAAI,GAAG,GAAG,EACT,CAAA;QAED,IAAI,WAAW,GAAG,CAAC,CAAC;QAEpB,IAAI,GAAG,GAAG,QAAQ,CAAC,WAAW,GAAG,GAAG,GAAG,QAAQ,CAAC,EAAE,CAAC;QACnD,IAAI,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,OAAO,EAAE,KAAK,WAAW,IAAI,EAAE,KAAK,IAAI,EAAE;AAC5C,YAAA,MAAM,kFAAkF,CAAC;AAC1F,SAAA;AAED,QAAA,KAAK,IAAI,IAAI,IAAI,SAAS,EAAE;AAC1B,YAAA,IAAI,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,UAAU,EAAE;AAC1E,gBAAA,IAAI,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC;oBAAE,SAAS;AAC3C,gBAAA,IAAI,SAAS,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;AACzB,gBAAA,IAAI,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;AAE9B,gBAAA,IAAI,CAAC,SAAS,KAAK,WAAW,IAAI,SAAS,KAAK,IAAI,MAAM,QAAQ,KAAK,WAAW,IAAI,QAAQ,KAAK,IAAI,CAAC;oBAAE,SAAS;AAEnH,gBAAA,IAAI,QAAQ,CAAC,IAAI,CAAC,YAAY,eAAe,EAAE;AAC7C,oBAAA,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,4BAA4B,IAAI,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,4BAA4B,IAAI,EAAE,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,IAAI,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE;wBAC1L,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE;4BAC9C,IAAI,2BAA2B,IAAI,QAAQ,IAAI,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE;AACvG,gCAAA,QAAQ,CAAC,IAAI,CAAC,GAAG,4BAA4B,CAAC;AAC/C,6BAAA;AAED,4BAAA,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE;AACtE,gCAAA,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAW,CAAC;AACjC,gCAAA,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gCACxC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,kCAAkC,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;AAChH,6BAAA;AAAM,iCAAA;;AAEL,gCAAA,GAAG,CAAC,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC,WAAW,EAAE,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC;AAC1E,6BAAA;AACD,4BAAA,WAAW,EAAE,CAAC;AACf,yBAAA;wBACD,SAAS;AACV,qBAAA;AACF,iBAAA;AAED,gBAAA,IAAI,SAAS,CAAC,IAAI,CAAC,YAAY,eAAe,EAAE;oBAC9C,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE;wBAC9C,IAAI,CAAC,QAAQ,IAAI,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,2BAA2B,EAAE;AACvG,4BAAA,QAAQ,CAAC,IAAI,CAAC,GAAG,4BAA4B,CAAC;AAC/C,yBAAA;AAED,wBAAA,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE;AACtE,4BAAA,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAW,CAAC;AACjC,4BAAA,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;4BACxC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,kCAAkC,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;AAClH,yBAAA;AAAM,6BAAA;AACL,4BAAA,GAAG,CAAC,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC,WAAW,EAAE,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC;AAC1E,yBAAA;AACD,wBAAA,WAAW,EAAE,CAAC;AACf,qBAAA;oBACD,SAAS;AACV,iBAAA;AAED,gBAAA,IAAI,SAAS,CAAC,IAAI,CAAC,YAAY,cAAc,EAAE;oBAC7C,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE;wBAC7C,IAAI,CAAC,GAAG,QAA0B,CAAC;wBACnC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI,EAAE;4BAChC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,CAAC;AAC7B,yBAAA;AAAM,6BAAA;4BACL,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;AAChC,yBAAA;AACD,wBAAA,WAAW,EAAE,CAAC;AACf,qBAAA;oBACD,SAAS;AACV,iBAAA;AAED,gBAAA,IAAI,SAAS,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE;AACnC,oBAAA,IAAI,SAAS,YAAY,IAAI,IAAI,QAAQ,YAAY,IAAI,EAAE;AACzD,wBAAA,IAAI,EAAE,GAAI,SAAkB,CAAC,WAAW,EAAE,CAAC;AAC3C,wBAAA,IAAI,EAAE,GAAI,QAAiB,CAAC,WAAW,EAAE,CAAC;wBAE1C,IAAI,EAAE,IAAI,EAAE,EAAE;4BACZ,SAAS;AACV,yBAAA;AACF,qBAAA;oBAED,IAAI,SAAS,IAAI,QAAQ,EAAE;AAEzB,wBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,yBAAyB,GAAG,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,GAAG,CAAE,CAAC;wBACrF,IAAI,QAAQ,IAAI,IAAI,EAAE;4BACpB,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,CAAC;AAC7B,yBAAA;AAAM,6BAAA;4BACL,IAAI,QAAQ,YAAY,IAAI,EAAE;gCAC5B,IAAI,CAAC,GAAG,QAAgB,CAAC;AACzB,gCAAA,IAAI,MAAM,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;gCAC7B,IAAI,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE;oCACxC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;AAC/C,iCAAA;gCACD,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,MAAM,CAAC;AAC/B,6BAAA;AAAM,iCAAA;gCACL,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,QAAQ,CAAC;AACjC,6BAAA;AACF,yBAAA;AACD,wBAAA,WAAW,EAAE,CAAC;AACf,qBAAA;oBACD,SAAS;AACV,iBAAA;AAED,gBAAA,IAAI,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE;AACtC,oBAAA,IAAI,OAAO,QAAQ,IAAI,QAAQ,EAAE;wBAC/B,IAAI,QAAQ,IAAI,EAAE,EAAE;4BAClB,QAAQ,GAAG,IAAI,CAAC;AACjB,yBAAA;AAAM,6BAAA;AACL,4BAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;4BAC5B,IAAI,QAAQ,IAAI,GAAG,EAAE;gCACnB,QAAQ,GAAG,SAAS,CAAC;AACtB,6BAAA;AACF,yBAAA;AACF,qBAAA;oBAED,IAAI,SAAS,IAAI,QAAQ,EAAE;wBACzB,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,QAAQ,CAAC;AAChC,wBAAA,WAAW,EAAE,CAAC;AACf,qBAAA;oBACD,SAAS;AACV,iBAAA;AAED,gBAAA,IAAI,SAAS,KAAK,IAAI,IAAI,QAAQ,KAAK,IAAI,EAAE;oBAC3C,SAAS;AACV,iBAAA;AAED,gBAAA,IAAI,SAAS,KAAK,KAAK,IAAI,QAAQ,KAAK,KAAK,EAAE;oBAC7C,SAAS;AACV,iBAAA;gBAED,IAAI,SAAS,IAAI,QAAQ,EAAE;oBACzB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAAC;AAChD,oBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;oBAE/B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAAC;AAChD,oBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;oBAE9B,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;AACtC,oBAAA,WAAW,EAAE,CAAC;AACf,iBAAA;AACF,aAAA;AACF,SAAA;QAED,IAAI,WAAW,GAAG,CAAC,EAAE;AACnB,YAAA,OAAO,GAAG,CAAC;AACZ,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACb;AAED;;;AAGG;IAEH,gBAAgB,CAAC,SAAiB,EAAE,QAAgB,EAAA;QAClD,OAAO,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;KACrD;AAQD,IAAA,gBAAgB,CAAC,SAAiB,EAAE,QAAgB,EAAE,8BAAuC,KAAK,EAAA;AAChG,QAAA,IAAI,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,QAAQ,EAAE,2BAA2B,CAAC,CAAC;QAEhF,IAAI,IAAI,IAAI,IAAI,EAAE;YAChB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC;YACvC,IAAI,CAAC,aAAa,CAAC,GAAG,yBAAyB,GAAG,SAAS,CAAC,YAAY,CAAC;AAC1E,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;KACb;AAID,IAAA,UAAU,CAAC,SAAiB,EAAE,QAAgB,EAAE,8BAAuC,KAAK,EAAA;AAC1F,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,QAAQ,EAAE,2BAA2B,CAAC,IAAI,IAAI,CAAC;KACrF;IAED,0BAA0B,CAAC,SAAiB,EAAE,SAAmB,EAAA;QAC/D,IAAI,MAAM,GAAG,EAAE,CAAC;AAEhB,QAAA,SAAS,CAAC,OAAO,CAAC,CAAC,IAAG;YACpB,IAAI,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;YAEjD,IAAI,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE;gBAC9B,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;AACjC,aAAA;YAED,IAAI,CAAC,aAAa,CAAC,GAAG,yBAAyB,GAAG,SAAS,CAAC,YAAY,CAAC;AACzE,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpB,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,MAAM,CAAC;KACf;IAEO,aAAa,CAAC,SAAiB,EAAE,QAAgB,EAAA;QACvD,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,SAAS,EAAE,CAAC;AACzC,QAAA,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE;YAC9B,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;aACzC,EAAE,GAAG,CAAC,CAAC;YACR,OAAO;AACR,SAAA;AAED,QAAA,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,IAAM,GAAC,CAAC,CAAC;KACzD;IAEO,SAAS,CAAC,SAAiB,EAAE,QAAgB,EAAA;AACnD,QAAA,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,YAAY,SAAS,CAAC,EAAE;AACtF,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AAED,QAAA,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;AACtC,YAAA,QAAQ,CAAC,QAAQ,CAAC,GAAG,IAAI,SAAS,EAAE,CAAC;AACtC,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAc,CAAC;AACxC,YAAA,IAAI,CAAC,CAAC,QAAQ,IAAI,IAAI,EAAE;AACtB,gBAAA,OAAO,IAAI,CAAC;AACb,aAAA;AACF,SAAA;QAED,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAC,EAAE,CAAC,CAAC;AAE1E,QAAA,IAAI,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAc,CAAC;AACxC,QAAA,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC;QAEnB,IAAI,OAAO,GAAG,IAAI,WAAW,CAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAC;AAChE,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,IAAI,EAAE;AACjC,YAAA,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC9E,SAAA;QACD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;QACpD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QACjD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,iCAAiC,CAAC,CAAC;QAC5E,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,iCAAiC,CAAC,CAAC;QACtE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;AAEtD,QAAA,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,cAAc,GAAG,IAAI,GAAG,sFAAsF,GAAG,SAAS,CAAC,WAAW,GAAG,GAAG,GAAG,QAAQ,CAAC,EAAE,GAAG,MAAM,CAAC;AAC1O,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAEzB,QAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,QAAQ,CAAc,CAAC;AAC1C,QAAA,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC;QAEpB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,CACnE,GAAG,CAAC,CAAC,IAAG;AACN,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACvB,YAAA,IAAI,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAc,CAAC;AACxC,YAAA,IAAI,IAAI,GAAG,CAAC,CAAC,cAAc,CAAW,CAAC;;YAEvC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAC7C,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAA;YAChD,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAC7C,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAC7C,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAC7C,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACzC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YAC3C,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAC3C,YAAA,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC;AAClB,YAAA,OAAO,QAAQ,CAAC;SACjB,CAAC,CACH,CAAC;KACH;AAEO,IAAA,eAAe,CAAC,SAAiB,EAAE,KAAa,EAAE,KAAU,EAAA;AAClE,QAAA,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;QAEzB,IAAI,CAAC,YAAY,cAAc,EAAE;YAC/B,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE;AAC3C,gBAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;AAC3D,aAAA;AAAM,iBAAA;AACL,gBAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;AACrE,aAAA;AACF,SAAA;QAED,IAAI,OAAO,CAAC,IAAI,QAAQ,IAAI,OAAO,KAAK,IAAI,QAAQ,EAAE;YACpD,IAAI,KAAK,IAAI,EAAE,EAAE;gBACf,KAAK,GAAG,IAAI,CAAC;AACd,aAAA;AAAM,iBAAA;AACL,gBAAA,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;gBACtB,IAAI,KAAK,IAAI,GAAG,EAAE;oBAChB,KAAK,GAAG,IAAI,CAAC;AACd,iBAAA;AACF,aAAA;AACF,SAAA;QAED,IAAI,OAAO,CAAC,IAAI,QAAQ,IAAI,OAAO,KAAK,IAAI,QAAQ,EAAE;YACpD,IAAI,KAAK,IAAI,IAAI,EAAE;AACjB,gBAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;AACxD,aAAA;AAAM,iBAAA;;;AAGL,gBAAA,IAAI,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC;AACnB,gBAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;AACzD,aAAA;AACF,SAAA;QAED,IAAI,CAAC,YAAY,eAAe,EAAE;AAChC,YAAA,KAAK,GAAG,CAAC,CAAC,gCAAgC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;YAErE,IAAI,KAAK,CAAC,EAAE,IAAI,IAAI,IAAI,KAAK,CAAC,EAAE,IAAI,EAAE,EAAE;AACtC,gBAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AACjF,aAAA;AAAM,iBAAA;AACL,gBAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,UAAU,GAAG,GAAG,GAAG,KAAK,CAAC,EAAE,GAAG,GAAG,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AACpJ,aAAA;AACF,SAAA;QAED,IAAI,KAAK,YAAY,IAAI,EAAE;AACzB,YAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;AAC1E,SAAA;AAED,QAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;KAC5D;IAEO,kBAAkB,CAAC,SAAiB,EAAE,QAAgB,EAAA;QAC5D,IAAI,IAAI,GAAG,EAAE,CAAC;AAEd,QAAA,KAAK,IAAI,IAAI,IAAI,SAAS,EAAE;AAC1B,YAAA,IAAI,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,UAAU,EAAE;AAC3E,gBAAA,IAAI,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC;oBAAE,SAAS;AAE3C,gBAAA,IAAI,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC3B,gBAAA,IAAI,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,IAAI,EAAE;AAE3C,oBAAA,IAAI,QAAQ,CAAC,IAAI,CAAC,YAAY,eAAe,EAAE;AAC7C,wBAAA,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,4BAA4B,IAAI,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,4BAA4B,IAAI,EAAE,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,IAAI,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE;AAC1L,4BAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAoB,CAAC;4BAC5C,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,EAAE;AACjC,gCAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,kCAAkC,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC;AACxJ,6BAAA;4BACD,SAAS;AACV,yBAAA;AACF,qBAAA;AAED,oBAAA,IAAI,SAAS,CAAC,IAAI,CAAC,YAAY,eAAe,EAAE;AAC9C,wBAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAoB,CAAC;wBAC5C,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,EAAE;AACjC,4BAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,kCAAkC,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC;AAC1J,yBAAA;wBACD,SAAS;AACV,qBAAA;AAED,oBAAA,IAAI,SAAS,CAAC,IAAI,CAAC,YAAY,cAAc,EAAE;AAC7C,wBAAA,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAmB,CAAC;wBACzC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI,EAAE;4BAChC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;AACjC,yBAAA;wBACD,SAAS;AACV,qBAAA;AAED,oBAAA,IAAI,SAAS,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE;wBACnC,IAAI,CAAC,GAAG,KAAa,CAAC;wBACtB,IAAI,CAAC,IAAI,IAAI,EAAE;4BACb,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;AACzC,yBAAA;wBACD,SAAS;AACV,qBAAA;AAED,oBAAA,IAAI,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE;AACtC,wBAAA,IAAI,OAAO,KAAK,IAAI,QAAQ,EAAE;4BAC5B,IAAI,KAAK,IAAI,EAAE,EAAE;gCACf,SAAS;AACV,6BAAA;AACD,4BAAA,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;4BACtB,IAAI,KAAK,IAAI,GAAG,EAAE;gCAChB,SAAS;AACV,6BAAA;AACF,yBAAA;wBAED,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAK,CAAC;wBAC9B,SAAS;AACV,qBAAA;oBAED,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;AACxC,iBAAA;AACF,aAAA;AACF,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACb;AAEO,IAAA,WAAW,CAAC,SAAiB,EAAE,QAAgB,EAAE,IAAY,EAAE,KAAU,EAAA;QAC/E,IAAI,KAAK,IAAI,IAAI,EAAE;AACjB,YAAA,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;YACvB,OAAO;AACR,SAAA;AAED,QAAA,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QACxB,IAAI,CAAC,YAAY,eAAe,EAAE;YAChC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;YAC3B,OAAO;AACR,SAAA;QAED,IAAI,CAAC,YAAY,cAAc,EAAE;AAC/B,YAAA,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,cAAc,EAAE,CAAC;YACtC,OAAO;AACR,SAAA;AAED,QAAA,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;KACvB;AAEO,IAAA,eAAe,CAAC,IAAoB,EAAA;QAC1C,IAAI,IAAI,IAAI,IAAI,EAAE;AAChB,YAAA,IAAI,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;AAC1B,YAAA,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;AACxB,YAAA,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;AACxD,YAAA,OAAO,MAAM,CAAC;AACf,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACb;IAEO,kBAAkB,CAAmB,SAAY,EAAE,QAAa,EAAE,GAAW,EAAE,KAAe,EAAE,SAAiB,EAAE,QAAkB,EAAA;QAC3I,IAAI,EAAE,GAAG,IAAI,CAAC;QACd,IAAI,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,mBAAmB,EAAE,CAAC,CAAC;AAE1H,QAAA,IAAI,UAAU,GAAG,QAAQ,CAAC,8CAA8C,CAAW,CAAC;AACpF,QAAA,IAAI,UAAU,IAAI,IAAI,IAAI,UAAU,IAAI,EAAE,EAAE;AAE1C,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;AACnC,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAEhC,IAAI,QAAQ,GAAG,kBAAkB,CAAC,kBAAkB,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC/G,YAAA,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAC,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AAE/G,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;AAC5C,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAE9B,YAAA,IAAI,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC;YAC5D,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,WAAW,GAAG,YAAY,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;AAElJ,YAAA,MAAM,CAAC,IAAI,GAAG,MAAoC;gBAChD,IAAI,OAAO,GAAG,IAAI,WAAW,CAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAC;AAChE,gBAAA,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,IAAI,EAAE;AACjC,oBAAA,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC9E,iBAAA;gBACD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;gBACpD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;gBACjD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,iCAAiC,CAAC,CAAC;gBAC5E,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,iCAAiC,CAAC,CAAC;gBACtE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;AAEtD,gBAAA,IAAI,OAAO,GAAG;AACZ,oBAAA,OAAO,EAAE,OAAO;iBACjB,CAAA;gBAED,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAG;AAClF,oBAAA,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;oBAC5B,IAAI,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAI,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,GAAG,SAAS,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC;AAC9F,oBAAA,OAAO,EAAE,CAAC;iBACX,CAAC,CAAC,CAAC;AACN,aAAC,CAAA;YAED,IAAI,SAAS,IAAI,CAAC,EAAE;AAClB,gBAAA,MAAM,CAAC,IAAI,GAAG,MAAoC;oBAChD,IAAI,OAAO,GAAG,IAAI,WAAW,CAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAC;AAChE,oBAAA,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,IAAI,EAAE;AACjC,wBAAA,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC9E,qBAAA;oBACD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;oBACpD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;oBACjD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,iCAAiC,CAAC,CAAC;oBAC5E,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,iCAAiC,CAAC,CAAC;oBACtE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;AAEtD,oBAAA,IAAI,OAAO,GAAG;AACZ,wBAAA,OAAO,EAAE,OAAO;qBACjB,CAAA;AAED,oBAAA,IAAI,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;oBAClD,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAG;AAChE,wBAAA,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;wBAChD,IAAI,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAI,SAAS,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;AACnG,wBAAA,OAAO,EAAE,CAAC;qBACX,CAAC,CAAC,CAAC;AACN,iBAAC,CAAA;AACF,aAAA;AACF,SAAA;AACD,QAAA,OAAO,MAAM,CAAC;KACf;IAEO,kBAAkB,CAAmB,SAAY,EAAE,QAAa,EAAE,GAAW,EAAE,KAAe,EAAE,SAAiB,EAAE,KAAe,EAAA;QACxI,IAAI,EAAE,GAAG,IAAI,CAAC;AACd,QAAA,IAAI,MAAM,GAAG;AACX,YAAA,OAAO,EAAE,QAAQ,CAAC,gBAAgB,CAAC;AACnC,YAAA,KAAK,EAAE,QAAQ,CAAC,cAAc,CAAC;AAC/B,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,SAAS,EAAE,SAAS;AACpB,YAAA,GAAG,EAAE,GAAG;AACR,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,IAAI,EAAE,IAAI;SACX,CAAA;AAED,QAAA,IAAI,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAQ,CAAC;AACpC,QAAA,IAAI,CAAC,OAAO,CAAC,CAAC,IAAG;YACf,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,EAAE,SAAS,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;AAC5E,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,QAAQ,GAAG,QAAQ,CAAC,iBAAiB,CAAW,CAAC;AAErD,QAAA,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,IAAI,EAAE,EAAE;YACtC,IAAI,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACrC,YAAA,QAAQ,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC,YAAY,EAAE,GAAG,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACtE,YAAA,MAAM,GAAG;gBACP,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,KAAK,EAAE,MAAM,CAAC,KAAK;AACnB,gBAAA,KAAK,EAAE,KAAK;AACZ,gBAAA,SAAS,EAAE,SAAS;AACpB,gBAAA,GAAG,EAAE,GAAG;AACR,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,IAAI,EAAE,IAAI;gBACV,IAAI,EAAE,MAAoC;oBACxC,IAAI,OAAO,GAAG,IAAI,WAAW,CAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAC;AAChE,oBAAA,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,IAAI,EAAE;AACjC,wBAAA,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC9E,qBAAA;oBACD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;oBACpD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;oBACjD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,iCAAiC,CAAC,CAAC;oBAC5E,IAAI,GAAG,GAAG,CAAC,EAAE;AACX,wBAAA,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,oDAAoD,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC3G,qBAAA;AAAM,yBAAA;wBACL,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,iCAAiC,CAAC,CAAC;AACvE,qBAAA;oBACD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;AAEtD,oBAAA,IAAI,OAAO,GAAG;AACZ,wBAAA,OAAO,EAAE,OAAO;qBACjB,CAAA;oBACD,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAG;AAChE,wBAAA,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;wBACrB,IAAI,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAI,SAAS,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;AAClF,wBAAA,OAAO,EAAE,CAAC;qBACX,CAAC,CAAC,CAAC;iBACL;aACF,CAAA;AACF,SAAA;AAED,QAAA,IAAI,MAAM,CAAC,SAAS,IAAI,CAAC,EAAE;AACzB,YAAA,MAAM,CAAC,IAAI,GAAG,MAAoC;gBAChD,IAAI,OAAO,GAAG,IAAI,WAAW,CAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAC;AAChE,gBAAA,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,IAAI,EAAE;AACjC,oBAAA,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC9E,iBAAA;gBACD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;gBACpD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;gBACjD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,iCAAiC,CAAC,CAAC;gBAC5E,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,iCAAiC,CAAC,CAAC;gBACtE,IAAI,GAAG,GAAG,CAAC,EAAE;AACX,oBAAA,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,oBAAoB,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC3E,iBAAA;AAAM,qBAAA;AACN,iBAAA;gBACD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;AAEtD,gBAAA,IAAI,OAAO,GAAG;AACZ,oBAAA,OAAO,EAAE,OAAO;iBACjB,CAAA;AAED,gBAAA,IAAI,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;gBAClD,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAG;AAChE,oBAAA,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;oBAChD,IAAI,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAI,SAAS,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;AAChG,oBAAA,OAAO,EAAE,CAAC;iBACX,CAAC,CAAC,CAAC;AACN,aAAC,CAAA;AACF,SAAA;AACD,QAAA,OAAO,MAAM,CAAC;KACf;AAEO,IAAA,kBAAkB,CAAmB,SAAY,EAAE,QAAa,EAAE,MAAW,EAAA;AACnF,QAAA,IAAI,GAAG,GAAG,SAAS,CAAC,WAAW,GAAG,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACrE,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AAC5C,QAAA,QAAQ,CAAC,aAAa,CAAC,GAAG,SAAS,CAAC,WAAW,CAAC;AAChD,QAAA,QAAQ,CAAC,cAAc,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC;AAClD,QAAA,QAAQ,CAAC,UAAU,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC;AAC1C,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;KAC9B;AAEO,IAAA,OAAO,CAAmB,SAAY,EAAE,QAAa,EAAE,UAAmB,EAAE,KAAe,EAAA;QACjG,IAAI,EAAE,GAAG,IAAI,CAAC;AAEd,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAE9B,QAAA,IAAI,GAAG,GAAG,SAAS,CAAC,WAAW,GAAG,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACrE,IAAI,MAAM,GAAG,EAAS,CAAC;QAEvB,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;AACpC,YAAA,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC5B,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AAC5C,YAAA,MAAM,CAAC,aAAa,CAAC,GAAG,SAAS,CAAC,WAAW,CAAC;AAC9C,YAAA,MAAM,CAAC,cAAc,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC;AAChD,YAAA,MAAM,CAAC,UAAU,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC;AACxC,YAAA,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AACnC,SAAA;QAED,IAAI,IAAI,CAAC,uBAAuB,EAAE;AAChC,YAAA,MAAM,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC;AACjC,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE;AACvC,gBAAA,OAAO,MAAM,CAAC,YAAY,CAAC,CAAC;AAC7B,aAAA;AACF,SAAA;AAED,QAAA,MAAM,CAAC,aAAa,CAAC,GAAG,UAAU,CAAC;AAEnC,QAAA,KAAK,IAAI,IAAI,IAAI,SAAS,EAAE;AAC1B,YAAA,IAAI,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC;gBAAE,SAAS;AAE3C,YAAA,IAAI,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,UAAU,EAAE;gBAC1E,IAAI,IAAI,GAAG,KAAK,CAAC;AACjB,gBAAA,IAAI,SAAS,CAAC,IAAI,CAAC,YAAY,eAAe,EAAE;AAC9C,oBAAA,IAAI,GAAG,GAAG,IAAI,eAAe,EAAE,CAAC;oBAChC,IAAI,EAAE,GAAG,QAAQ,CAAC,GAAG,GAAG,IAAI,GAAG,QAAQ,CAAW,CAAC;AACnD,oBAAA,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,WAAW,EAAE;AACnC,wBAAA,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC;wBAC1B,OAAO,MAAM,CAAC,GAAG,GAAG,IAAI,GAAG,QAAQ,CAAC,CAAC;wBAErC,GAAG,CAAC,WAAW,GAAG,QAAQ,CAAC,GAAG,GAAG,IAAI,GAAG,iDAAiD,CAAC,CAAC;wBAC3F,OAAO,QAAQ,CAAC,GAAG,GAAG,IAAI,GAAG,iDAAiD,CAAC,CAAC;wBAEhF,GAAG,CAAC,IAAI,GAAG,QAAQ,CAAC,GAAG,GAAG,IAAI,GAAG,kDAAkD,CAAC,CAAC;wBACrF,OAAO,QAAQ,CAAC,GAAG,GAAG,IAAI,GAAG,kDAAkD,CAAC,CAAC;wBAEjF,GAAG,CAAC,4BAA4B,GAAG,QAAQ,CAAC,GAAG,GAAG,IAAI,GAAG,4DAA4D,CAAC,CAAC;wBACvH,OAAO,QAAQ,CAAC,GAAG,GAAG,IAAI,GAAG,4DAA4D,CAAC,CAAC;AAC5F,qBAAA;AACD,oBAAA,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;oBACnB,IAAI,GAAG,IAAI,CAAC;AACb,iBAAA;gBAED,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,YAAY,cAAc,EAAE;AACtD,oBAAA,IAAI,GAAG,GAAG,IAAI,cAAc,EAAE,CAAC;AAC/B,oBAAA,GAAG,CAAC,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;oBAC3B,GAAG,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,GAAG,4CAA4C,CAAC,CAAC;AACzE,oBAAA,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;oBACnB,IAAI,GAAG,IAAI,CAAC;AACb,iBAAA;gBAED,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE;AAC5C,oBAAA,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;AACvB,oBAAA,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;AACxB,wBAAA,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,qBAAA;AAAM,yBAAA;AACL,wBAAA,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AACrB,qBAAA;oBAED,IAAI,GAAG,IAAI,CAAC;AACb,iBAAA;gBAED,IAAI,CAAC,IAAI,EAAE;oBACT,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;oBAC9B,IAAI,GAAG,IAAI,CAAC;AACb,iBAAA;AACF,aAAA;AACF,SAAA;AAED,QAAA,IAAI,KAAK,GAAG,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC;AACzE,QAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAG;YAChB,IAAI,CAAC,IAAI,aAAa,IAAI,OAAO,SAAS,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE;gBAC5D,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AAC1B,aAAA;AACH,SAAC,CAAC,CAAC;QAEH,IAAI,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;QAE9C,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;AAEjC,YAAA,GAAG,CAAC,OAAO,CAAC,EAAE,IAAG;gBACf,IAAI,EAAE,IAAI,IAAI,EAAE;oBACd,IAAI,EAAE,CAAC,OAAO,EAAE;wBACd,IAAI,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;wBAC3B,IAAI,EAAE,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;4BACnC,IAAI,IAAI,GAAG,EAAE,CAAC;AACd,4BAAA,EAAE,CAAC,OAAO,CAAC,EAAE,IAAG;AACd,gCAAA,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AACrD,6BAAC,CAAC,CAAC;AACH,4BAAA,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AACvB,4BAAA,IAAI,EAAE,CAAC,KAAK,YAAY,QAAQ,EAAE;gCAChC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gCAC9B,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AACpC,gCAAA,IAAI,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;AACrC,gCAAA,IAAI,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,WAAW,CAAC;gCAC3C,IAAI,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;gCAChC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;gCAC1C,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gCACtC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;AAC/C,6BAAA;AACF,yBAAA;AACF,qBAAA;AAAM,yBAAA;wBACL,IAAI,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;wBAC3B,IAAI,EAAE,IAAI,IAAI,EAAE;4BACd,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAC5D,4BAAA,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC;AACjD,4BAAA,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC;AACvD,4BAAA,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC;AAC1D,yBAAA;AACF,qBAAA;AACF,iBAAA;AACH,aAAC,CAAC,CAAC;AACJ,SAAA;QAED,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACrC,YAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAG;AAChB,gBAAA,KAAK,IAAI,CAAC,IAAI,MAAM,EAAE;oBACpB,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE;AACzB,wBAAA,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;AAClB,qBAAA;AACF,iBAAA;AACD,gBAAA,KAAK,IAAI,CAAC,IAAI,QAAQ,EAAE;oBACtB,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE;wBACzB,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;AACzB,qBAAA;AACF,iBAAA;AACH,aAAC,CAAC,CAAA;AACH,SAAA;QAED,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,WAAW,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,UAAU,EAAE;AAC7G,YAAA,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;AACrB,SAAA;AAED,QAAA,IAAI,SAAS,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE;AACtE,YAAA,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,EAAE;AACtE,gBAAA,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AACvC,aAAA;AACF,SAAA;AAED,QAAA,IAAI,UAAU,EAAE;AACd,YAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAClC,SAAA;AAED,QAAA,OAAO,MAAW,CAAC;KACpB;IAGO,QAAQ,CAAC,SAAc,EAAE,QAAa,EAAA;AAC5C,QAAA,IAAI,GAAG,GAAG,SAAS,CAAC,WAAW,GAAG,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,eAAe,GAAG,GAAG,CAAC,CAAC;AAE3C,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;AAEjC,QAAA,KAAK,IAAI,IAAI,IAAI,SAAS,EAAE;AAC1B,YAAA,IAAI,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC;gBAAE,SAAS;AAC3C,YAAA,IAAI,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,UAAU,EAAE;AAC1E,gBAAA,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACvB,IAAI,CAAC,IAAI,IAAI;oBAAE,SAAS;gBAExB,IAAI,IAAI,GAAG,KAAK,CAAC;gBAEjB,IAAI,CAAC,YAAY,eAAe,EAAE;oBAChC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;oBACzB,IAAI,GAAG,IAAI,CAAC;AACb,iBAAA;AAED,gBAAA,IAAI,CAAC,IAAI,IAAI,CAAC,YAAY,cAAc,EAAE;oBACxC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;oBACzB,IAAI,GAAG,IAAI,CAAC;AACb,iBAAA;AAED,gBAAA,IAAI,CAAC,IAAI,IAAI,CAAC,YAAY,IAAI,EAAE;AAE9B,oBAAA,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;oBACrC,IAAI,GAAG,IAAI,CAAC;AACb,iBAAA;gBAED,IAAI,CAAC,IAAI,EAAE;AACT,oBAAA,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACjB,IAAI,GAAG,IAAI,CAAC;AACb,iBAAA;AACF,aAAA;AACF,SAAA;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;KAC7B;AAEO,IAAA,aAAa,CAAC,MAAc,EAAA;AAClC,QAAA,IAAI,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;QACjC,IAAI,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACnC,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAClC,QAAA,MAAM,CAAC,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AACtG,QAAA,OAAO,MAAM,CAAC;KACf;AAEO,IAAA,mBAAmB,CAAC,MAAc,EAAA;QACxC,IAAI,MAAM,GAAG,EAAE,CAAC;AAChB,QAAA,KAAK,IAAI,IAAI,IAAI,MAAM,EAAE;AACvB,YAAA,IAAI,IAAI,IAAI,MAAM,CAAC,QAAQ;gBAAE,SAAS;AACtC,YAAA,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC;gBAAE,SAAS;AAExC,YAAA,IAAI,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AACtB,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;AACrB,gBAAA,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;AACjB,oBAAA,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAW,CAAC;oBACzB,MAAM,CAAC,IAAI,CAAC;AACV,wBAAA,IAAI,EAAE,IAAI;AACV,wBAAA,MAAM,EAAE,EAAE;AACV,wBAAA,OAAO,EAAE,IAAI;AACb,wBAAA,KAAK,EAAE,EAAE;AACV,qBAAA,CAAC,CAAC;AACJ,iBAAA;AACF,aAAA;AAAM,iBAAA;gBACL,IAAI,EAAE,YAAY,MAAM,EAAE;oBACxB,MAAM,CAAC,IAAI,CAAC;AACV,wBAAA,IAAI,EAAE,IAAI;AACV,wBAAA,MAAM,EAAE,EAAE;AACV,wBAAA,OAAO,EAAE,KAAK;AACd,wBAAA,KAAK,EAAE,EAAE;AACV,qBAAA,CAAC,CAAC;AACJ,iBAAA;AACF,aAAA;AACF,SAAA;AACD,QAAA,OAAO,MAAM,CAAC;KACf;AAEO,IAAA,qBAAqB,CAAC,GAAQ,EAAA;QACpC,IAAI,OAAO,GAAG,KAAK,QAAQ;AAAE,YAAA,OAAO,GAAG,CAAC;QAExC,IAAI,CAAC,GAAG,GAAG,CAAC;QACZ,IAAI,EAAE,GAAG,CAAC,CAAC;QACX,IAAI,EAAE,GAAG,EAAE,CAAC;AACZ,QAAA,KAAK,IAAI,CAAC,IAAI,GAAG,EAAE;AACjB,YAAA,IAAI,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;gBACzB,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;AACzB,gBAAA,EAAE,EAAE,CAAC;gBACL,EAAE,GAAG,GAAG,CAAC;AACV,aAAA;AACF,SAAA;QACD,CAAC,IAAI,GAAG,CAAC;QAET,EAAE,GAAG,CAAC,CAAC;QACP,EAAE,GAAG,GAAG,CAAC;AACT,QAAA,KAAK,IAAI,CAAC,IAAI,GAAG,EAAE;AACjB,YAAA,IAAI,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;gBACzB,CAAC,IAAI,EAAE,GAAG,IAAI,GAAG,EAAE,GAAG,GAAG,CAAC;AAE1B,gBAAA,EAAE,EAAE,CAAC;gBACL,EAAE,GAAG,GAAG,CAAC;AAGT,gBAAA,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;gBAEf,IAAI,CAAC,IAAI,IAAI,EAAE;oBACb,CAAC,GAAG,EAAE,CAAC;oBACP,CAAC,IAAI,CAAC,CAAC;oBACP,SAAS;AACV,iBAAA;AAGD,gBAAA,IAAI,YAAY,GAAG,CAAC,CAAC,+BAA+B,CAAC,CAAC;gBACtD,IAAI,YAAY,IAAI,IAAI,EAAE;AACxB,oBAAA,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBAC1B,SAAS;AACV,iBAAA;AAED,gBAAA,IAAI,CAAC,CAAC,cAAc,CAAC,gBAAgB,CAAC,EAAE;AACtC,oBAAA,CAAC,GAAG,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC;AAC3B,iBAAA;gBAED,IAAI,CAAC,YAAY,IAAI,EAAE;AACrB,oBAAA,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;oBACrB,SAAS;AACV,iBAAA;AAED,gBAAA,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;AACzB,oBAAA,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;oBAClB,SAAS;AACV,iBAAA;AAED,gBAAA,IAAI,OAAO,CAAC,KAAK,SAAS,EAAE;oBAC1B,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,OAAO,CAAC;oBAC1B,SAAS;AACV,iBAAA;AAED,gBAAA,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;AACzB,oBAAA,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;oBACnB,SAAS;AACV,iBAAA;AAED,gBAAA,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,aAAA;AACF,SAAA;AACD,QAAA,OAAO,CAAC,CAAC;KACV;AAEO,IAAA,SAAS,CAAC,KAAU,EAAA;QAC1B,IAAI,WAAW,GAAG,KAAK,CAAC;QACxB,IAAI,MAAM,GAAG,EAAE,CAAC;AAEhB,QAAA,KAAK,IAAI,GAAG,IAAI,KAAK,EAAE;AACrB,YAAA,IAAI,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;AAC7B,gBAAA,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;gBACvB,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,cAAc,CAAC,gBAAgB,CAAC,EAAE;oBAC3D,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC;oBACxC,WAAW,GAAG,IAAI,CAAC;AACpB,iBAAA;AAAM,qBAAA;AACL,oBAAA,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACrB,iBAAA;AACF,aAAA;AACF,SAAA;QAED,IAAI,CAAC,WAAW,EAAE;AAChB,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;AAED,QAAA,OAAO,MAAM,CAAC;KACf;AAEO,IAAA,UAAU,CAAC,CAAS,EAAA;QAC1B,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;KACtC;;8GAngDU,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAjB,iBAAiB,EAAA,CAAA,CAAA;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B,UAAU;;;MCztBE,SAAS,CAAA;AAMrB,CAAA;MAEY,eAAe,CAAA;AAG3B,CAAA;AAEK,MAAO,UAAW,SAAQ,MAAM,CAAA;AACpC,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,CAAC,mBAAmB,EAAE,YAAY,CAAC,CAAC;AAG3C,QAAA,IAAW,CAAA,WAAA,GAAc,IAAI,CAAC;AAC9B,QAAA,IAAW,CAAA,WAAA,GAAW,IAAI,CAAC;AAC3B,QAAA,IAAc,CAAA,cAAA,GAAW,IAAI,CAAC;AAC9B,QAAA,IAAU,CAAA,UAAA,GAAW,IAAI,CAAC;AAC1B,QAAA,IAAqB,CAAA,qBAAA,GAAW,IAAI,CAAC;AACrC,QAAA,IAAU,CAAA,UAAA,GAAY,IAAI,CAAC;AAC3B,QAAA,IAAe,CAAA,eAAA,GAAY,IAAI,CAAC;AAChC,QAAA,IAAU,CAAA,UAAA,GAAoB,IAAI,CAAC;KATlC;IAcD,IAAI,GAAA;QACF,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC;AACxC,QAAA,OAAO,IAAI,CAAC;KACb;AACF,CAAA;AAEK,MAAO,aAAc,SAAQ,MAAM,CAAA;AACvC,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,CAAC,YAAY,EAAE,YAAY,CAAC,CAAA;AAEnC,QAAA,IAAa,CAAA,aAAA,GAAW,IAAI,CAAC;AAC7B,QAAA,IAAW,CAAA,WAAA,GAAc,IAAI,CAAC;AAC9B,QAAA,IAAW,CAAA,WAAA,GAAW,IAAI,CAAC;AAC3B,QAAA,IAAW,CAAA,WAAA,GAAc,IAAI,CAAC;AAC9B,QAAA,IAAU,CAAA,UAAA,GAAW,IAAI,CAAC;KALzB;IAWD,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;KACvB;AACF,CAAA;MAEY,qBAAqB,CAAA;AAAlC,IAAA,WAAA,GAAA;AACE,QAAA,IAAU,CAAA,UAAA,GAAW,IAAI,CAAC;AAC1B,QAAA,IAAgB,CAAA,gBAAA,GAAW,IAAI,CAAC;AAChC,QAAA,IAAU,CAAA,UAAA,GAAW,IAAI,CAAC;AAC1B,QAAA,IAAmB,CAAA,mBAAA,GAAW,IAAI,CAAC;AACnC,QAAA,IAAoB,CAAA,oBAAA,GAAW,IAAI,CAAC;AACpC,QAAA,IAAgB,CAAA,gBAAA,GAAW,IAAI,CAAC;AAChC,QAAA,IAAiB,CAAA,iBAAA,GAAW,IAAI,CAAC;KAElC;AAAA,CAAA;MAEY,sBAAsB,CAAA;AAAnC,IAAA,WAAA,GAAA;AACE,QAAA,IAAU,CAAA,UAAA,GAAW,IAAI,CAAC;AAC1B,QAAA,IAAkB,CAAA,kBAAA,GAAW,IAAI,CAAC;AAClC,QAAA,IAA6B,CAAA,6BAAA,GAAW,IAAI,CAAC;AAC7C,QAAA,IAAkB,CAAA,kBAAA,GAAW,IAAI,CAAC;AAClC,QAAA,IAA6B,CAAA,6BAAA,GAAW,IAAI,CAAC;AAC7C,QAAA,IAAU,CAAA,UAAA,GAAW,IAAI,CAAC;AAC1B,QAAA,IAAgB,CAAA,gBAAA,GAAW,IAAI,CAAC;AAChC,QAAA,IAAK,CAAA,KAAA,GAAW,IAAI,CAAC;AACrB,QAAA,IAAe,CAAA,eAAA,GAAW,IAAI,CAAC;AAC/B,QAAA,IAA4B,CAAA,4BAAA,GAAW,IAAI,CAAC;AAC5C,QAAA,IAA4B,CAAA,4BAAA,GAAW,IAAI,CAAC;KAC7C;AAAA,CAAA;MAEY,eAAe,CAAA;AAI3B,CAAA;MAMY,sBAAsB,CAAA;AAIlC,CAAA;AAED,MAAM,aAAa,CAAA;AAGlB,CAAA;AAED,MAAM,kBAAkB,CAAA;AAGvB,CAAA;AAGD,MAAM,kBAAkB,CAAA;AAGvB,CAAA;AAID,MAAM,cAAc,CAAA;AAInB,CAAA;MAIY,kBAAkB,CAAA;IAI7B,WAAoB,CAAA,IAAgB,EAAU,UAA6B,EAAA;AAAvD,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;AAAU,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAmB;AAHnE,QAAA,IAAA,CAAA,yBAAyB,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7C,IAAA,CAAA,sBAAsB,GAAG,IAAI,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC;KAEuB;AAIhF,IAAA,MAAM,CAAC,IAAY,EAAE,MAAA,GAAkB,KAAK,EAAA;AAC1C,QAAA,IAAI,GAAG,GAAG,IAAI,SAAS,EAAE,CAAC;QAC1B,IAAI,CAAC,MAAM,EAAE;YACX,GAAG;AACA,iBAAA,KAAK,CAAC,uBAAuB,EAAE,UAAU,CAAC,YAAY,CAAC;AACvD,iBAAA,KAAK,CAAC,aAAa,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC;AAClD,SAAA;AAAM,aAAA;YACL,GAAG,CAAC,KAAK,CAAC,aAAa,EAAE,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACnD,SAAA;AAED,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,yBAAyB,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAG;YAC9E,IAAI,CAAC,GAAG,EAAgC,CAAC;AACzC,YAAA,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE;AAC9B,gBAAA,IAAI,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;gBAC5B,IAAI,EAAE,GAAiB,EAAE,CAAC;;AAE1B,gBAAA,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAG;oBAClB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,WAAW,IAAI,IAAI,IAAI,CAAC,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;AACtF,wBAAA,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACZ,qBAAA;AACH,iBAAC,CAAC,CAAC;AACH,gBAAA,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;AACd,aAAA;AAED,YAAA,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA;AACxG,YAAA,OAAO,EAAE,CAAC;SACX,CAAC,CAAC,CAAC;KACL;AAED,IAAA,GAAG,CAAC,EAAU,EAAA;AACZ,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAa,IAAI,CAAC,sBAAsB,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAG;YACpF,IAAI,CAAC,GAAG,EAAgB,CAAC;AACzB,YAAA,IAAI,CAAC,CAAC,UAAU,IAAI,IAAI,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AACnD,gBAAA,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;oBACxC,IAAI,CAAC,CAAC,WAAW,IAAI,IAAI,IAAI,CAAC,CAAC,WAAW,IAAI,IAAI;AAAE,wBAAA,OAAO,CAAC,CAAC;oBAC7D,IAAI,CAAC,CAAC,WAAW,IAAI,IAAI,IAAI,CAAC,CAAC,WAAW,IAAI,IAAI;wBAAE,OAAO,CAAC,CAAC,CAAC;oBAC9D,IAAI,CAAC,CAAC,WAAW,IAAI,IAAI,IAAI,CAAC,CAAC,WAAW,IAAI,IAAI;AAAE,wBAAA,OAAO,CAAC,CAAC;AAC7D,oBAAA,OAAO,CAAC,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,CAAA;AAC/E,iBAAC,CAAC,CAAA;AACH,aAAA;AACD,YAAA,OAAO,CAAC,CAAC;SACV,CAAC,CAAC,CAAC;KACL;AAED,IAAA,0BAA0B,CAAC,MAAkB,EAAA;QAC3C,IAAI,OAAO,GAAG,IAAI,WAAW,CAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAChE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;QACpD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QACjD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,iCAAiC,CAAC,CAAC;QAC5E,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,6BAA6B,CAAC,CAAC;AAElE,QAAA,IAAI,OAAO,GAAG;AACZ,YAAA,OAAO,EAAE,OAAO;SACjB,CAAA;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,GAAG,oBAAoB,GAAG,MAAM,CAAC,EAAE,GAAG,GAAG,GAAG,2KAA2K,EAAE,OAAO,CAAC;AAClR,aAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAG;AACnB,YAAA,MAAM,CAAC,mBAAmB,GAAG,QAAQ,CAAC,OAAO,CAA6B,CAAC;AAE3E,YAAA,MAAM,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,IAAG;AACrC,gBAAA,IAAI,CAAC,CAAC,kBAAkB,IAAI,MAAM,CAAC,WAAW,EAAE;AAC9C,oBAAA,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,kBAAkB,CAAC;AAC/B,oBAAA,CAAC,CAAC,eAAe,GAAG,MAAM,CAAC,UAAU,CAAC;AACtC,oBAAA,CAAC,CAAC,4BAA4B,GAAG,MAAM,CAAC,qBAAqB,CAAC;AAC/D,iBAAA;AAAM,qBAAA;AACL,oBAAA,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,kBAAkB,CAAC;AAC/B,oBAAA,CAAC,CAAC,4BAA4B,GAAG,MAAM,CAAC,qBAAqB,CAAC;AAC/D,iBAAA;AACH,aAAC,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;AAC1D,YAAA,OAAO,MAAM,CAAC;SACf,CAAC,CAAC,CAAC;KACP;AAED,IAAA,wBAAwB,CAAC,SAAmC,EAAA;AAC1D,QAAA,SAAS,CAAC,OAAO,CAAC,CAAC,IAAG;AACpB,YAAA,IAAI,CAAC,CAAC,4BAA4B,IAAI,IAAI,EAAE;AAC1C,gBAAA,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,IAAG;oBACpD,CAAC,CAAC,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC;AAClE,oBAAA,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,kBAAkB,EAAE;wBACnC,CAAC,CAAC,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;AAC3C,qBAAA;AACH,iBAAC,CAAC,CAAC;AACJ,aAAA;AAED,YAAA,IAAI,CAAC,CAAC,4BAA4B,IAAI,IAAI,EAAE;AAC1C,gBAAA,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,IAAG;oBACpD,CAAC,CAAC,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC;AAClE,oBAAA,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,kBAAkB,EAAE;wBAClC,CAAC,CAAC,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;AAC3C,qBAAA;AACH,iBAAC,CAAC,CAAC;AACJ,aAAA;AAEH,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,yBAAyB,CAAC,MAAkB,EAAA;QAC1C,IAAI,OAAO,GAAG,IAAI,WAAW,CAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAChE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;QACpD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QACjD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,iCAAiC,CAAC,CAAC;QAC5E,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,6BAA6B,CAAC,CAAC;AAElE,QAAA,IAAI,OAAO,GAAG;AACZ,YAAA,OAAO,EAAE,OAAO;SACjB,CAAA;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,GAAG,oBAAoB,GAAG,MAAM,CAAC,EAAE,GAAG,GAAG,GAAG,4LAA4L,EAAE,OAAO,CAAC;AACnS,aAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAG;AACnB,YAAA,MAAM,CAAC,kBAAkB,GAAG,QAAQ,CAAC,OAAO,CAA4B,CAAC;AACzE,YAAA,OAAO,MAAM,CAAC;SACf,CAAC,CAAC,CAAC;KACP;IAED,SAAS,CAAC,MAAkB,EAAE,IAAmB,EAAA;AAC/C,QAAA,IAAI,IAAI,CAAC,aAAa,IAAI,QAAQ,EAAE;YAClC,IAAI,OAAO,GAAG,IAAI,WAAW,CAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAC;YAChE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;YACpD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;YACjD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,iCAAiC,CAAC,CAAC;YAC5E,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,6BAA6B,CAAC,CAAC;AAElE,YAAA,IAAI,OAAO,GAAG;AACZ,gBAAA,OAAO,EAAE,OAAO;aACjB,CAAA;YAED,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAkB,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,GAAG,oBAAoB,GAAG,MAAM,CAAC,EAAE,GAAG,eAAe,GAAG,IAAI,CAAC,EAAE,GAAG,yFAAyF,CAAC;AAC9N,iBAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAG;AACnB,gBAAA,IAAI,CAAC,MAAM,GAAG,QAA2B,CAAC;AAC1C,gBAAA,OAAO,MAAM,CAAC;aACf,CAAC,CAAC,CAAC;AACP,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,aAAa,IAAI,UAAU,EAAE;YACpC,IAAI,CAAC,MAAM,GAAG;gBACZ,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;AAC3B,gBAAA,OAAO,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;aAChC,CAAA;AAED,YAAA,OAAO,IAAI,UAAU,CAAa,CAAC,IAAG;AACpC,gBAAA,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACjB,aAAC,CAAC,CAAC;AACJ,SAAA;AAED,QAAA,MAAM,sBAAsB,GAAG,IAAI,CAAC,aAAa,CAAC;KACnD;AAED,IAAA,YAAY,CAAC,MAAkB,EAAA;QAC7B,IAAI,OAAO,GAAG,IAAI,WAAW,CAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAChE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;QACpD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QACjD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,iCAAiC,CAAC,CAAC;QAC5E,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,6BAA6B,CAAC,CAAC;AAElE,QAAA,IAAI,OAAO,GAAG;AACZ,YAAA,OAAO,EAAE,OAAO;SACjB,CAAA;AAED,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAgC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,GAAG,kCAAkC,GAAG,MAAM,CAAC,WAAW,GAAG,uHAAuH,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;KAClS;;+GAzKU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAE,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAlB,kBAAkB,EAAA,CAAA,CAAA;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,UAAU;;;MCpGE,qBAAqB,CAAA;;kHAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAArB,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,YAb9B,gBAAgB,CAAA,EAAA,CAAA,CAAA;AAaP,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,EATrB,SAAA,EAAA;QACT,cAAc;QACd,UAAU;QACV,iBAAiB;QACjB,eAAe;QACf,gBAAgB;QAChB,cAAc;AACf,KAAA,EAAA,OAAA,EAAA,CAXC,gBAAgB,CAAA,EAAA,CAAA,CAAA;2FAaP,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAfjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,gBAAgB;AACjB,qBAAA;AACD,oBAAA,YAAY,EAAE,EAAE;AAChB,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,SAAS,EAAE;wBACT,cAAc;wBACd,UAAU;wBACV,iBAAiB;wBACjB,eAAe;wBACf,gBAAgB;wBAChB,cAAc;AACf,qBAAA;iBACF,CAAA;;;ACrBK,MAAO,IAAK,SAAQ,MAAM,CAAA;AAC9B,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;AAEjC,QAAA,IAAc,CAAA,cAAA,GAAoB,IAAI,eAAe,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC;AAChG,QAAA,IAAI,CAAA,IAAA,GAAW,IAAI,CAAC;AACpB,QAAA,IAAY,CAAA,YAAA,GAAoB,IAAI,eAAe,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;AACpF,QAAA,IAAgB,CAAA,gBAAA,GAAoB,IAAI,eAAe,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;KAJ3F;IAMD,IAAI,GAAA;AACF,QAAA,OAAO,IAAI,CAAC;KACb;AACF,CAAA;AAEK,MAAO,IAAK,SAAQ,MAAM,CAAA;AAC9B,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;AAEjC,QAAA,IAAW,CAAA,WAAA,GAAW,IAAI,CAAC;AAC3B,QAAA,IAAY,CAAA,YAAA,GAAW,IAAI,CAAC;AAC5B,QAAA,IAAI,CAAA,IAAA,GAAW,IAAI,CAAC;AACpB,QAAA,IAAA,CAAA,QAAQ,GAAmB,IAAI,cAAc,EAAE,CAAC;KAJ/C;IAMD,IAAI,GAAA;AACF,QAAA,OAAO,IAAI,CAAC;KACb;AACF,CAAA;AAEK,MAAO,UAAW,SAAQ,MAAM,CAAA;AACpC,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,CAAC,aAAa,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;AAE7C,QAAA,IAAa,CAAA,aAAA,GAAW,IAAI,CAAC;AAC7B,QAAA,IAAa,CAAA,aAAA,GAAW,IAAI,CAAC;AAC7B,QAAA,IAAU,CAAA,UAAA,GAAW,IAAI,CAAC;AAC1B,QAAA,IAAS,CAAA,SAAA,GAAW,IAAI,CAAC;AACzB,QAAA,IAAQ,CAAA,QAAA,GAAW,IAAI,CAAC;AACxB,QAAA,IAAQ,CAAA,QAAA,GAAW,IAAI,CAAC;AACxB,QAAA,IAAU,CAAA,UAAA,GAAW,IAAI,CAAC;AAC1B,QAAA,IAAQ,CAAA,QAAA,GAAW,IAAI,CAAC;KARvB;AAYD,IAAA,OAAO,CAAC,IAAY,EAAA;AAClB,QAAA,IAAI,IAAI,CAAC,2BAA2B,IAAI,IAAI,IAAI,IAAI,CAAC,2BAA2B,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3F,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,2BAA2B,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAChE,IAAI,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,EAAE;AACpD,oBAAA,OAAO,IAAI,CAAC;AACb,iBAAA;AACF,aAAA;AACF,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd;AAED,IAAA,QAAQ,CAAC,IAAY,EAAA;AACnB,QAAA,IAAI,IAAI,CAAC,0BAA0B,IAAI,IAAI,IAAI,IAAI,CAAC,0BAA0B,CAAC,MAAM,GAAG,CAAC,EAAE;AACzF,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,0BAA0B,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC/D,IAAI,IAAI,IAAI,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AACnD,oBAAA,OAAO,IAAI,CAAC;AACb,iBAAA;AACF,aAAA;AACF,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd;IAKD,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;AAChB,QAAA,IAAI,IAAI,CAAC,2BAA2B,IAAI,IAAI,EAAE;AAC5C,YAAA,IAAI,CAAC,2BAA2B,CAAC,OAAO,CAAC,CAAC,IAAG;AAC3C,gBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACrB,aAAC,CAAC,CAAA;AACH,SAAA;AACD,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;AAChB,QAAA,IAAI,IAAI,CAAC,0BAA0B,IAAI,IAAI,EAAE;AAC3C,YAAA,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC,IAAG;AAC1C,gBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACrB,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;IAED,IAAI,GAAA;QACF,IAAI,CAAC,2BAA2B,GAAG,IAAI,QAAQ,CAAO,aAAa,EAAE,OAAO,EAAE,6BAA6B,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;QACtI,IAAI,CAAC,0BAA0B,GAAG,IAAI,QAAQ,CAAO,aAAa,EAAE,OAAO,EAAE,4BAA4B,EAAE,KAAK,EAAE,IAAI,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;AACrI,QAAA,OAAO,IAAI,CAAC;KACb;AACF,CAAA;MAIY,kBAAkB,CAAA;AAI7B,IAAA,WAAA,CAAoB,UAA6B,EAAA;AAA7B,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAmB;QAHzC,IAAA,CAAA,aAAa,GAAS,IAAI,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;QACxC,IAAA,CAAA,aAAa,GAAS,IAAI,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;QACxC,IAAA,CAAA,aAAa,GAAe,IAAI,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC;KACN;AAEtD,IAAA,OAAO,CAAC,EAAU,EAAA;AAChB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAa,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;KAChE;IAED,cAAc,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAG;AAC1D,YAAA,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;SACxB,CAAC,CAAC,CAAC;KACL;;+GAdU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAlB,kBAAkB,EAAA,CAAA,CAAA;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,UAAU;;;MCpFE,sBAAsB,CAAA;;mHAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;oHAAtB,sBAAsB,EAAA,CAAA,CAAA;AAAtB,sBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,EAJtB,SAAA,EAAA;QACT,kBAAkB;AACnB,KAAA,EAAA,CAAA,CAAA;2FAEU,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBATlC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,EACR;AACD,oBAAA,YAAY,EAAE,EAAE;AAChB,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,SAAS,EAAE;wBACT,kBAAkB;AACnB,qBAAA;iBACF,CAAA;;;ACPK,MAAO,UAAW,SAAQ,MAAM,CAAA;AACpC,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,CAAC,aAAa,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;;AAG7C,QAAA,IAAQ,CAAA,QAAA,GAAW,IAAI,CAAC;AACxB,QAAA,IAAQ,CAAA,QAAA,GAAW,IAAI,CAAC;AACxB,QAAA,IAAU,CAAA,UAAA,GAAY,IAAI,CAAC;AAC3B,QAAA,IAAQ,CAAA,QAAA,GAAW,IAAI,CAAC;AACxB,QAAA,IAAQ,CAAA,QAAA,GAAoB,IAAI,eAAe,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;AAEvF,QAAA,IAAO,CAAA,OAAA,GAAoB,IAAI,eAAe,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;AAChF,QAAA,IAAO,CAAA,OAAA,GAAW,IAAI,CAAC;KATtB;IAWD,IAAI,GAAA;AACF,QAAA,OAAO,IAAI,CAAC;KACb;AACF,CAAA;MAGY,oBAAoB,CAAA;AAE/B,IAAA,WAAA,CAAoB,UAA6B,EAAA;AAA7B,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAmB;QADjD,IAAA,CAAA,cAAc,GAAe,IAAI,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC;KACC;AAEtD,IAAA,GAAG,CAAC,EAAU,EAAA;AACZ,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAa,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;KACjE;AAED,IAAA,OAAO,CAAC,MAAc,EAAA;AACpB,QAAA,IAAI,SAAS,GAAc,IAAI,SAAS,EAAE;aACvC,KAAK,CAAC,UAAU,EAAE,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;aAC/C,KAAK,CAAC,gBAAgB,EAAE,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;AACnE,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAa,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;KAC1E;AAED,IAAA,GAAG,CAAC,MAAc,EAAE,OAAe,EAAE,IAAY,EAAA;AAC/C,QAAA,IAAI,IAAI,GAAG,IAAI,UAAU,EAAE,CAAC;AAC5B,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AACxB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACvB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACrB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;QAClG,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;AAC7B,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAa,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;KACtE;AAED,IAAA,MAAM,CAAC,IAAgB,EAAA;AACrB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;KAC1D;AAED,IAAA,MAAM,CAAC,IAAgB,EAAA;QACrB,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;KACrC;;iHA/BU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;qHAApB,oBAAoB,EAAA,CAAA,CAAA;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC,UAAU;;;MCXE,wBAAwB,CAAA;;qHAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;sHAAxB,wBAAwB,EAAA,CAAA,CAAA;AAAxB,wBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,EAJxB,SAAA,EAAA;QACT,oBAAoB;AACrB,KAAA,EAAA,CAAA,CAAA;2FAEU,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBATpC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,EACR;AACD,oBAAA,YAAY,EAAE,EAAE;AAChB,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,SAAS,EAAE;wBACT,oBAAoB;AACrB,qBAAA;iBACF,CAAA;;;MCCY,sBAAsB,CAAA;;mHAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;oHAAtB,sBAAsB,EAAA,CAAA,CAAA;AAAtB,sBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,EAJtB,SAAA,EAAA;QACT,kBAAkB;AACnB,KAAA,EAAA,CAAA,CAAA;2FAEU,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBATlC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,EACR;AACD,oBAAA,YAAY,EAAE,EAAE;AAChB,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,SAAS,EAAE;wBACT,kBAAkB;AACnB,qBAAA;iBACF,CAAA;;;ACbD;;AAEG;;ACFH;;AAEG;;;;"}