@adins/ucviewgeneric 2.3.2 → 2.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["ng://@adins/ucviewgeneric/lib/ucviewgeneric.service.ts","ng://@adins/ucviewgeneric/lib/model/uc-view-generic-obj.model.ts","ng://@adins/ucviewgeneric/lib/ucviewgeneric.component.ts","ng://@adins/ucviewgeneric/lib/ucviewgeneric.module.ts"],"names":["UcviewgenericService","Injectable","args","providedIn","UcViewGenericObj","this","viewInput","viewEnvironment","ddlEnvironments","Array","listEnvironments","whereValue","UcviewgenericComponent","prototype","ngOnInit","console","log","initiateForm","_this","getJSON","viewGenericObj","subscribe","data","viewList","viewInfoObjList","j","subsection","length","push","i","queryObj","querystring","whereQuery","values","getList","mainInfoPath","undefined","fullpath","mainInfoUrl","http","post","response","y","mainInfo","propertyList","concat","z","prefix","property","suffix","type","case","Empty","Hidden","result","hideIfEmpty","a","includes","isHide","navigationConst","tempLink","path","environment","isFullpath","url","isReady","error","get","GetCookie","cookieService","key","value","trim","DecryptString","chipperText","chipperKey","chipperKeyArr","CryptoJS.enc","Utf8","parse","iv","CryptoJS.lib","WordArray","create","CryptoJS.AES","decrypt","toString","genAction","viewObj","param","arrList","genRouterLink","urlLink","redirectFullPath","target","queryParam","ListObj","Object","keys","window","open","callbackFunction","item","CBObj","ViewObj","Key","callback","emit","switchCase","condList","condition","conditions","restriction","isUser","this_1","UserAccess","findIndex","x","Component","selector","template","ActivatedRoute","HttpClient","TranslateService","CookieService","Input","Output","route","translateService","EventEmitter","JSON","queryParams","params","setDefaultLang","use","localStorage","getItem","UcviewgenericModule","NgModule","declarations","imports","CommonModule","RouterModule","UcSubsectionModule","TranslateModule","forChild","exports"],"mappings":"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","sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UcviewgenericService {\r\n\r\n constructor() { }\r\n}\r\n","\r\nexport class UcViewGenericObj {\r\n viewInput: string;\r\n viewEnvironment: string;\r\n navigationConst: any;\r\n ddlEnvironments: Array<EnviObj>;\r\n listEnvironments: Array<EnvisObj>;\r\n whereValue: Array<WhereValueObj>;\r\n\r\n constructor() {\r\n this.viewInput = \"\";\r\n this.viewEnvironment = \"\";\r\n this.ddlEnvironments = new Array<EnviObj>();\r\n this.listEnvironments = new Array<EnvisObj>();\r\n this.whereValue = new Array<WhereValueObj>();\r\n }\r\n}\r\n\r\nexport class EnviObj {\r\n name: string;\r\n environment: string;\r\n\r\n constructor() {\r\n this.name = \"\";\r\n this.environment = \"\";\r\n }\r\n}\r\n\r\nexport class WhereValueObj {\r\n property: string;\r\n value: any;\r\n\r\n constructor() {\r\n this.property = \"\";\r\n }\r\n}\r\n\r\nexport class EnvisObj {\r\n environment: string;\r\n url: string;\r\n\r\n constructor() {\r\n this.environment = \"\";\r\n this.url = \"\";\r\n }\r\n}","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { EnviObj } from './model/envi-obj.model';\r\nimport { UcViewGenericObj } from './model/uc-view-generic-obj.model';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { CookieService } from 'ngx-cookie';\r\nimport * as CryptoJS from 'crypto-js';\r\n\r\n@Component({\r\n selector: 'lib-ucviewgeneric',\r\n templateUrl: './ucviewgeneric.component.html',\r\n styles: []\r\n})\r\nexport class UcviewgenericComponent implements OnInit {\r\n\r\n @Input() viewGenericObj: UcViewGenericObj = new UcViewGenericObj();\r\n @Output() callback: EventEmitter<any> = new EventEmitter();\r\n UserAccess: any = JSON.parse(this.GetCookie(this.cookieService, \"UserAccess\"));\r\n viewList: any = \"\";\r\n getList: any;\r\n viewInfoObjList: any;\r\n isReady: boolean = false;\r\n\r\n constructor(private route: ActivatedRoute, private http: HttpClient, private translateService: TranslateService, private cookieService: CookieService) {\r\n this.route.queryParams.subscribe(params => {\r\n this.getList = params;\r\n });\r\n\r\n this.translateService.setDefaultLang('en');\r\n this.translateService.use(localStorage.getItem('lang') || 'en');\r\n }\r\n\r\n ngOnInit() {\r\n console.log(\"viewgeneric\");\r\n this.initiateForm();\r\n }\r\n\r\n initiateForm() {\r\n this.getJSON(this.viewGenericObj.viewInput).subscribe(data => {\r\n this.viewList = data;\r\n this.viewInfoObjList = [];\r\n\r\n for (let j = 0; j < this.viewList.subsection.length; j++) {\r\n this.viewInfoObjList.push(j);\r\n }\r\n\r\n for (let i = 0; i < this.viewList.subsection.length; i++) {\r\n if (this.viewList.subsection[i].querystring != null) {\r\n let queryObj: any;\r\n if (this.viewGenericObj.whereValue.length == 0) {\r\n this.viewList.subsection[i].querystring.whereQuery = (<any>Object).values(this.getList);\r\n } else {\r\n this.viewList.subsection[i].querystring.whereQuery = this.viewGenericObj.whereValue;\r\n }\r\n\r\n if (this.viewList.subsection[i].mainInfoPath != undefined && this.viewList.subsection[i].mainInfoPath != \"\") {\r\n if (this.viewGenericObj.viewEnvironment != undefined && this.viewGenericObj.viewEnvironment != \"\") {\r\n this.viewList.subsection[i].fullpath = this.viewGenericObj.viewEnvironment + this.viewList.subsection[i].mainInfoPath;\r\n } else {\r\n this.viewList.subsection[i].fullpath = this.viewList.subsection[i].mainInfoUrl;\r\n }\r\n } else {\r\n this.viewList.subsection[i].fullpath = this.viewList.subsection[i].mainInfoUrl;\r\n }\r\n\r\n queryObj = {\r\n querystring: this.viewList.subsection[i].querystring\r\n }\r\n this.http.post(this.viewList.subsection[i].fullpath, queryObj).subscribe(\r\n (response) => {\r\n this.viewInfoObjList[i] = response[\"Data\"][0];\r\n\r\n for (let y = 0; y < this.viewList.subsection[i].mainInfo.length; y++) {\r\n if (this.viewList.subsection[i].mainInfo[y].propertyList != undefined && this.viewList.subsection[i].mainInfo[y].propertyList.length != 0) {\r\n const propertyList = this.viewList.subsection[i].mainInfo[y].propertyList;\r\n let concat = \"\";\r\n for (let z = 0; z < propertyList.length; z++) {\r\n concat = concat + propertyList[z].prefix + this.viewInfoObjList[i][propertyList[z].property] + propertyList[z].suffix;\r\n }\r\n this.viewList.subsection[i].mainInfo[y].concat = concat;\r\n }\r\n\r\n //switch case\r\n if (this.viewList.subsection[i].mainInfo[y].type == \"switch\"){\r\n for (let z = 0; z < this.viewList.subsection[i].mainInfo[y].case.length; z++) {\r\n let Empty = new Array<boolean>();\r\n this.viewList.subsection[i].mainInfo[y].case[z].Hidden = false;\r\n //check hideIfEmpty\r\n if (this.viewList.subsection[i].mainInfo[y].case[z].result.hideIfEmpty != undefined && this.viewList.subsection[i].mainInfo[y].case[z].result.hideIfEmpty != null){\r\n if(this.viewList.subsection[i].mainInfo[y].case[z].result.type != \"concat\"){\r\n Empty.push(this.viewInfoObjList[i][this.viewList.subsection[i].mainInfo[y].case[z].result.property] != undefined \r\n && this.viewInfoObjList[i][this.viewList.subsection[i].mainInfo[y].case[z].result.property] != null \r\n && this.viewInfoObjList[i][this.viewList.subsection[i].mainInfo[y].case[z].result.property] != \"\" ? false : true);\r\n }else{// type concat\r\n if (this.viewList.subsection[i].mainInfo[y].case[z].result.propertyList != undefined && this.viewList.subsection[i].mainInfo[y].case[z].result.propertyList.length != 0) {\r\n const propertyList = this.viewList.subsection[i].mainInfo[y].case[z].result.propertyList;\r\n let concat = \"\";\r\n for (let a = 0; a < propertyList.length; a++) {\r\n concat = concat + propertyList[a].prefix + this.viewInfoObjList[i][propertyList[a].property] + propertyList[a].suffix;\r\n Empty.push(this.viewInfoObjList[i][propertyList[a].property] != undefined \r\n && this.viewInfoObjList[i][propertyList[a].property] != null\r\n && this.viewInfoObjList[i][propertyList[a].property] != \"\" ? false : true);\r\n }\r\n this.viewList.subsection[i].mainInfo[y].case[z].result.concat = concat;\r\n }\r\n }\r\n \r\n if(Empty.includes(true) && this.viewList.subsection[i].mainInfo[y].case[z].result.hideIfEmpty){\r\n this.viewList.subsection[i].mainInfo[y].case[z].Hidden = true;\r\n this.viewList.subsection[i].mainInfo[y].isHide = true;\r\n }\r\n }else{\r\n //concat\r\n if (this.viewList.subsection[i].mainInfo[y].case[z].result.propertyList != undefined && this.viewList.subsection[i].mainInfo[y].case[z].result.propertyList.length != 0) {\r\n const propertyList = this.viewList.subsection[i].mainInfo[y].case[z].result.propertyList;\r\n let concat = \"\";\r\n for (let a = 0; a < propertyList.length; a++) {\r\n concat = concat + propertyList[a].prefix + this.viewInfoObjList[i][propertyList[a].property] + propertyList[a].suffix;\r\n }\r\n this.viewList.subsection[i].mainInfo[y].case[z].result.concat = concat;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (this.viewList.subsection[i].mainInfo[y].type == \"link\" && (this.viewGenericObj.navigationConst != undefined || this.viewGenericObj.navigationConst != null)) {\r\n let tempLink = this.viewGenericObj.navigationConst[this.viewList.subsection[i].mainInfo[y].path];\r\n if (tempLink != undefined && tempLink != null) {\r\n this.viewList.subsection[i].mainInfo[y].path = tempLink;\r\n }\r\n }\r\n if (this.viewList.subsection[i].mainInfo[y].type == \"link\"\r\n && this.viewGenericObj.listEnvironments != undefined && this.viewGenericObj.listEnvironments.length != 0) {\r\n for (let z = 0; z < this.viewGenericObj.listEnvironments.length; z++) {\r\n if (this.viewList.subsection[i].mainInfo[y].environment == this.viewGenericObj.listEnvironments[z].environment) {\r\n this.viewList.subsection[i].mainInfo[y].isFullpath = true;\r\n this.viewList.subsection[i].mainInfo[y].fullpath = this.viewGenericObj.listEnvironments[z].url + this.viewList.subsection[i].mainInfo[y].path;\r\n break;\r\n }\r\n }\r\n } else if (this.viewList.subsection[i].mainInfo[y].type == \"link\") {\r\n this.viewList.subsection[i].mainInfo[y].isFullpath = false;\r\n this.viewList.subsection[i].mainInfo[y].fullpath = this.viewList.subsection[i].mainInfo[y].path;\r\n }\r\n }\r\n this.isReady = true;\r\n },\r\n (error) => {\r\n console.log(error);\r\n });\r\n } else {\r\n if (this.viewList.subsection[i].mainInfoPath != undefined && this.viewList.subsection[i].mainInfoPath != \"\") {\r\n if (this.viewGenericObj.viewEnvironment != undefined && this.viewGenericObj.viewEnvironment != \"\") {\r\n this.viewList.subsection[i].fullpath = this.viewGenericObj.viewEnvironment + this.viewList.subsection[i].mainInfoPath;\r\n } else {\r\n this.viewList.subsection[i].fullpath = this.viewList.subsection[i].mainInfoUrl;\r\n }\r\n } else {\r\n this.viewList.subsection[i].fullpath = this.viewList.subsection[i].mainInfoUrl;\r\n }\r\n\r\n this.http.post(this.viewList.subsection[i].fullpath, this.getList).subscribe(\r\n (response) => {\r\n this.viewInfoObjList[i] = response[\"Data\"];\r\n },\r\n (error) => {\r\n console.log(error);\r\n })\r\n }\r\n }\r\n })\r\n }\r\n\r\n public getJSON(url: string): Observable<any> {\r\n return this.http.get(url);\r\n }\r\n\r\n private GetCookie(cookieService: CookieService, key: string) {\r\n let value = cookieService.get(key);\r\n if (value == undefined || value.trim() == '') return null;\r\n return this.DecryptString(value, \"AdInsFOU12345678\");\r\n }\r\n\r\n private DecryptString(chipperText: string, chipperKey: string) {\r\n if (\r\n chipperKey == undefined || chipperKey.trim() == '' ||\r\n chipperText == undefined || chipperText.trim() == ''\r\n ) return chipperText;\r\n let chipperKeyArr = CryptoJS.enc.Utf8.parse(chipperKey);\r\n let iv = CryptoJS.lib.WordArray.create([0x00, 0x00, 0x00, 0x00]);\r\n let decrypted = CryptoJS.AES.decrypt(chipperText, chipperKeyArr, { iv: iv });\r\n let plainText = decrypted.toString(CryptoJS.enc.Utf8);\r\n return plainText;\r\n }\r\n\r\n genAction(viewObj, param) {\r\n let arrList = {};\r\n\r\n for (let i = 0; i < param.length; i++) {\r\n if (viewObj[param[i].type] != undefined || viewObj[param[i].property] != undefined) {\r\n arrList[param[i].type] = viewObj[param[i].property];\r\n } else {\r\n arrList[param[i].type] = param[i].property;\r\n }\r\n }\r\n return arrList;\r\n }\r\n\r\n genRouterLink(urlLink: string) {\r\n let tempLink = urlLink;\r\n if (this.viewGenericObj.navigationConst != undefined && this.viewGenericObj.navigationConst[urlLink] != null) {\r\n tempLink = this.viewGenericObj.navigationConst[urlLink];\r\n }\r\n return tempLink;\r\n }\r\n\r\n redirectFullPath(fullpath: string, param: Object, target: string) {\r\n let queryParam = \"\";\r\n const ListObj = Object.keys(param);\r\n for (let i = 0; i < ListObj.length; i++) {\r\n if (queryParam != \"\") {\r\n queryParam = queryParam + \"&\" + ListObj[i] + \"=\" + param[ListObj[i]];\r\n } else {\r\n queryParam = ListObj[i] + \"=\" + param[ListObj[i]];\r\n }\r\n }\r\n window.open(fullpath + \"?\" + queryParam, target);\r\n }\r\n\r\n callbackFunction(item, key: string = \"\") {\r\n let CBObj = {\r\n ViewObj: item,\r\n Key: key\r\n }\r\n this.callback.emit(CBObj);\r\n }\r\n\r\n switchCase(item, condList) {\r\n let condition = false;\r\n if (!item) return false;\r\n for (let i = 0; i < condList.conditions.length; i++) {\r\n if (condList.conditions[i].restriction == \"EQ\") {\r\n if (condList.conditions[i].isUser != true) {\r\n if (item[condList.conditions[i].property] == condList.conditions[i].value) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n } else {\r\n if (item[condList.conditions[i].property] == this.UserAccess[\"UserName\"]) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n }\r\n } else if (condList.conditions[i].restriction == \"NEQ\") {\r\n if (condList.conditions[i].isUser != true) {\r\n if (item[condList.conditions[i].property] != condList.conditions[i].value) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n } else {\r\n if (item[condList.conditions[i].property] != this.UserAccess[\"UserName\"]) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n }\r\n } else if (condList.conditions[i].restriction == \"GT\") {\r\n if (condList.conditions[i].isUser != true) {\r\n if (item[condList.conditions[i].property] > condList.conditions[i].value) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n } else {\r\n if (item[condList.conditions[i].property] > this.UserAccess[\"UserName\"]) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n }\r\n } else if (condList.conditions[i].restriction == \"GTE\") {\r\n if (condList.conditions[i].isUser != true) {\r\n if (item[condList.conditions[i].property] >= condList.conditions[i].value) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n } else {\r\n if (item[condList.conditions[i].property] >= this.UserAccess[\"UserName\"]) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n }\r\n } else if (condList.conditions[i].restriction == \"LT\") {\r\n if (condList.conditions[i].isUser != true) {\r\n if (item[condList.conditions[i].property] < condList.conditions[i].value) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n } else {\r\n if (item[condList.conditions[i].property] < this.UserAccess[\"UserName\"]) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n }\r\n } else if (condList.conditions[i].restriction == \"LTE\") {\r\n if (condList.conditions[i].isUser != true) {\r\n if (item[condList.conditions[i].property] <= condList.conditions[i].value) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n } else {\r\n if (item[condList.conditions[i].property] <= this.UserAccess[\"UserName\"]) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n } \r\n } else if (condList.conditions[i].restriction == \"IN\") {\r\n if (condList.conditions[i].isUser != true) {\r\n if (condList.conditions[i].value.findIndex(x => x == item[condList.conditions[i].property]) >= 0) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n } else {\r\n if (condList.conditions[i].value.findIndex(x => x == this.UserAccess[\"UserName\"]) >= 0) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n }\r\n } else if (condList.conditions[i].restriction == \"NIN\") {\r\n if (condList.conditions[i].isUser != true) {\r\n if (condList.conditions[i].value.findIndex(x => x == item[condList.conditions[i].property]) == -1) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n } else {\r\n if (condList.conditions[i].value.findIndex(x => x == this.UserAccess[\"UserName\"]) == -1) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n return condition;\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { UcviewgenericComponent } from './ucviewgeneric.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterModule } from '@angular/router';\r\nimport { UcSubsectionModule } from '@adins/uc-subsection';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n@NgModule({\r\n declarations: [UcviewgenericComponent],\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n UcSubsectionModule,\r\n TranslateModule.forChild()\r\n ],\r\n exports: [UcviewgenericComponent]\r\n})\r\nexport class UcviewgenericModule { }\r\n"]}
1
+ {"version":3,"sources":["ng://@adins/ucviewgeneric/lib/ucviewgeneric.service.ts","ng://@adins/ucviewgeneric/lib/model/uc-view-generic-obj.model.ts","ng://@adins/ucviewgeneric/lib/ucviewgeneric.component.ts","ng://@adins/ucviewgeneric/lib/ucviewgeneric.module.ts"],"names":["UcviewgenericService","Injectable","args","providedIn","UcViewGenericObj","this","viewInput","viewEnvironment","ddlEnvironments","Array","listEnvironments","whereValue","UcviewgenericComponent","prototype","ngOnInit","console","log","initiateForm","_this","getJSON","viewGenericObj","subscribe","data","viewList","viewInfoObjList","j","subsection","length","push","i","queryObj","querystring","whereQuery","values","getList","mainInfoPath","undefined","fullpath","mainInfoUrl","http","post","response","y","mainInfo","propertyList","concat","z","prefix","property","suffix","type","case","Empty","Hidden","result","hideIfEmpty","a","includes","isHide","navigationConst","tempLink","path","environment","isFullpath","url","isReady","error","get","GetCookie","cookieService","key","value","trim","DecryptString","chipperText","chipperKey","chipperKeyArr","CryptoJS.enc","Utf8","parse","iv","CryptoJS.lib","WordArray","create","CryptoJS.AES","decrypt","toString","genAction","viewObj","param","arrList","genRouterLink","urlLink","redirectFullPath","target","queryParam","ListObj","Object","keys","window","open","callbackFunction","item","CBObj","ViewObj","Key","callback","emit","switchCase","condList","condition","conditions","restriction","isUser","this_1","UserAccess","findIndex","x","Component","selector","template","ActivatedRoute","HttpClient","TranslateService","CookieService","Input","Output","route","translateService","EventEmitter","JSON","queryParams","params","setDefaultLang","use","localStorage","getItem","UcviewgenericModule","NgModule","declarations","imports","CommonModule","RouterModule","UcSubsectionModule","TranslateModule","forChild","exports"],"mappings":"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","sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UcviewgenericService {\r\n\r\n constructor() { }\r\n}\r\n","\r\nexport class UcViewGenericObj {\r\n viewInput: string;\r\n viewEnvironment: string;\r\n navigationConst: any;\r\n ddlEnvironments: Array<EnviObj>;\r\n listEnvironments: Array<EnvisObj>;\r\n whereValue: Array<WhereValueObj>;\r\n\r\n constructor() {\r\n this.viewInput = \"\";\r\n this.viewEnvironment = \"\";\r\n this.ddlEnvironments = new Array<EnviObj>();\r\n this.listEnvironments = new Array<EnvisObj>();\r\n this.whereValue = new Array<WhereValueObj>();\r\n }\r\n}\r\n\r\nexport class EnviObj {\r\n name: string;\r\n environment: string;\r\n\r\n constructor() {\r\n this.name = \"\";\r\n this.environment = \"\";\r\n }\r\n}\r\n\r\nexport class WhereValueObj {\r\n property: string;\r\n value: any;\r\n\r\n constructor() {\r\n this.property = \"\";\r\n }\r\n}\r\n\r\nexport class EnvisObj {\r\n environment: string;\r\n url: string;\r\n\r\n constructor() {\r\n this.environment = \"\";\r\n this.url = \"\";\r\n }\r\n}","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { EnviObj } from './model/envi-obj.model';\r\nimport { UcViewGenericObj } from './model/uc-view-generic-obj.model';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { CookieService } from 'ngx-cookie';\r\nimport * as CryptoJS from 'crypto-js';\r\n\r\n@Component({\r\n selector: 'lib-ucviewgeneric',\r\n templateUrl: './ucviewgeneric.component.html',\r\n styles: []\r\n})\r\nexport class UcviewgenericComponent implements OnInit {\r\n\r\n @Input() viewGenericObj: UcViewGenericObj = new UcViewGenericObj();\r\n @Output() callback: EventEmitter<any> = new EventEmitter();\r\n UserAccess: any = JSON.parse(this.GetCookie(this.cookieService, \"UserAccess\"));\r\n viewList: any = \"\";\r\n getList: any;\r\n viewInfoObjList: any;\r\n isReady: boolean = false;\r\n\r\n constructor(private route: ActivatedRoute, private http: HttpClient, private translateService: TranslateService, private cookieService: CookieService) {\r\n this.route.queryParams.subscribe(params => {\r\n this.getList = params;\r\n });\r\n\r\n this.translateService.setDefaultLang('en');\r\n this.translateService.use(localStorage.getItem('lang') || 'en');\r\n }\r\n\r\n ngOnInit() {\r\n console.log(\"viewgeneric\");\r\n this.initiateForm();\r\n }\r\n\r\n initiateForm() {\r\n this.getJSON(this.viewGenericObj.viewInput).subscribe(data => {\r\n this.viewList = data;\r\n this.viewInfoObjList = [];\r\n\r\n for (let j = 0; j < this.viewList.subsection.length; j++) {\r\n this.viewInfoObjList.push(j);\r\n }\r\n\r\n for (let i = 0; i < this.viewList.subsection.length; i++) {\r\n if (this.viewList.subsection[i].querystring != null) {\r\n let queryObj: any;\r\n if (this.viewGenericObj.whereValue.length == 0) {\r\n this.viewList.subsection[i].querystring.whereQuery = (<any>Object).values(this.getList);\r\n } else {\r\n this.viewList.subsection[i].querystring.whereQuery = this.viewGenericObj.whereValue;\r\n }\r\n\r\n if (this.viewList.subsection[i].mainInfoPath != undefined && this.viewList.subsection[i].mainInfoPath != \"\") {\r\n if (this.viewGenericObj.viewEnvironment != undefined && this.viewGenericObj.viewEnvironment != \"\") {\r\n this.viewList.subsection[i].fullpath = this.viewGenericObj.viewEnvironment + this.viewList.subsection[i].mainInfoPath;\r\n } else {\r\n this.viewList.subsection[i].fullpath = this.viewList.subsection[i].mainInfoUrl;\r\n }\r\n } else {\r\n this.viewList.subsection[i].fullpath = this.viewList.subsection[i].mainInfoUrl;\r\n }\r\n\r\n queryObj = {\r\n querystring: this.viewList.subsection[i].querystring\r\n }\r\n this.http.post(this.viewList.subsection[i].fullpath, queryObj).subscribe(\r\n (response) => {\r\n this.viewInfoObjList[i] = response[\"Data\"][0];\r\n\r\n for (let y = 0; y < this.viewList.subsection[i].mainInfo.length; y++) {\r\n if (this.viewList.subsection[i].mainInfo[y].propertyList != undefined && this.viewList.subsection[i].mainInfo[y].propertyList.length != 0) {\r\n const propertyList = this.viewList.subsection[i].mainInfo[y].propertyList;\r\n let concat = \"\";\r\n for (let z = 0; z < propertyList.length; z++) {\r\n concat = concat + propertyList[z].prefix + this.viewInfoObjList[i][propertyList[z].property] + propertyList[z].suffix;\r\n }\r\n this.viewList.subsection[i].mainInfo[y].concat = concat;\r\n }\r\n\r\n //switch case\r\n if (this.viewList.subsection[i].mainInfo[y].type == \"switch\"){\r\n for (let z = 0; z < this.viewList.subsection[i].mainInfo[y].case.length; z++) {\r\n let Empty = new Array<boolean>();\r\n this.viewList.subsection[i].mainInfo[y].case[z].Hidden = false;\r\n //check hideIfEmpty\r\n if (this.viewList.subsection[i].mainInfo[y].case[z].result.hideIfEmpty != undefined && this.viewList.subsection[i].mainInfo[y].case[z].result.hideIfEmpty != null){\r\n if(this.viewList.subsection[i].mainInfo[y].case[z].result.type != \"concat\"){\r\n Empty.push(this.viewInfoObjList[i][this.viewList.subsection[i].mainInfo[y].case[z].result.property] != undefined \r\n && this.viewInfoObjList[i][this.viewList.subsection[i].mainInfo[y].case[z].result.property] != null \r\n && this.viewInfoObjList[i][this.viewList.subsection[i].mainInfo[y].case[z].result.property] != \"\" ? false : true);\r\n }else{// type concat\r\n if (this.viewList.subsection[i].mainInfo[y].case[z].result.propertyList != undefined && this.viewList.subsection[i].mainInfo[y].case[z].result.propertyList.length != 0) {\r\n const propertyList = this.viewList.subsection[i].mainInfo[y].case[z].result.propertyList;\r\n let concat = \"\";\r\n for (let a = 0; a < propertyList.length; a++) {\r\n concat = concat + propertyList[a].prefix + this.viewInfoObjList[i][propertyList[a].property] + propertyList[a].suffix;\r\n Empty.push(this.viewInfoObjList[i][propertyList[a].property] != undefined \r\n && this.viewInfoObjList[i][propertyList[a].property] != null\r\n && this.viewInfoObjList[i][propertyList[a].property] != \"\" ? false : true);\r\n }\r\n this.viewList.subsection[i].mainInfo[y].case[z].result.concat = concat;\r\n }\r\n }\r\n \r\n if(Empty.includes(true) && this.viewList.subsection[i].mainInfo[y].case[z].result.hideIfEmpty){\r\n this.viewList.subsection[i].mainInfo[y].case[z].Hidden = true;\r\n this.viewList.subsection[i].mainInfo[y].isHide = true;\r\n }\r\n }else{\r\n //concat\r\n if (this.viewList.subsection[i].mainInfo[y].case[z].result.propertyList != undefined && this.viewList.subsection[i].mainInfo[y].case[z].result.propertyList.length != 0) {\r\n const propertyList = this.viewList.subsection[i].mainInfo[y].case[z].result.propertyList;\r\n let concat = \"\";\r\n for (let a = 0; a < propertyList.length; a++) {\r\n concat = concat + propertyList[a].prefix + this.viewInfoObjList[i][propertyList[a].property] + propertyList[a].suffix;\r\n }\r\n this.viewList.subsection[i].mainInfo[y].case[z].result.concat = concat;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (this.viewList.subsection[i].mainInfo[y].type == \"link\" && (this.viewGenericObj.navigationConst != undefined || this.viewGenericObj.navigationConst != null)) {\r\n let tempLink = this.viewGenericObj.navigationConst[this.viewList.subsection[i].mainInfo[y].path];\r\n if (tempLink != undefined && tempLink != null) {\r\n this.viewList.subsection[i].mainInfo[y].path = tempLink;\r\n }\r\n }\r\n if (this.viewList.subsection[i].mainInfo[y].type == \"link\"\r\n && this.viewGenericObj.listEnvironments != undefined && this.viewGenericObj.listEnvironments.length != 0) {\r\n for (let z = 0; z < this.viewGenericObj.listEnvironments.length; z++) {\r\n if (this.viewList.subsection[i].mainInfo[y].environment == this.viewGenericObj.listEnvironments[z].environment) {\r\n this.viewList.subsection[i].mainInfo[y].isFullpath = true;\r\n this.viewList.subsection[i].mainInfo[y].fullpath = this.viewGenericObj.listEnvironments[z].url + this.viewList.subsection[i].mainInfo[y].path;\r\n break;\r\n }\r\n }\r\n } else if (this.viewList.subsection[i].mainInfo[y].type == \"link\") {\r\n this.viewList.subsection[i].mainInfo[y].isFullpath = false;\r\n this.viewList.subsection[i].mainInfo[y].fullpath = this.viewList.subsection[i].mainInfo[y].path;\r\n }\r\n }\r\n this.isReady = true;\r\n },\r\n (error) => {\r\n console.log(error);\r\n });\r\n } else {\r\n if (this.viewList.subsection[i].mainInfoPath != undefined && this.viewList.subsection[i].mainInfoPath != \"\") {\r\n if (this.viewGenericObj.viewEnvironment != undefined && this.viewGenericObj.viewEnvironment != \"\") {\r\n this.viewList.subsection[i].fullpath = this.viewGenericObj.viewEnvironment + this.viewList.subsection[i].mainInfoPath;\r\n } else {\r\n this.viewList.subsection[i].fullpath = this.viewList.subsection[i].mainInfoUrl;\r\n }\r\n } else {\r\n this.viewList.subsection[i].fullpath = this.viewList.subsection[i].mainInfoUrl;\r\n }\r\n\r\n this.http.post(this.viewList.subsection[i].fullpath, this.getList).subscribe(\r\n (response) => {\r\n this.viewInfoObjList[i] = response[\"Data\"];\r\n },\r\n (error) => {\r\n console.log(error);\r\n })\r\n }\r\n }\r\n })\r\n }\r\n\r\n public getJSON(url: string): Observable<any> {\r\n return this.http.get(url);\r\n }\r\n\r\n private GetCookie(cookieService: CookieService, key: string) {\r\n let value = cookieService.get(key);\r\n if (value == undefined || value.trim() == '') return null;\r\n return this.DecryptString(value, \"AdInsFOU12345678\");\r\n }\r\n\r\n private DecryptString(chipperText: string, chipperKey: string) {\r\n if (\r\n chipperKey == undefined || chipperKey.trim() == '' ||\r\n chipperText == undefined || chipperText.trim() == ''\r\n ) return chipperText;\r\n let chipperKeyArr = CryptoJS.enc.Utf8.parse(chipperKey);\r\n let iv = CryptoJS.lib.WordArray.create([0x00, 0x00, 0x00, 0x00]);\r\n let decrypted = CryptoJS.AES.decrypt(chipperText, chipperKeyArr, { iv: iv });\r\n let plainText = decrypted.toString(CryptoJS.enc.Utf8);\r\n return plainText;\r\n }\r\n\r\n genAction(viewObj, param) {\r\n let arrList = {};\r\n\r\n for (let i = 0; i < param.length; i++) {\r\n if (viewObj[param[i].type] != undefined || viewObj[param[i].property] != undefined) {\r\n arrList[param[i].type] = viewObj[param[i].property];\r\n } else {\r\n arrList[param[i].type] = param[i].property;\r\n }\r\n }\r\n return arrList;\r\n }\r\n\r\n genRouterLink(urlLink: string) {\r\n let tempLink = urlLink;\r\n if (this.viewGenericObj.navigationConst != undefined && this.viewGenericObj.navigationConst[urlLink] != null) {\r\n tempLink = this.viewGenericObj.navigationConst[urlLink];\r\n }\r\n return tempLink;\r\n }\r\n\r\n redirectFullPath(fullpath: string, param: Object, target: string) {\r\n let queryParam = \"\";\r\n const ListObj = Object.keys(param);\r\n for (let i = 0; i < ListObj.length; i++) {\r\n if (queryParam != \"\") {\r\n queryParam = queryParam + \"&\" + ListObj[i] + \"=\" + param[ListObj[i]];\r\n } else {\r\n queryParam = ListObj[i] + \"=\" + param[ListObj[i]];\r\n }\r\n }\r\n window.open(fullpath + \"?\" + queryParam, target);\r\n }\r\n\r\n callbackFunction(item, key: string = \"\") {\r\n let CBObj = {\r\n ViewObj: item,\r\n Key: key\r\n }\r\n this.callback.emit(CBObj);\r\n }\r\n\r\n switchCase(item, condList) {\r\n let condition = false;\r\n if (!item) return false;\r\n for (let i = 0; i < condList.conditions.length; i++) {\r\n if (condList.conditions[i].restriction == \"EQ\") {\r\n if (condList.conditions[i].isUser != true) {\r\n if (item[condList.conditions[i].property] == condList.conditions[i].value) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n } else {\r\n if (item[condList.conditions[i].property] == this.UserAccess[\"UserName\"]) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n }\r\n } else if (condList.conditions[i].restriction == \"NEQ\") {\r\n if (condList.conditions[i].isUser != true) {\r\n if (item[condList.conditions[i].property] != condList.conditions[i].value) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n } else {\r\n if (item[condList.conditions[i].property] != this.UserAccess[\"UserName\"]) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n }\r\n } else if (condList.conditions[i].restriction == \"GT\") {\r\n if (condList.conditions[i].isUser != true) {\r\n if (item[condList.conditions[i].property] > condList.conditions[i].value) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n } else {\r\n if (item[condList.conditions[i].property] > this.UserAccess[\"UserName\"]) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n }\r\n } else if (condList.conditions[i].restriction == \"GTE\") {\r\n if (condList.conditions[i].isUser != true) {\r\n if (item[condList.conditions[i].property] >= condList.conditions[i].value) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n } else {\r\n if (item[condList.conditions[i].property] >= this.UserAccess[\"UserName\"]) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n }\r\n } else if (condList.conditions[i].restriction == \"LT\") {\r\n if (condList.conditions[i].isUser != true) {\r\n if (item[condList.conditions[i].property] < condList.conditions[i].value) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n } else {\r\n if (item[condList.conditions[i].property] < this.UserAccess[\"UserName\"]) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n }\r\n } else if (condList.conditions[i].restriction == \"LTE\") {\r\n if (condList.conditions[i].isUser != true) {\r\n if (item[condList.conditions[i].property] <= condList.conditions[i].value) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n } else {\r\n if (item[condList.conditions[i].property] <= this.UserAccess[\"UserName\"]) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n } \r\n } else if (condList.conditions[i].restriction == \"IN\") {\r\n if (condList.conditions[i].isUser != true) {\r\n if (condList.conditions[i].value.findIndex(x => x == item[condList.conditions[i].property]) >= 0) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n } else {\r\n if (condList.conditions[i].value.findIndex(x => x == this.UserAccess[\"UserName\"]) >= 0) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n }\r\n } else if (condList.conditions[i].restriction == \"NIN\") {\r\n if (condList.conditions[i].isUser != true) {\r\n if (condList.conditions[i].value.findIndex(x => x == item[condList.conditions[i].property]) == -1) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n } else {\r\n if (condList.conditions[i].value.findIndex(x => x == this.UserAccess[\"UserName\"]) == -1) {\r\n condition = true;\r\n } else {\r\n condition = false;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n return condition;\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { UcviewgenericComponent } from './ucviewgeneric.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterModule } from '@angular/router';\r\nimport { UcSubsectionModule } from '@adins/uc-subsection';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n@NgModule({\r\n declarations: [UcviewgenericComponent],\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n UcSubsectionModule,\r\n TranslateModule.forChild()\r\n ],\r\n exports: [UcviewgenericComponent]\r\n})\r\nexport class UcviewgenericModule { }\r\n"]}
@@ -504,7 +504,7 @@ export class UcviewgenericComponent {
504
504
  UcviewgenericComponent.decorators = [
505
505
  { type: Component, args: [{
506
506
  selector: 'lib-ucviewgeneric',
507
- template: "<section id=\"horizontal-form-layouts\">\r\n <div class=\"row text-left\">\r\n <div class=\"col-md-12\">\r\n <div class=\"card\" *ngIf=\"isReady\">\r\n <div class=\"pl-3 mb-2 mt-2\" *ngIf=\"viewList?.title != ''\">\r\n <h4 class=\"card-title ucSearch-title\" id=\"horz-layout-colored-controls\" translate>{{viewList.title}}</h4>\r\n </div>\r\n <div class=\"card-body\" *ngFor=\"let ss of viewList?.subsection;let i = index;\">\r\n <div class=\"px-3\">\r\n <lib-ucSubsection *ngIf=\"ss.subsection != ''\" [id]=\"ss.subSectionId + 'id'\" [title]=\"ss.subSectionTitle\"\r\n [panel]=\"ss.subSectionId\">\r\n </lib-ucSubsection>\r\n <div class=\"form-body\" [id]='ss.subSectionId'>\r\n <div class=\"form-group row\">\r\n <div *ngFor=\"let mi of ss?.mainInfo\"\r\n [ngClass]=\"{ 'col-md-6': mi.isHide == undefined || !mi.isHide || (viewInfoObjList[i][mi.property] != '' && viewInfoObjList[i][mi.property] != null)}\">\r\n <span\r\n *ngIf=\"mi.isHide == undefined || !mi.isHide || (viewInfoObjList[i][mi.property] != '' && viewInfoObjList[i][mi.property] != null)\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngIf=\"mi.type != 'switch'\">\r\n <label class=\"label-control\"\r\n [ngClass]=\"mi.customClassLabel != undefined ? mi.customClassLabel : ''\" translate>{{mi.label}}</label>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"mi.type == 'switch'\">\r\n <div *ngFor=\"let case of mi?.case\">\r\n <div *ngIf=\"switchCase(viewInfoObjList[i],case)\">\r\n <label class=\"label-control\"\r\n [ngClass]=\"mi.customClassLabel != undefined ? mi.customClassLabel : ''\" translate>{{case.result.label}}</label>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"viewInfoObjList[i] != undefined\" class=\"col-md-6\" [ngClass]=\"{ 'text-left': mi.position == 'left',\r\n 'text-right': mi.position == 'right', 'text-center': mi.position == 'center' }\">\r\n <span\r\n *ngIf=\"(mi.type == 'boolean' && viewInfoObjList[i][mi.property] != null) || (viewInfoObjList[i][mi.property] != '' && viewInfoObjList[i][mi.property] != null) || mi.type == 'switch' || mi.type =='concat'; then nonEmptyLabel else emptyLabel\"></span>\r\n <ng-template #emptyLabel>\r\n <label class=\"label-control\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\r\n translate>-</label>\r\n </ng-template>\r\n <ng-template #nonEmptyLabel>\r\n <span *ngIf=\"mi.type == 'text'\">\r\n <label\r\n *ngIf=\"viewInfoObjList[i][mi.property] != '' && viewInfoObjList[i][mi.property] != null\"\r\n class=\"label-control breakword\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\r\n {{ viewInfoObjList[i][mi.property] }}\r\n </label>\r\n <label\r\n *ngIf=\"viewInfoObjList[i][mi.property] == '' || viewInfoObjList[i][mi.property] == null\"\r\n class=\"label-control\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>-\r\n </label>\r\n </span>\r\n <label *ngIf=\"mi.type == 'currency'\" class=\"label-control\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\r\n {{ viewInfoObjList[i][mi.property] | number: mi?.precision ? mi?.precision : '0.2' :'en-US'}} <span *ngIf=\"mi?.IsPrcnt\">&nbsp;%</span> </label>\r\n <label *ngIf=\"mi.type == 'date'\" class=\"label-control\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\r\n {{ viewInfoObjList[i][mi.property] | date: (mi?.dateFormat) ? mi?.dateFormat : 'dd-MMM-yyyy'}} </label>\r\n <label *ngIf=\"mi.type == 'link'\" class=\"label-control\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\r\n <a *ngIf=\"!mi?.isFullpath\" [routerLink]=\"genRouterLink(mi.path)\" [target]=\"mi.target\"\r\n [queryParams]=\"genAction(viewInfoObjList[i], mi.param)\">\r\n <span *ngIf=\"(mi.isCurrency != undefined && mi.isCurrency)\">{{\r\n viewInfoObjList[i][mi.property] | number:'.2':'en-US' }}</span>\r\n <span *ngIf=\"(mi.isCurrency == undefined || !mi.isCurrency)\">{{\r\n viewInfoObjList[i][mi.property] }}</span>\r\n </a>\r\n <a *ngIf=\"mi?.isFullpath\" href=\"javascript:void(0);\"\r\n (click)=\"redirectFullPath(mi.fullpath, genAction(viewInfoObjList[i], mi.param), mi.target)\">\r\n <span *ngIf=\"(mi.isCurrency != undefined && mi.isCurrency)\">{{\r\n viewInfoObjList[i][mi.property] | number:'.2':'en-US' }}</span>\r\n <span *ngIf=\"(mi.isCurrency == undefined || !mi.isCurrency)\">{{\r\n viewInfoObjList[i][mi.property] }}</span>\r\n </a>\r\n </label>\r\n <label *ngIf=\"mi.type == 'callback'\" class=\"label-control\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\r\n <a href=\"javascript:void(0);\" (click)=\"callbackFunction(viewInfoObjList[i], mi.key)\">\r\n {{ viewInfoObjList[i][mi.property] }}\r\n </a>\r\n </label>\r\n <textarea *ngIf=\"mi.type == 'textarea'\" class=\"form-control\" readonly\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\r\n translate> {{ viewInfoObjList[i][mi.property] }} </textarea>\r\n <span *ngIf=\"mi.type == 'boolean'\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\r\n <label *ngIf=\"viewInfoObjList[i][mi.property] == true\">Yes</label>\r\n <label *ngIf=\"viewInfoObjList[i][mi.property] == false\">No</label>\r\n <!-- <label\r\n *ngIf=\"viewInfoObjList[i][mi.property] == '' || viewInfoObjList[i][mi.property] == null\">-</label> -->\r\n </span>\r\n <span *ngIf=\"mi.type == 'concat'\">\r\n <label class=\"label-control breakword\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\r\n {{ mi.concat }}\r\n </label>\r\n </span>\r\n <span *ngIf=\"mi.type == 'switch'\">\r\n <span *ngFor=\"let cs of mi?.case\">\r\n <span *ngIf=\"switchCase(viewInfoObjList[i],cs) && !cs.Hidden\">\r\n <span class=\"label-control breakword\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\r\n translate *ngIf=\"cs.result.type == 'text'\">{{ viewInfoObjList[i][cs.result.property]\r\n }}\r\n </span>\r\n <span [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\r\n translate *ngIf=\"cs.result.type == 'decimal'\">{{\r\n viewInfoObjList[i][cs.result.property] | number:'.2':'en-US' }}</span>\r\n <span [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\r\n translate *ngIf=\"cs.result.type == 'date'\">{{ viewInfoObjList[i][cs.result.property] |\r\n date: 'dd-MMM-yyyy' }}\r\n </span>\r\n <span *ngIf=\"cs.result.type == 'link'\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\r\n translate>\r\n <a [target]=\"cs.result.target\" [routerLink]=\"genRouterLink(cs.result.path)\"\r\n [queryParams]=\"genAction(viewInfoObjList[i],cs.result.param)\">\r\n <span *ngIf=\"(mi.isCurrency != undefined && mi.isCurrency)\">{{\r\n viewInfoObjList[i][cs.result.property] | number:'.2':'en-US' }}</span>\r\n <span *ngIf=\"(mi.isCurrency == undefined || !mi.isCurrency)\">{{\r\n viewInfoObjList[i][cs.result.property] }}</span>\r\n </a>\r\n </span>\r\n <span *ngIf=\"cs.result.type == 'boolean'\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\r\n translate>\r\n <span *ngIf=\"viewInfoObjList[i][cs.result.property] == 'true'\">Yes</span>\r\n <span *ngIf=\"viewInfoObjList[i][cs.result.property] == 'false'\">No</span>\r\n </span>\r\n <span *ngIf=\"cs.result.type == 'concat'\">\r\n <label class=\"label-control breakword\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\r\n {{ cs.result.concat }}\r\n </label>\r\n </span>\r\n <span *ngIf=\"cs.result.type == 'callback'\">\r\n <span\r\n *ngIf=\"cs.result.isText != undefined && cs.result.isText; then textCallback else iconCallback\"></span>\r\n <ng-template #textCallback>\r\n <span>\r\n <a href=\"javascript:void(0);\" (click)=\"callbackFunction(viewInfoObjList[i], cs.result.key)\">{{\r\n viewInfoObjList[i][cs.result.property] }}</a>\r\n </span>\r\n </ng-template>\r\n <ng-template #iconCallback>\r\n <span>\r\n <a [ngClass]=\"[cs.result.tooltip != undefined && cs.result.tooltip != '' ? 'tooltips' : '', cs.result.anchor == undefined || cs.result.anchor == '' ? 'success p-0' : cs.result.anchor]\"\r\n (click)=\"callbackFunction(viewInfoObjList[i], cs.result.key)\">\r\n <i class=\"font-medium-3 mr-2\"\r\n [ngClass]=\" cs.result.icon == undefined || cs.result.icon == '' ? 'ft-edit-2' : cs.result.icon \">\r\n </i>\r\n <span *ngIf=\"cs.result.tooltip != undefined && cs.result.tooltip != ''\"\r\n [ngClass]=\"cs.result.tooltip != undefined && cs.result.tooltip != '' ? 'tooltipstext' : ''\">\r\n {{cs.result.tooltip}}\r\n </span>\r\n </a>\r\n </span>\r\n </ng-template>\r\n </span>\r\n </span>\r\n </span>\r\n </span>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</section>"
507
+ template: "<section id=\"horizontal-form-layouts\">\r\n <div class=\"row text-left\">\r\n <div class=\"col-md-12\">\r\n <div class=\"card\" *ngIf=\"isReady\">\r\n <div class=\"pl-3 mb-2 mt-2\" *ngIf=\"viewList?.title != ''\">\r\n <h4 class=\"card-title ucSearch-title\" id=\"horz-layout-colored-controls\" translate>{{viewList.title}}</h4>\r\n </div>\r\n <div class=\"card-body\" *ngFor=\"let ss of viewList?.subsection;let i = index;\">\r\n <div class=\"px-3\">\r\n <lib-ucSubsection *ngIf=\"ss.subsection != ''\" [id]=\"ss.subSectionId + 'id'\" [title]=\"ss.subSectionTitle\"\r\n [panel]=\"ss.subSectionId\">\r\n </lib-ucSubsection>\r\n <div class=\"form-body\" [id]='ss.subSectionId'>\r\n <div class=\"form-group row\">\r\n <div *ngFor=\"let mi of ss?.mainInfo\"\r\n [ngClass]=\"{ 'col-md-6': mi.isHide == undefined || !mi.isHide || (viewInfoObjList[i][mi.property] != '' && viewInfoObjList[i][mi.property] != null)}\">\r\n <span\r\n *ngIf=\"mi.isHide == undefined || !mi.isHide || (viewInfoObjList[i][mi.property] != '' && viewInfoObjList[i][mi.property] != null)\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngIf=\"mi.type != 'switch'\">\r\n <label class=\"label-control\"\r\n [ngClass]=\"mi.customClassLabel != undefined ? mi.customClassLabel : ''\" translate>{{mi.label}}</label>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"mi.type == 'switch'\">\r\n <div *ngFor=\"let case of mi?.case\">\r\n <div *ngIf=\"switchCase(viewInfoObjList[i],case)\">\r\n <label class=\"label-control\"\r\n [ngClass]=\"case.result.customClassLabel != undefined ? case.result.customClassLabel : ''\" translate>{{case.result.label}}</label>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"viewInfoObjList[i] != undefined\" class=\"col-md-6\" [ngClass]=\"{ 'text-left': mi.position == 'left',\r\n 'text-right': mi.position == 'right', 'text-center': mi.position == 'center' }\">\r\n <span\r\n *ngIf=\"(mi.type == 'boolean' && viewInfoObjList[i][mi.property] != null) || (viewInfoObjList[i][mi.property] != '' && viewInfoObjList[i][mi.property] != null) || mi.type == 'switch' || mi.type =='concat'; then nonEmptyLabel else emptyLabel\"></span>\r\n <ng-template #emptyLabel>\r\n <label class=\"label-control\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\r\n translate>-</label>\r\n </ng-template>\r\n <ng-template #nonEmptyLabel>\r\n <span *ngIf=\"mi.type == 'text'\">\r\n <label\r\n *ngIf=\"viewInfoObjList[i][mi.property] != '' && viewInfoObjList[i][mi.property] != null\"\r\n class=\"label-control breakword\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\r\n {{ viewInfoObjList[i][mi.property] }}\r\n </label>\r\n <label\r\n *ngIf=\"viewInfoObjList[i][mi.property] == '' || viewInfoObjList[i][mi.property] == null\"\r\n class=\"label-control\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>-\r\n </label>\r\n </span>\r\n <label *ngIf=\"mi.type == 'currency'\" class=\"label-control\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\r\n {{ viewInfoObjList[i][mi.property] | number: mi?.precision ? mi?.precision : '0.2' :'en-US'}} <span *ngIf=\"mi?.IsPrcnt\">&nbsp;%</span> </label>\r\n <label *ngIf=\"mi.type == 'date'\" class=\"label-control\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\r\n {{ viewInfoObjList[i][mi.property] | date: (mi?.dateFormat) ? mi?.dateFormat : 'dd-MMM-yyyy'}} </label>\r\n <label *ngIf=\"mi.type == 'link'\" class=\"label-control\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\r\n <a *ngIf=\"!mi?.isFullpath\" [routerLink]=\"genRouterLink(mi.path)\" [target]=\"mi.target\"\r\n [queryParams]=\"genAction(viewInfoObjList[i], mi.param)\">\r\n <span *ngIf=\"(mi.isCurrency != undefined && mi.isCurrency)\">{{\r\n viewInfoObjList[i][mi.property] | number:'.2':'en-US' }}</span>\r\n <span *ngIf=\"(mi.isCurrency == undefined || !mi.isCurrency)\">{{\r\n viewInfoObjList[i][mi.property] }}</span>\r\n </a>\r\n <a *ngIf=\"mi?.isFullpath\" href=\"javascript:void(0);\"\r\n (click)=\"redirectFullPath(mi.fullpath, genAction(viewInfoObjList[i], mi.param), mi.target)\">\r\n <span *ngIf=\"(mi.isCurrency != undefined && mi.isCurrency)\">{{\r\n viewInfoObjList[i][mi.property] | number:'.2':'en-US' }}</span>\r\n <span *ngIf=\"(mi.isCurrency == undefined || !mi.isCurrency)\">{{\r\n viewInfoObjList[i][mi.property] }}</span>\r\n </a>\r\n </label>\r\n <label *ngIf=\"mi.type == 'callback'\" class=\"label-control\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\r\n <a href=\"javascript:void(0);\" (click)=\"callbackFunction(viewInfoObjList[i], mi.key)\">\r\n {{ viewInfoObjList[i][mi.property] }}\r\n </a>\r\n </label>\r\n <textarea *ngIf=\"mi.type == 'textarea'\" class=\"form-control\" readonly\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\"\r\n translate> {{ viewInfoObjList[i][mi.property] }} </textarea>\r\n <span *ngIf=\"mi.type == 'boolean'\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\r\n <label *ngIf=\"viewInfoObjList[i][mi.property] == true\">Yes</label>\r\n <label *ngIf=\"viewInfoObjList[i][mi.property] == false\">No</label>\r\n <!-- <label\r\n *ngIf=\"viewInfoObjList[i][mi.property] == '' || viewInfoObjList[i][mi.property] == null\">-</label> -->\r\n </span>\r\n <span *ngIf=\"mi.type == 'concat'\">\r\n <label class=\"label-control breakword\"\r\n [ngClass]=\"mi.customClassProperty != undefined ? mi.customClassProperty : ''\" translate>\r\n {{ mi.concat }}\r\n </label>\r\n </span>\r\n <span *ngIf=\"mi.type == 'switch'\">\r\n <span *ngFor=\"let cs of mi?.case\">\r\n <span *ngIf=\"switchCase(viewInfoObjList[i],cs) && !cs.Hidden\">\r\n <span class=\"label-control breakword\"\r\n [ngClass]=\"cs.result.customClassProperty != undefined ? cs.result.customClassProperty : ''\"\r\n translate *ngIf=\"cs.result.type == 'text'\">{{ viewInfoObjList[i][cs.result.property]\r\n }}\r\n </span>\r\n <span [ngClass]=\"cs.result.customClassProperty != undefined ? cs.result.customClassProperty : ''\"\r\n translate *ngIf=\"cs.result.type == 'decimal'\">{{\r\n viewInfoObjList[i][cs.result.property] | number:'.2':'en-US' }}</span>\r\n <span [ngClass]=\"cs.result.customClassProperty != undefined ? cs.result.customClassProperty : ''\"\r\n translate *ngIf=\"cs.result.type == 'date'\">{{ viewInfoObjList[i][cs.result.property] |\r\n date: 'dd-MMM-yyyy' }}\r\n </span>\r\n <span *ngIf=\"cs.result.type == 'link'\"\r\n [ngClass]=\"cs.result.customClassProperty != undefined ? cs.result.customClassProperty : ''\"\r\n translate>\r\n <a [target]=\"cs.result.target\" [routerLink]=\"genRouterLink(cs.result.path)\"\r\n [queryParams]=\"genAction(viewInfoObjList[i],cs.result.param)\">\r\n <span *ngIf=\"(mi.isCurrency != undefined && mi.isCurrency)\">{{\r\n viewInfoObjList[i][cs.result.property] | number:'.2':'en-US' }}</span>\r\n <span *ngIf=\"(mi.isCurrency == undefined || !mi.isCurrency)\">{{\r\n viewInfoObjList[i][cs.result.property] }}</span>\r\n </a>\r\n </span>\r\n <span *ngIf=\"cs.result.type == 'boolean'\"\r\n [ngClass]=\"cs.result.customClassProperty != undefined ? cs.result.customClassProperty : ''\"\r\n translate>\r\n <span *ngIf=\"viewInfoObjList[i][cs.result.property] == 'true'\">Yes</span>\r\n <span *ngIf=\"viewInfoObjList[i][cs.result.property] == 'false'\">No</span>\r\n </span>\r\n <span *ngIf=\"cs.result.type == 'concat'\">\r\n <label class=\"label-control breakword\"\r\n [ngClass]=\"cs.result.customClassProperty != undefined ? cs.result.customClassProperty : ''\" translate>\r\n {{ cs.result.concat }}\r\n </label>\r\n </span>\r\n <span *ngIf=\"cs.result.type == 'callback'\">\r\n <span\r\n *ngIf=\"cs.result.isText != undefined && cs.result.isText; then textCallback else iconCallback\"></span>\r\n <ng-template #textCallback>\r\n <span>\r\n <a href=\"javascript:void(0);\" (click)=\"callbackFunction(viewInfoObjList[i], cs.result.key)\">{{\r\n viewInfoObjList[i][cs.result.property] }}</a>\r\n </span>\r\n </ng-template>\r\n <ng-template #iconCallback>\r\n <span>\r\n <a [ngClass]=\"[cs.result.tooltip != undefined && cs.result.tooltip != '' ? 'tooltips' : '', cs.result.anchor == undefined || cs.result.anchor == '' ? 'success p-0' : cs.result.anchor]\"\r\n (click)=\"callbackFunction(viewInfoObjList[i], cs.result.key)\">\r\n <i class=\"font-medium-3 mr-2\"\r\n [ngClass]=\" cs.result.icon == undefined || cs.result.icon == '' ? 'ft-edit-2' : cs.result.icon \">\r\n </i>\r\n <span *ngIf=\"cs.result.tooltip != undefined && cs.result.tooltip != ''\"\r\n [ngClass]=\"cs.result.tooltip != undefined && cs.result.tooltip != '' ? 'tooltipstext' : ''\">\r\n {{cs.result.tooltip}}\r\n </span>\r\n </a>\r\n </span>\r\n </ng-template>\r\n </span>\r\n </span>\r\n </span>\r\n </span>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</section>"
508
508
  }] }
509
509
  ];
510
510
  /** @nocollapse */
@@ -554,4 +554,4 @@ if (false) {
554
554
  */
555
555
  UcviewgenericComponent.prototype.cookieService;
556
556
  }
557
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWN2aWV3Z2VuZXJpYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWRpbnMvdWN2aWV3Z2VuZXJpYy8iLCJzb3VyY2VzIjpbImxpYi91Y3ZpZXdnZW5lcmljLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBR2xELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDM0MsT0FBTyxLQUFLLFFBQVEsTUFBTSxXQUFXLENBQUM7QUFPdEMsTUFBTSxPQUFPLHNCQUFzQjs7Ozs7OztJQVVqQyxZQUFvQixLQUFxQixFQUFVLElBQWdCLEVBQVUsZ0JBQWtDLEVBQVUsYUFBNEI7UUFBakksVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFBVSxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQVUscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUFVLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBUjVJLG1CQUFjLEdBQXFCLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztRQUN6RCxhQUFRLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDM0QsZUFBVSxHQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFDL0UsYUFBUSxHQUFRLEVBQUUsQ0FBQztRQUduQixZQUFPLEdBQVksS0FBSyxDQUFD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LFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsSUFBSSxJQUFJLEVBQUM7d0NBQ2hLLElBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLFFBQVEsRUFBQzs0Q0FDekUsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLFNBQVM7bURBQzNHLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSTttREFDaEcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7eUNBQ3JIOzZDQUFJLEVBQUMsY0FBYzs0Q0FDbEIsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxD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b3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBFbnZpT2JqIH0gZnJvbSAnLi9tb2RlbC9lbnZpLW9iai5tb2RlbCc7XHJcbmltcG9ydCB7IFVjVmlld0dlbmVyaWNPYmogfSBmcm9tICcuL21vZGVsL3VjLXZpZXctZ2VuZXJpYy1vYmoubW9kZWwnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IENvb2tpZVNlcnZpY2UgfSBmcm9tICduZ3gtY29va2llJztcclxuaW1wb3J0ICogYXMgQ3J5cHRvSlMgZnJvbSAnY3J5cHRvLWpzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXVjdmlld2dlbmVyaWMnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi91Y3ZpZXdnZW5lcmljLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZXM6IFtdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBVY3ZpZXdnZW5lcmljQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgQElucHV0KCkgdmlld0dlbmVyaWNPYmo6IFVjVmlld0dlbmVyaWNPYmogPSBuZXcgVWNWaWV3R2VuZXJpY09iaigpO1xyXG4gIEBPdXRwdXQoKSBjYWxsYmFjazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgVXNlckFjY2VzczogYW55ID0gSlNPTi5wYXJzZSh0aGlzLkdldENvb2tpZSh0aGlzLmNvb2tpZVNlcnZpY2UsIFwiVXNlckFjY2Vzc1wiKSk7XHJcbiAgdmlld0xpc3Q6IGFueSA9IFwiXCI7XHJcbiAgZ2V0TGlzdDogYW55O1xyXG4gIHZpZXdJbmZvT2JqTGlzdDogYW55O1xyXG4gIGlzUmVhZHk6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLCBwcml2YXRlIGNvb2tpZVNlcnZpY2U6IENvb2tpZVNlcnZpY2UpIHtcclxuICAgIHRoaXMucm91dGUucXVlcnlQYXJhbXMuc3Vic2NyaWJlKHBhcmFtcyA9PiB7XHJcbiAgICAgIHRoaXMuZ2V0TGlzdCA9IHBhcmFtcztcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5zZXREZWZhdWx0TGFuZygnZW4nKTtcclxuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS51c2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xhbmcnKSB8fCAnZW4nKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgY29uc29sZS5sb2coXCJ2aWV3Z2VuZXJpY1wiKTtcclxuICAgIHRoaXMuaW5pdGlhdGVGb3JtKCk7XHJcbiAgfVxyXG5cclxuICBpbml0aWF0ZUZvcm0oKSB7XHJcbiAgICB0aGlzLmdldEpTT04odGhpcy52aWV3R2VuZXJpY09iai52aWV3SW5wdXQpLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgdGhpcy52aWV3TGlzdCA9IGRhdGE7XHJcbiAgICAgIHRoaXMudmlld0luZm9PYmpMaXN0ID0gW107XHJcblxyXG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbi5sZW5ndGg7IGorKykge1xyXG4gICAgICAgIHRoaXMudmlld0luZm9PYmpMaXN0LnB1c2goaik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5xdWVyeXN0cmluZyAhPSBudWxsKSB7XHJcbiAgICAgICAgICBsZXQgcXVlcnlPYmo6IGFueTtcclxuICAgICAgICAgIGlmICh0aGlzLnZpZXdHZW5lcmljT2JqLndoZXJlVmFsdWUubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLnF1ZXJ5c3RyaW5nLndoZXJlUXVlcnkgPSAoPGFueT5PYmplY3QpLnZhbHVlcyh0aGlzLmdldExpc3QpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLnF1ZXJ5c3RyaW5nLndoZXJlUXVlcnkgPSB0aGlzLnZpZXdHZW5lcmljT2JqLndoZXJlVmFsdWU7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1BhdGggIT0gdW5kZWZpbmVkICYmIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1BhdGggIT0gXCJcIikge1xyXG4gICAgICAgICAgICBpZiAodGhpcy52aWV3R2VuZXJpY09iai52aWV3RW52aXJvbm1lbnQgIT0gdW5kZWZpbmVkICYmIHRoaXMudmlld0dlbmVyaWNPYmoudmlld0Vudmlyb25tZW50ICE9IFwiXCIpIHtcclxuICAgICAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0uZnVsbHBhdGggPSB0aGlzLnZpZXdHZW5lcmljT2JqLnZpZXdFbnZpcm9ubWVudCArIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1BhdGg7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLmZ1bGxwYXRoID0gdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvVXJsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0uZnVsbHBhdGggPSB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9Vcmw7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgcXVlcnlPYmogPSB7XHJcbiAgICAgICAgICAgIHF1ZXJ5c3RyaW5nOiB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ucXVlcnlzdHJpbmdcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuaHR0cC5wb3N0KHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5mdWxscGF0aCwgcXVlcnlPYmopLnN1YnNjcmliZShcclxuICAgICAgICAgICAgKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy52aWV3SW5mb09iakxpc3RbaV0gPSByZXNwb25zZVtcIkRhdGFcIl1bMF07XHJcblxyXG4gICAgICAgICAgICAgIGZvciAobGV0IHkgPSAwOyB5IDwgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvLmxlbmd0aDsgeSsrKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLnByb3BlcnR5TGlzdCAhPSB1bmRlZmluZWQgJiYgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLnByb3BlcnR5TGlzdC5sZW5ndGggIT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICBjb25zdCBwcm9wZXJ0eUxpc3QgPSB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0ucHJvcGVydHlMaXN0O1xyXG4gICAgICAgICAgICAgICAgICBsZXQgY29uY2F0ID0gXCJcIjtcclxuICAgICAgICAgICAgICAgICAgZm9yIChsZXQgeiA9IDA7IHogPCBwcm9wZXJ0eUxpc3QubGVuZ3RoOyB6KyspIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25jYXQgPSBjb25jYXQgKyBwcm9wZXJ0eUxpc3Rbel0ucHJlZml4ICsgdGhpcy52aWV3SW5mb09iakxpc3RbaV1bcHJvcGVydHlMaXN0W3pdLnByb3BlcnR5XSArIHByb3BlcnR5TGlzdFt6XS5zdWZmaXg7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLmNvbmNhdCA9IGNvbmNhdDtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAvL3N3aXRjaCBjYXNlXHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLnR5cGUgPT0gXCJzd2l0Y2hcIil7XHJcbiAgICAgICAgICAgICAgICAgIGZvciAobGV0IHogPSAwOyB6IDwgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLmNhc2UubGVuZ3RoOyB6KyspIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgRW1wdHkgPSBuZXcgQXJyYXk8Ym9vbGVhbj4oKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0uY2FzZVt6XS5IaWRkZW4gPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAvL2NoZWNrIGhpZGVJZkVtcHR5XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5jYXNlW3pdLnJlc3VsdC5oaWRlSWZFbXB0eSAhPSB1bmRlZmluZWQgJiYgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLmNhc2Vbel0ucmVzdWx0LmhpZGVJZkVtcHR5ICE9IG51bGwpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgaWYodGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLmNhc2Vbel0ucmVzdWx0LnR5cGUgIT0gXCJjb25jYXRcIil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5LnB1c2godGhpcy52aWV3SW5mb09iakxpc3RbaV1bdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLmNhc2Vbel0ucmVzdWx0LnByb3BlcnR5XSAhPSB1bmRlZmluZWQgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgdGhpcy52aWV3SW5mb09iakxpc3RbaV1bdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLmNhc2Vbel0ucmVzdWx0LnByb3BlcnR5XSAhPSBudWxsIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICYmIHRoaXMudmlld0luZm9PYmpMaXN0W2ldW3RoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5jYXNlW3pdLnJlc3VsdC5wcm9wZXJ0eV0gIT0gXCJcIiA/IGZhbHNlIDogdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXsvLyB0eXBlIGNvbmNhdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLmNhc2Vbel0ucmVzdWx0LnByb3BlcnR5TGlzdCAhPSB1bmRlZmluZWQgJiYgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLmNhc2Vbel0ucmVzdWx0LnByb3BlcnR5TGlzdC5sZW5ndGggIT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByb3BlcnR5TGlzdCA9IHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5jYXNlW3pdLnJlc3VsdC5wcm9wZXJ0eUxpc3Q7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbmNhdCA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgYSA9IDA7IGEgPCBwcm9wZXJ0eUxpc3QubGVuZ3RoOyBhKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmNhdCA9IGNvbmNhdCArIHByb3BlcnR5TGlzdFthXS5wcmVmaXggKyB0aGlzLnZpZXdJbmZvT2JqTGlzdFtpXVtwcm9wZXJ0eUxpc3RbYV0ucHJvcGVydHldICsgcHJvcGVydHlMaXN0W2FdLnN1ZmZpeDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5LnB1c2godGhpcy52aWV3SW5mb09iakxpc3RbaV1bcHJvcGVydHlMaXN0W2FdLnByb3BlcnR5XSAhPSB1bmRlZmluZWQgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHRoaXMudmlld0luZm9PYmpMaXN0W2ldW3Byb3BlcnR5TGlzdFthXS5wcm9wZXJ0eV0gIT0gbnVsbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiB0aGlzLnZpZXdJbmZvT2JqTGlzdFtpXVtwcm9wZXJ0eUxpc3RbYV0ucHJvcGVydHldICE9IFwiXCIgPyBmYWxzZSA6IHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0uY2FzZVt6XS5yZXN1bHQuY29uY2F0ID0gY29uY2F0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgIGlmKEVtcHR5LmluY2x1ZGVzKHRydWUpICYmIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5jYXNlW3pdLnJlc3VsdC5oaWRlSWZFbXB0eSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5jYXNlW3pdLkhpZGRlbiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5pc0hpZGUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgLy9jb25jYXRcclxuICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0uY2FzZVt6XS5yZXN1bHQucHJvcGVydHlMaXN0ICE9IHVuZGVmaW5lZCAmJiB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0uY2FzZVt6XS5yZXN1bHQucHJvcGVydHlMaXN0Lmxlbmd0aCAhPSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByb3BlcnR5TGlzdCA9IHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5jYXNlW3pdLnJlc3VsdC5wcm9wZXJ0eUxpc3Q7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb25jYXQgPSBcIlwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBhID0gMDsgYSA8IHByb3BlcnR5TGlzdC5sZW5ndGg7IGErKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmNhdCA9IGNvbmNhdCArIHByb3BlcnR5TGlzdFthXS5wcmVmaXggKyB0aGlzLnZpZXdJbmZvT2JqTGlzdFtpXVtwcm9wZXJ0eUxpc3RbYV0ucHJvcGVydHldICsgcHJvcGVydHlMaXN0W2FdLnN1ZmZpeDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0uY2FzZVt6XS5yZXN1bHQuY29uY2F0ID0gY29uY2F0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0udHlwZSA9PSBcImxpbmtcIiAmJiAodGhpcy52aWV3R2VuZXJpY09iai5uYXZpZ2F0aW9uQ29uc3QgIT0gdW5kZWZpbmVkIHx8IHRoaXMudmlld0dlbmVyaWNPYmoubmF2aWdhdGlvbkNvbnN0ICE9IG51bGwpKSB7XHJcbiAgICAgICAgICAgICAgICAgIGxldCB0ZW1wTGluayA9IHRoaXMudmlld0dlbmVyaWNPYmoubmF2aWdhdGlvbkNvbnN0W3RoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5wYXRoXTtcclxuICAgICAgICAgICAgICAgICAgaWYgKHRlbXBMaW5rICE9IHVuZGVmaW5lZCAmJiB0ZW1wTGluayAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLnBhdGggPSB0ZW1wTGluaztcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS50eXBlID09IFwibGlua1wiXHJcbiAgICAgICAgICAgICAgICAgICYmIHRoaXMudmlld0dlbmVyaWNPYmoubGlzdEVudmlyb25tZW50cyAhPSB1bmRlZmluZWQgJiYgdGhpcy52aWV3R2VuZXJpY09iai5saXN0RW52aXJvbm1lbnRzLmxlbmd0aCAhPSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgIGZvciAobGV0IHogPSAwOyB6IDwgdGhpcy52aWV3R2VuZXJpY09iai5saXN0RW52aXJvbm1lbnRzLmxlbmd0aDsgeisrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5lbnZpcm9ubWVudCA9PSB0aGlzLnZpZXdHZW5lcmljT2JqLmxpc3RFbnZpcm9ubWVudHNbel0uZW52aXJvbm1lbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5pc0Z1bGxwYXRoID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5mdWxscGF0aCA9IHRoaXMudmlld0dlbmVyaWNPYmoubGlzdEVudmlyb25tZW50c1t6XS51cmwgKyB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0ucGF0aDtcclxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0udHlwZSA9PSBcImxpbmtcIikge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0uaXNGdWxscGF0aCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0uZnVsbHBhdGggPSB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0ucGF0aDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgdGhpcy5pc1JlYWR5ID0gdHJ1ZTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1BhdGggIT0gdW5kZWZpbmVkICYmIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1BhdGggIT0gXCJcIikge1xyXG4gICAgICAgICAgICBpZiAodGhpcy52aWV3R2VuZXJpY09iai52aWV3RW52aXJvbm1lbnQgIT0gdW5kZWZpbmVkICYmIHRoaXMudmlld0dlbmVyaWNPYmoudmlld0Vudmlyb25tZW50ICE9IFwiXCIpIHtcclxuICAgICAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0uZnVsbHBhdGggPSB0aGlzLnZpZXdHZW5lcmljT2JqLnZpZXdFbnZpcm9ubWVudCArIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1BhdGg7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLmZ1bGxwYXRoID0gdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvVXJsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0uZnVsbHBhdGggPSB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9Vcmw7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgdGhpcy5odHRwLnBvc3QodGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLmZ1bGxwYXRoLCB0aGlzLmdldExpc3QpLnN1YnNjcmliZShcclxuICAgICAgICAgICAgKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy52aWV3SW5mb09iakxpc3RbaV0gPSByZXNwb25zZVtcIkRhdGFcIl07XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0SlNPTih1cmw6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCh1cmwpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBHZXRDb29raWUoY29va2llU2VydmljZTogQ29va2llU2VydmljZSwga2V5OiBzdHJpbmcpIHtcclxuICAgIGxldCB2YWx1ZSA9IGNvb2tpZVNlcnZpY2UuZ2V0KGtleSk7XHJcbiAgICBpZiAodmFsdWUgPT0gdW5kZWZpbmVkIHx8IHZhbHVlLnRyaW0oKSA9PSAnJykgcmV0dXJuIG51bGw7XHJcbiAgICByZXR1cm4gdGhpcy5EZWNyeXB0U3RyaW5nKHZhbHVlLCBcIkFkSW5zRk9VMTIzNDU2NzhcIik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIERlY3J5cHRTdHJpbmcoY2hpcHBlclRleHQ6IHN0cmluZywgY2hpcHBlcktleTogc3RyaW5nKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIGNoaXBwZXJLZXkgPT0gdW5kZWZpbmVkIHx8IGNoaXBwZXJLZXkudHJpbSgpID09ICcnIHx8XHJcbiAgICAgIGNoaXBwZXJUZXh0ID09IHVuZGVmaW5lZCB8fCBjaGlwcGVyVGV4dC50cmltKCkgPT0gJydcclxuICAgICkgcmV0dXJuIGNoaXBwZXJUZXh0O1xyXG4gICAgbGV0IGNoaXBwZXJLZXlBcnIgPSBDcnlwdG9KUy5lbmMuVXRmOC5wYXJzZShjaGlwcGVyS2V5KTtcclxuICAgIGxldCBpdiA9IENyeXB0b0pTLmxpYi5Xb3JkQXJyYXkuY3JlYXRlKFsweDAwLCAweDAwLCAweDAwLCAweDAwXSk7XHJcbiAgICBsZXQgZGVjcnlwdGVkID0gQ3J5cHRvSlMuQUVTLmRlY3J5cHQoY2hpcHBlclRleHQsIGNoaXBwZXJLZXlBcnIsIHsgaXY6IGl2IH0pO1xyXG4gICAgbGV0IHBsYWluVGV4dCA9IGRlY3J5cHRlZC50b1N0cmluZyhDcnlwdG9KUy5lbmMuVXRmOCk7XHJcbiAgICByZXR1cm4gcGxhaW5UZXh0O1xyXG4gIH1cclxuXHJcbiAgZ2VuQWN0aW9uKHZpZXdPYmosIHBhcmFtKSB7XHJcbiAgICBsZXQgYXJyTGlzdCA9IHt9O1xyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGFyYW0ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKHZpZXdPYmpbcGFyYW1baV0udHlwZV0gIT0gdW5kZWZpbmVkIHx8IHZpZXdPYmpbcGFyYW1baV0ucHJvcGVydHldICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGFyckxpc3RbcGFyYW1baV0udHlwZV0gPSB2aWV3T2JqW3BhcmFtW2ldLnByb3BlcnR5XTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBhcnJMaXN0W3BhcmFtW2ldLnR5cGVdID0gcGFyYW1baV0ucHJvcGVydHk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBhcnJMaXN0O1xyXG4gIH1cclxuXHJcbiAgZ2VuUm91dGVyTGluayh1cmxMaW5rOiBzdHJpbmcpIHtcclxuICAgIGxldCB0ZW1wTGluayA9IHVybExpbms7XHJcbiAgICBpZiAodGhpcy52aWV3R2VuZXJpY09iai5uYXZpZ2F0aW9uQ29uc3QgIT0gdW5kZWZpbmVkICYmIHRoaXMudmlld0dlbmVyaWNPYmoubmF2aWdhdGlvbkNvbnN0W3VybExpbmtdICE9IG51bGwpIHtcclxuICAgICAgdGVtcExpbmsgPSB0aGlzLnZpZXdHZW5lcmljT2JqLm5hdmlnYXRpb25Db25zdFt1cmxMaW5rXTtcclxuICAgIH1cclxuICAgIHJldHVybiB0ZW1wTGluaztcclxuICB9XHJcblxyXG4gIHJlZGlyZWN0RnVsbFBhdGgoZnVsbHBhdGg6IHN0cmluZywgcGFyYW06IE9iamVjdCwgdGFyZ2V0OiBzdHJpbmcpIHtcclxuICAgIGxldCBxdWVyeVBhcmFtID0gXCJcIjtcclxuICAgIGNvbnN0IExpc3RPYmogPSBPYmplY3Qua2V5cyhwYXJhbSk7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IExpc3RPYmoubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKHF1ZXJ5UGFyYW0gIT0gXCJcIikge1xyXG4gICAgICAgIHF1ZXJ5UGFyYW0gPSBxdWVyeVBhcmFtICsgXCImXCIgKyBMaXN0T2JqW2ldICsgXCI9XCIgKyBwYXJhbVtMaXN0T2JqW2ldXTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBxdWVyeVBhcmFtID0gTGlzdE9ialtpXSArIFwiPVwiICsgcGFyYW1bTGlzdE9ialtpXV07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHdpbmRvdy5vcGVuKGZ1bGxwYXRoICsgXCI/XCIgKyBxdWVyeVBhcmFtLCB0YXJnZXQpO1xyXG4gIH1cclxuXHJcbiAgY2FsbGJhY2tGdW5jdGlvbihpdGVtLCBrZXk6IHN0cmluZyA9IFwiXCIpIHtcclxuICAgIGxldCBDQk9iaiA9IHtcclxuICAgICAgVmlld09iajogaXRlbSxcclxuICAgICAgS2V5OiBrZXlcclxuICAgIH1cclxuICAgIHRoaXMuY2FsbGJhY2suZW1pdChDQk9iaik7XHJcbiAgfVxyXG5cclxuICBzd2l0Y2hDYXNlKGl0ZW0sIGNvbmRMaXN0KSB7XHJcbiAgICBsZXQgY29uZGl0aW9uID0gZmFsc2U7XHJcbiAgICBpZiAoIWl0ZW0pIHJldHVybiBmYWxzZTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZExpc3QuY29uZGl0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAoY29uZExpc3QuY29uZGl0aW9uc1tpXS5yZXN0cmljdGlvbiA9PSBcIkVRXCIpIHtcclxuICAgICAgICBpZiAoY29uZExpc3QuY29uZGl0aW9uc1tpXS5pc1VzZXIgIT0gdHJ1ZSkge1xyXG4gICAgICAgICAgaWYgKGl0ZW1bY29uZExpc3QuY29uZGl0aW9uc1tpXS5wcm9wZXJ0eV0gPT0gY29uZExpc3QuY29uZGl0aW9uc1tpXS52YWx1ZSkge1xyXG4gICAgICAgICAgICBjb25kaXRpb24gPSB0cnVlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoaXRlbVtjb25kTGlzdC5jb25kaXRpb25zW2ldLnByb3BlcnR5XSA9PSB0aGlzLlVzZXJBY2Nlc3NbXCJVc2VyTmFtZVwiXSkge1xyXG4gICAgICAgICAgICBjb25kaXRpb24gPSB0cnVlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmIChjb25kTGlzdC5jb25kaXRpb25zW2ldLnJlc3RyaWN0aW9uID09IFwiTkVRXCIpIHtcclxuICAgICAgICBpZiAoY29uZExpc3QuY29uZGl0aW9uc1tpXS5pc1VzZXIgIT0gdHJ1ZSkge1xyXG4gICAgICAgICAgaWYgKGl0ZW1bY29uZExpc3QuY29uZGl0aW9uc1tpXS5wcm9wZXJ0eV0gIT0gY29uZExpc3QuY29uZGl0aW9uc1tpXS52YWx1ZSkge1xyXG4gICAgICAgICAgICBjb25kaXRpb24gPSB0cnVlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoaXRlbVtjb25kTGlzdC5jb25kaXRpb25zW2ldLnByb3BlcnR5XSAhPSB0aGlzLlVzZXJBY2Nlc3NbXCJVc2VyTmFtZVwiXSkge1xyXG4gICAgICAgICAgICBjb25kaXRpb24gPSB0cnVlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmIChjb25kTGlzdC5jb25kaXRpb25zW2ldLnJlc3RyaWN0aW9uID09IFwiR1RcIikge1xyXG4gICAgICAgIGlmIChjb25kTGlzdC5jb25kaXRpb25zW2ldLmlzVXNlciAhPSB0cnVlKSB7XHJcbiAgICAgICAgICBpZiAoaXRlbVtjb25kTGlzdC5jb25kaXRpb25zW2ldLnByb3BlcnR5XSA+IGNvbmRMaXN0LmNvbmRpdGlvbnNbaV0udmFsdWUpIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKGl0ZW1bY29uZExpc3QuY29uZGl0aW9uc1tpXS5wcm9wZXJ0eV0gPiB0aGlzLlVzZXJBY2Nlc3NbXCJVc2VyTmFtZVwiXSkge1xyXG4gICAgICAgICAgICBjb25kaXRpb24gPSB0cnVlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmIChjb25kTGlzdC5jb25kaXRpb25zW2ldLnJlc3RyaWN0aW9uID09IFwiR1RFXCIpIHtcclxuICAgICAgICBpZiAoY29uZExpc3QuY29uZGl0aW9uc1tpXS5pc1VzZXIgIT0gdHJ1ZSkge1xyXG4gICAgICAgICAgaWYgKGl0ZW1bY29uZExpc3QuY29uZGl0aW9uc1tpXS5wcm9wZXJ0eV0gPj0gY29uZExpc3QuY29uZGl0aW9uc1tpXS52YWx1ZSkge1xyXG4gICAgICAgICAgICBjb25kaXRpb24gPSB0cnVlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoaXRlbVtjb25kTGlzdC5jb25kaXRpb25zW2ldLnByb3BlcnR5XSA+PSB0aGlzLlVzZXJBY2Nlc3NbXCJVc2VyTmFtZVwiXSkge1xyXG4gICAgICAgICAgICBjb25kaXRpb24gPSB0cnVlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmIChjb25kTGlzdC5jb25kaXRpb25zW2ldLnJlc3RyaWN0aW9uID09IFwiTFRcIikge1xyXG4gICAgICAgIGlmIChjb25kTGlzdC5jb25kaXRpb25zW2ldLmlzVXNlciAhPSB0cnVlKSB7XHJcbiAgICAgICAgICBpZiAoaXRlbVtjb25kTGlzdC5jb25kaXRpb25zW2ldLnByb3BlcnR5XSA8IGNvbmRMaXN0LmNvbmRpdGlvbnNbaV0udmFsdWUpIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKGl0ZW1bY29uZExpc3QuY29uZGl0aW9uc1tpXS5wcm9wZXJ0eV0gPCB0aGlzLlVzZXJBY2Nlc3NbXCJVc2VyTmFtZVwiXSkge1xyXG4gICAgICAgICAgICBjb25kaXRpb24gPSB0cnVlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmIChjb25kTGlzdC5jb25kaXRpb25zW2ldLnJlc3RyaWN0aW9uID09IFwiTFRFXCIpIHtcclxuICAgICAgICBpZiAoY29uZExpc3QuY29uZGl0aW9uc1tpXS5pc1VzZXIgIT0gdHJ1ZSkge1xyXG4gICAgICAgICAgaWYgKGl0ZW1bY29uZExpc3QuY29uZGl0aW9uc1tpXS5wcm9wZXJ0eV0gPD0gY29uZExpc3QuY29uZGl0aW9uc1tpXS52YWx1ZSkge1xyXG4gICAgICAgICAgICBjb25kaXRpb24gPSB0cnVlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoaXRlbVtjb25kTGlzdC5jb25kaXRpb25zW2ldLnByb3BlcnR5XSA8PSB0aGlzLlVzZXJBY2Nlc3NbXCJVc2VyTmFtZVwiXSkge1xyXG4gICAgICAgICAgICBjb25kaXRpb24gPSB0cnVlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gICAgICBcclxuICAgICAgfSBlbHNlIGlmIChjb25kTGlzdC5jb25kaXRpb25zW2ldLnJlc3RyaWN0aW9uID09IFwiSU5cIikge1xyXG4gICAgICAgIGlmIChjb25kTGlzdC5jb25kaXRpb25zW2ldLmlzVXNlciAhPSB0cnVlKSB7XHJcbiAgICAgICAgICBpZiAoY29uZExpc3QuY29uZGl0aW9uc1tpXS52YWx1ZS5maW5kSW5kZXgoeCA9PiB4ID09IGl0ZW1bY29uZExpc3QuY29uZGl0aW9uc1tpXS5wcm9wZXJ0eV0pID49IDApIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKGNvbmRMaXN0LmNvbmRpdGlvbnNbaV0udmFsdWUuZmluZEluZGV4KHggPT4geCA9PSB0aGlzLlVzZXJBY2Nlc3NbXCJVc2VyTmFtZVwiXSkgPj0gMCkge1xyXG4gICAgICAgICAgICBjb25kaXRpb24gPSB0cnVlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmIChjb25kTGlzdC5jb25kaXRpb25zW2ldLnJlc3RyaWN0aW9uID09IFwiTklOXCIpIHtcclxuICAgICAgICBpZiAoY29uZExpc3QuY29uZGl0aW9uc1tpXS5pc1VzZXIgIT0gdHJ1ZSkge1xyXG4gICAgICAgICAgaWYgKGNvbmRMaXN0LmNvbmRpdGlvbnNbaV0udmFsdWUuZmluZEluZGV4KHggPT4geCA9PSBpdGVtW2NvbmRMaXN0LmNvbmRpdGlvbnNbaV0ucHJvcGVydHldKSA9PSAtMSkge1xyXG4gICAgICAgICAgICBjb25kaXRpb24gPSB0cnVlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoY29uZExpc3QuY29uZGl0aW9uc1tpXS52YWx1ZS5maW5kSW5kZXgoeCA9PiB4ID09IHRoaXMuVXNlckFjY2Vzc1tcIlVzZXJOYW1lXCJdKSA9PSAtMSkge1xyXG4gICAgICAgICAgICBjb25kaXRpb24gPSB0cnVlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNvbmRpdGlvbjtcclxuICB9XHJcbn1cclxuIl19
557
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWN2aWV3Z2VuZXJpYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWRpbnMvdWN2aWV3Z2VuZXJpYy8iLCJzb3VyY2VzIjpbImxpYi91Y3ZpZXdnZW5lcmljLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBR2xELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDM0MsT0FBTyxLQUFLLFFBQVEsTUFBTSxXQUFXLENBQUM7QUFPdEMsTUFBTSxPQUFPLHNCQUFzQjs7Ozs7OztJQVVqQyxZQUFvQixLQUFxQixFQUFVLElBQWdCLEVBQVUsZ0JBQWtDLEVBQVUsYUFBNEI7UUFBakksVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFBVSxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQVUscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUFVLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBUjVJLG1CQUFjLEdBQXFCLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztRQUN6RCxhQUFRLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDM0QsZUFBVSxHQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFDL0UsYUFBUSxHQUFRLEVBQUUsQ0FBQztRQUduQixZQUFPLEdBQVksS0FBSyxDQUFDO1FBR3ZCLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLFNBQVM7Ozs7UUFBQyxNQUFNLENBQUMsRUFBRTtZQUN4QyxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUN4QixDQUFDLEVBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDO0lBQ2xFLENBQUM7Ozs7SUFFRCxRQUFRO1FBQ04sT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQzs7OztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUzs7OztRQUFDLElBQUksQ0FBQyxFQUFFO1lBQzNELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO1lBRTFCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3hELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzlCO1lBRUQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDeEQsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLElBQUksSUFBSSxFQUFFOzt3QkFDL0MsUUFBYTtvQkFDakIsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO3dCQUM5QyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsVUFBVSxHQUFHLENBQUMsbUJBQUssTUFBTSxFQUFBLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO3FCQUN6Rjt5QkFBTTt3QkFDTCxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDO3FCQUNyRjtvQkFFRCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksSUFBSSxTQUFTLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxJQUFJLEVBQUUsRUFBRTt3QkFDM0csSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsSUFBSSxTQUFTLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLElBQUksRUFBRSxFQUFFOzRCQUNqRyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDO3lCQUN2SDs2QkFBTTs0QkFDTCxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDO3lCQUNoRjtxQkFDRjt5QkFBTTt3QkFDTCxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDO3FCQUNoRjtvQkFFRCxRQUFRLEdBQUc7d0JBQ1QsV0FBVyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVc7cUJBQ3JELENBQUE7b0JBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDLFNBQVM7Ozs7b0JBQ3RFLENBQUMsUUFBUSxFQUFFLEVBQUU7d0JBQ1gsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBRTlDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFOzRCQUNwRSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLElBQUksU0FBUyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTs7c0NBQ25JLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWTs7b0NBQ3JFLE1BQU0sR0FBRyxFQUFFO2dDQUNmLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO29DQUM1QyxNQUFNLEdBQUcsTUFBTSxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztpQ0FDdkg7Z0NBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7NkJBQ3pEOzRCQUVELGFBQWE7NEJBQ2IsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLFFBQVEsRUFBQztnQ0FDM0QsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFOzt3Q0FDeEUsS0FBSyxHQUFHLElBQUksS0FBSyxFQUFXO29DQUNoQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7b0NBQy9ELG1CQUFtQjtvQ0FDbkIsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLElBQUksU0FBUyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsSUFBSSxJQUFJLEVBQUM7d0NBQ2hLLElBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLFFBQVEsRUFBQzs0Q0FDekUsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLFNBQVM7bURBQzNHLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSTttREFDaEcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7eUNBQ3JIOzZDQUFJLEVBQUMsY0FBYzs0Q0FDbEIsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxD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b3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBFbnZpT2JqIH0gZnJvbSAnLi9tb2RlbC9lbnZpLW9iai5tb2RlbCc7XHJcbmltcG9ydCB7IFVjVmlld0dlbmVyaWNPYmogfSBmcm9tICcuL21vZGVsL3VjLXZpZXctZ2VuZXJpYy1vYmoubW9kZWwnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IENvb2tpZVNlcnZpY2UgfSBmcm9tICduZ3gtY29va2llJztcclxuaW1wb3J0ICogYXMgQ3J5cHRvSlMgZnJvbSAnY3J5cHRvLWpzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXVjdmlld2dlbmVyaWMnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi91Y3ZpZXdnZW5lcmljLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZXM6IFtdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBVY3ZpZXdnZW5lcmljQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgQElucHV0KCkgdmlld0dlbmVyaWNPYmo6IFVjVmlld0dlbmVyaWNPYmogPSBuZXcgVWNWaWV3R2VuZXJpY09iaigpO1xyXG4gIEBPdXRwdXQoKSBjYWxsYmFjazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgVXNlckFjY2VzczogYW55ID0gSlNPTi5wYXJzZSh0aGlzLkdldENvb2tpZSh0aGlzLmNvb2tpZVNlcnZpY2UsIFwiVXNlckFjY2Vzc1wiKSk7XHJcbiAgdmlld0xpc3Q6IGFueSA9IFwiXCI7XHJcbiAgZ2V0TGlzdDogYW55O1xyXG4gIHZpZXdJbmZvT2JqTGlzdDogYW55O1xyXG4gIGlzUmVhZHk6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLCBwcml2YXRlIGNvb2tpZVNlcnZpY2U6IENvb2tpZVNlcnZpY2UpIHtcclxuICAgIHRoaXMucm91dGUucXVlcnlQYXJhbXMuc3Vic2NyaWJlKHBhcmFtcyA9PiB7XHJcbiAgICAgIHRoaXMuZ2V0TGlzdCA9IHBhcmFtcztcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5zZXREZWZhdWx0TGFuZygnZW4nKTtcclxuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS51c2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xhbmcnKSB8fCAnZW4nKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgY29uc29sZS5sb2coXCJ2aWV3Z2VuZXJpY1wiKTtcclxuICAgIHRoaXMuaW5pdGlhdGVGb3JtKCk7XHJcbiAgfVxyXG5cclxuICBpbml0aWF0ZUZvcm0oKSB7XHJcbiAgICB0aGlzLmdldEpTT04odGhpcy52aWV3R2VuZXJpY09iai52aWV3SW5wdXQpLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgdGhpcy52aWV3TGlzdCA9IGRhdGE7XHJcbiAgICAgIHRoaXMudmlld0luZm9PYmpMaXN0ID0gW107XHJcblxyXG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbi5sZW5ndGg7IGorKykge1xyXG4gICAgICAgIHRoaXMudmlld0luZm9PYmpMaXN0LnB1c2goaik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5xdWVyeXN0cmluZyAhPSBudWxsKSB7XHJcbiAgICAgICAgICBsZXQgcXVlcnlPYmo6IGFueTtcclxuICAgICAgICAgIGlmICh0aGlzLnZpZXdHZW5lcmljT2JqLndoZXJlVmFsdWUubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLnF1ZXJ5c3RyaW5nLndoZXJlUXVlcnkgPSAoPGFueT5PYmplY3QpLnZhbHVlcyh0aGlzLmdldExpc3QpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLnF1ZXJ5c3RyaW5nLndoZXJlUXVlcnkgPSB0aGlzLnZpZXdHZW5lcmljT2JqLndoZXJlVmFsdWU7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1BhdGggIT0gdW5kZWZpbmVkICYmIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1BhdGggIT0gXCJcIikge1xyXG4gICAgICAgICAgICBpZiAodGhpcy52aWV3R2VuZXJpY09iai52aWV3RW52aXJvbm1lbnQgIT0gdW5kZWZpbmVkICYmIHRoaXMudmlld0dlbmVyaWNPYmoudmlld0Vudmlyb25tZW50ICE9IFwiXCIpIHtcclxuICAgICAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0uZnVsbHBhdGggPSB0aGlzLnZpZXdHZW5lcmljT2JqLnZpZXdFbnZpcm9ubWVudCArIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1BhdGg7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLmZ1bGxwYXRoID0gdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvVXJsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0uZnVsbHBhdGggPSB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9Vcmw7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgcXVlcnlPYmogPSB7XHJcbiAgICAgICAgICAgIHF1ZXJ5c3RyaW5nOiB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ucXVlcnlzdHJpbmdcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuaHR0cC5wb3N0KHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5mdWxscGF0aCwgcXVlcnlPYmopLnN1YnNjcmliZShcclxuICAgICAgICAgICAgKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy52aWV3SW5mb09iakxpc3RbaV0gPSByZXNwb25zZVtcIkRhdGFcIl1bMF07XHJcblxyXG4gICAgICAgICAgICAgIGZvciAobGV0IHkgPSAwOyB5IDwgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvLmxlbmd0aDsgeSsrKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLnByb3BlcnR5TGlzdCAhPSB1bmRlZmluZWQgJiYgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLnByb3BlcnR5TGlzdC5sZW5ndGggIT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICBjb25zdCBwcm9wZXJ0eUxpc3QgPSB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0ucHJvcGVydHlMaXN0O1xyXG4gICAgICAgICAgICAgICAgICBsZXQgY29uY2F0ID0gXCJcIjtcclxuICAgICAgICAgICAgICAgICAgZm9yIChsZXQgeiA9IDA7IHogPCBwcm9wZXJ0eUxpc3QubGVuZ3RoOyB6KyspIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25jYXQgPSBjb25jYXQgKyBwcm9wZXJ0eUxpc3Rbel0ucHJlZml4ICsgdGhpcy52aWV3SW5mb09iakxpc3RbaV1bcHJvcGVydHlMaXN0W3pdLnByb3BlcnR5XSArIHByb3BlcnR5TGlzdFt6XS5zdWZmaXg7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLmNvbmNhdCA9IGNvbmNhdDtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAvL3N3aXRjaCBjYXNlXHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLnR5cGUgPT0gXCJzd2l0Y2hcIil7XHJcbiAgICAgICAgICAgICAgICAgIGZvciAobGV0IHogPSAwOyB6IDwgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLmNhc2UubGVuZ3RoOyB6KyspIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgRW1wdHkgPSBuZXcgQXJyYXk8Ym9vbGVhbj4oKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0uY2FzZVt6XS5IaWRkZW4gPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAvL2NoZWNrIGhpZGVJZkVtcHR5XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5jYXNlW3pdLnJlc3VsdC5oaWRlSWZFbXB0eSAhPSB1bmRlZmluZWQgJiYgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLmNhc2Vbel0ucmVzdWx0LmhpZGVJZkVtcHR5ICE9IG51bGwpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgaWYodGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLmNhc2Vbel0ucmVzdWx0LnR5cGUgIT0gXCJjb25jYXRcIil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5LnB1c2godGhpcy52aWV3SW5mb09iakxpc3RbaV1bdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLmNhc2Vbel0ucmVzdWx0LnByb3BlcnR5XSAhPSB1bmRlZmluZWQgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgdGhpcy52aWV3SW5mb09iakxpc3RbaV1bdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLmNhc2Vbel0ucmVzdWx0LnByb3BlcnR5XSAhPSBudWxsIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICYmIHRoaXMudmlld0luZm9PYmpMaXN0W2ldW3RoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5jYXNlW3pdLnJlc3VsdC5wcm9wZXJ0eV0gIT0gXCJcIiA/IGZhbHNlIDogdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXsvLyB0eXBlIGNvbmNhdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLmNhc2Vbel0ucmVzdWx0LnByb3BlcnR5TGlzdCAhPSB1bmRlZmluZWQgJiYgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLmNhc2Vbel0ucmVzdWx0LnByb3BlcnR5TGlzdC5sZW5ndGggIT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByb3BlcnR5TGlzdCA9IHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5jYXNlW3pdLnJlc3VsdC5wcm9wZXJ0eUxpc3Q7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbmNhdCA9IFwiXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgYSA9IDA7IGEgPCBwcm9wZXJ0eUxpc3QubGVuZ3RoOyBhKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmNhdCA9IGNvbmNhdCArIHByb3BlcnR5TGlzdFthXS5wcmVmaXggKyB0aGlzLnZpZXdJbmZvT2JqTGlzdFtpXVtwcm9wZXJ0eUxpc3RbYV0ucHJvcGVydHldICsgcHJvcGVydHlMaXN0W2FdLnN1ZmZpeDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5LnB1c2godGhpcy52aWV3SW5mb09iakxpc3RbaV1bcHJvcGVydHlMaXN0W2FdLnByb3BlcnR5XSAhPSB1bmRlZmluZWQgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHRoaXMudmlld0luZm9PYmpMaXN0W2ldW3Byb3BlcnR5TGlzdFthXS5wcm9wZXJ0eV0gIT0gbnVsbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiB0aGlzLnZpZXdJbmZvT2JqTGlzdFtpXVtwcm9wZXJ0eUxpc3RbYV0ucHJvcGVydHldICE9IFwiXCIgPyBmYWxzZSA6IHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0uY2FzZVt6XS5yZXN1bHQuY29uY2F0ID0gY29uY2F0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgIGlmKEVtcHR5LmluY2x1ZGVzKHRydWUpICYmIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5jYXNlW3pdLnJlc3VsdC5oaWRlSWZFbXB0eSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5jYXNlW3pdLkhpZGRlbiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5pc0hpZGUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgLy9jb25jYXRcclxuICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0uY2FzZVt6XS5yZXN1bHQucHJvcGVydHlMaXN0ICE9IHVuZGVmaW5lZCAmJiB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0uY2FzZVt6XS5yZXN1bHQucHJvcGVydHlMaXN0Lmxlbmd0aCAhPSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByb3BlcnR5TGlzdCA9IHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5jYXNlW3pdLnJlc3VsdC5wcm9wZXJ0eUxpc3Q7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb25jYXQgPSBcIlwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBhID0gMDsgYSA8IHByb3BlcnR5TGlzdC5sZW5ndGg7IGErKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmNhdCA9IGNvbmNhdCArIHByb3BlcnR5TGlzdFthXS5wcmVmaXggKyB0aGlzLnZpZXdJbmZvT2JqTGlzdFtpXVtwcm9wZXJ0eUxpc3RbYV0ucHJvcGVydHldICsgcHJvcGVydHlMaXN0W2FdLnN1ZmZpeDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0uY2FzZVt6XS5yZXN1bHQuY29uY2F0ID0gY29uY2F0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0udHlwZSA9PSBcImxpbmtcIiAmJiAodGhpcy52aWV3R2VuZXJpY09iai5uYXZpZ2F0aW9uQ29uc3QgIT0gdW5kZWZpbmVkIHx8IHRoaXMudmlld0dlbmVyaWNPYmoubmF2aWdhdGlvbkNvbnN0ICE9IG51bGwpKSB7XHJcbiAgICAgICAgICAgICAgICAgIGxldCB0ZW1wTGluayA9IHRoaXMudmlld0dlbmVyaWNPYmoubmF2aWdhdGlvbkNvbnN0W3RoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5wYXRoXTtcclxuICAgICAgICAgICAgICAgICAgaWYgKHRlbXBMaW5rICE9IHVuZGVmaW5lZCAmJiB0ZW1wTGluayAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvW3ldLnBhdGggPSB0ZW1wTGluaztcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS50eXBlID09IFwibGlua1wiXHJcbiAgICAgICAgICAgICAgICAgICYmIHRoaXMudmlld0dlbmVyaWNPYmoubGlzdEVudmlyb25tZW50cyAhPSB1bmRlZmluZWQgJiYgdGhpcy52aWV3R2VuZXJpY09iai5saXN0RW52aXJvbm1lbnRzLmxlbmd0aCAhPSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgIGZvciAobGV0IHogPSAwOyB6IDwgdGhpcy52aWV3R2VuZXJpY09iai5saXN0RW52aXJvbm1lbnRzLmxlbmd0aDsgeisrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5lbnZpcm9ubWVudCA9PSB0aGlzLnZpZXdHZW5lcmljT2JqLmxpc3RFbnZpcm9ubWVudHNbel0uZW52aXJvbm1lbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5pc0Z1bGxwYXRoID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1t5XS5mdWxscGF0aCA9IHRoaXMudmlld0dlbmVyaWNPYmoubGlzdEVudmlyb25tZW50c1t6XS51cmwgKyB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0ucGF0aDtcclxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0udHlwZSA9PSBcImxpbmtcIikge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0uaXNGdWxscGF0aCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0uZnVsbHBhdGggPSB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9beV0ucGF0aDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgdGhpcy5pc1JlYWR5ID0gdHJ1ZTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1BhdGggIT0gdW5kZWZpbmVkICYmIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1BhdGggIT0gXCJcIikge1xyXG4gICAgICAgICAgICBpZiAodGhpcy52aWV3R2VuZXJpY09iai52aWV3RW52aXJvbm1lbnQgIT0gdW5kZWZpbmVkICYmIHRoaXMudmlld0dlbmVyaWNPYmoudmlld0Vudmlyb25tZW50ICE9IFwiXCIpIHtcclxuICAgICAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0uZnVsbHBhdGggPSB0aGlzLnZpZXdHZW5lcmljT2JqLnZpZXdFbnZpcm9ubWVudCArIHRoaXMudmlld0xpc3Quc3Vic2VjdGlvbltpXS5tYWluSW5mb1BhdGg7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLmZ1bGxwYXRoID0gdGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLm1haW5JbmZvVXJsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0uZnVsbHBhdGggPSB0aGlzLnZpZXdMaXN0LnN1YnNlY3Rpb25baV0ubWFpbkluZm9Vcmw7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgdGhpcy5odHRwLnBvc3QodGhpcy52aWV3TGlzdC5zdWJzZWN0aW9uW2ldLmZ1bGxwYXRoLCB0aGlzLmdldExpc3QpLnN1YnNjcmliZShcclxuICAgICAgICAgICAgKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy52aWV3SW5mb09iakxpc3RbaV0gPSByZXNwb25zZVtcIkRhdGFcIl07XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0SlNPTih1cmw6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCh1cmwpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBHZXRDb29raWUoY29va2llU2VydmljZTogQ29va2llU2VydmljZSwga2V5OiBzdHJpbmcpIHtcclxuICAgIGxldCB2YWx1ZSA9IGNvb2tpZVNlcnZpY2UuZ2V0KGtleSk7XHJcbiAgICBpZiAodmFsdWUgPT0gdW5kZWZpbmVkIHx8IHZhbHVlLnRyaW0oKSA9PSAnJykgcmV0dXJuIG51bGw7XHJcbiAgICByZXR1cm4gdGhpcy5EZWNyeXB0U3RyaW5nKHZhbHVlLCBcIkFkSW5zRk9VMTIzNDU2NzhcIik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIERlY3J5cHRTdHJpbmcoY2hpcHBlclRleHQ6IHN0cmluZywgY2hpcHBlcktleTogc3RyaW5nKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIGNoaXBwZXJLZXkgPT0gdW5kZWZpbmVkIHx8IGNoaXBwZXJLZXkudHJpbSgpID09ICcnIHx8XHJcbiAgICAgIGNoaXBwZXJUZXh0ID09IHVuZGVmaW5lZCB8fCBjaGlwcGVyVGV4dC50cmltKCkgPT0gJydcclxuICAgICkgcmV0dXJuIGNoaXBwZXJUZXh0O1xyXG4gICAgbGV0IGNoaXBwZXJLZXlBcnIgPSBDcnlwdG9KUy5lbmMuVXRmOC5wYXJzZShjaGlwcGVyS2V5KTtcclxuICAgIGxldCBpdiA9IENyeXB0b0pTLmxpYi5Xb3JkQXJyYXkuY3JlYXRlKFsweDAwLCAweDAwLCAweDAwLCAweDAwXSk7XHJcbiAgICBsZXQgZGVjcnlwdGVkID0gQ3J5cHRvSlMuQUVTLmRlY3J5cHQoY2hpcHBlclRleHQsIGNoaXBwZXJLZXlBcnIsIHsgaXY6IGl2IH0pO1xyXG4gICAgbGV0IHBsYWluVGV4dCA9IGRlY3J5cHRlZC50b1N0cmluZyhDcnlwdG9KUy5lbmMuVXRmOCk7XHJcbiAgICByZXR1cm4gcGxhaW5UZXh0O1xyXG4gIH1cclxuXHJcbiAgZ2VuQWN0aW9uKHZpZXdPYmosIHBhcmFtKSB7XHJcbiAgICBsZXQgYXJyTGlzdCA9IHt9O1xyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGFyYW0ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKHZpZXdPYmpbcGFyYW1baV0udHlwZV0gIT0gdW5kZWZpbmVkIHx8IHZpZXdPYmpbcGFyYW1baV0ucHJvcGVydHldICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGFyckxpc3RbcGFyYW1baV0udHlwZV0gPSB2aWV3T2JqW3BhcmFtW2ldLnByb3BlcnR5XTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBhcnJMaXN0W3BhcmFtW2ldLnR5cGVdID0gcGFyYW1baV0ucHJvcGVydHk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBhcnJMaXN0O1xyXG4gIH1cclxuXHJcbiAgZ2VuUm91dGVyTGluayh1cmxMaW5rOiBzdHJpbmcpIHtcclxuICAgIGxldCB0ZW1wTGluayA9IHVybExpbms7XHJcbiAgICBpZiAodGhpcy52aWV3R2VuZXJpY09iai5uYXZpZ2F0aW9uQ29uc3QgIT0gdW5kZWZpbmVkICYmIHRoaXMudmlld0dlbmVyaWNPYmoubmF2aWdhdGlvbkNvbnN0W3VybExpbmtdICE9IG51bGwpIHtcclxuICAgICAgdGVtcExpbmsgPSB0aGlzLnZpZXdHZW5lcmljT2JqLm5hdmlnYXRpb25Db25zdFt1cmxMaW5rXTtcclxuICAgIH1cclxuICAgIHJldHVybiB0ZW1wTGluaztcclxuICB9XHJcblxyXG4gIHJlZGlyZWN0RnVsbFBhdGgoZnVsbHBhdGg6IHN0cmluZywgcGFyYW06IE9iamVjdCwgdGFyZ2V0OiBzdHJpbmcpIHtcclxuICAgIGxldCBxdWVyeVBhcmFtID0gXCJcIjtcclxuICAgIGNvbnN0IExpc3RPYmogPSBPYmplY3Qua2V5cyhwYXJhbSk7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IExpc3RPYmoubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKHF1ZXJ5UGFyYW0gIT0gXCJcIikge1xyXG4gICAgICAgIHF1ZXJ5UGFyYW0gPSBxdWVyeVBhcmFtICsgXCImXCIgKyBMaXN0T2JqW2ldICsgXCI9XCIgKyBwYXJhbVtMaXN0T2JqW2ldXTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBxdWVyeVBhcmFtID0gTGlzdE9ialtpXSArIFwiPVwiICsgcGFyYW1bTGlzdE9ialtpXV07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHdpbmRvdy5vcGVuKGZ1bGxwYXRoICsgXCI/XCIgKyBxdWVyeVBhcmFtLCB0YXJnZXQpO1xyXG4gIH1cclxuXHJcbiAgY2FsbGJhY2tGdW5jdGlvbihpdGVtLCBrZXk6IHN0cmluZyA9IFwiXCIpIHtcclxuICAgIGxldCBDQk9iaiA9IHtcclxuICAgICAgVmlld09iajogaXRlbSxcclxuICAgICAgS2V5OiBrZXlcclxuICAgIH1cclxuICAgIHRoaXMuY2FsbGJhY2suZW1pdChDQk9iaik7XHJcbiAgfVxyXG5cclxuICBzd2l0Y2hDYXNlKGl0ZW0sIGNvbmRMaXN0KSB7XHJcbiAgICBsZXQgY29uZGl0aW9uID0gZmFsc2U7XHJcbiAgICBpZiAoIWl0ZW0pIHJldHVybiBmYWxzZTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZExpc3QuY29uZGl0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAoY29uZExpc3QuY29uZGl0aW9uc1tpXS5yZXN0cmljdGlvbiA9PSBcIkVRXCIpIHtcclxuICAgICAgICBpZiAoY29uZExpc3QuY29uZGl0aW9uc1tpXS5pc1VzZXIgIT0gdHJ1ZSkge1xyXG4gICAgICAgICAgaWYgKGl0ZW1bY29uZExpc3QuY29uZGl0aW9uc1tpXS5wcm9wZXJ0eV0gPT0gY29uZExpc3QuY29uZGl0aW9uc1tpXS52YWx1ZSkge1xyXG4gICAgICAgICAgICBjb25kaXRpb24gPSB0cnVlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoaXRlbVtjb25kTGlzdC5jb25kaXRpb25zW2ldLnByb3BlcnR5XSA9PSB0aGlzLlVzZXJBY2Nlc3NbXCJVc2VyTmFtZVwiXSkge1xyXG4gICAgICAgICAgICBjb25kaXRpb24gPSB0cnVlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmIChjb25kTGlzdC5jb25kaXRpb25zW2ldLnJlc3RyaWN0aW9uID09IFwiTkVRXCIpIHtcclxuICAgICAgICBpZiAoY29uZExpc3QuY29uZGl0aW9uc1tpXS5pc1VzZXIgIT0gdHJ1ZSkge1xyXG4gICAgICAgICAgaWYgKGl0ZW1bY29uZExpc3QuY29uZGl0aW9uc1tpXS5wcm9wZXJ0eV0gIT0gY29uZExpc3QuY29uZGl0aW9uc1tpXS52YWx1ZSkge1xyXG4gICAgICAgICAgICBjb25kaXRpb24gPSB0cnVlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoaXRlbVtjb25kTGlzdC5jb25kaXRpb25zW2ldLnByb3BlcnR5XSAhPSB0aGlzLlVzZXJBY2Nlc3NbXCJVc2VyTmFtZVwiXSkge1xyXG4gICAgICAgICAgICBjb25kaXRpb24gPSB0cnVlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmIChjb25kTGlzdC5jb25kaXRpb25zW2ldLnJlc3RyaWN0aW9uID09IFwiR1RcIikge1xyXG4gICAgICAgIGlmIChjb25kTGlzdC5jb25kaXRpb25zW2ldLmlzVXNlciAhPSB0cnVlKSB7XHJcbiAgICAgICAgICBpZiAoaXRlbVtjb25kTGlzdC5jb25kaXRpb25zW2ldLnByb3BlcnR5XSA+IGNvbmRMaXN0LmNvbmRpdGlvbnNbaV0udmFsdWUpIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKGl0ZW1bY29uZExpc3QuY29uZGl0aW9uc1tpXS5wcm9wZXJ0eV0gPiB0aGlzLlVzZXJBY2Nlc3NbXCJVc2VyTmFtZVwiXSkge1xyXG4gICAgICAgICAgICBjb25kaXRpb24gPSB0cnVlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmIChjb25kTGlzdC5jb25kaXRpb25zW2ldLnJlc3RyaWN0aW9uID09IFwiR1RFXCIpIHtcclxuICAgICAgICBpZiAoY29uZExpc3QuY29uZGl0aW9uc1tpXS5pc1VzZXIgIT0gdHJ1ZSkge1xyXG4gICAgICAgICAgaWYgKGl0ZW1bY29uZExpc3QuY29uZGl0aW9uc1tpXS5wcm9wZXJ0eV0gPj0gY29uZExpc3QuY29uZGl0aW9uc1tpXS52YWx1ZSkge1xyXG4gICAgICAgICAgICBjb25kaXRpb24gPSB0cnVlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoaXRlbVtjb25kTGlzdC5jb25kaXRpb25zW2ldLnByb3BlcnR5XSA+PSB0aGlzLlVzZXJBY2Nlc3NbXCJVc2VyTmFtZVwiXSkge1xyXG4gICAgICAgICAgICBjb25kaXRpb24gPSB0cnVlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmIChjb25kTGlzdC5jb25kaXRpb25zW2ldLnJlc3RyaWN0aW9uID09IFwiTFRcIikge1xyXG4gICAgICAgIGlmIChjb25kTGlzdC5jb25kaXRpb25zW2ldLmlzVXNlciAhPSB0cnVlKSB7XHJcbiAgICAgICAgICBpZiAoaXRlbVtjb25kTGlzdC5jb25kaXRpb25zW2ldLnByb3BlcnR5XSA8IGNvbmRMaXN0LmNvbmRpdGlvbnNbaV0udmFsdWUpIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKGl0ZW1bY29uZExpc3QuY29uZGl0aW9uc1tpXS5wcm9wZXJ0eV0gPCB0aGlzLlVzZXJBY2Nlc3NbXCJVc2VyTmFtZVwiXSkge1xyXG4gICAgICAgICAgICBjb25kaXRpb24gPSB0cnVlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmIChjb25kTGlzdC5jb25kaXRpb25zW2ldLnJlc3RyaWN0aW9uID09IFwiTFRFXCIpIHtcclxuICAgICAgICBpZiAoY29uZExpc3QuY29uZGl0aW9uc1tpXS5pc1VzZXIgIT0gdHJ1ZSkge1xyXG4gICAgICAgICAgaWYgKGl0ZW1bY29uZExpc3QuY29uZGl0aW9uc1tpXS5wcm9wZXJ0eV0gPD0gY29uZExpc3QuY29uZGl0aW9uc1tpXS52YWx1ZSkge1xyXG4gICAgICAgICAgICBjb25kaXRpb24gPSB0cnVlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoaXRlbVtjb25kTGlzdC5jb25kaXRpb25zW2ldLnByb3BlcnR5XSA8PSB0aGlzLlVzZXJBY2Nlc3NbXCJVc2VyTmFtZVwiXSkge1xyXG4gICAgICAgICAgICBjb25kaXRpb24gPSB0cnVlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gICAgICBcclxuICAgICAgfSBlbHNlIGlmIChjb25kTGlzdC5jb25kaXRpb25zW2ldLnJlc3RyaWN0aW9uID09IFwiSU5cIikge1xyXG4gICAgICAgIGlmIChjb25kTGlzdC5jb25kaXRpb25zW2ldLmlzVXNlciAhPSB0cnVlKSB7XHJcbiAgICAgICAgICBpZiAoY29uZExpc3QuY29uZGl0aW9uc1tpXS52YWx1ZS5maW5kSW5kZXgoeCA9PiB4ID09IGl0ZW1bY29uZExpc3QuY29uZGl0aW9uc1tpXS5wcm9wZXJ0eV0pID49IDApIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbmRpdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKGNvbmRMaXN0LmNvbmRpdGlvbnNbaV0udmFsdWUuZmluZEluZGV4KHggPT4geCA9PSB0aGlzLlVzZXJBY2Nlc3NbXCJVc2VyTmFtZVwiXSkgPj0gMCkge1xyXG4gICAgICAgICAgICBjb25kaXRpb24gPSB0cnVlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmIChjb25kTGlzdC5jb25kaXRpb25zW2ldLnJlc3RyaWN0aW9uID09IFwiTklOXCIpIHtcclxuICAgICAgICBpZiAoY29uZExpc3QuY29uZGl0aW9uc1tpXS5pc1VzZXIgIT0gdHJ1ZSkge1xyXG4gICAgICAgICAgaWYgKGNvbmRMaXN0LmNvbmRpdGlvbnNbaV0udmFsdWUuZmluZEluZGV4KHggPT4geCA9PSBpdGVtW2NvbmRMaXN0LmNvbmRpdGlvbnNbaV0ucHJvcGVydHldKSA9PSAtMSkge1xyXG4gICAgICAgICAgICBjb25kaXRpb24gPSB0cnVlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoY29uZExpc3QuY29uZGl0aW9uc1tpXS52YWx1ZS5maW5kSW5kZXgoeCA9PiB4ID09IHRoaXMuVXNlckFjY2Vzc1tcIlVzZXJOYW1lXCJdKSA9PSAtMSkge1xyXG4gICAgICAgICAgICBjb25kaXRpb24gPSB0cnVlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uZGl0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNvbmRpdGlvbjtcclxuICB9XHJcbn1cclxuIl19