homebridge-config-ui-x 5.11.2-beta.2 → 5.11.2-beta.4
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.
- package/CHANGELOG.md +19 -2
- package/dist/core/auth/auth.controller.d.ts +4 -0
- package/dist/core/config/config.interfaces.d.ts +14 -0
- package/dist/core/config/config.service.d.ts +6 -0
- package/dist/core/config/config.service.js +8 -0
- package/dist/core/config/config.service.js.map +1 -1
- package/dist/core/config/config.startup.js +48 -17
- package/dist/core/config/config.startup.js.map +1 -1
- package/dist/core/feature-flags/feature-flags.registry.js +5 -0
- package/dist/core/feature-flags/feature-flags.registry.js.map +1 -1
- package/dist/core/homebridge-ipc/homebridge-ipc.service.js +1 -0
- package/dist/core/homebridge-ipc/homebridge-ipc.service.js.map +1 -1
- package/dist/core/spa/spa-html.service.d.ts +5 -0
- package/dist/core/spa/spa-html.service.js +32 -0
- package/dist/core/spa/spa-html.service.js.map +1 -0
- package/dist/core/spa/spa.filter.d.ts +3 -0
- package/dist/core/spa/spa.filter.js +22 -2
- package/dist/core/spa/spa.filter.js.map +1 -1
- package/dist/core/ssl/ssl-cert-generator.service.d.ts +15 -0
- package/dist/core/ssl/ssl-cert-generator.service.js +125 -0
- package/dist/core/ssl/ssl-cert-generator.service.js.map +1 -0
- package/dist/globalDefaults.js +3 -0
- package/dist/globalDefaults.js.map +1 -1
- package/dist/main.js +18 -4
- package/dist/main.js.map +1 -1
- package/dist/modules/accessories/accessories.controller.d.ts +1 -1
- package/dist/modules/accessories/accessories.interfaces.d.ts +94 -0
- package/dist/modules/accessories/accessories.interfaces.js +2 -0
- package/dist/modules/accessories/accessories.interfaces.js.map +1 -0
- package/dist/modules/accessories/accessories.module.js +2 -0
- package/dist/modules/accessories/accessories.module.js.map +1 -1
- package/dist/modules/accessories/accessories.service.d.ts +21 -3
- package/dist/modules/accessories/accessories.service.js +280 -17
- package/dist/modules/accessories/accessories.service.js.map +1 -1
- package/dist/modules/child-bridges/child-bridges.interfaces.d.ts +9 -0
- package/dist/modules/config-editor/config-editor.controller.d.ts +4 -0
- package/dist/modules/config-editor/config-editor.controller.js +64 -0
- package/dist/modules/config-editor/config-editor.controller.js.map +1 -1
- package/dist/modules/config-editor/config-editor.service.d.ts +6 -1
- package/dist/modules/config-editor/config-editor.service.js +45 -1
- package/dist/modules/config-editor/config-editor.service.js.map +1 -1
- package/dist/modules/custom-plugins/plugins-settings-ui/plugins-settings-ui.service.js +1 -1
- package/dist/modules/custom-plugins/plugins-settings-ui/plugins-settings-ui.service.js.map +1 -1
- package/dist/modules/plugins/plugins.service.js +15 -0
- package/dist/modules/plugins/plugins.service.js.map +1 -1
- package/dist/modules/server/server.controller.d.ts +50 -0
- package/dist/modules/server/server.controller.js +201 -2
- package/dist/modules/server/server.controller.js.map +1 -1
- package/dist/modules/server/server.service.d.ts +48 -0
- package/dist/modules/server/server.service.js +502 -14
- package/dist/modules/server/server.service.js.map +1 -1
- package/dist/modules/status/status.gateway.d.ts +2 -0
- package/dist/modules/status/status.interfaces.d.ts +11 -0
- package/dist/modules/status/status.service.d.ts +4 -1
- package/dist/modules/status/status.service.js +21 -2
- package/dist/modules/status/status.service.js.map +1 -1
- package/docs/matter-todo.md +15 -0
- package/docs/ssl-upload-pr.md +103 -0
- package/package.json +3 -1
- package/public/3rdpartylicenses.txt +595 -621
- package/public/assets/matter.svg +8 -0
- package/public/assets/plugin-ui-utils/ui.js +3 -0
- package/public/assets/plugin-ui-utils/ui.js.map +1 -1
- package/public/chunk-2TQEV57U.js +2 -0
- package/public/chunk-2Y6QBPFY.js +1 -0
- package/public/chunk-3LKYOCGJ.js +1 -0
- package/public/chunk-3YTNATAH.js +1 -0
- package/public/chunk-42Y35W3J.js +2 -0
- package/public/chunk-47QTMPRY.js +1 -0
- package/public/chunk-4KXPUEE3.js +4 -0
- package/public/chunk-4PQ5WRGK.js +1 -0
- package/public/chunk-4TAGCB7R.js +1 -0
- package/public/chunk-4VLAXCSY.js +1 -0
- package/public/chunk-5K3S6ZXB.js +1 -0
- package/public/chunk-6BRZAIW2.js +3 -0
- package/public/chunk-6QJUZNZL.js +1 -0
- package/public/chunk-6ZOSTYPR.js +1 -0
- package/public/{chunk-ZV26JTV7.js → chunk-7JNVXXNR.js} +1 -1
- package/public/chunk-7PPGGAHV.js +1 -0
- package/public/chunk-AM5CKSLZ.js +1 -0
- package/public/chunk-B4AJQJMI.js +1 -0
- package/public/chunk-BBRC6PRL.js +1 -0
- package/public/chunk-BGCYR25X.js +1 -0
- package/public/chunk-BHA7V2NQ.js +1 -0
- package/public/{chunk-KI6BE77G.js → chunk-BMOLDRJ3.js} +1 -1
- package/public/chunk-BVJS76CN.js +1 -0
- package/public/chunk-CNUIQJSO.js +1 -0
- package/public/chunk-CPECPTSN.js +1 -0
- package/public/{chunk-75KR2TK6.js → chunk-DBMKB5Z2.js} +1 -1
- package/public/chunk-DEM3FH7C.js +1 -0
- package/public/chunk-E35SHTFY.js +1 -0
- package/public/chunk-EAYA44IV.js +1 -0
- package/public/chunk-EBHP3YOF.js +1 -0
- package/public/chunk-EMF6ZINV.js +4 -0
- package/public/chunk-FJB6YCFU.js +1 -0
- package/public/chunk-FKJY3Z2V.js +1 -0
- package/public/chunk-FQDRGOO5.js +1 -0
- package/public/chunk-FRMRAPF2.js +1 -0
- package/public/chunk-FYHEIYSO.js +5 -0
- package/public/chunk-GEQRIXEF.js +1 -0
- package/public/chunk-GJ42U6LP.js +16 -0
- package/public/chunk-GT2YL2TI.js +1 -0
- package/public/chunk-GTIVJH6Y.js +1 -0
- package/public/chunk-GYMWB5SQ.js +1 -0
- package/public/chunk-H2D3SCVU.js +1 -0
- package/public/{chunk-OMFNURQZ.js → chunk-H7F7H5MW.js} +1 -1
- package/public/chunk-HKOUIAFO.js +1 -0
- package/public/chunk-I5V7VF5M.js +1 -0
- package/public/chunk-IBFLM7UM.js +1 -0
- package/public/chunk-IZHFI46L.js +2 -0
- package/public/chunk-JNSPIONO.js +1 -0
- package/public/chunk-JUCPYKUR.js +1 -0
- package/public/chunk-KJH2IPMR.js +1 -0
- package/public/chunk-KPSGNAPN.js +1 -0
- package/public/chunk-LH4WRTR2.js +1 -0
- package/public/chunk-LHXNE56J.js +1 -0
- package/public/chunk-LOEOVQRM.js +1 -0
- package/public/chunk-LRB7FQNQ.js +1 -0
- package/public/chunk-LTYAICHT.js +1 -0
- package/public/chunk-LVBVUIJY.js +12 -0
- package/public/chunk-MKV5RAJQ.js +4 -0
- package/public/chunk-MPQEE6FH.js +1 -0
- package/public/chunk-MRPQNEON.js +35 -0
- package/public/chunk-MS4K4KAK.js +5 -0
- package/public/chunk-N6AN65NK.js +3 -0
- package/public/chunk-NCLG2ZY5.js +1 -0
- package/public/chunk-OHJQJ73S.js +1 -0
- package/public/chunk-P3DOEH3R.js +1 -0
- package/public/chunk-PEOTW7KR.js +1 -0
- package/public/chunk-PQM33D72.js +1 -0
- package/public/chunk-Q4PUZM2R.js +1 -0
- package/public/chunk-QBG7SKRK.js +68 -0
- package/public/chunk-QGLAR7UC.js +1 -0
- package/public/chunk-QK4CWVVD.js +1 -0
- package/public/chunk-QPGHC7OK.js +1 -0
- package/public/chunk-RAG53DHZ.js +1 -0
- package/public/chunk-RHJRKBK2.js +1 -0
- package/public/chunk-RQ42YKAP.js +1 -0
- package/public/chunk-S4BMZ4C4.js +1 -0
- package/public/chunk-S4O5HRCM.js +1 -0
- package/public/chunk-SE6AXFTZ.js +1 -0
- package/public/chunk-SIODBMHU.js +1 -0
- package/public/chunk-SS725Q7L.js +1 -0
- package/public/chunk-STXA2UWR.js +1 -0
- package/public/chunk-SVEGWVQJ.js +1 -0
- package/public/chunk-T472BWYK.js +1 -0
- package/public/chunk-TPGJVI7J.js +1 -0
- package/public/chunk-TRDYZJYI.js +1 -0
- package/public/chunk-TTX3XSDC.js +1 -0
- package/public/chunk-TVEZZ2CK.js +1 -0
- package/public/chunk-UDXPJS32.js +1 -0
- package/public/chunk-UO7KCTHV.js +1 -0
- package/public/chunk-UOOJPKZJ.js +1 -0
- package/public/chunk-VAD47NOZ.js +1 -0
- package/public/chunk-VBQ2CSUE.js +1 -0
- package/public/chunk-VWBS6KRT.js +1 -0
- package/public/chunk-VYAAI7PY.js +1 -0
- package/public/chunk-WBTFILXV.js +19 -0
- package/public/chunk-WO6QHRQI.js +1 -0
- package/public/chunk-WOMMYJV2.js +1 -0
- package/public/chunk-WOXYSKNU.js +1 -0
- package/public/{chunk-BKCIVF4W.js → chunk-WX345PMX.js} +52 -2
- package/public/chunk-XGK5YFH6.js +19 -0
- package/public/chunk-XLJ6VVK3.js +8 -0
- package/public/chunk-XPSIQPO4.js +1 -0
- package/public/chunk-XQXAVYM6.js +1 -0
- package/public/chunk-YBGB3IOQ.js +1 -0
- package/public/chunk-YHH6UACV.js +1 -0
- package/public/chunk-YLRX4V4V.js +1 -0
- package/public/chunk-YM6RL7NW.js +1 -0
- package/public/chunk-YMEXNW5V.js +1 -0
- package/public/chunk-YSJHLHJ6.js +1 -0
- package/public/chunk-ZCGZM7LU.js +1 -0
- package/public/chunk-ZDUAXPNP.js +1 -0
- package/public/index.html +2 -2
- package/public/main-SPPQL5YI.js +1 -0
- package/public/media/matter-P563JGDL.svg +8 -0
- package/public/polyfills-34U4WL3Z.js +1 -0
- package/public/styles-CT2LPGES.css +1 -0
- package/scripts/extract-plugin-alias.js +53 -2
- package/public/chunk-2VYCMFLK.js +0 -1
- package/public/chunk-337WAYBF.js +0 -1
- package/public/chunk-3F6KNL45.js +0 -5
- package/public/chunk-3GUIMBZA.js +0 -50
- package/public/chunk-4BH7J5ZU.js +0 -1
- package/public/chunk-4MSKGZXZ.js +0 -1
- package/public/chunk-4STYOKXR.js +0 -1
- package/public/chunk-5GRM2PNI.js +0 -8
- package/public/chunk-6C5CYDDU.js +0 -1
- package/public/chunk-6T52JN5R.js +0 -1
- package/public/chunk-7EKDGIG7.js +0 -1
- package/public/chunk-7O3SPIWC.js +0 -1
- package/public/chunk-ACK5QKZR.js +0 -1
- package/public/chunk-ADJ6TEYQ.js +0 -5
- package/public/chunk-ADWZU2CD.js +0 -1
- package/public/chunk-AGDDSLXN.js +0 -1
- package/public/chunk-ASZKPQUN.js +0 -1
- package/public/chunk-AZY2DNUN.js +0 -1
- package/public/chunk-B6MBMYJR.js +0 -1
- package/public/chunk-BBLJIMXX.js +0 -1
- package/public/chunk-BON2K2BD.js +0 -2
- package/public/chunk-BRP3EHP7.js +0 -1
- package/public/chunk-C5VP7CRC.js +0 -1
- package/public/chunk-C6X7E5CS.js +0 -1
- package/public/chunk-CM3N3C3W.js +0 -1
- package/public/chunk-CV2KW5FI.js +0 -1
- package/public/chunk-EDQF53QR.js +0 -1
- package/public/chunk-EZJQ5APU.js +0 -1
- package/public/chunk-FRNPHIV3.js +0 -1
- package/public/chunk-GBTKBQ2X.js +0 -16
- package/public/chunk-HDF4JHFI.js +0 -4
- package/public/chunk-JEUVQW5P.js +0 -1
- package/public/chunk-KWAS7MXI.js +0 -1
- package/public/chunk-KWC5QURK.js +0 -8
- package/public/chunk-KXNC6WH6.js +0 -1
- package/public/chunk-MMBLECEN.js +0 -1
- package/public/chunk-NQB7BEZZ.js +0 -1
- package/public/chunk-OKAPP6YO.js +0 -1
- package/public/chunk-OM7GHRRK.js +0 -1
- package/public/chunk-OOM2PIRM.js +0 -5
- package/public/chunk-OZKGVJ4N.js +0 -1
- package/public/chunk-PT24GQ5K.js +0 -1
- package/public/chunk-QPI2YWGC.js +0 -1
- package/public/chunk-QQRM2O4S.js +0 -3
- package/public/chunk-QXD4RXA4.js +0 -1
- package/public/chunk-QZU43P2A.js +0 -1
- package/public/chunk-R3Y3VSF7.js +0 -4
- package/public/chunk-R7Q4CXAE.js +0 -1
- package/public/chunk-RAG7VYNH.js +0 -40
- package/public/chunk-RY3E4AUI.js +0 -1
- package/public/chunk-SCWBTFUY.js +0 -1
- package/public/chunk-SRFINKMY.js +0 -1
- package/public/chunk-TRDROX2J.js +0 -1
- package/public/chunk-UH7ZNLL5.js +0 -19
- package/public/chunk-V2WJ2SKN.js +0 -1
- package/public/chunk-VZ3XY34I.js +0 -2
- package/public/chunk-W663VLRG.js +0 -1
- package/public/chunk-WDXU4PPN.js +0 -1
- package/public/chunk-WEXOQCVG.js +0 -1
- package/public/chunk-XDFBUXFD.js +0 -1
- package/public/chunk-XPGJPK66.js +0 -4
- package/public/chunk-YXLLPJEL.js +0 -1
- package/public/chunk-ZXUIFQS4.js +0 -51
- package/public/main-YD5INHXP.js +0 -1
- package/public/polyfills-5KWHJ7II.js +0 -2
- package/public/styles-7EFV5QBG.css +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{e as T}from"./chunk-TRDYZJYI.js";import{a as $,b as O}from"./chunk-BGCYR25X.js";import{b as G}from"./chunk-E35SHTFY.js";import{B as Z,C as ee,D as te,c as Q,d as u,e as U,f as W,g as j,j as _,m as J,r as K,s as X,z as Y}from"./chunk-UO7KCTHV.js";import{b as A}from"./chunk-T472BWYK.js";import{F as z,J as H,q as D}from"./chunk-2TQEV57U.js";import{Ab as f,Ec as l,F as N,Fb as m,Fc as d,Gb as a,Hb as o,Ib as r,P as E,Pc as y,Ua as I,Xb as V,Za as n,Zb as L,aa as c,ec as b,fc as F,hc as q,ic as C,kc as v,lc as w,ma as R,mc as B,n as M,nb as P,o as k,sa as p,zb as g}from"./chunk-MKV5RAJQ.js";import{h as S}from"./chunk-B4AJQJMI.js";var ie=["password"],ne=["username"],oe=["otp"];function ae(i,x){if(i&1&&(a(0,"div",8)(1,"span",12),r(2,"i",13),o(),r(3,"input",14,0),l(5,"translate"),o(),a(6,"div",8)(7,"span",12),r(8,"i",15),o(),r(9,"input",16,1),l(11,"translate"),o()),i&2){let t=L();n(3),C("is-invalid",t.form.controls.username.dirty&&t.form.controls.username.errors),m("placeholder",d(5,6,"users.label_username")),n(6),C("is-invalid",t.form.controls.password.dirty&&t.form.controls.password.errors),m("placeholder",d(11,8,"users.label_password"))}}function re(i,x){i&1&&(a(0,"div",8)(1,"span",12),r(2,"i",17),o(),r(3,"input",18,2),l(5,"translate"),o()),i&2&&(n(3),m("placeholder",d(5,1,"login.label_2fa_code")))}function se(i,x){i&1&&(a(0,"div",9)(1,"div",12),r(2,"i",19),o(),a(3,"div",20)(4,"div",21),v(5),l(6,"translate"),o(),r(7,"div",22),l(8,"translate"),o()()),i&2&&(n(5),w(d(6,2,"login.invalid_credentials")),n(2),m("innerHTML",d(8,4,"login.invalid_credentials_2"),I))}function le(i,x){i&1&&(a(0,"div",9)(1,"div",12),r(2,"i",19),o(),a(3,"div",20)(4,"div",21),v(5),l(6,"translate"),o(),r(7,"div",22),l(8,"translate"),o()()),i&2&&(n(5),w(d(6,2,"login.invalid_code")),n(2),m("innerHTML",d(8,4,"login.invalid_credentials_2"),I))}var xe=(()=>{class i{destroyRef=c(R);$auth=c(G);$router=c(T);$settings=c(A);targetRoute;validNonAdminRoutes=["/accessories","/plugins","/logs","/support"];passwordInput=y("password",{});usernameInput=y("username",{});otpInput=y("otp",{});backgroundStyle=p("",{});invalidCredentials=p(!1,{});invalid2faCode=p(!1,{});twoFactorCodeRequired=p(!1,{});inProgress=p(!1,{});form=new j({username:new _("",{nonNullable:!0,validators:[u.required]}),password:new _("",{nonNullable:!0,validators:[u.required]}),otp:new _("",{nonNullable:!0})});formInvalid=O(this.form.statusChanges.pipe(E(this.form.status),k(()=>this.form.invalid)),{initialValue:this.form.invalid});ngOnInit(){this.form.valueChanges.pipe(N(500),$(this.destroyRef)).subscribe(()=>{let t=this.passwordInput()?.nativeElement.value;t&&t!==this.form.controls.password.value&&this.form.controls.password.setValue(t)}),this.targetRoute=window.sessionStorage.getItem("target_route")||"",this.setBackground()}onSubmit(){return S(this,null,function*(){this.invalidCredentials.set(!1),this.invalid2faCode.set(!1),this.inProgress.set(!0),document.getElementById("submit-button")?.blur();let t=this.passwordInput()?.nativeElement.value;t&&t!==this.form.controls.password.value&&this.form.controls.password.setValue(t);let s=this.usernameInput()?.nativeElement.value;if(s&&s!==this.form.controls.username.value&&this.form.controls.username.setValue(s),this.twoFactorCodeRequired()){let e=this.otpInput()?.nativeElement.value;e&&e!==this.form.controls.otp.value&&this.form.controls.otp.setValue(e)}try{yield this.$auth.login(this.form.getRawValue()),!this.$auth.user.admin&&!this.validNonAdminRoutes.includes(this.targetRoute)&&(this.targetRoute="/"),this.$router.navigateByUrl(this.targetRoute),window.sessionStorage.removeItem("target_route")}catch(e){if(e.status===412){let h=this.form.controls.otp;this.twoFactorCodeRequired()?(h.setErrors({invalidCode:!0}),this.invalid2faCode.set(!0)):(h.setValidators([u.required,u.minLength(6),u.maxLength(6)]),h.updateValueAndValidity()),this.twoFactorCodeRequired.set(!0),setTimeout(()=>{document.getElementById("form-ota")?.focus()},100)}else this.invalidCredentials.set(!0)}this.inProgress.set(!1)})}setBackground(){return S(this,null,function*(){if(this.$settings.settingsLoaded||(yield M(this.$settings.onSettingsLoaded)),this.$settings.env.customWallpaperHash){let t=`${H.api.base}/auth/wallpaper/${this.$settings.env.customWallpaperHash}`;this.backgroundStyle.set(`url('${t}') center/cover`)}})}static \u0275fac=function(s){return new(s||i)};static \u0275cmp=P({type:i,selectors:[["ng-component"]],viewQuery:function(s,e){s&1&&(b(e.passwordInput,ie,5),b(e.usernameInput,ne,5),b(e.otpInput,oe,5)),s&2&&F(3)},decls:15,vars:16,consts:[["username",""],["password",""],["otp",""],[1,"login-container","gradient","d-flex","align-items-start","justify-content-center"],[1,"w-100","login-card","d-flex","py-4","flex-column"],["ngSrc","assets/homebridge-color-round.svg","alt","Homebridge Logo","height","100","width","100","priority","true",1,"homebridge-logo","mx-auto","my-3"],["novalidate","",3,"ngSubmit","formGroup"],[1,"mb-4","text-center"],[1,"input-group","mb-4"],[1,"input-group","no-border","mb-4"],[1,"text-center"],["tabindex","3","id","submit-button","type","submit",1,"btn","btn-primary","mb-2",3,"disabled"],[1,"input-group-text","custom-input"],[1,"fas","fa-user","primary-text","fa-lg"],["formControlName","username","type","text","id","form-username","autofocus","","autocomplete","username","autocapitalize","none","tabindex","1","required","",1,"form-control","custom-input",3,"placeholder"],[1,"fas","fa-lock","primary-text","fa-lg"],["formControlName","password","type","password","id","form-pass","autocomplete","current-password","tabindex","2","required","",1,"form-control","custom-input",3,"placeholder"],[1,"fas","fa-key","primary-text","fa-lg"],["formControlName","otp","type","text","id","form-ota","autofocus","","autocomplete","one-time-code","autocapitalize","none","inputmode","numeric","pattern","[0-9]*","tabindex","1",1,"form-control","custom-input",3,"placeholder"],[1,"fas","fa-exclamation-triangle","pink-text","fa-lg"],[1,"form-control","custom-input"],[1,"small","grey-text","fw-semibold"],[1,"small","grey-text",3,"innerHTML"]],template:function(s,e){s&1&&(a(0,"div",3)(1,"div",4),r(2,"img",5),a(3,"form",6),V("ngSubmit",function(){return e.onSubmit()}),a(4,"h4",7),v(5),l(6,"translate"),o(),g(7,ae,12,10),g(8,re,6,3,"div",8),g(9,se,9,6,"div",9),g(10,le,9,6,"div",9),a(11,"div",10)(12,"button",11),v(13),l(14,"translate"),o()()()()()),s&2&&(q("background",e.backgroundStyle()),C("anim",!e.backgroundStyle()),n(3),m("formGroup",e.form),n(2),w(d(6,12,"setup.welcome_to_homebridge")),n(2),f(e.twoFactorCodeRequired()?-1:7),n(),f(e.twoFactorCodeRequired()?8:-1),n(),f(e.invalidCredentials()?9:-1),n(),f(e.invalid2faCode()?10:-1),n(2),m("disabled",e.formInvalid()),n(),B(" ",d(14,14,"form.button_continue")," "))},dependencies:[ee,J,Q,U,W,Y,Z,te,X,K,D,z],styles:["body{overflow:scroll!important} body.dark-mode .login-card{background-color:#2b2b2b;color:#fff}.login-container[_ngcontent-%COMP%]{z-index:-1;padding-top:2em;padding-bottom:2em;min-height:100%;background-size:300% 300%}.anim[_ngcontent-%COMP%]{-webkit-animation:_ngcontent-%COMP%_gradient 20s ease infinite;-moz-animation:gradient 20s ease infinite;-o-animation:gradient 20s ease infinite;animation:_ngcontent-%COMP%_gradient 20s ease infinite}@keyframes _ngcontent-%COMP%_gradient{0%{background-position:0 50%}50%{background-position:100% 50%}to{background-position:0 50%}}.login-card[_ngcontent-%COMP%]{max-width:550px;border-radius:1rem;padding-right:25px;padding-left:25px;background-color:#ffffffe6}.login-card[_ngcontent-%COMP%] .form-control[_ngcontent-%COMP%]:focus{background-color:inherit!important}@media screen and (max-width:575px){.login-card[_ngcontent-%COMP%]{margin-left:1em;margin-right:1em}}.homebridge-logo[_ngcontent-%COMP%]{margin-bottom:10px}"]})}return i})();export{xe as LoginComponent};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a}from"./chunk-XQXAVYM6.js";import"./chunk-B4AJQJMI.js";export default a();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{b as me,c as _e}from"./chunk-QBG7SKRK.js";import"./chunk-3LKYOCGJ.js";import{a as le}from"./chunk-DBMKB5Z2.js";import{a as ue}from"./chunk-H2D3SCVU.js";import{a as ge}from"./chunk-7JNVXXNR.js";import"./chunk-6ZOSTYPR.js";import{a as ce,b as de,c as pe}from"./chunk-YMEXNW5V.js";import{m as D,n as re,t as se}from"./chunk-MS4K4KAK.js";import"./chunk-TRDYZJYI.js";import{a as J}from"./chunk-BGCYR25X.js";import{b as Y}from"./chunk-E35SHTFY.js";import{C as ae,c as Z,e as ee,f as te,i as ie,l as ne,m as oe}from"./chunk-UO7KCTHV.js";import{b as X}from"./chunk-T472BWYK.js";import{E as K,F as S,K as Q}from"./chunk-2TQEV57U.js";import{Ab as y,Cb as W,Db as I,Eb as $,Ec as s,Fb as f,Fc as l,Gb as a,Gc as U,Hb as r,Ib as p,Jb as V,Kb as O,Lb as R,Rb as k,Ua as H,Xb as g,Za as n,Zb as d,aa as b,ga as C,ha as x,ic as F,jc as j,kc as c,lc as m,mc as w,nb as M,rc as A,sa as B,sc as T,tc as E,xc as z,yb as v,yc as q,zb as h,zc as G}from"./chunk-MKV5RAJQ.js";import{h as L}from"./chunk-B4AJQJMI.js";var be=(()=>{class t{$activeModal=b(D);dismissModal(){this.$activeModal.dismiss("Dismiss")}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=M({type:t,selectors:[["ng-component"]],decls:42,vars:30,consts:[[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click"],[1,"modal-body"],[1,"text-center","mb-3"],[1,"fa","fa-question-circle-o","primary-text",2,"font-size","75px"],[1,"ms-2"],[1,"mb-0"],[1,"ms-2","mt-2"],[1,"modal-footer","justify-content-between"],[1,"text-start"],[1,"text-center"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click"],[1,"text-end"]],template:function(i,o){i&1&&(a(0,"div",0)(1,"form")(2,"div",1)(3,"h5",2),c(4),s(5,"translate"),r(),a(6,"button",3),s(7,"translate"),g("click",function(){return o.dismissModal()}),r()(),a(8,"div",4)(9,"div",5),p(10,"i",6),r(),a(11,"h5",7),c(12),s(13,"translate"),r(),a(14,"ul",8)(15,"li"),c(16),s(17,"translate"),r(),a(18,"li"),c(19),s(20,"translate"),r()(),a(21,"h5",9),c(22),s(23,"translate"),r(),a(24,"ul",8)(25,"li"),c(26),s(27,"translate"),r(),a(28,"li"),c(29),s(30,"translate"),r(),a(31,"li"),c(32),s(33,"translate"),r()(),p(34,"app-support-banner"),r(),a(35,"div",10),p(36,"div",11),a(37,"div",12)(38,"button",13),g("click",function(){return o.dismissModal()}),c(39),s(40,"translate"),r()(),p(41,"div",14),r()()()),i&2&&(n(4),m(l(5,10,"support.title")),n(2),v("aria-label",l(7,12,"form.button_close")),n(6),m(l(13,14,"menu.label_accessories")),n(4),m(l(17,16,"accessories.support.acc_1")),n(3),m(l(20,18,"accessories.support.acc_2")),n(3),m(l(23,20,"accessories.title_rooms")),n(4),m(l(27,22,"accessories.support.rooms_1")),n(3),m(l(30,24,"accessories.support.rooms_2")),n(3),m(l(33,26,"accessories.support.rooms_3")),n(7),w(" ",l(40,28,"form.button_close")," "))},dependencies:[ge,S],encapsulation:2})}return t})();var Ce=()=>({standalone:!0}),fe=(()=>{class t{$activeModal=b(D);roomName="";dismissModal(){this.$activeModal.dismiss("Dismiss")}closeModal(e){this.$activeModal.close(e)}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=M({type:t,selectors:[["ng-component"]],decls:28,vars:19,consts:[[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click"],[1,"modal-body"],[1,"text-center","mb-3"],[1,"fas","fa-folder-plus","primary-text",2,"font-size","75px"],[1,"list-group","list-group-box","mb-0"],[1,"list-group-item","d-flex","flex-column","flex-md-row","align-items-center"],["for","form-name",1,"mb-2","mb-md-0","w-100","w-md-50"],[1,"text-start","text-md-end","w-100","w-md-50"],["autocomplete","off","type","text","id","form-name","autofocus","",1,"form-control","custom-input",3,"ngModelChange","keyup.enter","ngModel","ngModelOptions"],[1,"modal-footer","justify-content-between"],[1,"text-start"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click"],[1,"text-center"],[1,"text-end"],["type","button","data-bs-dismiss","modal",1,"btn","btn-primary",3,"click","disabled"]],template:function(i,o){i&1&&(a(0,"div",0)(1,"form")(2,"div",1)(3,"h5",2),c(4),s(5,"translate"),r(),a(6,"button",3),s(7,"translate"),g("click",function(){return o.dismissModal()}),r()(),a(8,"div",4)(9,"div",5),p(10,"i",6),r(),a(11,"ul",7)(12,"li",8)(13,"label",9),c(14),s(15,"translate"),r(),a(16,"div",10)(17,"input",11),E("ngModelChange",function(P){return T(o.roomName,P)||(o.roomName=P),P}),g("keyup.enter",function(){return o.closeModal(o.roomName)}),r()()()()(),a(18,"div",12)(19,"div",13)(20,"button",14),g("click",function(){return o.dismissModal()}),c(21),s(22,"translate"),r()(),p(23,"div",15),a(24,"div",16)(25,"button",17),g("click",function(){return o.closeModal(o.roomName)}),c(26),s(27,"translate"),r()()()()()),i&2&&(n(4),m(l(5,8,"accessories.button_add_room")),n(2),v("aria-label",l(7,10,"form.button_close")),n(8),m(l(15,12,"accessories.room_name")),n(3),A("ngModel",o.roomName),f("ngModelOptions",z(18,Ce)),n(4),w(" ",l(22,14,"form.button_close")," "),n(4),f("disabled",!o.roomName),n(),w(" ",l(27,16,"form.button_save")," "))},dependencies:[ae,oe,Z,ee,te,ne,ie,S],encapsulation:2})}return t})();var ve=(()=>{class t{static \u0275fac=function(i){return new(i||t)};static \u0275cmp=M({type:t,selectors:[["app-drag-here-placeholder"]],decls:5,vars:3,consts:[[1,"accessory-box"],[1,"fas","fa-arrow-alt-circle-down","accessory-icon"],[1,"accessory-label"]],template:function(i,o){i&1&&(V(0,"div",0),R(1,"i",1),V(2,"div",2),c(3),s(4,"translate"),O()()),i&2&&(n(3),m(l(4,1,"accessories.control.drag_here")))},dependencies:[S],styles:[".accessory-box[_ngcontent-%COMP%]{opacity:.2}"]})}return t})();var xe=(t,u)=>({"fa-eye":t,"fa-eye-slash":u}),he=t=>({link:t}),ye=(t,u)=>u.name;function Me(t,u){if(t&1){let e=k();a(0,"button",8),s(1,"translate"),s(2,"translate"),g("click",function(){C(e);let o=d(2);return x(o.addRoom())}),p(3,"i",9),r(),a(4,"button",8),s(5,"translate"),s(6,"translate"),s(7,"translate"),s(8,"translate"),g("click",function(){C(e);let o=d(2);return x(o.hideHidden.set(!o.hideHidden()))}),p(9,"i",10),r(),a(10,"div",11)(11,"button",12),s(12,"translate"),s(13,"translate"),g("click",function(){C(e);let o=d(2);return x(o.toggleLayoutLock())}),p(14,"i",13),r(),a(15,"button",12),s(16,"translate"),s(17,"translate"),g("click",function(){C(e);let o=d(2);return x(o.toggleLayoutLock())}),p(18,"i",14),r()()}if(t&2){let e=d(2);f("hidden",e.isMobile())("openDelay",150)("ngbTooltip",l(1,18,"accessories.button_add_room")),v("aria-label",l(2,20,"accessories.button_add_room")),n(4),f("hidden",e.isMobile())("openDelay",150)("ngbTooltip",e.hideHidden()?l(5,22,"accessories.button_hidden_show"):l(6,24,"accessories.button_hidden_hide")),v("aria-label",e.hideHidden()?l(7,26,"accessories.button_hidden_show"):l(8,28,"accessories.button_hidden_hide")),n(5),j(G(38,xe,!e.hideHidden(),e.hideHidden())),n(2),f("disabled",!e.isMobile())("openDelay",150)("ngbTooltip",l(12,30,"form.button_unlock")),v("aria-label",l(13,32,"form.button_unlock")),n(4),f("disabled",e.isMobile())("openDelay",150)("ngbTooltip",l(16,34,"form.button_lock")),v("aria-label",l(17,36,"form.button_lock"))}}function Se(t,u){t&1&&p(0,"app-spinner")}function we(t,u){if(t&1&&(a(0,"div",0)(1,"div",21)(2,"h5",22),c(3),s(4,"translate"),r()()()),t&2){let e=d().$implicit,i=d(4);n(2),F("cursor-move",!i.isMobile()),n(),w(" ",e.name==="Default Room"?l(4,3,"accessories.control.default_room"):e.name," ")}}function ke(t,u){if(t&1&&(a(0,"div",25),p(1,"app-accessory-tile",26),r()),t&2){let e=d().$implicit;n(),f("service",e)}}function Ae(t,u){if(t&1&&h(0,ke,2,1,"div",25),t&2){let e=u.$implicit,i=d(6);y(!i.hideHidden()||!e.hidden?0:-1)}}function Te(t,u){if(t&1){let e=k();a(0,"div",23),E("dragulaModelChange",function(o){C(e);let _=d().$implicit;return T(_.services,o)||(_.services=o),x(o)}),I(1,Ae,1,1,null,null,W),p(3,"div",24)(4,"div",24)(5,"div",24)(6,"div",24)(7,"div",24)(8,"div",24)(9,"div",24)(10,"div",24)(11,"div",24)(12,"div",24),r()}if(t&2){let e=d().$implicit,i=d(4);F("justify-content-between",i.isMobile()),f("dragula","services-bag"),A("dragulaModel",e.services),n(),$(e.services)}}function Ee(t,u){if(t&1){let e=k();a(0,"div",27),E("dragulaModelChange",function(o){C(e);let _=d().$implicit;return T(_.services,o)||(_.services=o),x(o)}),p(1,"app-drag-here-placeholder",28),r()}if(t&2){let e=d().$implicit;f("dragula","services-bag"),A("dragulaModel",e.services)}}function Be(t,u){if(t&1&&(a(0,"div"),h(1,we,5,5,"div",0),a(2,"div",18),h(3,Te,13,4,"div",19),h(4,Ee,2,2,"div",20),r()()),t&2){let e=u.$implicit,i=d(4);n(),y(!i.isMobile()||e.services.length?1:-1),n(2),y(e.services.length?3:-1),n(),y(!e.services.length&&!i.isMobile()?4:-1)}}function De(t,u){if(t&1){let e=k();a(0,"div",17),E("dragulaModelChange",function(o){C(e);let _=d(3);return T(_.rooms,o)||(_.rooms=o),x(o)}),I(1,Be,5,3,"div",null,ye),r()}if(t&2){let e=d(3);f("dragula","rooms-bag"),A("dragulaModel",e.rooms),n(),$(e.rooms)}}function Pe(t,u){t&1&&(a(0,"div",16)(1,"div",29)(2,"div",30),p(3,"i",31),r(),a(4,"h5",32),c(5),s(6,"translate"),r(),a(7,"p",33),c(8),s(9,"translate"),r(),a(10,"p",34),c(11),s(12,"translate"),r()()()),t&2&&(n(5),m(l(6,3,"accessories.no_plugins.title")),n(3),m(l(9,5,"accessories.no_plugins.message_1")),n(3),m(l(12,7,"accessories.no_plugins.message_2")))}function Ie(t,u){if(t&1&&h(0,De,3,2,"div",15)(1,Pe,13,9,"div",16),t&2){let e=d(2);y(e.hasPlugins()?0:1)}}function $e(t,u){if(t&1){let e=k();a(0,"div",1)(1,"div",2)(2,"h3",3),c(3),s(4,"translate"),r()(),a(5,"div",4)(6,"button",5),s(7,"translate"),g("click",function(){C(e);let o=d();return x(o.openSupport())}),p(8,"i",6),r()(),a(9,"div",7),h(10,Me,19,41),a(11,"button",5),s(12,"translate"),g("click",function(){C(e);let o=d();return x(o.openSupport())}),p(13,"i",6),r()()(),h(14,Se,1,0,"app-spinner")(15,Ie,2,1)}if(t&2){let e=d();n(3),m(l(4,5,"menu.label_accessories")),n(3),v("aria-label",l(7,7,"support.title")),n(4),y(e.hasPlugins()?10:-1),n(),v("aria-label",l(12,9,"support.title")),n(3),y(e.loading()?14:15)}}function Ve(t,u){t&1&&(a(0,"p",40),c(1),s(2,"translate"),r()),t&2&&(n(),m(l(2,1,"accessories.settings_link")))}function Fe(t,u){if(t&1&&(a(0,"div",0)(1,"div",35)(2,"h3",36),c(3),s(4,"translate"),r()(),a(5,"div",16)(6,"div",37)(7,"div",30),p(8,"i",38),r(),a(9,"h5",32),c(10),s(11,"translate"),r(),p(12,"p",39),s(13,"translate"),h(14,Ve,3,3,"p",40),r()()()),t&2){let e=d();n(3),m(l(4,4,"menu.label_accessories")),n(7),m(l(11,6,"accessories.control_disabled")),n(2),f("innerHTML",U(13,8,"accessories.message_must_use_insecure_mode",q(11,he,e.linkInsecure)),H),n(2),y(e.isAdmin?14:-1)}}var gt=(()=>{class t{$accessories=b(me);$api=b(Q);$auth=b(Y);dragulaService=b(ce);$modal=b(re);$settings=b(X);$md=b(ue);$translate=b(K);isAdmin=this.$auth.user.admin;enableAccessories=this.$settings.env.enableAccessories;isMobile=B(!1,{});hideHidden=B(!0,{});linkInsecure='<a href="https://github.com/homebridge/homebridge-config-ui-x/wiki/Enabling-Accessory-Control" target="_blank"><i class="fa fa-external-link-alt primary-text"></i></a>';hasPlugins=B(!1,{});loading=B(!0,{});get rooms(){return this.$accessories.rooms()}set rooms(e){this.$accessories.rooms.set(e)}constructor(){let e=this.dragulaService;this.isMobile.set(this.$md.detect.mobile()),e.createGroup("rooms-bag",{moves:(i,o,_)=>!this.isMobile()&&_.classList.contains("drag-handle")}),e.createGroup("services-bag",{moves:i=>!this.isMobile()&&!i.classList.contains("no-drag")}),e.drop().pipe(J()).subscribe(()=>{setTimeout(()=>{this.$accessories.saveLayout()})}),this.isMobile.set(!0)}ngOnInit(){let e=this.$translate.instant("menu.label_accessories");this.$settings.setPageTitle(e),this.$accessories.start(),this.checkForPlugins()}addRoom(){this.$modal.open(fe,{size:"lg",backdrop:"static"}).result.then(e=>{!e||!e.length||this.$accessories.rooms().find(i=>i.name===e)||(this.$accessories.rooms.update(i=>[...i,{name:e,services:[]}]),this.isMobile()&&this.toggleLayoutLock())}).catch(()=>{})}toggleLayoutLock(){this.isMobile.set(!this.isMobile()),this.isMobile()?document.querySelectorAll(".services-bag").forEach(i=>{for(let o=0;o<10;o+=1){let _=document.createElement("div");_.className="accessory-box invisible py-0 my-0",_.style.height="0",i.appendChild(_)}}):document.querySelectorAll(".invisible").forEach(i=>i.remove())}openSupport(){this.$modal.open(be,{size:"lg",backdrop:"static"})}ngOnDestroy(){this.$accessories.stop(),this.dragulaService.destroy("rooms-bag"),this.dragulaService.destroy("services-bag")}checkForPlugins(){return L(this,null,function*(){try{let e=yield this.$api.get("/plugins");this.hasPlugins.set(e.length>1)}catch(e){console.error(e),this.hasPlugins.set(!0)}finally{this.loading.set(!1)}})}static \u0275fac=function(i){return new(i||t)};static \u0275cmp=M({type:t,selectors:[["app-accessories"]],decls:2,vars:1,consts:[[1,"row"],[1,"row","mb-3"],[1,"col-9","col-sm-6"],[1,"primary-text","m-0"],[1,"col-3","col-sm-6","text-end","d-inline-block","d-sm-none"],["type","button",1,"btn","btn-elegant","my-0","me-0",3,"click"],[1,"fa","fa-question-circle-o"],[1,"col-3","col-sm-6","text-end","d-none","d-sm-inline-block"],["type","button","container","body","placement","bottom","triggers","hover",1,"btn","btn-elegant","my-0","me-2",3,"click","hidden","openDelay","ngbTooltip"],[1,"fas","fa-folder-plus"],[1,"fas"],["role","group",1,"btn-group","me-2"],["type","button","container","body","placement","bottom","triggers","hover",1,"btn","btn-elegant","my-0",3,"click","disabled","openDelay","ngbTooltip"],[1,"fas","fa-unlock"],[1,"fas","fa-lock"],[3,"dragula","dragulaModel"],[1,"col-12","text-center"],[3,"dragulaModelChange","dragula","dragulaModel"],[1,"row","mb-4"],[1,"col-md-12","d-flex","flex-wrap","noselect","services-bag",3,"justify-content-between","dragula","dragulaModel"],[1,"col-md-12","d-flex","flex-wrap","noselect",3,"dragula","dragulaModel"],[1,"col-md-12"],[1,"primary-text","drag-handle","room-title","m-0","mb-1","mb-sm-0"],[1,"col-md-12","d-flex","flex-wrap","noselect","services-bag",3,"dragulaModelChange","dragula","dragulaModel"],[1,"accessory-box","invisible","py-0","my-0",2,"height","0"],[1,"accessory-item","accessory-tab"],[3,"service"],[1,"col-md-12","d-flex","flex-wrap","noselect",3,"dragulaModelChange","dragula","dragulaModel"],[1,"no-drag"],["role","alert",1,"alert","alert-warning","p-5"],[1,"text-center","mb-3"],[1,"fas","fa-plug","primary-text",2,"font-size","75px"],[1,"mb-3","mt-0"],[1,"mb-0","small"],[1,"mb-0","small","mt-2"],[1,"col-12"],[1,"primary-text","m-0","mb-3"],["role","alert",1,"alert","alert-warning","p-4"],[1,"fas","fa-lightbulb","primary-text",2,"font-size","75px"],[1,"mb-0","small",3,"innerHTML"],[1,"mt-2","mb-0","small"]],template:function(i,o){i&1&&h(0,$e,16,11)(1,Fe,15,13,"div",0),i&2&&y(o.enableAccessories?0:1)},dependencies:[se,pe,de,_e,ve,le,S],styles:[".room-title[_ngcontent-%COMP%]{margin-left:10px}@media(max-width:575px){.room-title[_ngcontent-%COMP%]{margin-left:7px}}.services-bag[_ngcontent-%COMP%]{min-height:170px}@media(max-width:575px){.services-bag[_ngcontent-%COMP%]{min-height:initial}}.cursor-move[_ngcontent-%COMP%]{cursor:move}a[_ngcontent-%COMP%]:hover{text-decoration:none!important}"]})}return t})();export{gt as AccessoriesComponent};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{X as C}from"./chunk-MKV5RAJQ.js";import{e as u,g as c}from"./chunk-B4AJQJMI.js";var E=u((V,l)=>{(function(b,a){b(function(){"use strict";var e={};e.mobileDetectRules={phones:{iPhone:"\\biPhone\\b|\\biPod\\b",BlackBerry:"BlackBerry|\\bBB10\\b|rim[0-9]+|\\b(BBA100|BBB100|BBD100|BBE100|BBF100|STH100)\\b-[0-9]+",Pixel:"; \\bPixel\\b",HTC:"HTC|HTC.*(Sensation|Evo|Vision|Explorer|6800|8100|8900|A7272|S510e|C110e|Legend|Desire|T8282)|APX515CKT|Qtek9090|APA9292KT|HD_mini|Sensation.*Z710e|PG86100|Z715e|Desire.*(A8181|HD)|ADR6200|ADR6400L|ADR6425|001HT|Inspire 4G|Android.*\\bEVO\\b|T-Mobile G1|Z520m|Android [0-9.]+; Pixel",Nexus:"Nexus One|Nexus S|Galaxy.*Nexus|Android.*Nexus.*Mobile|Nexus 4|Nexus 5|Nexus 5X|Nexus 6",Dell:"Dell[;]? (Streak|Aero|Venue|Venue Pro|Flash|Smoke|Mini 3iX)|XCD28|XCD35|\\b001DL\\b|\\b101DL\\b|\\bGS01\\b",Motorola:"Motorola|DROIDX|DROID BIONIC|\\bDroid\\b.*Build|Android.*Xoom|HRI39|MOT-|A1260|A1680|A555|A853|A855|A953|A955|A956|Motorola.*ELECTRIFY|Motorola.*i1|i867|i940|MB200|MB300|MB501|MB502|MB508|MB511|MB520|MB525|MB526|MB611|MB612|MB632|MB810|MB855|MB860|MB861|MB865|MB870|ME501|ME502|ME511|ME525|ME600|ME632|ME722|ME811|ME860|ME863|ME865|MT620|MT710|MT716|MT720|MT810|MT870|MT917|Motorola.*TITANIUM|WX435|WX445|XT300|XT301|XT311|XT316|XT317|XT319|XT320|XT390|XT502|XT530|XT531|XT532|XT535|XT603|XT610|XT611|XT615|XT681|XT701|XT702|XT711|XT720|XT800|XT806|XT860|XT862|XT875|XT882|XT883|XT894|XT901|XT907|XT909|XT910|XT912|XT928|XT926|XT915|XT919|XT925|XT1021|\\bMoto E\\b|XT1068|XT1092|XT1052",Samsung:"\\bSamsung\\b|SM-G950F|SM-G955F|SM-G9250|GT-19300|SGH-I337|BGT-S5230|GT-B2100|GT-B2700|GT-B2710|GT-B3210|GT-B3310|GT-B3410|GT-B3730|GT-B3740|GT-B5510|GT-B5512|GT-B5722|GT-B6520|GT-B7300|GT-B7320|GT-B7330|GT-B7350|GT-B7510|GT-B7722|GT-B7800|GT-C3010|GT-C3011|GT-C3060|GT-C3200|GT-C3212|GT-C3212I|GT-C3262|GT-C3222|GT-C3300|GT-C3300K|GT-C3303|GT-C3303K|GT-C3310|GT-C3322|GT-C3330|GT-C3350|GT-C3500|GT-C3510|GT-C3530|GT-C3630|GT-C3780|GT-C5010|GT-C5212|GT-C6620|GT-C6625|GT-C6712|GT-E1050|GT-E1070|GT-E1075|GT-E1080|GT-E1081|GT-E1085|GT-E1087|GT-E1100|GT-E1107|GT-E1110|GT-E1120|GT-E1125|GT-E1130|GT-E1160|GT-E1170|GT-E1175|GT-E1180|GT-E1182|GT-E1200|GT-E1210|GT-E1225|GT-E1230|GT-E1390|GT-E2100|GT-E2120|GT-E2121|GT-E2152|GT-E2220|GT-E2222|GT-E2230|GT-E2232|GT-E2250|GT-E2370|GT-E2550|GT-E2652|GT-E3210|GT-E3213|GT-I5500|GT-I5503|GT-I5700|GT-I5800|GT-I5801|GT-I6410|GT-I6420|GT-I7110|GT-I7410|GT-I7500|GT-I8000|GT-I8150|GT-I8160|GT-I8190|GT-I8320|GT-I8330|GT-I8350|GT-I8530|GT-I8700|GT-I8703|GT-I8910|GT-I9000|GT-I9001|GT-I9003|GT-I9010|GT-I9020|GT-I9023|GT-I9070|GT-I9082|GT-I9100|GT-I9103|GT-I9220|GT-I9250|GT-I9300|GT-I9305|GT-I9500|GT-I9505|GT-M3510|GT-M5650|GT-M7500|GT-M7600|GT-M7603|GT-M8800|GT-M8910|GT-N7000|GT-S3110|GT-S3310|GT-S3350|GT-S3353|GT-S3370|GT-S3650|GT-S3653|GT-S3770|GT-S3850|GT-S5210|GT-S5220|GT-S5229|GT-S5230|GT-S5233|GT-S5250|GT-S5253|GT-S5260|GT-S5263|GT-S5270|GT-S5300|GT-S5330|GT-S5350|GT-S5360|GT-S5363|GT-S5369|GT-S5380|GT-S5380D|GT-S5560|GT-S5570|GT-S5600|GT-S5603|GT-S5610|GT-S5620|GT-S5660|GT-S5670|GT-S5690|GT-S5750|GT-S5780|GT-S5830|GT-S5839|GT-S6102|GT-S6500|GT-S7070|GT-S7200|GT-S7220|GT-S7230|GT-S7233|GT-S7250|GT-S7500|GT-S7530|GT-S7550|GT-S7562|GT-S7710|GT-S8000|GT-S8003|GT-S8500|GT-S8530|GT-S8600|SCH-A310|SCH-A530|SCH-A570|SCH-A610|SCH-A630|SCH-A650|SCH-A790|SCH-A795|SCH-A850|SCH-A870|SCH-A890|SCH-A930|SCH-A950|SCH-A970|SCH-A990|SCH-I100|SCH-I110|SCH-I400|SCH-I405|SCH-I500|SCH-I510|SCH-I515|SCH-I600|SCH-I730|SCH-I760|SCH-I770|SCH-I830|SCH-I910|SCH-I920|SCH-I959|SCH-LC11|SCH-N150|SCH-N300|SCH-R100|SCH-R300|SCH-R351|SCH-R400|SCH-R410|SCH-T300|SCH-U310|SCH-U320|SCH-U350|SCH-U360|SCH-U365|SCH-U370|SCH-U380|SCH-U410|SCH-U430|SCH-U450|SCH-U460|SCH-U470|SCH-U490|SCH-U540|SCH-U550|SCH-U620|SCH-U640|SCH-U650|SCH-U660|SCH-U700|SCH-U740|SCH-U750|SCH-U810|SCH-U820|SCH-U900|SCH-U940|SCH-U960|SCS-26UC|SGH-A107|SGH-A117|SGH-A127|SGH-A137|SGH-A157|SGH-A167|SGH-A177|SGH-A187|SGH-A197|SGH-A227|SGH-A237|SGH-A257|SGH-A437|SGH-A517|SGH-A597|SGH-A637|SGH-A657|SGH-A667|SGH-A687|SGH-A697|SGH-A707|SGH-A717|SGH-A727|SGH-A737|SGH-A747|SGH-A767|SGH-A777|SGH-A797|SGH-A817|SGH-A827|SGH-A837|SGH-A847|SGH-A867|SGH-A877|SGH-A887|SGH-A897|SGH-A927|SGH-B100|SGH-B130|SGH-B200|SGH-B220|SGH-C100|SGH-C110|SGH-C120|SGH-C130|SGH-C140|SGH-C160|SGH-C170|SGH-C180|SGH-C200|SGH-C207|SGH-C210|SGH-C225|SGH-C230|SGH-C417|SGH-C450|SGH-D307|SGH-D347|SGH-D357|SGH-D407|SGH-D415|SGH-D780|SGH-D807|SGH-D980|SGH-E105|SGH-E200|SGH-E315|SGH-E316|SGH-E317|SGH-E335|SGH-E590|SGH-E635|SGH-E715|SGH-E890|SGH-F300|SGH-F480|SGH-I200|SGH-I300|SGH-I320|SGH-I550|SGH-I577|SGH-I600|SGH-I607|SGH-I617|SGH-I627|SGH-I637|SGH-I677|SGH-I700|SGH-I717|SGH-I727|SGH-i747M|SGH-I777|SGH-I780|SGH-I827|SGH-I847|SGH-I857|SGH-I896|SGH-I897|SGH-I900|SGH-I907|SGH-I917|SGH-I927|SGH-I937|SGH-I997|SGH-J150|SGH-J200|SGH-L170|SGH-L700|SGH-M110|SGH-M150|SGH-M200|SGH-N105|SGH-N500|SGH-N600|SGH-N620|SGH-N625|SGH-N700|SGH-N710|SGH-P107|SGH-P207|SGH-P300|SGH-P310|SGH-P520|SGH-P735|SGH-P777|SGH-Q105|SGH-R210|SGH-R220|SGH-R225|SGH-S105|SGH-S307|SGH-T109|SGH-T119|SGH-T139|SGH-T209|SGH-T219|SGH-T229|SGH-T239|SGH-T249|SGH-T259|SGH-T309|SGH-T319|SGH-T329|SGH-T339|SGH-T349|SGH-T359|SGH-T369|SGH-T379|SGH-T409|SGH-T429|SGH-T439|SGH-T459|SGH-T469|SGH-T479|SGH-T499|SGH-T509|SGH-T519|SGH-T539|SGH-T559|SGH-T589|SGH-T609|SGH-T619|SGH-T629|SGH-T639|SGH-T659|SGH-T669|SGH-T679|SGH-T709|SGH-T719|SGH-T729|SGH-T739|SGH-T746|SGH-T749|SGH-T759|SGH-T769|SGH-T809|SGH-T819|SGH-T839|SGH-T919|SGH-T929|SGH-T939|SGH-T959|SGH-T989|SGH-U100|SGH-U200|SGH-U800|SGH-V205|SGH-V206|SGH-X100|SGH-X105|SGH-X120|SGH-X140|SGH-X426|SGH-X427|SGH-X475|SGH-X495|SGH-X497|SGH-X507|SGH-X600|SGH-X610|SGH-X620|SGH-X630|SGH-X700|SGH-X820|SGH-X890|SGH-Z130|SGH-Z150|SGH-Z170|SGH-ZX10|SGH-ZX20|SHW-M110|SPH-A120|SPH-A400|SPH-A420|SPH-A460|SPH-A500|SPH-A560|SPH-A600|SPH-A620|SPH-A660|SPH-A700|SPH-A740|SPH-A760|SPH-A790|SPH-A800|SPH-A820|SPH-A840|SPH-A880|SPH-A900|SPH-A940|SPH-A960|SPH-D600|SPH-D700|SPH-D710|SPH-D720|SPH-I300|SPH-I325|SPH-I330|SPH-I350|SPH-I500|SPH-I600|SPH-I700|SPH-L700|SPH-M100|SPH-M220|SPH-M240|SPH-M300|SPH-M305|SPH-M320|SPH-M330|SPH-M350|SPH-M360|SPH-M370|SPH-M380|SPH-M510|SPH-M540|SPH-M550|SPH-M560|SPH-M570|SPH-M580|SPH-M610|SPH-M620|SPH-M630|SPH-M800|SPH-M810|SPH-M850|SPH-M900|SPH-M910|SPH-M920|SPH-M930|SPH-N100|SPH-N200|SPH-N240|SPH-N300|SPH-N400|SPH-Z400|SWC-E100|SCH-i909|GT-N7100|GT-N7105|SCH-I535|SM-N900A|SGH-I317|SGH-T999L|GT-S5360B|GT-I8262|GT-S6802|GT-S6312|GT-S6310|GT-S5312|GT-S5310|GT-I9105|GT-I8510|GT-S6790N|SM-G7105|SM-N9005|GT-S5301|GT-I9295|GT-I9195|SM-C101|GT-S7392|GT-S7560|GT-B7610|GT-I5510|GT-S7582|GT-S7530E|GT-I8750|SM-G9006V|SM-G9008V|SM-G9009D|SM-G900A|SM-G900D|SM-G900F|SM-G900H|SM-G900I|SM-G900J|SM-G900K|SM-G900L|SM-G900M|SM-G900P|SM-G900R4|SM-G900S|SM-G900T|SM-G900V|SM-G900W8|SHV-E160K|SCH-P709|SCH-P729|SM-T2558|GT-I9205|SM-G9350|SM-J120F|SM-G920F|SM-G920V|SM-G930F|SM-N910C|SM-A310F|GT-I9190|SM-J500FN|SM-G903F|SM-J330F|SM-G610F|SM-G981B|SM-G892A|SM-A530F",LG:"\\bLG\\b;|LG[- ]?(C800|C900|E400|E610|E900|E-900|F160|F180K|F180L|F180S|730|855|L160|LS740|LS840|LS970|LU6200|MS690|MS695|MS770|MS840|MS870|MS910|P500|P700|P705|VM696|AS680|AS695|AX840|C729|E970|GS505|272|C395|E739BK|E960|L55C|L75C|LS696|LS860|P769BK|P350|P500|P509|P870|UN272|US730|VS840|VS950|LN272|LN510|LS670|LS855|LW690|MN270|MN510|P509|P769|P930|UN200|UN270|UN510|UN610|US670|US740|US760|UX265|UX840|VN271|VN530|VS660|VS700|VS740|VS750|VS910|VS920|VS930|VX9200|VX11000|AX840A|LW770|P506|P925|P999|E612|D955|D802|MS323|M257)|LM-G710",Sony:"SonyST|SonyLT|SonyEricsson|SonyEricssonLT15iv|LT18i|E10i|LT28h|LT26w|SonyEricssonMT27i|C5303|C6902|C6903|C6906|C6943|D2533|SOV34|601SO|F8332",Asus:"Asus.*Galaxy|PadFone.*Mobile",Xiaomi:"^(?!.*\\bx11\\b).*xiaomi.*$|POCOPHONE F1|MI 8|Redmi Note 9S|Redmi Note 5A Prime|N2G47H|M2001J2G|M2001J2I|M1805E10A|M2004J11G|M1902F1G|M2002J9G|M2004J19G|M2003J6A1G",NokiaLumia:"Lumia [0-9]{3,4}",Micromax:"Micromax.*\\b(A210|A92|A88|A72|A111|A110Q|A115|A116|A110|A90S|A26|A51|A35|A54|A25|A27|A89|A68|A65|A57|A90)\\b",Palm:"PalmSource|Palm",Vertu:"Vertu|Vertu.*Ltd|Vertu.*Ascent|Vertu.*Ayxta|Vertu.*Constellation(F|Quest)?|Vertu.*Monika|Vertu.*Signature",Pantech:"PANTECH|IM-A850S|IM-A840S|IM-A830L|IM-A830K|IM-A830S|IM-A820L|IM-A810K|IM-A810S|IM-A800S|IM-T100K|IM-A725L|IM-A780L|IM-A775C|IM-A770K|IM-A760S|IM-A750K|IM-A740S|IM-A730S|IM-A720L|IM-A710K|IM-A690L|IM-A690S|IM-A650S|IM-A630K|IM-A600S|VEGA PTL21|PT003|P8010|ADR910L|P6030|P6020|P9070|P4100|P9060|P5000|CDM8992|TXT8045|ADR8995|IS11PT|P2030|P6010|P8000|PT002|IS06|CDM8999|P9050|PT001|TXT8040|P2020|P9020|P2000|P7040|P7000|C790",Fly:"IQ230|IQ444|IQ450|IQ440|IQ442|IQ441|IQ245|IQ256|IQ236|IQ255|IQ235|IQ245|IQ275|IQ240|IQ285|IQ280|IQ270|IQ260|IQ250",Wiko:"KITE 4G|HIGHWAY|GETAWAY|STAIRWAY|DARKSIDE|DARKFULL|DARKNIGHT|DARKMOON|SLIDE|WAX 4G|RAINBOW|BLOOM|SUNSET|GOA(?!nna)|LENNY|BARRY|IGGY|OZZY|CINK FIVE|CINK PEAX|CINK PEAX 2|CINK SLIM|CINK SLIM 2|CINK +|CINK KING|CINK PEAX|CINK SLIM|SUBLIM",iMobile:"i-mobile (IQ|i-STYLE|idea|ZAA|Hitz)",SimValley:"\\b(SP-80|XT-930|SX-340|XT-930|SX-310|SP-360|SP60|SPT-800|SP-120|SPT-800|SP-140|SPX-5|SPX-8|SP-100|SPX-8|SPX-12)\\b",Wolfgang:"AT-B24D|AT-AS50HD|AT-AS40W|AT-AS55HD|AT-AS45q2|AT-B26D|AT-AS50Q",Alcatel:"Alcatel",Nintendo:"Nintendo (3DS|Switch)",Amoi:"Amoi",INQ:"INQ",OnePlus:"ONEPLUS",GenericPhone:"Tapatalk|PDA;|SAGEM|\\bmmp\\b|pocket|\\bpsp\\b|symbian|Smartphone|smartfon|treo|up.browser|up.link|vodafone|\\bwap\\b|nokia|Series40|Series60|S60|SonyEricsson|N900|MAUI.*WAP.*Browser"},tablets:{iPad:"iPad|iPad.*Mobile",NexusTablet:"Android.*Nexus[\\s]+(7|9|10)",GoogleTablet:"Android.*Pixel C",SamsungTablet:"SAMSUNG.*Tablet|Galaxy.*Tab|SC-01C|GT-P1000|GT-P1003|GT-P1010|GT-P3105|GT-P6210|GT-P6800|GT-P6810|GT-P7100|GT-P7300|GT-P7310|GT-P7500|GT-P7510|SCH-I800|SCH-I815|SCH-I905|SGH-I957|SGH-I987|SGH-T849|SGH-T859|SGH-T869|SPH-P100|GT-P3100|GT-P3108|GT-P3110|GT-P5100|GT-P5110|GT-P6200|GT-P7320|GT-P7511|GT-N8000|GT-P8510|SGH-I497|SPH-P500|SGH-T779|SCH-I705|SCH-I915|GT-N8013|GT-P3113|GT-P5113|GT-P8110|GT-N8010|GT-N8005|GT-N8020|GT-P1013|GT-P6201|GT-P7501|GT-N5100|GT-N5105|GT-N5110|SHV-E140K|SHV-E140L|SHV-E140S|SHV-E150S|SHV-E230K|SHV-E230L|SHV-E230S|SHW-M180K|SHW-M180L|SHW-M180S|SHW-M180W|SHW-M300W|SHW-M305W|SHW-M380K|SHW-M380S|SHW-M380W|SHW-M430W|SHW-M480K|SHW-M480S|SHW-M480W|SHW-M485W|SHW-M486W|SHW-M500W|GT-I9228|SCH-P739|SCH-I925|GT-I9200|GT-P5200|GT-P5210|GT-P5210X|SM-T311|SM-T310|SM-T310X|SM-T210|SM-T210R|SM-T211|SM-P600|SM-P601|SM-P605|SM-P900|SM-P901|SM-T217|SM-T217A|SM-T217S|SM-P6000|SM-T3100|SGH-I467|XE500|SM-T110|GT-P5220|GT-I9200X|GT-N5110X|GT-N5120|SM-P905|SM-T111|SM-T2105|SM-T315|SM-T320|SM-T320X|SM-T321|SM-T520|SM-T525|SM-T530NU|SM-T230NU|SM-T330NU|SM-T900|XE500T1C|SM-P605V|SM-P905V|SM-T337V|SM-T537V|SM-T707V|SM-T807V|SM-P600X|SM-P900X|SM-T210X|SM-T230|SM-T230X|SM-T325|GT-P7503|SM-T531|SM-T330|SM-T530|SM-T705|SM-T705C|SM-T535|SM-T331|SM-T800|SM-T700|SM-T537|SM-T807|SM-P907A|SM-T337A|SM-T537A|SM-T707A|SM-T807A|SM-T237|SM-T807P|SM-P607T|SM-T217T|SM-T337T|SM-T807T|SM-T116NQ|SM-T116BU|SM-P550|SM-T350|SM-T550|SM-T9000|SM-P9000|SM-T705Y|SM-T805|GT-P3113|SM-T710|SM-T810|SM-T815|SM-T360|SM-T533|SM-T113|SM-T335|SM-T715|SM-T560|SM-T670|SM-T677|SM-T377|SM-T567|SM-T357T|SM-T555|SM-T561|SM-T713|SM-T719|SM-T813|SM-T819|SM-T580|SM-T355Y?|SM-T280|SM-T817A|SM-T820|SM-W700|SM-P580|SM-T587|SM-P350|SM-P555M|SM-P355M|SM-T113NU|SM-T815Y|SM-T585|SM-T285|SM-T825|SM-W708|SM-T835|SM-T830|SM-T837V|SM-T720|SM-T510|SM-T387V|SM-P610|SM-T290|SM-T515|SM-T590|SM-T595|SM-T725|SM-T817P|SM-P585N0|SM-T395|SM-T295|SM-T865|SM-P610N|SM-P615|SM-T970|SM-T380|SM-T5950|SM-T905|SM-T231|SM-T500|SM-T860",Kindle:"Kindle|Silk.*Accelerated|Android.*\\b(KFOT|KFTT|KFJWI|KFJWA|KFOTE|KFSOWI|KFTHWI|KFTHWA|KFAPWI|KFAPWA|WFJWAE|KFSAWA|KFSAWI|KFASWI|KFARWI|KFFOWI|KFGIWI|KFMEWI)\\b|Android.*Silk/[0-9.]+ like Chrome/[0-9.]+ (?!Mobile)",SurfaceTablet:"Windows NT [0-9.]+; ARM;.*(Tablet|ARMBJS)",HPTablet:"HP Slate (7|8|10)|HP ElitePad 900|hp-tablet|EliteBook.*Touch|HP 8|Slate 21|HP SlateBook 10",AsusTablet:"^.*PadFone((?!Mobile).)*$|Transformer|TF101|TF101G|TF300T|TF300TG|TF300TL|TF700T|TF700KL|TF701T|TF810C|ME171|ME301T|ME302C|ME371MG|ME370T|ME372MG|ME172V|ME173X|ME400C|Slider SL101|\\bK00F\\b|\\bK00C\\b|\\bK00E\\b|\\bK00L\\b|TX201LA|ME176C|ME102A|\\bM80TA\\b|ME372CL|ME560CG|ME372CG|ME302KL| K010 | K011 | K017 | K01E |ME572C|ME103K|ME170C|ME171C|\\bME70C\\b|ME581C|ME581CL|ME8510C|ME181C|P01Y|PO1MA|P01Z|\\bP027\\b|\\bP024\\b|\\bP00C\\b",BlackBerryTablet:"PlayBook|RIM Tablet",HTCtablet:"HTC_Flyer_P512|HTC Flyer|HTC Jetstream|HTC-P715a|HTC EVO View 4G|PG41200|PG09410",MotorolaTablet:"xoom|sholest|MZ615|MZ605|MZ505|MZ601|MZ602|MZ603|MZ604|MZ606|MZ607|MZ608|MZ609|MZ615|MZ616|MZ617",NookTablet:"Android.*Nook|NookColor|nook browser|BNRV200|BNRV200A|BNTV250|BNTV250A|BNTV400|BNTV600|LogicPD Zoom2",AcerTablet:"Android.*; \\b(A100|A101|A110|A200|A210|A211|A500|A501|A510|A511|A700|A701|W500|W500P|W501|W501P|W510|W511|W700|G100|G100W|B1-A71|B1-710|B1-711|A1-810|A1-811|A1-830)\\b|W3-810|\\bA3-A10\\b|\\bA3-A11\\b|\\bA3-A20\\b|\\bA3-A30|A3-A40",ToshibaTablet:"Android.*(AT100|AT105|AT200|AT205|AT270|AT275|AT300|AT305|AT1S5|AT500|AT570|AT700|AT830)|TOSHIBA.*FOLIO",LGTablet:"\\bL-06C|LG-V909|LG-V900|LG-V700|LG-V510|LG-V500|LG-V410|LG-V400|LG-VK810\\b",FujitsuTablet:"Android.*\\b(F-01D|F-02F|F-05E|F-10D|M532|Q572)\\b",PrestigioTablet:"PMP3170B|PMP3270B|PMP3470B|PMP7170B|PMP3370B|PMP3570C|PMP5870C|PMP3670B|PMP5570C|PMP5770D|PMP3970B|PMP3870C|PMP5580C|PMP5880D|PMP5780D|PMP5588C|PMP7280C|PMP7280C3G|PMP7280|PMP7880D|PMP5597D|PMP5597|PMP7100D|PER3464|PER3274|PER3574|PER3884|PER5274|PER5474|PMP5097CPRO|PMP5097|PMP7380D|PMP5297C|PMP5297C_QUAD|PMP812E|PMP812E3G|PMP812F|PMP810E|PMP880TD|PMT3017|PMT3037|PMT3047|PMT3057|PMT7008|PMT5887|PMT5001|PMT5002",LenovoTablet:"Lenovo TAB|Idea(Tab|Pad)( A1|A10| K1|)|ThinkPad([ ]+)?Tablet|YT3-850M|YT3-X90L|YT3-X90F|YT3-X90X|Lenovo.*(S2109|S2110|S5000|S6000|K3011|A3000|A3500|A1000|A2107|A2109|A1107|A5500|A7600|B6000|B8000|B8080)(-|)(FL|F|HV|H|)|TB-X103F|TB-X304X|TB-X304F|TB-X304L|TB-X505F|TB-X505L|TB-X505X|TB-X605F|TB-X605L|TB-8703F|TB-8703X|TB-8703N|TB-8704N|TB-8704F|TB-8704X|TB-8704V|TB-7304F|TB-7304I|TB-7304X|Tab2A7-10F|Tab2A7-20F|TB2-X30L|YT3-X50L|YT3-X50F|YT3-X50M|YT-X705F|YT-X703F|YT-X703L|YT-X705L|YT-X705X|TB2-X30F|TB2-X30L|TB2-X30M|A2107A-F|A2107A-H|TB3-730F|TB3-730M|TB3-730X|TB-7504F|TB-7504X|TB-X704F|TB-X104F|TB3-X70F|TB-X705F|TB-8504F|TB3-X70L|TB3-710F|TB-X704L",DellTablet:"Venue 11|Venue 8|Venue 7|Dell Streak 10|Dell Streak 7",YarvikTablet:"Android.*\\b(TAB210|TAB211|TAB224|TAB250|TAB260|TAB264|TAB310|TAB360|TAB364|TAB410|TAB411|TAB420|TAB424|TAB450|TAB460|TAB461|TAB464|TAB465|TAB467|TAB468|TAB07-100|TAB07-101|TAB07-150|TAB07-151|TAB07-152|TAB07-200|TAB07-201-3G|TAB07-210|TAB07-211|TAB07-212|TAB07-214|TAB07-220|TAB07-400|TAB07-485|TAB08-150|TAB08-200|TAB08-201-3G|TAB08-201-30|TAB09-100|TAB09-211|TAB09-410|TAB10-150|TAB10-201|TAB10-211|TAB10-400|TAB10-410|TAB13-201|TAB274EUK|TAB275EUK|TAB374EUK|TAB462EUK|TAB474EUK|TAB9-200)\\b",MedionTablet:"Android.*\\bOYO\\b|LIFE.*(P9212|P9514|P9516|S9512)|LIFETAB",ArnovaTablet:"97G4|AN10G2|AN7bG3|AN7fG3|AN8G3|AN8cG3|AN7G3|AN9G3|AN7dG3|AN7dG3ST|AN7dG3ChildPad|AN10bG3|AN10bG3DT|AN9G2",IntensoTablet:"INM8002KP|INM1010FP|INM805ND|Intenso Tab|TAB1004",IRUTablet:"M702pro",MegafonTablet:"MegaFon V9|\\bZTE V9\\b|Android.*\\bMT7A\\b",EbodaTablet:"E-Boda (Supreme|Impresspeed|Izzycomm|Essential)",AllViewTablet:"Allview.*(Viva|Alldro|City|Speed|All TV|Frenzy|Quasar|Shine|TX1|AX1|AX2)",ArchosTablet:"\\b(101G9|80G9|A101IT)\\b|Qilive 97R|Archos5|\\bARCHOS (70|79|80|90|97|101|FAMILYPAD|)(b|c|)(G10| Cobalt| TITANIUM(HD|)| Xenon| Neon|XSK| 2| XS 2| PLATINUM| CARBON|GAMEPAD)\\b",AinolTablet:"NOVO7|NOVO8|NOVO10|Novo7Aurora|Novo7Basic|NOVO7PALADIN|novo9-Spark",NokiaLumiaTablet:"Lumia 2520",SonyTablet:"Sony.*Tablet|Xperia Tablet|Sony Tablet S|SO-03E|SGPT12|SGPT13|SGPT114|SGPT121|SGPT122|SGPT123|SGPT111|SGPT112|SGPT113|SGPT131|SGPT132|SGPT133|SGPT211|SGPT212|SGPT213|SGP311|SGP312|SGP321|EBRD1101|EBRD1102|EBRD1201|SGP351|SGP341|SGP511|SGP512|SGP521|SGP541|SGP551|SGP621|SGP641|SGP612|SOT31|SGP771|SGP611|SGP612|SGP712",PhilipsTablet:"\\b(PI2010|PI3000|PI3100|PI3105|PI3110|PI3205|PI3210|PI3900|PI4010|PI7000|PI7100)\\b",CubeTablet:"Android.*(K8GT|U9GT|U10GT|U16GT|U17GT|U18GT|U19GT|U20GT|U23GT|U30GT)|CUBE U8GT",CobyTablet:"MID1042|MID1045|MID1125|MID1126|MID7012|MID7014|MID7015|MID7034|MID7035|MID7036|MID7042|MID7048|MID7127|MID8042|MID8048|MID8127|MID9042|MID9740|MID9742|MID7022|MID7010",MIDTablet:"M9701|M9000|M9100|M806|M1052|M806|T703|MID701|MID713|MID710|MID727|MID760|MID830|MID728|MID933|MID125|MID810|MID732|MID120|MID930|MID800|MID731|MID900|MID100|MID820|MID735|MID980|MID130|MID833|MID737|MID960|MID135|MID860|MID736|MID140|MID930|MID835|MID733|MID4X10",MSITablet:"MSI \\b(Primo 73K|Primo 73L|Primo 81L|Primo 77|Primo 93|Primo 75|Primo 76|Primo 73|Primo 81|Primo 91|Primo 90|Enjoy 71|Enjoy 7|Enjoy 10)\\b",SMiTTablet:"Android.*(\\bMID\\b|MID-560|MTV-T1200|MTV-PND531|MTV-P1101|MTV-PND530)",RockChipTablet:"Android.*(RK2818|RK2808A|RK2918|RK3066)|RK2738|RK2808A",FlyTablet:"IQ310|Fly Vision",bqTablet:"Android.*(bq)?.*\\b(Elcano|Curie|Edison|Maxwell|Kepler|Pascal|Tesla|Hypatia|Platon|Newton|Livingstone|Cervantes|Avant|Aquaris ([E|M]10|M8))\\b|Maxwell.*Lite|Maxwell.*Plus",HuaweiTablet:"MediaPad|MediaPad 7 Youth|IDEOS S7|S7-201c|S7-202u|S7-101|S7-103|S7-104|S7-105|S7-106|S7-201|S7-Slim|M2-A01L|BAH-L09|BAH-W09|AGS-L09|CMR-AL19",NecTablet:"\\bN-06D|\\bN-08D",PantechTablet:"Pantech.*P4100",BronchoTablet:"Broncho.*(N701|N708|N802|a710)",VersusTablet:"TOUCHPAD.*[78910]|\\bTOUCHTAB\\b",ZyncTablet:"z1000|Z99 2G|z930|z990|z909|Z919|z900",PositivoTablet:"TB07STA|TB10STA|TB07FTA|TB10FTA",NabiTablet:"Android.*\\bNabi",KoboTablet:"Kobo Touch|\\bK080\\b|\\bVox\\b Build|\\bArc\\b Build",DanewTablet:"DSlide.*\\b(700|701R|702|703R|704|802|970|971|972|973|974|1010|1012)\\b",TexetTablet:"NaviPad|TB-772A|TM-7045|TM-7055|TM-9750|TM-7016|TM-7024|TM-7026|TM-7041|TM-7043|TM-7047|TM-8041|TM-9741|TM-9747|TM-9748|TM-9751|TM-7022|TM-7021|TM-7020|TM-7011|TM-7010|TM-7023|TM-7025|TM-7037W|TM-7038W|TM-7027W|TM-9720|TM-9725|TM-9737W|TM-1020|TM-9738W|TM-9740|TM-9743W|TB-807A|TB-771A|TB-727A|TB-725A|TB-719A|TB-823A|TB-805A|TB-723A|TB-715A|TB-707A|TB-705A|TB-709A|TB-711A|TB-890HD|TB-880HD|TB-790HD|TB-780HD|TB-770HD|TB-721HD|TB-710HD|TB-434HD|TB-860HD|TB-840HD|TB-760HD|TB-750HD|TB-740HD|TB-730HD|TB-722HD|TB-720HD|TB-700HD|TB-500HD|TB-470HD|TB-431HD|TB-430HD|TB-506|TB-504|TB-446|TB-436|TB-416|TB-146SE|TB-126SE",PlaystationTablet:"Playstation.*(Portable|Vita)",TrekstorTablet:"ST10416-1|VT10416-1|ST70408-1|ST702xx-1|ST702xx-2|ST80208|ST97216|ST70104-2|VT10416-2|ST10216-2A|SurfTab",PyleAudioTablet:"\\b(PTBL10CEU|PTBL10C|PTBL72BC|PTBL72BCEU|PTBL7CEU|PTBL7C|PTBL92BC|PTBL92BCEU|PTBL9CEU|PTBL9CUK|PTBL9C)\\b",AdvanTablet:"Android.* \\b(E3A|T3X|T5C|T5B|T3E|T3C|T3B|T1J|T1F|T2A|T1H|T1i|E1C|T1-E|T5-A|T4|E1-B|T2Ci|T1-B|T1-D|O1-A|E1-A|T1-A|T3A|T4i)\\b ",DanyTechTablet:"Genius Tab G3|Genius Tab S2|Genius Tab Q3|Genius Tab G4|Genius Tab Q4|Genius Tab G-II|Genius TAB GII|Genius TAB GIII|Genius Tab S1",GalapadTablet:"Android [0-9.]+; [a-z-]+; \\bG1\\b",MicromaxTablet:"Funbook|Micromax.*\\b(P250|P560|P360|P362|P600|P300|P350|P500|P275)\\b",KarbonnTablet:"Android.*\\b(A39|A37|A34|ST8|ST10|ST7|Smart Tab3|Smart Tab2)\\b",AllFineTablet:"Fine7 Genius|Fine7 Shine|Fine7 Air|Fine8 Style|Fine9 More|Fine10 Joy|Fine11 Wide",PROSCANTablet:"\\b(PEM63|PLT1023G|PLT1041|PLT1044|PLT1044G|PLT1091|PLT4311|PLT4311PL|PLT4315|PLT7030|PLT7033|PLT7033D|PLT7035|PLT7035D|PLT7044K|PLT7045K|PLT7045KB|PLT7071KG|PLT7072|PLT7223G|PLT7225G|PLT7777G|PLT7810K|PLT7849G|PLT7851G|PLT7852G|PLT8015|PLT8031|PLT8034|PLT8036|PLT8080K|PLT8082|PLT8088|PLT8223G|PLT8234G|PLT8235G|PLT8816K|PLT9011|PLT9045K|PLT9233G|PLT9735|PLT9760G|PLT9770G)\\b",YONESTablet:"BQ1078|BC1003|BC1077|RK9702|BC9730|BC9001|IT9001|BC7008|BC7010|BC708|BC728|BC7012|BC7030|BC7027|BC7026",ChangJiaTablet:"TPC7102|TPC7103|TPC7105|TPC7106|TPC7107|TPC7201|TPC7203|TPC7205|TPC7210|TPC7708|TPC7709|TPC7712|TPC7110|TPC8101|TPC8103|TPC8105|TPC8106|TPC8203|TPC8205|TPC8503|TPC9106|TPC9701|TPC97101|TPC97103|TPC97105|TPC97106|TPC97111|TPC97113|TPC97203|TPC97603|TPC97809|TPC97205|TPC10101|TPC10103|TPC10106|TPC10111|TPC10203|TPC10205|TPC10503",GUTablet:"TX-A1301|TX-M9002|Q702|kf026",PointOfViewTablet:"TAB-P506|TAB-navi-7-3G-M|TAB-P517|TAB-P-527|TAB-P701|TAB-P703|TAB-P721|TAB-P731N|TAB-P741|TAB-P825|TAB-P905|TAB-P925|TAB-PR945|TAB-PL1015|TAB-P1025|TAB-PI1045|TAB-P1325|TAB-PROTAB[0-9]+|TAB-PROTAB25|TAB-PROTAB26|TAB-PROTAB27|TAB-PROTAB26XL|TAB-PROTAB2-IPS9|TAB-PROTAB30-IPS9|TAB-PROTAB25XXL|TAB-PROTAB26-IPS10|TAB-PROTAB30-IPS10",OvermaxTablet:"OV-(SteelCore|NewBase|Basecore|Baseone|Exellen|Quattor|EduTab|Solution|ACTION|BasicTab|TeddyTab|MagicTab|Stream|TB-08|TB-09)|Qualcore 1027",HCLTablet:"HCL.*Tablet|Connect-3G-2.0|Connect-2G-2.0|ME Tablet U1|ME Tablet U2|ME Tablet G1|ME Tablet X1|ME Tablet Y2|ME Tablet Sync",DPSTablet:"DPS Dream 9|DPS Dual 7",VistureTablet:"V97 HD|i75 3G|Visture V4( HD)?|Visture V5( HD)?|Visture V10",CrestaTablet:"CTP(-)?810|CTP(-)?818|CTP(-)?828|CTP(-)?838|CTP(-)?888|CTP(-)?978|CTP(-)?980|CTP(-)?987|CTP(-)?988|CTP(-)?989",MediatekTablet:"\\bMT8125|MT8389|MT8135|MT8377\\b",ConcordeTablet:"Concorde([ ]+)?Tab|ConCorde ReadMan",GoCleverTablet:"GOCLEVER TAB|A7GOCLEVER|M1042|M7841|M742|R1042BK|R1041|TAB A975|TAB A7842|TAB A741|TAB A741L|TAB M723G|TAB M721|TAB A1021|TAB I921|TAB R721|TAB I720|TAB T76|TAB R70|TAB R76.2|TAB R106|TAB R83.2|TAB M813G|TAB I721|GCTA722|TAB I70|TAB I71|TAB S73|TAB R73|TAB R74|TAB R93|TAB R75|TAB R76.1|TAB A73|TAB A93|TAB A93.2|TAB T72|TAB R83|TAB R974|TAB R973|TAB A101|TAB A103|TAB A104|TAB A104.2|R105BK|M713G|A972BK|TAB A971|TAB R974.2|TAB R104|TAB R83.3|TAB A1042",ModecomTablet:"FreeTAB 9000|FreeTAB 7.4|FreeTAB 7004|FreeTAB 7800|FreeTAB 2096|FreeTAB 7.5|FreeTAB 1014|FreeTAB 1001 |FreeTAB 8001|FreeTAB 9706|FreeTAB 9702|FreeTAB 7003|FreeTAB 7002|FreeTAB 1002|FreeTAB 7801|FreeTAB 1331|FreeTAB 1004|FreeTAB 8002|FreeTAB 8014|FreeTAB 9704|FreeTAB 1003",VoninoTablet:"\\b(Argus[ _]?S|Diamond[ _]?79HD|Emerald[ _]?78E|Luna[ _]?70C|Onyx[ _]?S|Onyx[ _]?Z|Orin[ _]?HD|Orin[ _]?S|Otis[ _]?S|SpeedStar[ _]?S|Magnet[ _]?M9|Primus[ _]?94[ _]?3G|Primus[ _]?94HD|Primus[ _]?QS|Android.*\\bQ8\\b|Sirius[ _]?EVO[ _]?QS|Sirius[ _]?QS|Spirit[ _]?S)\\b",ECSTablet:"V07OT2|TM105A|S10OT1|TR10CS1",StorexTablet:"eZee[_']?(Tab|Go)[0-9]+|TabLC7|Looney Tunes Tab",VodafoneTablet:"SmartTab([ ]+)?[0-9]+|SmartTabII10|SmartTabII7|VF-1497|VFD 1400",EssentielBTablet:"Smart[ ']?TAB[ ]+?[0-9]+|Family[ ']?TAB2",RossMoorTablet:"RM-790|RM-997|RMD-878G|RMD-974R|RMT-705A|RMT-701|RME-601|RMT-501|RMT-711",iMobileTablet:"i-mobile i-note",TolinoTablet:"tolino tab [0-9.]+|tolino shine",AudioSonicTablet:"\\bC-22Q|T7-QC|T-17B|T-17P\\b",AMPETablet:"Android.* A78 ",SkkTablet:"Android.* (SKYPAD|PHOENIX|CYCLOPS)",TecnoTablet:"TECNO P9|TECNO DP8D",JXDTablet:"Android.* \\b(F3000|A3300|JXD5000|JXD3000|JXD2000|JXD300B|JXD300|S5800|S7800|S602b|S5110b|S7300|S5300|S602|S603|S5100|S5110|S601|S7100a|P3000F|P3000s|P101|P200s|P1000m|P200m|P9100|P1000s|S6600b|S908|P1000|P300|S18|S6600|S9100)\\b",iJoyTablet:"Tablet (Spirit 7|Essentia|Galatea|Fusion|Onix 7|Landa|Titan|Scooby|Deox|Stella|Themis|Argon|Unique 7|Sygnus|Hexen|Finity 7|Cream|Cream X2|Jade|Neon 7|Neron 7|Kandy|Scape|Saphyr 7|Rebel|Biox|Rebel|Rebel 8GB|Myst|Draco 7|Myst|Tab7-004|Myst|Tadeo Jones|Tablet Boing|Arrow|Draco Dual Cam|Aurix|Mint|Amity|Revolution|Finity 9|Neon 9|T9w|Amity 4GB Dual Cam|Stone 4GB|Stone 8GB|Andromeda|Silken|X2|Andromeda II|Halley|Flame|Saphyr 9,7|Touch 8|Planet|Triton|Unique 10|Hexen 10|Memphis 4GB|Memphis 8GB|Onix 10)",FX2Tablet:"FX2 PAD7|FX2 PAD10",XoroTablet:"KidsPAD 701|PAD[ ]?712|PAD[ ]?714|PAD[ ]?716|PAD[ ]?717|PAD[ ]?718|PAD[ ]?720|PAD[ ]?721|PAD[ ]?722|PAD[ ]?790|PAD[ ]?792|PAD[ ]?900|PAD[ ]?9715D|PAD[ ]?9716DR|PAD[ ]?9718DR|PAD[ ]?9719QR|PAD[ ]?9720QR|TelePAD1030|Telepad1032|TelePAD730|TelePAD731|TelePAD732|TelePAD735Q|TelePAD830|TelePAD9730|TelePAD795|MegaPAD 1331|MegaPAD 1851|MegaPAD 2151",ViewsonicTablet:"ViewPad 10pi|ViewPad 10e|ViewPad 10s|ViewPad E72|ViewPad7|ViewPad E100|ViewPad 7e|ViewSonic VB733|VB100a",VerizonTablet:"QTAQZ3|QTAIR7|QTAQTZ3|QTASUN1|QTASUN2|QTAXIA1",OdysTablet:"LOOX|XENO10|ODYS[ -](Space|EVO|Xpress|NOON)|\\bXELIO\\b|Xelio10Pro|XELIO7PHONETAB|XELIO10EXTREME|XELIOPT2|NEO_QUAD10",CaptivaTablet:"CAPTIVA PAD",IconbitTablet:"NetTAB|NT-3702|NT-3702S|NT-3702S|NT-3603P|NT-3603P|NT-0704S|NT-0704S|NT-3805C|NT-3805C|NT-0806C|NT-0806C|NT-0909T|NT-0909T|NT-0907S|NT-0907S|NT-0902S|NT-0902S",TeclastTablet:"T98 4G|\\bP80\\b|\\bX90HD\\b|X98 Air|X98 Air 3G|\\bX89\\b|P80 3G|\\bX80h\\b|P98 Air|\\bX89HD\\b|P98 3G|\\bP90HD\\b|P89 3G|X98 3G|\\bP70h\\b|P79HD 3G|G18d 3G|\\bP79HD\\b|\\bP89s\\b|\\bA88\\b|\\bP10HD\\b|\\bP19HD\\b|G18 3G|\\bP78HD\\b|\\bA78\\b|\\bP75\\b|G17s 3G|G17h 3G|\\bP85t\\b|\\bP90\\b|\\bP11\\b|\\bP98t\\b|\\bP98HD\\b|\\bG18d\\b|\\bP85s\\b|\\bP11HD\\b|\\bP88s\\b|\\bA80HD\\b|\\bA80se\\b|\\bA10h\\b|\\bP89\\b|\\bP78s\\b|\\bG18\\b|\\bP85\\b|\\bA70h\\b|\\bA70\\b|\\bG17\\b|\\bP18\\b|\\bA80s\\b|\\bA11s\\b|\\bP88HD\\b|\\bA80h\\b|\\bP76s\\b|\\bP76h\\b|\\bP98\\b|\\bA10HD\\b|\\bP78\\b|\\bP88\\b|\\bA11\\b|\\bA10t\\b|\\bP76a\\b|\\bP76t\\b|\\bP76e\\b|\\bP85HD\\b|\\bP85a\\b|\\bP86\\b|\\bP75HD\\b|\\bP76v\\b|\\bA12\\b|\\bP75a\\b|\\bA15\\b|\\bP76Ti\\b|\\bP81HD\\b|\\bA10\\b|\\bT760VE\\b|\\bT720HD\\b|\\bP76\\b|\\bP73\\b|\\bP71\\b|\\bP72\\b|\\bT720SE\\b|\\bC520Ti\\b|\\bT760\\b|\\bT720VE\\b|T720-3GE|T720-WiFi",OndaTablet:"\\b(V975i|Vi30|VX530|V701|Vi60|V701s|Vi50|V801s|V719|Vx610w|VX610W|V819i|Vi10|VX580W|Vi10|V711s|V813|V811|V820w|V820|Vi20|V711|VI30W|V712|V891w|V972|V819w|V820w|Vi60|V820w|V711|V813s|V801|V819|V975s|V801|V819|V819|V818|V811|V712|V975m|V101w|V961w|V812|V818|V971|V971s|V919|V989|V116w|V102w|V973|Vi40)\\b[\\s]+|V10 \\b4G\\b",JaytechTablet:"TPC-PA762",BlaupunktTablet:"Endeavour 800NG|Endeavour 1010",DigmaTablet:"\\b(iDx10|iDx9|iDx8|iDx7|iDxD7|iDxD8|iDsQ8|iDsQ7|iDsQ8|iDsD10|iDnD7|3TS804H|iDsQ11|iDj7|iDs10)\\b",EvolioTablet:"ARIA_Mini_wifi|Aria[ _]Mini|Evolio X10|Evolio X7|Evolio X8|\\bEvotab\\b|\\bNeura\\b",LavaTablet:"QPAD E704|\\bIvoryS\\b|E-TAB IVORY|\\bE-TAB\\b",AocTablet:"MW0811|MW0812|MW0922|MTK8382|MW1031|MW0831|MW0821|MW0931|MW0712",MpmanTablet:"MP11 OCTA|MP10 OCTA|MPQC1114|MPQC1004|MPQC994|MPQC974|MPQC973|MPQC804|MPQC784|MPQC780|\\bMPG7\\b|MPDCG75|MPDCG71|MPDC1006|MP101DC|MPDC9000|MPDC905|MPDC706HD|MPDC706|MPDC705|MPDC110|MPDC100|MPDC99|MPDC97|MPDC88|MPDC8|MPDC77|MP709|MID701|MID711|MID170|MPDC703|MPQC1010",CelkonTablet:"CT695|CT888|CT[\\s]?910|CT7 Tab|CT9 Tab|CT3 Tab|CT2 Tab|CT1 Tab|C820|C720|\\bCT-1\\b",WolderTablet:"miTab \\b(DIAMOND|SPACE|BROOKLYN|NEO|FLY|MANHATTAN|FUNK|EVOLUTION|SKY|GOCAR|IRON|GENIUS|POP|MINT|EPSILON|BROADWAY|JUMP|HOP|LEGEND|NEW AGE|LINE|ADVANCE|FEEL|FOLLOW|LIKE|LINK|LIVE|THINK|FREEDOM|CHICAGO|CLEVELAND|BALTIMORE-GH|IOWA|BOSTON|SEATTLE|PHOENIX|DALLAS|IN 101|MasterChef)\\b",MediacomTablet:"M-MPI10C3G|M-SP10EG|M-SP10EGP|M-SP10HXAH|M-SP7HXAH|M-SP10HXBH|M-SP8HXAH|M-SP8MXA",MiTablet:"\\bMI PAD\\b|\\bHM NOTE 1W\\b",NibiruTablet:"Nibiru M1|Nibiru Jupiter One",NexoTablet:"NEXO NOVA|NEXO 10|NEXO AVIO|NEXO FREE|NEXO GO|NEXO EVO|NEXO 3G|NEXO SMART|NEXO KIDDO|NEXO MOBI",LeaderTablet:"TBLT10Q|TBLT10I|TBL-10WDKB|TBL-10WDKBO2013|TBL-W230V2|TBL-W450|TBL-W500|SV572|TBLT7I|TBA-AC7-8G|TBLT79|TBL-8W16|TBL-10W32|TBL-10WKB|TBL-W100",UbislateTablet:"UbiSlate[\\s]?7C",PocketBookTablet:"Pocketbook",KocasoTablet:"\\b(TB-1207)\\b",HisenseTablet:"\\b(F5281|E2371)\\b",Hudl:"Hudl HT7S3|Hudl 2",TelstraTablet:"T-Hub2",GenericTablet:"Android.*\\b97D\\b|Tablet(?!.*PC)|BNTV250A|MID-WCDMA|LogicPD Zoom2|\\bA7EB\\b|CatNova8|A1_07|CT704|CT1002|\\bM721\\b|rk30sdk|\\bEVOTAB\\b|M758A|ET904|ALUMIUM10|Smartfren Tab|Endeavour 1010|Tablet-PC-4|Tagi Tab|\\bM6pro\\b|CT1020W|arc 10HD|\\bTP750\\b|\\bQTAQZ3\\b|WVT101|TM1088|KT107"},oss:{AndroidOS:"Android",BlackBerryOS:"blackberry|\\bBB10\\b|rim tablet os",PalmOS:"PalmOS|avantgo|blazer|elaine|hiptop|palm|plucker|xiino",SymbianOS:"Symbian|SymbOS|Series60|Series40|SYB-[0-9]+|\\bS60\\b",WindowsMobileOS:"Windows CE.*(PPC|Smartphone|Mobile|[0-9]{3}x[0-9]{3})|Windows Mobile|Windows Phone [0-9.]+|WCE;",WindowsPhoneOS:"Windows Phone 10.0|Windows Phone 8.1|Windows Phone 8.0|Windows Phone OS|XBLWP7|ZuneWP7|Windows NT 6.[23]; ARM;",iOS:"\\biPhone.*Mobile|\\biPod|\\biPad|AppleCoreMedia",iPadOS:"CPU OS 13",SailfishOS:"Sailfish",MeeGoOS:"MeeGo",MaemoOS:"Maemo",JavaOS:"J2ME/|\\bMIDP\\b|\\bCLDC\\b",webOS:"webOS|hpwOS",badaOS:"\\bBada\\b",BREWOS:"BREW"},uas:{Chrome:"\\bCrMo\\b|CriOS|Android.*Chrome/[.0-9]* (Mobile)?",Dolfin:"\\bDolfin\\b",Opera:"Opera.*Mini|Opera.*Mobi|Android.*Opera|Mobile.*OPR/[0-9.]+$|Coast/[0-9.]+",Skyfire:"Skyfire",Edge:"\\bEdgiOS\\b|Mobile Safari/[.0-9]* Edge",IE:"IEMobile|MSIEMobile",Firefox:"fennec|firefox.*maemo|(Mobile|Tablet).*Firefox|Firefox.*Mobile|FxiOS",Bolt:"bolt",TeaShark:"teashark",Blazer:"Blazer",Safari:"Version((?!\\bEdgiOS\\b).)*Mobile.*Safari|Safari.*Mobile|MobileSafari",WeChat:"\\bMicroMessenger\\b",UCBrowser:"UC.*Browser|UCWEB",baiduboxapp:"baiduboxapp",baidubrowser:"baidubrowser",DiigoBrowser:"DiigoBrowser",Mercury:"\\bMercury\\b",ObigoBrowser:"Obigo",NetFront:"NF-Browser",GenericBrowser:"NokiaBrowser|OviBrowser|OneBrowser|TwonkyBeamBrowser|SEMC.*Browser|FlyFlow|Minimo|NetFront|Novarra-Vision|MQQBrowser|MicroMessenger",PaleMoon:"Android.*PaleMoon|Mobile.*PaleMoon"},props:{Mobile:"Mobile/[VER]",Build:"Build/[VER]",Version:"Version/[VER]",VendorID:"VendorID/[VER]",iPad:"iPad.*CPU[a-z ]+[VER]",iPhone:"iPhone.*CPU[a-z ]+[VER]",iPod:"iPod.*CPU[a-z ]+[VER]",Kindle:"Kindle/[VER]",Chrome:["Chrome/[VER]","CriOS/[VER]","CrMo/[VER]"],Coast:["Coast/[VER]"],Dolfin:"Dolfin/[VER]",Firefox:["Firefox/[VER]","FxiOS/[VER]"],Fennec:"Fennec/[VER]",Edge:"Edge/[VER]",IE:["IEMobile/[VER];","IEMobile [VER]","MSIE [VER];","Trident/[0-9.]+;.*rv:[VER]"],NetFront:"NetFront/[VER]",NokiaBrowser:"NokiaBrowser/[VER]",Opera:[" OPR/[VER]","Opera Mini/[VER]","Version/[VER]"],"Opera Mini":"Opera Mini/[VER]","Opera Mobi":"Version/[VER]",UCBrowser:["UCWEB[VER]","UC.*Browser/[VER]"],MQQBrowser:"MQQBrowser/[VER]",MicroMessenger:"MicroMessenger/[VER]",baiduboxapp:"baiduboxapp/[VER]",baidubrowser:"baidubrowser/[VER]",SamsungBrowser:"SamsungBrowser/[VER]",Iron:"Iron/[VER]",Safari:["Version/[VER]","Safari/[VER]"],Skyfire:"Skyfire/[VER]",Tizen:"Tizen/[VER]",Webkit:"webkit[ /][VER]",PaleMoon:"PaleMoon/[VER]",SailfishBrowser:"SailfishBrowser/[VER]",Gecko:"Gecko/[VER]",Trident:"Trident/[VER]",Presto:"Presto/[VER]",Goanna:"Goanna/[VER]",iOS:" \\bi?OS\\b [VER][ ;]{1}",Android:"Android [VER]",Sailfish:"Sailfish [VER]",BlackBerry:["BlackBerry[\\w]+/[VER]","BlackBerry.*Version/[VER]","Version/[VER]"],BREW:"BREW [VER]",Java:"Java/[VER]","Windows Phone OS":["Windows Phone OS [VER]","Windows Phone [VER]"],"Windows Phone":"Windows Phone [VER]","Windows CE":"Windows CE/[VER]","Windows NT":"Windows NT [VER]",Symbian:["SymbianOS/[VER]","Symbian/[VER]"],webOS:["webOS/[VER]","hpwOS/[VER];"]},utils:{Bot:"Googlebot|facebookexternalhit|Google-AMPHTML|s~amp-validator|AdsBot-Google|Google Keyword Suggestion|Facebot|YandexBot|YandexMobileBot|bingbot|ia_archiver|AhrefsBot|Ezooms|GSLFbot|WBSearchBot|Twitterbot|TweetmemeBot|Twikle|PaperLiBot|Wotbox|UnwindFetchor|Exabot|MJ12bot|YandexImages|TurnitinBot|Pingdom|contentkingapp|AspiegelBot",MobileBot:"Googlebot-Mobile|AdsBot-Google-Mobile|YahooSeeker/M1A1-R2D2",DesktopMode:"WPDesktop",TV:"SonyDTV|HbbTV",WebKit:"(webkit)[ /]([\\w.]+)",Console:"\\b(Nintendo|Nintendo WiiU|Nintendo 3DS|Nintendo Switch|PLAYSTATION|Xbox)\\b",Watch:"SM-V700"}},e.detectMobileBrowsers={fullPattern:/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i,shortPattern:/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i,tabletPattern:/android|ipad|playbook|silk/i};var G=Object.prototype.hasOwnProperty,B;e.FALLBACK_PHONE="UnknownPhone",e.FALLBACK_TABLET="UnknownTablet",e.FALLBACK_MOBILE="UnknownMobile",B="isArray"in Array?Array.isArray:function(T){return Object.prototype.toString.call(T)==="[object Array]"};function s(T,S){return T!=null&&S!=null&&T.toLowerCase()===S.toLowerCase()}function H(T,S){var i,o,P=T.length;if(!P||!S)return!1;for(i=S.toLowerCase(),o=0;o<P;++o)if(i===T[o].toLowerCase())return!0;return!1}function t(T){for(var S in T)G.call(T,S)&&(T[S]=new RegExp(T[S],"i"))}function D(T){return(T||"").substr(0,500)}(function(){var S,i,o,P,n,r,M=e.mobileDetectRules;for(S in M.props)if(G.call(M.props,S)){for(i=M.props[S],B(i)||(i=[i]),n=i.length,P=0;P<n;++P)o=i[P],r=o.indexOf("[VER]"),r>=0&&(o=o.substring(0,r)+"([\\w._\\+]+)"+o.substring(r+5)),i[P]=new RegExp(o,"i");M.props[S]=i}t(M.oss),t(M.phones),t(M.tablets),t(M.uas),t(M.utils),M.oss0={WindowsPhoneOS:M.oss.WindowsPhoneOS,WindowsMobileOS:M.oss.WindowsMobileOS}})(),e.findMatch=function(T,S){for(var i in T)if(G.call(T,i)&&T[i].test(S))return i;return null},e.findMatches=function(T,S){var i=[];for(var o in T)G.call(T,o)&&T[o].test(S)&&i.push(o);return i},e.getVersionStr=function(T,S){var i=e.mobileDetectRules.props,o,P,n,r;if(G.call(i,T)){for(o=i[T],n=o.length,P=0;P<n;++P)if(r=o[P].exec(S),r!==null)return r[1]}return null},e.getVersion=function(T,S){var i=e.getVersionStr(T,S);return i?e.prepareVersionNo(i):NaN},e.prepareVersionNo=function(T){var S;return S=T.split(/[a-z._ \/\-]/i),S.length===1&&(T=S[0]),S.length>1&&(T=S[0]+".",S.shift(),T+=S.join("")),Number(T)},e.isMobileFallback=function(T){return e.detectMobileBrowsers.fullPattern.test(T)||e.detectMobileBrowsers.shortPattern.test(T.substr(0,4))},e.isTabletFallback=function(T){return e.detectMobileBrowsers.tabletPattern.test(T)},e.prepareDetectionCache=function(T,S,i){if(T.mobile===a){var o,P,n;if(P=e.findMatch(e.mobileDetectRules.tablets,S),P){T.mobile=T.tablet=P,T.phone=null;return}if(o=e.findMatch(e.mobileDetectRules.phones,S),o){T.mobile=T.phone=o,T.tablet=null;return}e.isMobileFallback(S)?(n=A.isPhoneSized(i),n===a?(T.mobile=e.FALLBACK_MOBILE,T.tablet=T.phone=null):n?(T.mobile=T.phone=e.FALLBACK_PHONE,T.tablet=null):(T.mobile=T.tablet=e.FALLBACK_TABLET,T.phone=null)):e.isTabletFallback(S)?(T.mobile=T.tablet=e.FALLBACK_TABLET,T.phone=null):T.mobile=T.tablet=T.phone=null}},e.mobileGrade=function(T){var S=T.mobile()!==null;return T.os("iOS")&&T.version("iPad")>=4.3||T.os("iOS")&&T.version("iPhone")>=3.1||T.os("iOS")&&T.version("iPod")>=3.1||T.version("Android")>2.1&&T.is("Webkit")||T.version("Windows Phone OS")>=7||T.is("BlackBerry")&&T.version("BlackBerry")>=6||T.match("Playbook.*Tablet")||T.version("webOS")>=1.4&&T.match("Palm|Pre|Pixi")||T.match("hp.*TouchPad")||T.is("Firefox")&&T.version("Firefox")>=12||T.is("Chrome")&&T.is("AndroidOS")&&T.version("Android")>=4||T.is("Skyfire")&&T.version("Skyfire")>=4.1&&T.is("AndroidOS")&&T.version("Android")>=2.3||T.is("Opera")&&T.version("Opera Mobi")>11&&T.is("AndroidOS")||T.is("MeeGoOS")||T.is("Tizen")||T.is("Dolfin")&&T.version("Bada")>=2||(T.is("UC Browser")||T.is("Dolfin"))&&T.version("Android")>=2.3||T.match("Kindle Fire")||T.is("Kindle")&&T.version("Kindle")>=3||T.is("AndroidOS")&&T.is("NookTablet")||T.version("Chrome")>=11&&!S||T.version("Safari")>=5&&!S||T.version("Firefox")>=4&&!S||T.version("MSIE")>=7&&!S||T.version("Opera")>=10&&!S?"A":T.os("iOS")&&T.version("iPad")<4.3||T.os("iOS")&&T.version("iPhone")<3.1||T.os("iOS")&&T.version("iPod")<3.1||T.is("Blackberry")&&T.version("BlackBerry")>=5&&T.version("BlackBerry")<6||T.version("Opera Mini")>=5&&T.version("Opera Mini")<=6.5&&(T.version("Android")>=2.3||T.is("iOS"))||T.match("NokiaN8|NokiaC7|N97.*Series60|Symbian/3")||T.version("Opera Mobi")>=11&&T.is("SymbianOS")?"B":(T.version("BlackBerry")<5||T.match("MSIEMobile|Windows CE.*Mobile")||T.version("Windows Mobile")<=5.2,"C")},e.detectOS=function(T){return e.findMatch(e.mobileDetectRules.oss0,T)||e.findMatch(e.mobileDetectRules.oss,T)},e.getDeviceSmallerSide=function(){return window.screen.width<window.screen.height?window.screen.width:window.screen.height};function A(T,S){this.ua=D(T),this._cache={},this.maxPhoneWidth=S||600}return A.prototype={constructor:A,mobile:function(){return e.prepareDetectionCache(this._cache,this.ua,this.maxPhoneWidth),this._cache.mobile},phone:function(){return e.prepareDetectionCache(this._cache,this.ua,this.maxPhoneWidth),this._cache.phone},tablet:function(){return e.prepareDetectionCache(this._cache,this.ua,this.maxPhoneWidth),this._cache.tablet},userAgent:function(){return this._cache.userAgent===a&&(this._cache.userAgent=e.findMatch(e.mobileDetectRules.uas,this.ua)),this._cache.userAgent},userAgents:function(){return this._cache.userAgents===a&&(this._cache.userAgents=e.findMatches(e.mobileDetectRules.uas,this.ua)),this._cache.userAgents},os:function(){return this._cache.os===a&&(this._cache.os=e.detectOS(this.ua)),this._cache.os},version:function(T){return e.getVersion(T,this.ua)},versionStr:function(T){return e.getVersionStr(T,this.ua)},is:function(T){return H(this.userAgents(),T)||s(T,this.os())||s(T,this.phone())||s(T,this.tablet())||H(e.findMatches(e.mobileDetectRules.utils,this.ua),T)},match:function(T){return T instanceof RegExp||(T=new RegExp(T,"i")),T.test(this.ua)},isPhoneSized:function(T){return A.isPhoneSized(T||this.maxPhoneWidth)},mobileGrade:function(){return this._cache.grade===a&&(this._cache.grade=e.mobileGrade(this)),this._cache.grade}},typeof window<"u"&&window.screen?A.isPhoneSized=function(T){return T<0?a:e.getDeviceSmallerSide()<=T}:A.isPhoneSized=function(){},A._impl=e,A.version="1.4.5 2021-03-13",A})})((function(b){if(typeof l<"u"&&l.exports)return function(a){l.exports=a()};if(typeof define=="function"&&define.amd)return define;if(typeof window<"u")return function(a){window.MobileDetect=a()};throw new Error("unknown environment")})())});var d=c(E(),1);function I(b){b.preventDefault()}var N=(()=>{class b{detect;isTouchMoveLocked=!1;constructor(){this.detect=new d.default(window.navigator.userAgent)}disableTouchMove(){this.isTouchMoveLocked||(document.body.addEventListener("touchmove",I,{passive:!1}),this.isTouchMoveLocked=!0)}enableTouchMove(){document.body.removeEventListener("touchmove",I),this.isTouchMoveLocked=!1}static \u0275fac=function(G){return new(G||b)};static \u0275prov=C({token:b,factory:b.\u0275fac,providedIn:"root"})}return b})();export{N as a};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{e as b}from"./chunk-
|
|
1
|
+
import{e as b}from"./chunk-B4AJQJMI.js";var L=b((p,v)=>{(function(d,r){typeof define=="function"&&define.amd?define([],r):typeof p<"u"?r():(r(),d.FileSaver={})})(p,function(){"use strict";function d(e,t){return typeof t>"u"?t={autoBom:!1}:typeof t!="object"&&(console.warn("Deprecated: Expected third argument to be a object"),t={autoBom:!t}),t.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob(["\uFEFF",e],{type:e.type}):e}function r(e,t,i){var n=new XMLHttpRequest;n.open("GET",e),n.responseType="blob",n.onload=function(){l(n.response,t,i)},n.onerror=function(){console.error("could not download file")},n.send()}function w(e){var t=new XMLHttpRequest;t.open("HEAD",e,!1);try{t.send()}catch{}return 200<=t.status&&299>=t.status}function s(e){try{e.dispatchEvent(new MouseEvent("click"))}catch{var t=document.createEvent("MouseEvents");t.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),e.dispatchEvent(t)}}var a=typeof window=="object"&&window.window===window?window:typeof self=="object"&&self.self===self?self:typeof global=="object"&&global.global===global?global:void 0,m=a.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),l=a.saveAs||(typeof window!="object"||window!==a?function(){}:"download"in HTMLAnchorElement.prototype&&!m?function(e,t,i){var n=a.URL||a.webkitURL,o=document.createElement("a");t=t||e.name||"download",o.download=t,o.rel="noopener",typeof e=="string"?(o.href=e,o.origin===location.origin?s(o):w(o.href)?r(e,t,i):s(o,o.target="_blank")):(o.href=n.createObjectURL(e),setTimeout(function(){n.revokeObjectURL(o.href)},4e4),setTimeout(function(){s(o)},0))}:"msSaveOrOpenBlob"in navigator?function(e,t,i){if(t=t||e.name||"download",typeof e!="string")navigator.msSaveOrOpenBlob(d(e,i),t);else if(w(e))r(e,t,i);else{var n=document.createElement("a");n.href=e,n.target="_blank",setTimeout(function(){s(n)})}}:function(e,t,i,n){if(n=n||open("","_blank"),n&&(n.document.title=n.document.body.innerText="downloading..."),typeof e=="string")return r(e,t,i);var o=e.type==="application/octet-stream",E=/constructor/i.test(a.HTMLElement)||a.safari,y=/CriOS\/[\d]+/.test(navigator.userAgent);if((y||o&&E||m)&&typeof FileReader<"u"){var u=new FileReader;u.onloadend=function(){var c=u.result;c=y?c:c.replace(/^data:[^;]*;/,"data:attachment/file;"),n?n.location.href=c:location=c,n=null},u.readAsDataURL(e)}else{var h=a.URL||a.webkitURL,f=h.createObjectURL(e);n?n.location=f:location.href=f,n=null,setTimeout(function(){h.revokeObjectURL(f)},4e4)}});a.saveAs=l.saveAs=l,typeof v<"u"&&(v.exports=l)})});export{L as a};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{e}from"./chunk-B4AJQJMI.js";var t=e((i,s)=>{s.exports={"accessories.accessory_info":"Accessory Information","accessories.bridge_ip":"Bridge IP","accessories.bridge_port":"Bridge Port","accessories.button_add_room":"Ajouter une pi\xE8ce","accessories.button_hidden_hide":"Masquer les accessoires masqu\xE9s","accessories.button_hidden_show":"Afficher les accessoires masqu\xE9s","accessories.button_remove":"Remove From Cache","accessories.control.adaptive_lighting":"Adaptive Lighting","accessories.control.adaptive_lighting_note":"Some plugins may automatically re-enable Adaptive Lighting when changing this.","accessories.control.auto":"Auto","accessories.control.away":"Absent","accessories.control.battery_charged":"Charged","accessories.control.battery_charging":"En charge","accessories.control.battery_low":"Battery Low","accessories.control.battery_notchargeable":"Non rechargeable","accessories.control.battery_notcharging":"Pas en charge","accessories.control.brightness":"Luminosit\xE9","accessories.control.cleaning":"Cleaning","accessories.control.closed":"Ferm\xE9","accessories.control.closing":"Fermeture","accessories.control.color_temperature":"Color Temperature","accessories.control.cool":"Refroidir","accessories.control.current":"Current","accessories.control.default_room":"Pi\xE8ce par d\xE9faut","accessories.control.dehumidify":"Dehumidify","accessories.control.detected":"Detected","accessories.control.direction_control":"Direction Control","accessories.control.drag_here":"Glisser-d\xE9poser ici","accessories.control.filter_level":"Filter Life","accessories.control.heat":"Chauffer","accessories.control.home":"Maison","accessories.control.hue":"Hue","accessories.control.humidify":"Humidify","accessories.control.idle":"Idle","accessories.control.input":"Input List","accessories.control.input_control":"Input Control","accessories.control.jammed":"Coinc\xE9","accessories.control.lock_auto":"Auto Lock Timer","accessories.control.locked":"Verrouill\xE9","accessories.control.manual":"Manual","accessories.control.media_control":"Media Control","accessories.control.microphone":"Microphone","accessories.control.mode":"Mode","accessories.control.mode_control":"Mode Control","accessories.control.mute":"Son Coup\xE9","accessories.control.mute_control":"Mute Control","accessories.control.night":"Nuit","accessories.control.no_data":"No Data","accessories.control.not_detected":"Not Detected","accessories.control.not_mute":"Son Actif","accessories.control.obstructed":"Obstructed","accessories.control.off":"Off","accessories.control.on":"On","accessories.control.open":"Ouvert","accessories.control.opening":"Ouverture","accessories.control.pause":"Pause","accessories.control.paused":"Paused","accessories.control.play":"Play","accessories.control.replace":"Replace","accessories.control.rotation_c_clockwise":"Counter Clockwise","accessories.control.rotation_clockwise":"Clockwise","accessories.control.rotation_direction":"Rotation Direction","accessories.control.rotation_speed":"Vitesse de rotation","accessories.control.running":"En cours d'ex\xE9cution","accessories.control.saturation":"Saturation","accessories.control.set_duration":"Set Duration","accessories.control.speaker":"Speaker","accessories.control.speaker_volume":"Volume","accessories.control.state_control":"State Control","accessories.control.stateless":"Stateless","accessories.control.stop":"Stop","accessories.control.stopped":"Arr\xEAt\xE9","accessories.control.target":"Cible","accessories.control.target_auto":"Auto Target","accessories.control.threshold_auto":"Auto Threshold","accessories.control.triggered":"D\xE9clench\xE9","accessories.control.unknown":"Inconnu","accessories.control.unlocked":"D\xE9verrouill\xE9","accessories.control_disabled":"Contr\xF4le des accessoires Homebridge d\xE9sactiv\xE9","accessories.core.air_purifier":"Air Purifier","accessories.core.air_quality_sensor":"Air Quality Sensor","accessories.core.battery":"Battery","accessories.core.carbon_dioxide_sensor":"Carbon Dioxide Sensor","accessories.core.carbon_monoxide_sensor":"Carbon Monoxide Sensor","accessories.core.contact_sensor":"Contact Sensor","accessories.core.cooler":"Cooler","accessories.core.dehumidifier":"Dehumidifier","accessories.core.door":"Door","accessories.core.doorbell":"Doorbell","accessories.core.fan":"Fan","accessories.core.faucet_valve":"Valve","accessories.core.filter_maintenance":"Filter Maintenance","accessories.core.garage_door_opener":"Garage Door Opener","accessories.core.generic_valve":"Valve","accessories.core.heater":"Heater","accessories.core.heater_cooler":"Heater Cooler","accessories.core.humidifier":"Humidifier","accessories.core.humidifier_dehumidifier":"Humidifier Dehumidifier","accessories.core.humidity_sensor":"Humidity Sensor","accessories.core.irrigation_system":"Irrigation System","accessories.core.irrigation_valve":"Valve","accessories.core.leak_sensor":"Leak Sensor","accessories.core.light_sensor":"Light Sensor","accessories.core.lightbulb":"Lightbulb","accessories.core.lock_mechanism":"Lock Mechanism","accessories.core.microphone":"Microphone","accessories.core.motion_sensor":"Motion Sensor","accessories.core.occupancy_sensor":"Occupancy Sensor","accessories.core.on_off_light":"Lightbulb","accessories.core.on_off_light_switch":"Switch","accessories.core.on_off_plug_in_unit":"Outlet","accessories.core.outlet":"Outlet","accessories.core.robot_vacuum":"Robot Vacuum","accessories.core.robotic_vacuum_cleaner":"Robot Vacuum","accessories.core.security_system":"Security System","accessories.core.shower_head_valve":"Valve","accessories.core.smoke_sensor":"Smoke Sensor","accessories.core.speaker":"Speaker","accessories.core.stateless_programmable_switch":"Stateless Programmable Switch","accessories.core.switch":"Switch","accessories.core.television":"Television","accessories.core.temperature_sensor":"Temperature Sensor","accessories.core.thermostat":"Thermostat","accessories.core.valve":"Valve","accessories.core.washing_machine":"Washing Machine","accessories.core.window":"Window","accessories.core.window_covering":"Window Covering","accessories.custom_name":"Custom Name","accessories.custom_type":"Custom Type","accessories.hide_this_accessory":"Masquer cet accessoire","accessories.message_must_use_insecure_mode":"Pour contr\xF4ler vos accessoires vous devez lancer Homebridge en mode non s\xE9curis\xE9 {{ link }}.","accessories.name":"Nom","accessories.no_plugins.message_1":"Accessories are created and managed by Homebridge plugins.","accessories.no_plugins.message_2":"You can find and install plugins from the plugins page.","accessories.no_plugins.title":"No Plugins Installed","accessories.only_ui":"These settings are only for the Homebridge UI and <strong>will not be reflected in HomeKit</strong>.","accessories.only_ui_2":"These options are unique to your Homebridge UI account.","accessories.plugin":"Plugin","accessories.room_name":"Nom de la pi\xE8ce","accessories.service":"Service","accessories.service_info":"Service Information","accessories.settings_link":"Vous pouvez acc\xE9der aux param\xE8tres Homebridge \xE0 tout moment \xE0 partir du menu principal ou en cliquant sur la roue crant\xE9e","accessories.show_on_dashboard":"Afficher dans un widget sur le dashboard","accessories.support.acc_1":"Accessories may take a few minutes to appear on this screen after a Homebridge restart or after being added. If accessories are consistently missing, try changing the mDNS advertiser in the settings.","accessories.support.acc_2":"You can change the type of certain accessories in the UI (like showing a switch as a heater). You can do this by clicking on the three bars that appear in the top-right corner of the accessory tile as you hover over it. A 'Custom Type' option will appear if the accessory supports this. Note this will not change the accessory in HomeKit (only a plugin can do this).","accessories.support.rooms_1":"Les pi\xE8ces que vous cr\xE9ez ici n'appairaitront pas dans HomeKit et ne sont utiles que pour aider \xE0 l'organisation des accessoires dans Homebridge UI.","accessories.support.rooms_2":"To rename an existing room, create a new room with the desired name and move the accessories to the new room.","accessories.support.rooms_3":"To delete an existing room, move all its accessories to another room and refresh the page.","accessories.title_rooms":"Rooms","backup.backup_delete_failed":"Backup deletion failed. See logs for details.","backup.backup_download_failed":"Echec du t\xE9l\xE9chargement de la sauvegarde","backup.backup_exceeds_max_size":"Backup ({{ backupSize }}) exceeds maximum restore file size of {{ maxBackupSizeText }}","backup.backup_help_one":"T\xE9l\xE9charger une archive de sauvegarde de votre environnement Homebridge complet. Cela sauvegardera l'ensemble du contenu du r\xE9pertoire de stockage d'Homebridge qui pourra par la suite \xEAtre restaur\xE9 sur n'importe quelle plateforme pouvant ex\xE9cuter Homebridge UI.","backup.backup_help_two":"Les Plugins non h\xE9berg\xE9s sur npm, ou les plugins install\xE9s directement \xE0 partir de GitHub ne pourront ni \xEAtre sauvegard\xE9s ni \xEAtre restaur\xE9s.","backup.backup_now":"Backup Now","backup.backup_now_desc":"Generate and download an up-to-date backup file.","backup.backup_now_save_desc":"Generate an up-to-date backup file in your backup storage directory.","backup.backup_restored":"Archive de sauvegarde restaur\xE9e","backup.backup_warning":"Les archives de sauvegarde contiennent des informations sensibles et ne doivent pas \xEAtre partag\xE9es \xE0 des tiers.","backup.files_auto":"Stored Backup Files","backup.label_extracting":"Extracting Archive","backup.label_uploading":"Envoi en cours\u2026","backup.load_error":"Failed to load config backup.","backup.restore_failed":"Echec de la Restauration","backup.restore_help_one":"Restaurer une archive de sauvegarde faite pr\xE9c\xE9demment par Homebridge UI. Votre config Homebridge, les accessoires en cache, les appairages HomeKit et comptes utilisateurs Homebridge UI seront restaur\xE9s. Tous les plugins Homebridge pr\xE9c\xE9demment install\xE9s seront t\xE9l\xE9charg\xE9s directement du registre npm.","backup.restore_help_two":"Vous devrez vous authentifier dans Homebridge UI apr\xE8s une restauration en utilisant les identifiants de l'instance restaur\xE9e.","backup.restore_max_size":"You can restore a backup archive up to {{ maxBackupSizeText }} in size.","backup.restore_now":"Restore Now","backup.restore_now_desc":"Restore from a previously downloaded backup file.","backup.restore_warning":"Restaurer \xE0 partir d'une sauvegarde \xE9crasera de mani\xE8re irr\xE9versible la configuration Homebridge courante.","backup.scheduled_backup_disabled":"Scheduled backups have been disabled via the configuration.","backup.scheduled_backup_time":"Une sauvegarde compl\xE8te d'Homebridge est cr\xE9\xE9e automatiquement chaque jour \xE0 {{ backupTime }} et est gard\xE9e durant {{ dayCount }} jours.","backup.settings_enable":"Enable Automated Backups","backup.settings_path":"Backup Storage Path","backup.settings_path_desc":"If you are changing this from the default, please ensure the directory exists and is writable by the Homebridge user.","backup.settings_title":"Backup Settings","backup.title_backup":"Backup & Restore","child_bridge.about":"Homebridge vous permet de faire fonctionner la plateforme ou l'accessoire g\xE9r\xE9 par votre plugin en tant que pont secondaire isol\xE9 {{ link }}. Cela peut am\xE9liorer la r\xE9activit\xE9 et la fiabilit\xE9 g\xE9n\xE9rale d'Homebridge.","child_bridge.bridge_connect":"Connecter \xE0 HomeKit","child_bridge.bridge_settings":"R\xE9glages du Pont","child_bridge.bridges":"Bridges","child_bridge.bridges_paired":"Chaque plateforme ou accessoire d'un Pont secondaire devra \xEAtre appair\xE9 avec Homebridge de mani\xE8re s\xE9par\xE9e.","child_bridge.bridges_paired_2":"If you set up a child bridge now and later disable it, any accessories on this bridge will be removed and re-created on the main Homebridge bridge.","child_bridge.config.accessory":"Accessory","child_bridge.config.debug":"Debug Mode","child_bridge.config.enable_hap":"Enable HAP","child_bridge.config.firmware":"Firmware Version","child_bridge.config.hide_pairing_alert":"Hide Pairing Alert","child_bridge.config.manufacturer":"Manufacturer","child_bridge.config.matter_note_1":"Plugins must be updated by the developer to support Matter accessories. There is no use in enabling Matter here unless you definitely know the plugin supports it.","child_bridge.config.matter_note_2":"Matter accessories don't appear in the Homebridge UI accessories screen. They can be managed using the Home app or other Matter controllers.","child_bridge.config.model":"Model","child_bridge.config.name":"Name","child_bridge.config.or_link":"Link Existing Bridge","child_bridge.config.platform":"Platform","child_bridge.config.port":"Port","child_bridge.config.prevent":"Cannot disable a child bridge with linked accessories.","child_bridge.config.select_existing":"Select an existing bridge...","child_bridge.config.use":"Use Child Bridge","child_bridge.confirm_delete_1":"The following child bridges will be removed.","child_bridge.confirm_delete_2":"You will need to remove the paired bridges manually from the Home app. Any accessories will be removed and re-created on the main Homebridge bridge.","child_bridge.must_configure_plugin":"Vous devez configurer ce plugin avant de pouvoir modifier les r\xE9glages de son Pont.","child_bridge.reset_accessories":"Reset Accessories","child_bridge.restart":"Red\xE9marrer le Pont secondaire","child_bridge.restart_plural":"Red\xE9marrer les Ponts secondaires","child_bridge.return_to_pair":"Retourner \xE0 cet \xE9cran apr\xE8s le red\xE9marrage d'Homebridge pour voir le QR code d'appairage.","child_bridge.setup":"Mise en place des Ponts secondaires","child_bridge.start":"D\xE9marrer le Pont secondaire","child_bridge.start_plural":"D\xE9marrer les Ponts secondaires","child_bridge.stop":"Arr\xEAter le Pont secondaire","child_bridge.stop_plural":"Arr\xEAter les Ponts secondaires","common.labels.beta":"beta","common.labels.no_confirmation":"There is no confirmation when clicking the button, it will immediately perform the action.","common.phrases.are_you_sure":"Are you sure you want to continue anyway?","common.phrases.support":"Feel like there is something useful we could add here? Let us know on {{ github }} or {{ discord }}!","config.config_accessory_must_be_array":"Accessories doit \xEAtre un tableau []","config.config_bridge_missing":"R\xE9glages du pont manquant","config.config_invalid_json":"La configuration contient du JSON invalide","config.config_platform_must_be_array":"Platform doit \xEAtre un tableau []","config.config_saved":"Configuration Saved","config.config_username_error":"Le nom du Pont doit \xEAtre compos\xE9 de 6 paires de caract\xE8res hexad\xE9cimaux (A-F 0-9) s\xE9par\xE9es par des ':'","config.error_blocks_objects":"All {{ type }} blocks must be objects.","config.error_blocks_type":"All {{ type }} blocks must contain the {{ type }} attribute.","config.error_string_array":"Each item in the {{ key }} array must be a string.","config.error_string_type":"The {{ type }} attribute must be a string.","config.failed_to_save_config":"Erreur d'enregistrement de la configuration","config.hide_hap_pairing":"Hide HAP Pairing Alert","config.hide_matter_pairing":"Hide Matter Pairing Alert","config.hide_plugin_updates":"Hide Plugin Updates For","config.no_restart":"A restart is not needed as no changes were made to the Homebridge configuration.","config.restore.confirm":"Cliquez sur Enregistrer pour confirmer la restauration de cette sauvegarde.","config.restore.copy_to_editor":"Copier dans l'\xE9diteur","config.restore.download":"Download your current configuration as a JSON file.","config.restore.help_1":"A backup of your config file is created each time it is updated from actions you take in the Homebridge UI.","config.restore.help_2":"You can restore a previous version of your config file by selecting it from the list below. You will be able to compare this version with your current config before deciding whether to restore it.","config.restore.title":"Config File Backup & Restore","config.restore.toast_backups_deleted":"Toutes les sauvegardes ont \xE9t\xE9 supprim\xE9es","config.restore.view_inline":"Inline View","config.restore.view_side_by_side":"Side-By-Side View","config.title_backup_loaded":"Sauvegarde charg\xE9e","form.button_allow":"Allow","form.button_back":"Back","form.button_cancel":"Annuler","form.button_close":"Fermer","form.button_continue":"Continue","form.button_delete":"Supprimer","form.button_delete_all":"Delete All","form.button_disable":"D\xE9sactiver","form.button_download":"T\xE9l\xE9charger","form.button_edit":"Modifier","form.button_enable":"Activer","form.button_lock":"Verrouiller","form.button_more_info":"Plus d'informations","form.button_remove":"Supprimer","form.button_reset":"R\xE9initialiser","form.button_restore":"Restaurer","form.button_save":"Enregistrer","form.button_show":"Show","form.button_unlock":"D\xE9verrouiller","form.button_unpair":"Unpair","form.label.changes_kept":"Note that existing selections/changes are preserved when switching between items.","form.label_invalid":"Config validation failed - you can still save your changes.","form.label_invalid_strict":"Config validation failed - please review the form before saving.","form.label_valid":"Config validation passed.","form.optional":"Optional","form.search":"Search...","form.select.auto":"Automatic (Use Browser Settings)","login.invalid_code":"The code entered is incorrect or has expired","login.invalid_credentials":"Nom d'utilisateur ou mot de passe incorrect","login.invalid_credentials_2":"If you lose access, delete the <code>auth.json</code> file in your Homebridge storage directory and restart Homebridge. Then refresh this page to set up a new admin account. Your Homebridge/UI settings will remain unchanged, except for UI user accounts. The only user account will be the admin account that you are setting up now.","login.invalid_password":"Invalid Password","login.label_2fa_code":"Code d'authentification \xE0 deux facteurs","logs.download.error":"Failed to download log file.","logs.download_warning":"Les fichiers de journalisation d'Homebridge peuvent contenir des informations personnelles, des mots de passe ou des jetons d'acc\xE8s. V\xE9rifiez vos fichiers de journalisation et supprimez toute information sensible si vous souhaitez les partager avec des tiers SVP.","logs.log_file_truncated":"Fichier de journalisation tronqu\xE9.","logs.placeholder_search_logs":"Search logs (min. 3 characters)...","logs.title_download_log_file":"T\xE9l\xE9charger le fichier de journalisation","logs.title_truncate_log_file":"Tronquer le fichier de journalisation","logs.truncate.error":"Failed to truncate log file.","logs.truncate_log_warning":"Cette action supprimera de mani\xE8re irr\xE9versible vos journaux Homebridge. Etes-vous s\xFBr de vouloir continuer ?","matter_bridge.config.use":"Enable Matter","menu.config_json_editor":"JSON Config","menu.docker.restart_container":"Red\xE9marrer le container","menu.docker.startup_script":"Script de d\xE9marrage","menu.docker.terminal":"Terminal","menu.hbrestart.confirm_hb":"Red\xE9marrer Homebridge","menu.hbrestart.confirm_ui":"Red\xE9marrer HB Service et l'interface utilisateur","menu.hbrestart.title":"Red\xE9marrer Homebridge","menu.label_accessories":"Accessoires","menu.label_plugins":"Plugins","menu.label_settings":"Settings","menu.label_status":"Statut","menu.linux.label_logs":"Journaux","menu.linux.label_restart_server":"Red\xE9marrer le Serveur","menu.linux.label_shutdown_modal":"Are you sure you want to shut down the operating system? You will need physical access to turn it back on.","menu.linux.label_shutdown_server":"\xC9teindre le Serveur","menu.linux.label_terminal":"Terminal","menu.reload":"Reload","menu.restart.title":"Options d'alimentation","menu.settings.title":"Param\xE8tres","menu.tooltip_logout":"D\xE9connexion","menu.tooltip_restart":"Red\xE9marrer","menu.tooltip_user_accounts":"Comptes utilisateurs","menu.tooltip_view_logs":"Voir les Journaux","platform.docker.container_restarted":"Container Docker red\xE9marr\xE9","platform.docker.must_use_hashbang":"Les scripts doivent utiliser le hashbang #!/bin/sh","platform.docker.restart_required":"Vous aurez besoin de red\xE9marrer ce container docker pour que les changement prennent effet.","platform.docker.run_with_restart":"V\xE9rifiez d'avoir lanc\xE9 le container Docker avec {{ command }}","platform.docker.script_help":"Ce script sera ex\xE9cut\xE9 \xE0 chaque d\xE9marrage du container docker. Vous pouvez l'utiliser pour installer n'importe quel paquet dont votre plugin aurait besoin, comme ffmpeg ou libcap-dev.","platform.docker.script_saved":"Script de d\xE9marrage enregistr\xE9","platform.docker.server_long_time":"Le red\xE9marrage du serveur met beaucoup de temps. Vous aurez peut-\xEAtre besoin de d\xE9marrer le container Docker manuellement.","platform.docker.title_restarting":"Red\xE9marrage du container Docker","platform.linux.long_time":"Le red\xE9marrage du serveur met beaucoup de temps. Vous aurez peut-\xEAtre besoin de le d\xE9marrer manuellement.","platform.linux.restart":"Merci de patienter, cette page sera automatiquement recharg\xE9e quand Homebridge sera de nouveau en ligne.","platform.linux.restarting_server":"Red\xE9marrage du serveur","platform.linux.server_restart_error":"Une erreur est survenue lors de l'envoi de la commande de red\xE9marrage au serveur.","platform.linux.server_restarted":"Serveur red\xE9marr\xE9","platform.linux.server_taking_long_time":"Le serveur met beaucoup de temps \xE0 revenir en ligne","platform.linux.server_will_power_down":"Le serveur va s'\xE9teindre sous peu.","platform.linux.shutting_down_server":"Arr\xEAt du serveur","platform.terminal.terminate_message_1":"Navigating away from this page will terminate your current session, all foreground processes will be terminated.","platform.terminal.terminate_message_2":"To avoid this warning, enable <strong>Terminal Session Persistence</strong> from the settings page.","platform.terminal.terminate_title":"Session Termination","platform.terminal.terminate_unload":"Your terminal session will be terminated. Enable Terminal Session Persistence in Settings to prevent this.","platform.version.restart_required":"Homebridge UI v{{ uiVersion }} a \xE9t\xE9 install\xE9, mais le service install\xE9 sur le serveur tourne toujours en v{{ serverVersion }}.","platform.version.service_restart_required":"Le red\xE9marrage du service est requis","plugins.bridge.action_error":"Failed to {{ action }} child bridge(s).","plugins.bridge.name_error":"Bridge name must start and end with a letter or number, and can only contain letters, numbers, spaces, and apostrophes.","plugins.bridge.port_error":"{{ type }} port must be an integer between 1025 and 65533, excluding 5353, 8080, 8443 and any other already-configured port.","plugins.button_homepage":"Site du Plugin","plugins.button_set_up":"Mettre en place","plugins.button_settings":"R\xE9glages","plugins.button_uninstall":"D\xE9sinstaller","plugins.button_update":"Mettre \xE0 jour","plugins.compat.hb_node_too_low":"{{ packageName }} v{{ latestVersion }} n\xE9cessite Node.js v{{ minVersion }} ou ult\xE9rieur. La version actuellement install\xE9e est Node.js {{ installedVersion }}.","plugins.compat.hb_too_low":"Le plugin {{ pluginName }} recommande l'utilisation de Homebridge v{{ minVersion }} ou ult\xE9rieur. La version actuellement install\xE9e est Homebridge v{{ installedVersion }}.","plugins.compat.node_first":"Mettez \xE0 niveau Node.js avant de mettre \xE0 jour {{ packageName }}.","plugins.compat.node_link":"How To Update Node.js","plugins.compat.node_too_low":"Le plugin {{ pluginName }} recommande l'utilisation de Node.js v{{ minVersion }} ou ult\xE9rieur. La version actuellement install\xE9e est Node.js {{ installedVersion }}.","plugins.compat.title":"Compatibility Check","plugins.config.load_error":"Failed to load plugin config.","plugins.config.must_be_array":"Plugin config must be an array.","plugins.config.must_be_array_objects":"Plugin config must be an array of objects.","plugins.config.must_be_object":"Config block must be an object.","plugins.config.name_property":'Accessory must have a valid "name" attribute',"plugins.config.please_fix":"Please fix validation errors before adding a new block.","plugins.disable.error":"Failed to disable plugin.","plugins.donate.message_1":"Comme de plus en plus d'utilisateurs installent leurs plugins via l'interface Homebridge, ils sont moins susceptibles de visiter la page GitHub du projet, o\xF9 les moyens de soutenir un d\xE9veloppeur seraient normalement affich\xE9s.","plugins.donate.message_2":"L'ajout de liens de donation directement dans l'interface utilisateur de Homebridge permet aux utilisateurs de savoir comment soutenir les d\xE9veloppeurs de Homebridge s'ils le souhaitent.","plugins.donate.tile_donate_to":"Faire un don \xE0 {{ author }}","plugins.enable.error":"Failed to enable plugin.","plugins.manage.all_versions":"All versions","plugins.manage.backup":"Download a backup before updating?","plugins.manage.changelog":"Full Changelog","plugins.manage.changelog_none":"Could not retrieve changelog, perhaps this plugin does not provide a <code>CHANGELOG.md</code> file.","plugins.manage.child_bridge_restart":"Child bridge restarted successfully.","plugins.manage.child_bridge_restart_failed":"Le red\xE9marrage du Plugin a \xE9chou\xE9, red\xE9marrez Homebridge manuellement.","plugins.manage.confirm_disable":"Are you sure you want to disable {{ pluginName }}?","plugins.manage.confirm_disable_accessory_1":"Any accessories exposed by this plugin will be removed from the Homebridge UI accessory screen and removed from HomeKit.","plugins.manage.confirm_disable_accessory_2":"When you re-enable the plugin, the accessories will reappear in the Homebridge UI and HomeKit. The accessories will lose their HomeKit data (like related scenes and automations).","plugins.manage.confirm_disable_platform_1":"Any accessories exposed by this plugin will be removed from the Homebridge UI accessory screen but remain in HomeKit with a 'No Response' label.","plugins.manage.confirm_disable_platform_2":"When you re-enable the plugin, the accessories will reappear in the Homebridge UI and become controllable again in HomeKit. The accessories will not lose their HomeKit data (like related scenes and automations).","plugins.manage.confirm_disable_setting":"Your setting for {{ setting }} is currently {{ value }}, therefore:","plugins.manage.confirm_enable":"Etes-vous s\xFBr de vouloir activer {{ pluginName }}?","plugins.manage.disable":"D\xE9sactiver","plugins.manage.enable":"Activer","plugins.manage.github_support":"You can show your support by giving this plugin a {{ iconStar }} (or the release a {{ iconThumbsUp }}) on GitHub!","plugins.manage.hb_restart":"Homebridge and the UI will automatically restart after any version change.","plugins.manage.hide_updates":"Disable Update Notifications","plugins.manage.hide_updates_desc":"If you don't want to see update notifications for this plugin, you can turn them off here.","plugins.manage.information":"Informations sur le plugin","plugins.manage.install":"Installer","plugins.manage.installed":"Install\xE9","plugins.manage.json_config":"Config JSON","plugins.manage.manage_version":"Installer une autre Version","plugins.manage.manual_update_command":"To upgrade the package, open a Node.js command prompt as an Administrator and run the following commands:","plugins.manage.more_info":"More information about scoped {{ scopedLink }} and verified {{ verifiedLink }} plugins.","plugins.manage.notes":"Release Notes","plugins.manage.notes_beta_1":"Thank you for helping improve {{ pluginName }} by testing a pre-release version.","plugins.manage.notes_beta_2":"You can use the Homebridge UI to revert back to the stable version at any time.","plugins.manage.notes_beta_3":"Please remember this is a pre-release version, and report any issues to the plugin's GitHub repository page.","plugins.manage.notes_latest":"Release notes are only shown when updating to the latest version.","plugins.manage.notes_none":"Could not retrieve release notes, perhaps this version does not have a GitHub release.","plugins.manage.online_updates":"Les mises \xE0 jour en ligne ne sont pas support\xE9es sous Windows. Vous devrez mettre \xE0 jour Homebridge UI manuellement apr\xE8s avoir arr\xEAt\xE9 le service Homebridge.","plugins.manage.plugin_logs":"Journaux du Plugin","plugins.manage.scoped.error":"An error occurred. You can download the logs below.","plugins.manage.scoped.info_1":"Homebridge scoped plugins have names beginning with {{ prefix }}.","plugins.manage.scoped.info_2":"For more information about scoped plugins and why to switch, see the wiki page {{ link }}.","plugins.manage.scoped.process":"This process will not affect your Homebridge/HomeKit accessories. You will not be able to cancel the process once it has started. It will:","plugins.manage.scoped.switch":"Switch To Scoped Plugin","plugins.manage.scoped.windows":'Online updates are not supported on Windows. You will need to install the new plugin and uninstall the old plugin manually. You should <span class="fw-bold">not</span> restart Homebridge until both steps are complete.',"plugins.manage.scoped_message":"Scoped plugins improve long-term reliability and ensure consistent maintenance by combining centralized oversight from the Homebridge team with continued involvement from the original maintainer.","plugins.manage.scoped_subtitle":"This plugin is scoped and verified.","plugins.manage.select_version":"S\xE9lectionner la version \xE0 installer","plugins.manage.uninstall":"D\xE9sinstaller","plugins.manage.uninstalled":"D\xE9sinstall\xE9","plugins.manage.unverified_message":"Les plugins Homebridge non v\xE9rifi\xE9s indiquent qu'ils n'ont pas \xE9t\xE9 soumis au processus d'examen par l'\xE9quipe du projet Homebridge. L'absence de v\xE9rification n'implique pas n\xE9cessairement une inefficacit\xE9 ou des probl\xE8mes de s\xE9curit\xE9. Les auteurs peuvent avoir choisi de ne pas demander de v\xE9rification pour diverses raisons.","plugins.manage.unverified_subtitle":"This plugin n'est pas v\xE9rifi\xE9.","plugins.manage.update":"Mettre \xE0 jour","plugins.manage.updated":"Mis \xE0 jour","plugins.manage.verified_message":"Les Plugins d'Homebridge indiqu\xE9s comme v\xE9rifi\xE9s ont fait l'objet d'une v\xE9rification par l'\xE9quipe du projet Homebridge afin de s'assurer qu'ils remplissaient diff\xE9rentes exigences encourageant les bonnes pratiques et une exp\xE9rience utilisateur optimale.","plugins.manage.verified_subtitle":"This plugin est v\xE9rifi\xE9.","plugins.placeholder_search_first":"Utilisez la barre de recherche ci-dessus pour trouver votre premier plugin","plugins.placeholder_search_none":"No results were found","plugins.placeholder_search_plugin":"Rechercher des plugins \xE0 installer\u2026","plugins.settings.custom.homebridge-gsh.label_account_linked":"Compte associ\xE9","plugins.settings.custom.homebridge-gsh.label_link_account":"Associer le compte","plugins.settings.custom.homebridge-gsh.message_about":"Le plugin Homebridge Google Smart Home vous permet de contr\xF4ler vos accessoires Homebridge \xE0 partir d'un haut-parleur intelligent compatible avec Google Home ou de l'application mobile Google Home.","plugins.settings.custom.homebridge-gsh.message_account_link_required":"Pour activer cette fonctionnalit\xE9, vous devez vous connecter avec votre compte Google ou GitHub. Assurez-vous d'utiliser le m\xEAme compte lors de l'ajout de l'action Homebridge dans l'application mobile Google Home.","plugins.settings.custom.homebridge-gsh.message_homebridge_restart_required":"Homebridge n\xE9cessite un red\xE9marrage pour que les modifications prennent effet.","plugins.settings.deconz.dump_no_exist":"Homebridge deCONZ dump file does not exist yet.","plugins.settings.hue.dump_no_exist":"Homebridge Hue dump file does not exist yet.","plugins.settings.label_open_config_editor":"Ouvrir l'\xE9diteur de Config","plugins.settings.message_consult_documentation":"Consultez la documentation du plugin pour le configurer de mani\xE8re correcte.","plugins.settings.message_manual_config_required":"Ce plugin doit \xEAtre configur\xE9 manuellement en utilisant l'\xE9diteur de Config de Homebridge UI.","plugins.settings.plugin_config_saved":"Configuration du plugin enregistr\xE9e","plugins.settings.restart_required":"Red\xE9marrer Homebridge pour appliquer les changements.","plugins.stats":"Plugin Statistics","plugins.stats_note":"Plugins cannot be installed from this page, this is provided just for interest.","plugins.status_disabled":"D\xE9sactiv\xE9","plugins.status_installed":"Install\xE9","plugins.support.list_1":"Homebridge plugins are the building blocks of Homebridge, allowing you to add support for new accessories and platforms. Plugins add support for smart lights, cameras, TVs, etc, for brands that don't natively support HomeKit. For example, to bring your Ring doorbells and cameras into HomeKit, you can install the <code>homebridge-ring</code> plugin.","plugins.support.list_2":"Homebridge plugins are created by public contributors in the Homebridge community, and are not typically associated with the Homebridge maintainers, nor with the manufacturers of the accessories themselves. If you have a question about a specific plugin, you should let the plugin developer know via the plugin's GitHub page.","plugins.support.list_3":"There are currently over 4,700 plugins available for Homebridge, so you should be able to find plugins to suit your needs. If you are a Javascript/TypeScript developer (or want to take the opportunity to learn), you can also create your own plugin and share it with the Homebridge community. Check out the Support section for some handy links to get you started.","plugins.support.list_4":"Some plugins allow you to create 'virtual/dummy' accessories, which are accessories that do not have a physical counterpart. These can be used to create virtual accessories in HomeKit, such as virtual switches, lights, or sensors. Try searching for <code>dummy</code> or <code>virtual</code> in the search bar to find some examples.","plugins.toast_failed_to_load_plugin_schema":"Failed to load plugin config schema.","plugins.toast_failed_to_load_plugins":"Erreur de chargement des plugins","plugins.toast_failed_to_search_plugins":"Failed to search plugins","plugins.uninstall_remove_child_bridge":"Remove plugin child bridge?","plugins.uninstall_remove_child_bridges":"Remove {{ count }} plugin child bridges?","plugins.uninstall_remove_config_required":"Si vous d\xE9sinstallez de mani\xE8re permanente ce plugin, prenez gare \xE0 supprimer toute configuration li\xE9e \xE0 ce plugin dans config.json avant de red\xE9marrer Homebridge.","plugins.uninstall_remove_confirmation":"Etes-vous s\xFBr de vouloir d\xE9sinstaller {{ pluginName }} ?","plugins.uninstall_remove_plugin_config":"Supprimer la configuration du plugin ?","plugins.uninstall_warn_1":"When removing a child bridge, any accessories published by this bridge will be removed from the Homebridge cache.","plugins.uninstall_warn_2":"The accessories will become stale in HomeKit (showing no response). To remove them, you will need to manually remove this bridge from HomeKit. You can do this in the Home app from the Home Settings section.","reset.accessory_all.desc":"Remove all accessories from the cache.","reset.accessory_all.list_1":"When clicking on the remove button below, Homebridge will restart and all your existing accessories will be removed from Homebridge and HomeKit.","reset.accessory_all.list_2":"All associated HomeKit data will also be removed, this includes room associations, scenes and automations that this accessory uses.","reset.accessory_all.list_3":"After Homebridge restarts, your plugins will re-add any accessories as if the plugin was being installed for the first time.","reset.accessory_all.title":"Remove All Accessories","reset.accessory_ind.bridge":"Bridge","reset.accessory_ind.desc":"Remove individual accessories from the cache.","reset.accessory_ind.done":"Finished removing accessories from the cache, check the log for confirmation and/or errors.","reset.accessory_ind.fail":"Failed to remove accessories from cache, check the log for errors.","reset.accessory_ind.list_1":"Some plugins don't clean up after themselves properly. If you have stale accessories, you can remove them from the cache. This function can also be used to reset an existing accessory in HomeKit.","reset.accessory_ind.list_2":"The accessories will be removed from Homebridge and HomeKit, along with their related room associations, scenes and automations.","reset.accessory_ind.list_3":"After Homebridge restarts, your plugins will re-add any removed accessories as if the plugin was being installed for the first time.","reset.accessory_ind.title":"Remove Individual Accessories","reset.accessory_ind.unknown":"Unknown Name","reset.accessory_reset":"R\xE9initialisation de l'accessoire Homebridge","reset.action_is_irreversible":"Cette action est irr\xE9versible. Merci de lire avec attention avant de continuer.","reset.bridge_accessories.desc":"Remove all accessories published by a child bridge from the cache.","reset.bridge_accessories.empty":"You have no bridges from which to remove accessories.","reset.bridge_accessories.list_1":"This function can be used to reset a plugin's existing accessories in HomeKit. They will be removed from Homebridge and HomeKit, and then re-added by the plugin as new accessories.","reset.bridge_accessories.list_2":"The child bridge's pairing details and status will remain the same.","reset.bridge_accessories.title":"Remove Bridge Accessories","reset.bridge_all.desc":"Reset all bridges by removing them from the cache. This includes the main Homebridge bridge, child bridges and bridges for external accessories.","reset.bridge_all.list_1":"This will reset the Homebridge bridge, all child bridges and bridges for external accessories from HomeKit.","reset.bridge_all.list_2":"Note that your accessories will continue to show in HomeKit as no response, until the bridges are manually removed from HomeKit. You can do this in the Home app, by accessing Home Settings \u2192 Home Hubs & Bridges \u2192 {Bridge} \u2192 Remove Bridge from Home.","reset.bridge_all.list_3":"All your Homebridge to HomeKit accessories, scenes and automations will need to be reconfigured after the unpairing.","reset.bridge_all.list_4":"The pin for pairing your Homebridge bridge to HomeKit will be changed. You can see the new values in your Homebridge config after the unpairing.","reset.bridge_all.title":"Reset All Bridges","reset.bridge_ind.desc":"Reset an individual bridge by removing it from the cache. This may be a child bridge or a bridge for an external accessory like a camera or TV.","reset.bridge_ind.desc_child_active":"Homebridge has detected that these child bridges are in-use. Once removed, their accessories will be removed from the Homebridge cache. If paired with HomeKit, the bridge's accessories will show as 'No Response', and the bridge will need to be removed via the Home app. The child bridge's pairing information will be changed. Once Homebridge has restarted, the plugin will create the new child bridge and accessories. The new bridge will need to be re-paired with HomeKit. You can view the new pairing information from the corresponding plugin's bridge settings page.","reset.bridge_ind.desc_child_stale":"Homebridge has detected that these bridges are not in-use, but double-check before deleting. They could be left-over from previously uninstalled plugins. If paired with HomeKit, the accessories will show as 'No Response', and the bridge will need to be removed via the Home app.","reset.bridge_ind.desc_non_child":"Homebridge has detected that these bridges are in-use. You can remove them from the cache, but they will likely be re-added by the plugin when Homebridge restarts. The pairing information will remain unchanged.","reset.bridge_ind.done":"Finished resetting bridges, check the log for confirmation and/or errors.","reset.bridge_ind.fail":"Failed to reset bridges, check the log for errors.","reset.bridge_ind.head_child_active":"Active Child Bridges","reset.bridge_ind.head_child_stale":"Stale Child Bridges","reset.bridge_ind.head_non_child":"Non Child Bridges","reset.bridge_ind.title":"Reset Individual Bridges","reset.bridges.desc":"If you are having trouble pairing Homebridge, an external accessory or a child bridge to HomeKit, you may need to unpair it from HomeKit to start again.","reset.bridges.empty":"You have no bridges to unpair from HomeKit.","reset.bridges.title":"Bridges","reset.clear_cache_single.list_3":"When removing an accessory from the cache, all its associated HomeKit data will be removed. This includes any associated scenes and automations that use this accessory.","reset.delete_success":"Red\xE9marrage d'Homebridge et remise \xE0 z\xE9ro du cache.","reset.error_message":"Le cache des accessoires n'a pas pu \xEAtre charg\xE9. Il se peut que vous n'ayez pas d'accessoires en cache.","reset.failed_to_reset":"Erreur lors de la r\xE9initialisation d'Homebridge. Regarder les fichiers de journalisation.","reset.force_restart_hb_help_text":"Utiliser cette action pour forcer le service hb-service \xE0 proc\xE9der \xE0 un red\xE9marrage complet.","reset.no_accessories":"Vous n'avez pas d'accessoires en cache \xE0 supprimer.","restart.child_bridge_list":"Please restart these child bridges for the changes to apply:","restart.child_bridges":"Red\xE9marrez les Ponts secondaires des plugins pour appliquer les changements effectu\xE9s.","restart.label_restart_command_executed":"Commande de red\xE9marrage ex\xE9cut\xE9e","restart.please_wait_while_server_restarts":"Merci de patienter, cette page se r\xE9actualisera automatiquement quand le serveur sera de nouveau en ligne.","restart.server_is_taking_long_time_to_restart":"Le red\xE9marrage du serveur met beaucoup de temps. Vous aurez peut-\xEAtre besoin de d\xE9marrer le service Homebridge manuellement.","restart.service_ready":"Serveur Homebridge Pr\xEAt","restart.title_restart":"Red\xE9marrage d'Homebridge","restart.toast_server_restart_error":"Une erreur est survenue lors de l'envoi de la commande de red\xE9marrage au serveur","restart.toast_server_restart_timeout":"Le serveur met beaucoup de temps \xE0 revenir en ligne","restart.toast_server_restarted":"Serveur red\xE9marr\xE9","restart.ui_online":"Interface Homebridge UI en Ligne","rpi.throttled.currently_message":"Ce Raspberry Pi rencontre actuellement une situation de sous-tension ; V\xE9rifiez qu'il est connect\xE9 \xE0 une alimentation adapt\xE9e. Une sous-tension peut engendrer une instabilit\xE9 du syst\xE8me et une corruption de sa carte SD.","rpi.throttled.previously_message":"Ce Raspberry Pi a rencontr\xE9 une situation de sous-tension depuis son dernier red\xE9marrage ; V\xE9rifiez qu'il est connect\xE9 \xE0 une alimentation adapt\xE9e.","rpi.throttled.undervoltage_title":"Sous Tension","settings.accessory.debug":"Accessory Debug Mode","settings.accessory.debug_desc":"If enabled, the Homebridge UI will log debug level messages to the console.","settings.cache.desc":"Homebridge maintains accessories in cache so they aren't removed and re-added to HomeKit each time Homebridge restarts. Sometimes this cache can become out of sync with the actual accessories in Homebridge.","settings.changes.saved":"Your changes have been saved and require a restart to take effect.","settings.datetime.incorrect":"The date and time on your Homebridge server seem to be incorrect. This may cause unexpected issues. Click here for more information.","settings.display.blue":"Blue","settings.display.bluegrey":"Blue Grey","settings.display.brown":"Brown","settings.display.cyan":"Cyan","settings.display.dark":"Dark","settings.display.deep_purple":"Deep Purple","settings.display.green":"Green","settings.display.grey":"Grey","settings.display.indigo":"Indigo","settings.display.lang":"Language","settings.display.light":"Light","settings.display.lighting_mode":"Lighting Mode","settings.display.menu_default":"Default","settings.display.menu_freeze":"Keep Closed (On Desktop)","settings.display.menu_mode":"Menu Mode","settings.display.orange":"Orange","settings.display.pink":"Pink","settings.display.purple":"Purple","settings.display.red":"Red","settings.display.show_betas":"Prefer Beta Versions","settings.display.teal":"Teal","settings.display.temp_units":"Temperature Units","settings.display.temp_units.c":"Celsius (\xB0C)","settings.display.temp_units.f":"Fahrenheit (\xB0F)","settings.display.theme":"Theme","settings.display.wallpaper":"Wallpaper","settings.display.wallpaper_intro":"Upload a wallpaper for your Homebridge UI. This is currently shown on the login screen.","settings.display.wallpaper_rule":"You can choose an image file which is up to {{ maxFileSizeText }}.","settings.display.wallpaper_rule2":"You will need to click Save to upload the wallpaper to your Homebridge storage directory.","settings.display.wallpaper_success":"Wallpaper was successfully updated.","settings.general.title_display":"Display","settings.general.title_general":"G\xE9n\xE9ral","settings.linux.restart":"Restart Command","settings.linux.restart_desc":"If no restart command is set the process will terminate with a non-zero exit code.","settings.linux.shutdown":"Shutdown Command","settings.linux.shutdown_desc":"If no shutdown command is set the process will terminate with a non-zero exit code.","settings.linux.temp":"Temperature File Path","settings.linux.temp_desc":"If you are running Homebridge on a Raspberry Pi, you can enter the path to the OS temperature file here. This will display the current temperature on the UI status page.","settings.matter.desc":"Enables Matter accessories on the main bridge. If only using Matter with child bridges, this setting does not need to be enabled - child bridges have independent Matter settings in their plugin bridge settings.","settings.matter.enabled":"Enabled","settings.matter.enabled_desc":"Whether to start a Matter instance and allow plugins to expose Matter accessories.","settings.matter.port":"Port","settings.matter.port_desc":"This must be between 1025 and 65533, and unique to any other configured port.","settings.matter.title":"Matter Settings","settings.mdns_advertiser":"Diffuseur mDNS","settings.mdns_advertiser_exp":"experimental","settings.mdns_advertiser_help":"Si vous avez des difficult\xE9s \xE0 vous connecter \xE0 Homebridge, essayez d'utiliser un des diffuseurs mDNS alternatif.","settings.mdns_advertiser_not_connected":"Not Connected","settings.mdns_advertiser_rec":"recommended","settings.name":"Homebridge Name","settings.network.hb_package":"Homebridge Module Path","settings.network.hb_package_desc":"If you have multiple versions of Homebridge installed, you can specify the path to the version you want to use here.","settings.network.host":"Host IP Address","settings.network.host_desc":"The host IP address to listen on. In most cases this will be <code>::</code> or <code>0.0.0.0</code>.","settings.network.mdns_advertise":"Advertise Via mDNS","settings.network.mdns_advertise_help":"Enable mDNS advertising (using Bonjour) for your Homebridge UI, making it discoverable as an HTTP service on your local network.","settings.network.message_network_interface":"Si aucune interface r\xE9seau n'est s\xE9lectionn\xE9e, Homebridge essaiera de d\xE9terminer automatiquement les interfaces \xE0 g\xE9rer.","settings.network.port_end":"End Port","settings.network.port_end_desc":"Control the end of the range of ports that separate accessories (like camera or television) should run on. This must be between 1025 and 65533, and higher than the start port above.","settings.network.port_hb":"Homebridge Port","settings.network.port_hb_desc":"The port number to run the Homebridge bridge on. This must be between 1025 and 65533, and should not be the same as the Homebridge UI port.","settings.network.port_start":"Start Port","settings.network.port_start_desc":"Control the start of the range of ports that separate accessories (like camera or television) should run on. This must be between 1025 and 65533, and lower than the end port below.","settings.network.port_ui":"UI Port","settings.network.port_ui_desc":"The port number to run the Homebridge UI on.","settings.network.proxy":"Reverse Proxy Hostname","settings.network.proxy_desc":"When running behind a reverse proxy you may need to enter the hostname you use to access the UI.","settings.network.title_network":"R\xE9seau","settings.network.title_network_interfaces":"Interfaces R\xE9seau","settings.network.title_security":"Security","settings.network.title_terminal":"Logging & Terminal","settings.network.webroot":"Webroot Path","settings.network.webroot_desc":"This can be configured if you want to access the Homebridge UI under a specific URL path.","settings.reset_bridge.error":"Failed to reset bridge.","settings.security.auth":"Authentication","settings.security.auth_desc":"Whether to enable authentication for the Homebridge UI with a username and password.","settings.security.cert":"Certificate Path","settings.security.https":"Enable HTTPS","settings.security.https_desc":"Enable HTTPS using an auto-generated self-signed certificate or by providing your own certificate files.","settings.security.https_keycert":"Private Key + Certificate","settings.security.https_pfx":"PKCS#12 Certificate + Passphrase","settings.security.https_raspbian":"HTTPS is already enabled by default when running the Homebridge Raspbian image {{ link }}.","settings.security.https_selfsigned":"Self-Signed Certificate","settings.security.key":"Private Key Path","settings.security.pass":"PKCS#12 Certificate Passphrase","settings.security.pfx":"PKCS#12 Certificate Path","settings.security.selfsigned_generate_keycert":"Generate Self\u2011Signed & Use as Key + Cert","settings.security.selfsigned_generate_selfsigned":"Generate & Enable Self\u2011Signed Mode","settings.security.selfsigned_generate_success_keycert":"Generated self\u2011signed certificate and set as Key + Cert","settings.security.selfsigned_generate_success_selfsigned":"Generated self\u2011signed certificate and enabled Self\u2011signed mode","settings.security.selfsigned_hostnames":"Certificate Hostnames","settings.security.selfsigned_hostnames_desc":"Comma-separated list of hostnames or IP addresses to include in the certificate (e.g., localhost, 127.0.0.1, homebridge.local, 192.168.1.100)","settings.security.ssl_upload_keycert_aria":"Upload private key and certificate","settings.security.ssl_upload_pfx_aria":"Upload PKCS#12 certificate","settings.security.ssl_upload_success_keycert":"Certificate and private key uploaded","settings.security.ssl_upload_success_pfx":"PKCS#12 certificate uploaded","settings.security.ssl_validate":"Validate SSL","settings.security.ssl_validate_error":"SSL configuration is invalid.","settings.security.ssl_validate_success":"SSL configuration is valid.","settings.security.ui_control":"Accessory Control Lists","settings.security.ui_control_desc":"Define which bridges and bridged accessories can be controlled or blocked by the Homebridge UI.","settings.security.ui_control_desc_2":"Allow the UI to control the accessories on a bridge by toggling on the switch below.","settings.service.debug_tooltip":"Certains plugins exigent que vous d\xE9finissiez la variable d'environnement DEBUG {{ link }} pour activer le niveau de journalisation de d\xE9bogage.","settings.service.node_tooltip":"Options d'ex\xE9cution Node.js pour le processus Homebridge. Ce champ doit rester vide sauf si vous savez ce que vous faites.","settings.startup.debug":"Mode de d\xE9bogage Homebridge","settings.startup.debug_desc_v1":"Enable this if you need Homebridge to output more detailed logs. This setting applies to the main Homebridge bridge as well as all child bridges. Some plugins may also adhere to this setting and output more detailed logs.","settings.startup.debug_desc_v2":"Enable this if you need Homebridge to output more detailed logs. This setting applies to the main Homebridge bridge. The setting for child bridges can be found in the child bridge configuration from the plugins page. Some plugins may also adhere to this setting and output more detailed logs.","settings.startup.insecure":"Enable UI Accessory Control","settings.startup.insecure_desc":"To control your accessories via the Homebridge UI you must be running Homebridge in insecure mode.","settings.startup.keep_accessories":"Conserver les accessoires des plugins non install\xE9s","settings.startup.keep_accessories_desc":"If enabled, accessories of platform plugins will remain in the cache even after the plugin is uninstalled. This can be useful if you plan to reinstall the plugin later.","settings.startup.metrics":"Enable Server Metric Monitoring","settings.startup.metrics_desc":"When enabled, the Homebridge UI will collect and show CPU and memory stats on the status page.","settings.startup.scheduled_restart":"Scheduled Restart Cron","settings.startup.scheduled_restart_desc":"Schedule automatic restarts relative to your timezone using a cron expression. Leave empty to disable. Create a cron expression {{ link }}.","settings.startup.scheduled_restart_desc_2":"You can apply this setting per child bridge from the plugin bridge configuration.","settings.startup.session":"Session Timeout","settings.startup.session_days":"days","settings.startup.session_desc":"The number of seconds before a user will be logged out of the UI. Defaults to 8 hours.","settings.startup.session_hours":"hours","settings.startup.session_inactivity_based":"Inactivity-Based Session Refresh","settings.startup.session_inactivity_based_desc":"When enabled, the session will automatically refresh on navigation to prevent logout during active use.","settings.startup.session_minutes":"minutes","settings.terminal.buffer_size":"Terminal Buffer Character Size","settings.terminal.buffer_size_help":"Amount of terminal output to preserve for persistent sessions. Larger values use more memory.","settings.terminal.log_max":"Log Max Size","settings.terminal.log_max_desc":"The max log size (bytes). Set to -1 to disable log truncation.","settings.terminal.log_truncate":"Log Truncate Size","settings.terminal.log_truncate_desc":"The size (bytes) to truncate the log to once it goes over the max size specified above.","settings.terminal.persistence":"Terminal Session Persistence","settings.terminal.persistence_confirm_message":"Disabling terminal session persistence will terminate your current terminal session.","settings.terminal.persistence_confirm_title":"Disable Terminal Session Persistence","settings.terminal.persistence_help":"When enabled, terminal sessions will persist when navigating away and can be resumed when returning to the terminal page (or status page widget). Terminal sessions are shared across Homebridge UI admin users.","settings.terminal.warning":"Hide Terminal Termination Warning","settings.terminal.warning_help":"When enabled, the warning dialog will not be shown before terminating non-persistent terminal sessions.","settings.title_startup_options":"Options de d\xE9marrage","settings.unpair_bridge.load_error":"Paired bridges could not be loaded.","settings.warning_pwa":"This setting cannot be changed when accessing the UI from a PWA, please use a regular browser.","settings.warning_webroot":"Homebridge does not have write access to the served <code>index.html</code> file. To set up a webroot, please fix this issue and restart the Homebridge service.","setup.button_get_started":"D\xE9marrer","setup.create_account":"Cr\xE9er un Compte","setup.intro":"If you are setting up for the first time, or if you just need to reset the password for your existing Homebridge setup, then choose <strong>Get Started</strong>.","setup.welcome_to_homebridge":"Bienvenue sur Homebridge",setup_wizard_complete:"Restore Complete!",setup_wizard_complete_title:"F\xE9licitations!",setup_wizard_completed:"La proc\xE9dure d'installation est termin\xE9e et vous \xEAtes maintenant pr\xEAt \xE0 utiliser Homebridge.",setup_wizard_create_info:"Once Homebridge is set up, you can set up 2FA on your account, or disable the need for authentication altogether.",setup_wizard_page_title:"Setup Homebridge",setup_wizard_restore:"Restore From Backup",setup_wizard_restoring:"Restoring Backup...",setup_wizard_starting:"Starting Homebridge...","status.code_scan":"Scannez pour ajouter \xE0 HomeKit","status.cpu.load":"Charge","status.cpu.temp":"Temp","status.cpu.title_cpu":"CPU","status.credits.plugins_thanks":"Homebridge plugins are created by awesome developers in the Homebridge community.","status.credits.supporters":"Supporters","status.credits.title":"Credits","status.credits.translations":"Translations","status.credits.translations_thanks":"Homebridge UI translations are provided by the community, with special thanks to:","status.homebridge.checking":"V\xE9rification des mises \xE0 jour\u2026","status.homebridge.up_to_date":"\xC0 jour","status.memory.label_available":"Disponible","status.memory.label_total":"Totale","status.memory.title_memory":"M\xE9moire","status.network.received_per_second":"Re\xE7u","status.network.sent_per_second":"Envoy\xE9","status.network.title_network":"Activit\xE9 R\xE9seau","status.readiness.node_no":"Your version of Node.js is not compatible with {{ app }}.","status.readiness.node_yes":"Your version of Node.js is compatible with {{ app }}.","status.readiness.title":"{{ app }} Readiness","status.services.label_not_enabled":"Not Enabled","status.services.label_not_running":"Non d\xE9marr\xE9","status.services.label_running":"D\xE9marr\xE9","status.services.updates":"Update Information","status.uptime.title_uptime":"Temps de fonctionnement","status.widget.accessories.choose_accessories":"Choisissez les accessoires \xE0 afficher dans ce widget dans l'onglet Accessoires.","status.widget.account_1":"The widget layout is shared among all Homebridge UI users.","status.widget.account_2":"Admin users can modify the layout, while non-admin users cannot make changes.","status.widget.add.label_pairing_code":"Code d'appairage","status.widget.add.matter_pairing_code":"Matter Pairing Code","status.widget.bridge.restart_error":"Failed to restart child bridge.","status.widget.clock":"Horloge","status.widget.clock_dateformat":"Format de Date","status.widget.clock_timeformat":"Format de Temps","status.widget.expand_docker":"Expand Docker Container Information","status.widget.font_size":"Taille de Police","status.widget.font_weight":"Epaisseur de Police","status.widget.hide_node_info":"Hide Node.js Updates","status.widget.hide_npm":"Show npm Version","status.widget.hide_on_mobile":"Cacher en vue compacte (affichage pour mobile)","status.widget.homebridge_logs":"Journaux d'Homebridge","status.widget.info":"Informations Syst\xE8me","status.widget.info.arch":"Arch.","status.widget.info.config_path":"R\xE9pertoire de la Config","status.widget.info.docker":"Docker","status.widget.info.docker_update_message":"Updating the Docker container requires manually pulling the latest image and restarting the container. Homebridge does not perform this automatically. Refer to your Docker image's documentation for update instructions.","status.widget.info.docker_update_title":"Docker Container Update","status.widget.info.hostname":"Hostname","status.widget.info.ipv4":"IPv4","status.widget.info.ipv6":"IPv6","status.widget.info.no":"Non","status.widget.info.node_major":"Node.js Major Versions","status.widget.info.node_next_no":"Your current architecture ({{ architecture }}) is 32-bit, which is not supported. You will need to migrate to a 64-bit system. Please use Node.js v22 instead, which we will be supporting until April 2027.","status.widget.info.node_next_yes":"Your current architecture ({{ architecture }}) supports Node.js v24, so you can upgrade when you are ready.","status.widget.info.node_unsupp":"Unsupported","status.widget.info.node_unsupp_message":"You are running a version of Node.js that is not officially supported by Homebridge. You should consider changing to a supported version.","status.widget.info.node_update_message":"Homebridge n\xE9cessite l'installation de Node.js sur votre syst\xE8me pour fonctionner. De temps \xE0 autre, vous devrez mettre \xE0 jour le moteur d'ex\xE9cution Node.js pour permettre la prise en charge de nouvelles fonctionnalit\xE9s. Homebridge (et les plugins v\xE9rifi\xE9s) prend en charge toutes les versions actuelles LTS Active et de Maintenance de Node.js.","status.widget.info.node_update_message_2":"For Docker/Synology users, the Node.js version is managed by the Docker image or Synology package. You can hide Node.js update information using the widget settings.","status.widget.info.nodejs_path":"R\xE9pertoire de Node.js","status.widget.info.os":"OS","status.widget.info.plugin_path":"R\xE9pertoire des plugins","status.widget.info.service_user":"Utilisateur","status.widget.info.storage_path":"R\xE9pertoire de stockage","status.widget.info.synology_package":"Paquet Synology","status.widget.info.timezone":"Fuseau Horaire","status.widget.info.yes":"Oui","status.widget.network.history_items":"History Items","status.widget.network.items":"items","status.widget.network.network_interface":"Network Interface","status.widget.network.none_selected":"Using Default","status.widget.network.refresh_interval":"Refresh Interval","status.widget.network.seconds":"seconds","status.widget.qr_paired":"Appair\xE9","status.widget.qr_unpaired":"Non appair\xE9","status.widget.show_hide":"Show/Hide Widgets","status.widget.title_manage_widget":"G\xE9rer le Widget","status.widget.update_node_no":"{{ pluginName }} is not compatible with Node {{ nodeVersion }}.","status.widget.update_node_unknown":"The developer of {{ pluginName }} has not specified the Node version compatibility.","status.widget.update_node_yes":"{{ pluginName }} is compatible with Node {{ nodeVersion }}.","status.widget.uptime.label_process":"Process","status.widget.uptime.label_server":"Serveur","status.widget.weather.label_config_required_help":"S\xE9lectionnez votre ville dans les r\xE9glages du widget.","status.widget.weather.label_search_for_your_city":"Recherchez votre ville:","status.widget.weather.title_weather":"M\xE9t\xE9o","support.dev.api":"Homebridge API","support.dev.api_hap":"HAP-NodeJS API","support.dev.api_hap_sub":"HAP-NodeJS is an implementation of the HomeKit Accessory Server as specified in the HomeKit Accessory Protocol (HAP), which is defined by Apple as part of the HomeKit Framework.","support.dev.api_sub":"Homebridge is a lightweight Node.js server you can run on your home network to emulate the HomeKit Accessory Protocol (HAP).","support.dev.item_swagger":"Swagger Docs","support.dev.item_swagger_sub":"The Homebridge REST API allows you to interact with your Homebridge server using HTTP requests.","support.dev.template":"Plugin Template Repo","support.dev.template_sub":"A template Homebridge plugin that can be used as a base to help you get started developing your own plugin.","support.dev.title":"Developers","support.dev.verified":"Verified By Homebridge","support.dev.verified_sub":"The Verified By Homebridge program allows plugin developers to get their plugins reviewed and endorsed by the Homebridge project team.","support.links.discord":"Serveur Discord","support.links.discord_sub":"Join the Homebridge Discord chat server to chat with other users and developers.","support.links.documentation":"Documentation","support.links.documentation_sub":"The Homebridge documentation provides a wealth of information on how to get started with Homebridge and common issue resolutions.","support.links.issue":"Signaler un probl\xE8me","support.links.issue_sub":"If you are experiencing an issue with Homebridge, please open a new issue on GitHub. This should not be used for issues with specific plugins.","support.links.reddit":"Communaut\xE9 Reddit","support.links.reddit_sub":"The Homebridge subreddit is a great place to share your Homebridge setup and ask for help.","support.links.title":"Liens utiles","support.title":"Support","toast.no_auth":"Only administrators may access the requested page.","toast.title_error":"Erreur","toast.title_success":"Succ\xE8s","toast.title_warning":"Attention","users.button_add_user":"Ajouter un utilisateur","users.label_admin_user":"Administrateur ?","users.label_confirm_password":"Confirmer le mot de passe","users.label_full_name":"Nom complet","users.label_new_password":"Nouveau mot de passe","users.label_password":"Mot de passe","users.label_username":"Identifiant","users.setup_2fa":"Configuration 2FA","users.setup_2fa_activate_error":"An error occurred activating 2FA","users.setup_2fa_cannot_setup_2fa":"Echec lors de la configuration 2FA","users.setup_2fa_disable":"D\xE9sactiver 2FA","users.setup_2fa_disable_current_password":"Entrez votre mot de passe courant pour d\xE9sactiver l'authentification \xE0 deux facteurs :","users.setup_2fa_disable_success":"L'authentification \xE0 deux facteurs a \xE9t\xE9 d\xE9sactiv\xE9e.","users.setup_2fa_enable":"Activer 2FA","users.setup_2fa_enable_error":"An error occurred setting up 2FA","users.setup_2fa_enabled_success":"L'authentification \xE0 deux facteurs a \xE9t\xE9 activ\xE9e.","users.setup_2fa_enter_code":"Entrez le code de votre app d'authentification :","users.setup_2fa_scan_qr_code":"Scannez le QR code ci-dessous avec votre app d'authentification :","users.setup_2fa_scan_qr_manual":"If you cannot scan the QR code, you can enter the following secret key manually:","users.setup_2fa_server_time_out":"L'horloge de votre serveur est d\xE9r\xE9gl\xE9e de {{ timeDiffError }} ms. Le maximum autoris\xE9 est de +/-5000 ms.","users.setup_2fa_warning":"L'authentification \xE0 deux facteurs n\xE9cessite que votre serveur Homebridge puisse garder un r\xE9glage tr\xE8s pr\xE9cis de la date et de l'heure pour pouvoir se connecter. Si votre serveur n'a pas la capacit\xE9 de garder une horloge pr\xE9cise, vous ne devez pas activer 2FA afin d'\xE9viter de ne plus pouvoir vous connecter \xE0 Homebridge UI par la suite.","users.support.acc_1":"There are two types of users that can access the Homebridge UI: admin and non-admin users. Admins can access and control everything available in the UI. Non-admin users have a read-only view of the following pages:","users.support.acc_2":"2FA can only be set up on admin accounts, and must do this via the users page logged in as themselves.","users.support.control":"can be controlled","users.title_add_user":"Ajouter un utilisateur","users.title_edit_user":"Modifier l'utilisateur","users.title_users":"Utilisateurs","users.toast_added_new_user":"Utilisateur ajout\xE9","users.toast_failed_to_add_user":"Erreur lors de l'ajout de l'utilisateur","users.toast_failed_to_delete_user":"Erreur lors de la suppression de l'utilisateur","users.toast_updated_user":"Utilisateur mis \xE0 jour","users.toast_user_deleted":"Utilisateur supprim\xE9"}});export{t as a};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{U as E,X as Tt,Zc as S,_c as z,bd as vt,cd as Fe,fd as Y,gd as me,hd as ne}from"./chunk-MKV5RAJQ.js";import{a as fe,d as Et}from"./chunk-B4AJQJMI.js";function bt(n){return new E(3e3,!1)}function bs(){return new E(3100,!1)}function ws(){return new E(3101,!1)}function As(n){return new E(3001,!1)}function Ps(n){return new E(3003,!1)}function Ns(n){return new E(3004,!1)}function At(n,e){return new E(3005,!1)}function Pt(){return new E(3006,!1)}function Nt(){return new E(3007,!1)}function Mt(n,e){return new E(3008,!1)}function Ct(n){return new E(3002,!1)}function kt(n,e,t,s,i){return new E(3010,!1)}function Dt(){return new E(3011,!1)}function Rt(){return new E(3012,!1)}function Ot(){return new E(3200,!1)}function Lt(){return new E(3202,!1)}function Ft(){return new E(3013,!1)}function It(n){return new E(3014,!1)}function zt(n){return new E(3015,!1)}function Kt(n){return new E(3016,!1)}function qt(n){return new E(3500,!1)}function Bt(n){return new E(3501,!1)}function Qt(n,e){return new E(3404,!1)}function Ms(n){return new E(3502,!1)}function Vt(n){return new E(3503,!1)}function $t(){return new E(3300,!1)}function Ut(n){return new E(3504,!1)}function Gt(n){return new E(3301,!1)}function jt(n,e){return new E(3302,!1)}function Wt(n){return new E(3303,!1)}function Ht(n,e){return new E(3400,!1)}function Yt(n){return new E(3401,!1)}function Xt(n){return new E(3402,!1)}function Jt(n,e){return new E(3505,!1)}var Cs=new Set(["-moz-outline-radius","-moz-outline-radius-bottomleft","-moz-outline-radius-bottomright","-moz-outline-radius-topleft","-moz-outline-radius-topright","-ms-grid-columns","-ms-grid-rows","-webkit-line-clamp","-webkit-text-fill-color","-webkit-text-stroke","-webkit-text-stroke-color","accent-color","all","backdrop-filter","background","background-color","background-position","background-size","block-size","border","border-block-end","border-block-end-color","border-block-end-width","border-block-start","border-block-start-color","border-block-start-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-width","border-color","border-end-end-radius","border-end-start-radius","border-image-outset","border-image-slice","border-image-width","border-inline-end","border-inline-end-color","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-width","border-left","border-left-color","border-left-width","border-radius","border-right","border-right-color","border-right-width","border-start-end-radius","border-start-start-radius","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-width","border-width","bottom","box-shadow","caret-color","clip","clip-path","color","column-count","column-gap","column-rule","column-rule-color","column-rule-width","column-width","columns","filter","flex","flex-basis","flex-grow","flex-shrink","font","font-size","font-size-adjust","font-stretch","font-variation-settings","font-weight","gap","grid-column-gap","grid-gap","grid-row-gap","grid-template-columns","grid-template-rows","height","inline-size","input-security","inset","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","left","letter-spacing","line-clamp","line-height","margin","margin-block-end","margin-block-start","margin-bottom","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","mask","mask-border","mask-position","mask-size","max-block-size","max-height","max-inline-size","max-lines","max-width","min-block-size","min-height","min-inline-size","min-width","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","outline","outline-color","outline-offset","outline-width","padding","padding-block-end","padding-block-start","padding-bottom","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","perspective","perspective-origin","right","rotate","row-gap","scale","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-coordinate","scroll-snap-destination","scrollbar-color","shape-image-threshold","shape-margin","shape-outside","tab-size","text-decoration","text-decoration-color","text-decoration-thickness","text-emphasis","text-emphasis-color","text-indent","text-shadow","text-underline-offset","top","transform","transform-origin","translate","vertical-align","visibility","width","word-spacing","z-index","zoom"]);function $(n){switch(n.length){case 0:return new Y;case 1:return n[0];default:return new me(n)}}function qe(n,e,t=new Map,s=new Map){let i=[],r=[],a=-1,o=null;if(e.forEach(l=>{let u=l.get("offset"),h=u==a,c=h&&o||new Map;l.forEach((_,y)=>{let f=y,g=_;if(y!=="offset")switch(f=n.normalizePropertyName(f,i),g){case ne:g=t.get(y);break;case z:g=s.get(y);break;default:g=n.normalizeStyleValue(y,f,g,i);break}c.set(f,g)}),h||r.push(c),o=c,a=u}),i.length)throw Ms(i);return r}function pe(n,e,t,s){switch(e){case"start":n.onStart(()=>s(t&&Ie(t,"start",n)));break;case"done":n.onDone(()=>s(t&&Ie(t,"done",n)));break;case"destroy":n.onDestroy(()=>s(t&&Ie(t,"destroy",n)));break}}function Ie(n,e,t){let s=t.totalTime,i=!!t.disabled,r=ge(n.element,n.triggerName,n.fromState,n.toState,e||n.phaseName,s??n.totalTime,i),a=n._data;return a!=null&&(r._data=a),r}function ge(n,e,t,s,i="",r=0,a){return{element:n,triggerName:e,fromState:t,toState:s,phaseName:i,totalTime:r,disabled:!!a}}function R(n,e,t){let s=n.get(e);return s||n.set(e,s=t),s}function Be(n){let e=n.indexOf(":"),t=n.substring(1,e),s=n.slice(e+1);return[t,s]}var ks=typeof document>"u"?null:document.documentElement;function ye(n){let e=n.parentNode||n.host||null;return e===ks?null:e}function Ds(n){return n.substring(1,6)=="ebkit"}var X=null,wt=!1;function Zt(n){X||(X=Os()||{},wt=X.style?"WebkitAppearance"in X.style:!1);let e=!0;return X.style&&!Ds(n)&&(e=n in X.style,!e&&wt&&(e="Webkit"+n.charAt(0).toUpperCase()+n.slice(1)in X.style)),e}function Rs(n){return Cs.has(n)}function Os(){return typeof document<"u"?document.body:null}function Qe(n,e){for(;e;){if(e===n)return!0;e=ye(e)}return!1}function Ve(n,e,t){if(t)return Array.from(n.querySelectorAll(e));let s=n.querySelector(e);return s?[s]:[]}var Ls=1e3,$e="{{",Fs="}}",_e="ng-enter",re="ng-leave",ae="ng-trigger",oe=".ng-trigger",Ue="ng-animating",Se=".ng-animating";function V(n){if(typeof n=="number")return n;let e=n.match(/^(-?[\.\d]+)(m?s)/);return!e||e.length<2?0:ze(parseFloat(e[1]),e[2])}function ze(n,e){switch(e){case"s":return n*Ls;default:return n}}function le(n,e,t){return n.hasOwnProperty("duration")?n:zs(n,e,t)}var Is=/^(-?[\.\d]+)(m?s)(?:\s+(-?[\.\d]+)(m?s))?(?:\s+([-a-z]+(?:\(.+?\))?))?$/i;function zs(n,e,t){let s,i=0,r="";if(typeof n=="string"){let a=n.match(Is);if(a===null)return e.push(bt(n)),{duration:0,delay:0,easing:""};s=ze(parseFloat(a[1]),a[2]);let o=a[3];o!=null&&(i=ze(parseFloat(o),a[4]));let l=a[5];l&&(r=l)}else s=n;if(!t){let a=!1,o=e.length;s<0&&(e.push(bs()),a=!0),i<0&&(e.push(ws()),a=!0),a&&e.splice(o,0,bt(n))}return{duration:s,delay:i,easing:r}}function xt(n){return n.length?n[0]instanceof Map?n:n.map(e=>new Map(Object.entries(e))):[]}function Ge(n){return Array.isArray(n)?new Map(...n):new Map(n)}function K(n,e,t){e.forEach((s,i)=>{let r=Ee(i);t&&!t.has(i)&&t.set(i,n.style[r]),n.style[r]=s})}function G(n,e){e.forEach((t,s)=>{let i=Ee(s);n.style[i]=""})}function ee(n){return Array.isArray(n)?n.length==1?n[0]:vt(n):n}function es(n,e,t){let s=e.params||{},i=je(n);i.length&&i.forEach(r=>{s.hasOwnProperty(r)||t.push(As(r))})}var Ke=new RegExp(`${$e}\\s*(.+?)\\s*${Fs}`,"g");function je(n){let e=[];if(typeof n=="string"){let t;for(;t=Ke.exec(n);)e.push(t[1]);Ke.lastIndex=0}return e}function te(n,e,t){let s=`${n}`,i=s.replace(Ke,(r,a)=>{let o=e[a];return o==null&&(t.push(Ps(a)),o=""),o.toString()});return i==s?n:i}var Ks=/-+([a-z0-9])/g;function Ee(n){return n.replace(Ks,(...e)=>e[1].toUpperCase())}function qs(n){return n.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}function ts(n,e){return n===0||e===0}function ss(n,e,t){if(t.size&&e.length){let s=e[0],i=[];if(t.forEach((r,a)=>{s.has(a)||i.push(a),s.set(a,r)}),i.length)for(let r=1;r<e.length;r++){let a=e[r];i.forEach(o=>a.set(o,Te(n,o)))}}return e}function O(n,e,t){switch(e.type){case S.Trigger:return n.visitTrigger(e,t);case S.State:return n.visitState(e,t);case S.Transition:return n.visitTransition(e,t);case S.Sequence:return n.visitSequence(e,t);case S.Group:return n.visitGroup(e,t);case S.Animate:return n.visitAnimate(e,t);case S.Keyframes:return n.visitKeyframes(e,t);case S.Style:return n.visitStyle(e,t);case S.Reference:return n.visitReference(e,t);case S.AnimateChild:return n.visitAnimateChild(e,t);case S.AnimateRef:return n.visitAnimateRef(e,t);case S.Query:return n.visitQuery(e,t);case S.Stagger:return n.visitStagger(e,t);default:throw Ns(e.type)}}function Te(n,e){return window.getComputedStyle(n)[e]}var gs=(()=>{class n{validateStyleProperty(t){return Zt(t)}containsElement(t,s){return Qe(t,s)}getParentElement(t){return ye(t)}query(t,s,i){return Ve(t,s,i)}computeStyle(t,s,i){return i||""}animate(t,s,i,r,a,o=[],l){return new Y(i,r)}static \u0275fac=function(s){return new(s||n)};static \u0275prov=Tt({token:n,factory:n.\u0275fac})}return n})(),is=class{static NOOP=new gs},Ze=class{},xe=class{normalizePropertyName(e,t){return e}normalizeStyleValue(e,t,s,i){return s}},Bs=new Set(["width","height","minWidth","minHeight","maxWidth","maxHeight","left","top","bottom","right","fontSize","outlineWidth","outlineOffset","paddingTop","paddingLeft","paddingBottom","paddingRight","marginTop","marginLeft","marginBottom","marginRight","borderRadius","borderWidth","borderTopWidth","borderLeftWidth","borderRightWidth","borderBottomWidth","textIndent","perspective"]),et=class extends Ze{normalizePropertyName(e,t){return Ee(e)}normalizeStyleValue(e,t,s,i){let r="",a=s.toString().trim();if(Bs.has(t)&&s!==0&&s!=="0")if(typeof s=="number")r="px";else{let o=s.match(/^[+-]?[\d\.]+([a-z]*)$/);o&&o[1].length==0&&i.push(At(e,s))}return a+r}};var Pe="*";function Qs(n,e){let t=[];return typeof n=="string"?n.split(/\s*,\s*/).forEach(s=>Vs(s,t,e)):t.push(n),t}function Vs(n,e,t){if(n[0]==":"){let l=$s(n,t);if(typeof l=="function"){e.push(l);return}n=l}let s=n.match(/^(\*|[-\w]+)\s*(<?[=-]>)\s*(\*|[-\w]+)$/);if(s==null||s.length<4)return t.push(zt(n)),e;let i=s[1],r=s[2],a=s[3];e.push(ns(i,a));let o=i==Pe&&a==Pe;r[0]=="<"&&!o&&e.push(ns(a,i))}function $s(n,e){switch(n){case":enter":return"void => *";case":leave":return"* => void";case":increment":return(t,s)=>parseFloat(s)>parseFloat(t);case":decrement":return(t,s)=>parseFloat(s)<parseFloat(t);default:return e.push(Kt(n)),"* => *"}}var ve=new Set(["true","1"]),be=new Set(["false","0"]);function ns(n,e){let t=ve.has(n)||be.has(n),s=ve.has(e)||be.has(e);return(i,r)=>{let a=n==Pe||n==i,o=e==Pe||e==r;return!a&&t&&typeof i=="boolean"&&(a=i?ve.has(n):be.has(n)),!o&&s&&typeof r=="boolean"&&(o=r?ve.has(e):be.has(e)),a&&o}}var ys=":self",Us=new RegExp(`s*${ys}s*,?`,"g");function ft(n,e,t,s){return new tt(n).build(e,t,s)}var rs="",tt=class{_driver;constructor(e){this._driver=e}build(e,t,s){let i=new st(t);return this._resetContextStyleTimingState(i),O(this,ee(e),i)}_resetContextStyleTimingState(e){e.currentQuerySelector=rs,e.collectedStyles=new Map,e.collectedStyles.set(rs,new Map),e.currentTime=0}visitTrigger(e,t){let s=t.queryCount=0,i=t.depCount=0,r=[],a=[];return e.name.charAt(0)=="@"&&t.errors.push(Pt()),e.definitions.forEach(o=>{if(this._resetContextStyleTimingState(t),o.type==S.State){let l=o,u=l.name;u.toString().split(/\s*,\s*/).forEach(h=>{l.name=h,r.push(this.visitState(l,t))}),l.name=u}else if(o.type==S.Transition){let l=this.visitTransition(o,t);s+=l.queryCount,i+=l.depCount,a.push(l)}else t.errors.push(Nt())}),{type:S.Trigger,name:e.name,states:r,transitions:a,queryCount:s,depCount:i,options:null}}visitState(e,t){let s=this.visitStyle(e.styles,t),i=e.options&&e.options.params||null;if(s.containsDynamicStyles){let r=new Set,a=i||{};s.styles.forEach(o=>{o instanceof Map&&o.forEach(l=>{je(l).forEach(u=>{a.hasOwnProperty(u)||r.add(u)})})}),r.size&&t.errors.push(Mt(e.name,[...r.values()]))}return{type:S.State,name:e.name,style:s,options:i?{params:i}:null}}visitTransition(e,t){t.queryCount=0,t.depCount=0;let s=O(this,ee(e.animation),t),i=Qs(e.expr,t.errors);return{type:S.Transition,matchers:i,animation:s,queryCount:t.queryCount,depCount:t.depCount,options:J(e.options)}}visitSequence(e,t){return{type:S.Sequence,steps:e.steps.map(s=>O(this,s,t)),options:J(e.options)}}visitGroup(e,t){let s=t.currentTime,i=0,r=e.steps.map(a=>{t.currentTime=s;let o=O(this,a,t);return i=Math.max(i,t.currentTime),o});return t.currentTime=i,{type:S.Group,steps:r,options:J(e.options)}}visitAnimate(e,t){let s=Hs(e.timings,t.errors);t.currentAnimateTimings=s;let i,r=e.styles?e.styles:Fe({});if(r.type==S.Keyframes)i=this.visitKeyframes(r,t);else{let a=e.styles,o=!1;if(!a){o=!0;let u={};s.easing&&(u.easing=s.easing),a=Fe(u)}t.currentTime+=s.duration+s.delay;let l=this.visitStyle(a,t);l.isEmptyStep=o,i=l}return t.currentAnimateTimings=null,{type:S.Animate,timings:s,style:i,options:null}}visitStyle(e,t){let s=this._makeStyleAst(e,t);return this._validateStyleAst(s,t),s}_makeStyleAst(e,t){let s=[],i=Array.isArray(e.styles)?e.styles:[e.styles];for(let o of i)typeof o=="string"?o===z?s.push(o):t.errors.push(Ct(o)):s.push(new Map(Object.entries(o)));let r=!1,a=null;return s.forEach(o=>{if(o instanceof Map&&(o.has("easing")&&(a=o.get("easing"),o.delete("easing")),!r)){for(let l of o.values())if(l.toString().indexOf($e)>=0){r=!0;break}}}),{type:S.Style,styles:s,easing:a,offset:e.offset,containsDynamicStyles:r,options:null}}_validateStyleAst(e,t){let s=t.currentAnimateTimings,i=t.currentTime,r=t.currentTime;s&&r>0&&(r-=s.duration+s.delay),e.styles.forEach(a=>{typeof a!="string"&&a.forEach((o,l)=>{let u=t.collectedStyles.get(t.currentQuerySelector),h=u.get(l),c=!0;h&&(r!=i&&r>=h.startTime&&i<=h.endTime&&(t.errors.push(kt(l,h.startTime,h.endTime,r,i)),c=!1),r=h.startTime),c&&u.set(l,{startTime:r,endTime:i}),t.options&&es(o,t.options,t.errors)})})}visitKeyframes(e,t){let s={type:S.Keyframes,styles:[],options:null};if(!t.currentAnimateTimings)return t.errors.push(Dt()),s;let i=1,r=0,a=[],o=!1,l=!1,u=0,h=e.steps.map(w=>{let A=this._makeStyleAst(w,t),C=A.offset!=null?A.offset:Ws(A.styles),N=0;return C!=null&&(r++,N=A.offset=C),l=l||N<0||N>1,o=o||N<u,u=N,a.push(N),A});l&&t.errors.push(Rt()),o&&t.errors.push(Ot());let c=e.steps.length,_=0;r>0&&r<c?t.errors.push(Lt()):r==0&&(_=i/(c-1));let y=c-1,f=t.currentTime,g=t.currentAnimateTimings,v=g.duration;return h.forEach((w,A)=>{let C=_>0?A==y?1:_*A:a[A],N=C*v;t.currentTime=f+g.delay+N,g.duration=N,this._validateStyleAst(w,t),w.offset=C,s.styles.push(w)}),s}visitReference(e,t){return{type:S.Reference,animation:O(this,ee(e.animation),t),options:J(e.options)}}visitAnimateChild(e,t){return t.depCount++,{type:S.AnimateChild,options:J(e.options)}}visitAnimateRef(e,t){return{type:S.AnimateRef,animation:this.visitReference(e.animation,t),options:J(e.options)}}visitQuery(e,t){let s=t.currentQuerySelector,i=e.options||{};t.queryCount++,t.currentQuery=e;let[r,a]=Gs(e.selector);t.currentQuerySelector=s.length?s+" "+r:r,R(t.collectedStyles,t.currentQuerySelector,new Map);let o=O(this,ee(e.animation),t);return t.currentQuery=null,t.currentQuerySelector=s,{type:S.Query,selector:r,limit:i.limit||0,optional:!!i.optional,includeSelf:a,animation:o,originalSelector:e.selector,options:J(e.options)}}visitStagger(e,t){t.currentQuery||t.errors.push(Ft());let s=e.timings==="full"?{duration:0,delay:0,easing:"full"}:le(e.timings,t.errors,!0);return{type:S.Stagger,animation:O(this,ee(e.animation),t),timings:s,options:null}}};function Gs(n){let e=!!n.split(/\s*,\s*/).find(t=>t==ys);return e&&(n=n.replace(Us,"")),n=n.replace(/@\*/g,oe).replace(/@\w+/g,t=>oe+"-"+t.slice(1)).replace(/:animating/g,Se),[n,e]}function js(n){return n?fe({},n):null}var st=class{errors;queryCount=0;depCount=0;currentTransition=null;currentQuery=null;currentQuerySelector=null;currentAnimateTimings=null;currentTime=0;collectedStyles=new Map;options=null;unsupportedCSSPropertiesFound=new Set;constructor(e){this.errors=e}};function Ws(n){if(typeof n=="string")return null;let e=null;if(Array.isArray(n))n.forEach(t=>{if(t instanceof Map&&t.has("offset")){let s=t;e=parseFloat(s.get("offset")),s.delete("offset")}});else if(n instanceof Map&&n.has("offset")){let t=n;e=parseFloat(t.get("offset")),t.delete("offset")}return e}function Hs(n,e){if(n.hasOwnProperty("duration"))return n;if(typeof n=="number"){let r=le(n,e).duration;return We(r,0,"")}let t=n;if(t.split(/\s+/).some(r=>r.charAt(0)=="{"&&r.charAt(1)=="{")){let r=We(0,0,"");return r.dynamic=!0,r.strValue=t,r}let i=le(t,e);return We(i.duration,i.delay,i.easing)}function J(n){return n?(n=fe({},n),n.params&&(n.params=js(n.params))):n={},n}function We(n,e,t){return{duration:n,delay:e,easing:t}}function mt(n,e,t,s,i,r,a=null,o=!1){return{type:1,element:n,keyframes:e,preStyleProps:t,postStyleProps:s,duration:i,delay:r,totalTime:i+r,easing:a,subTimeline:o}}var ie=class{_map=new Map;get(e){return this._map.get(e)||[]}append(e,t){let s=this._map.get(e);s||this._map.set(e,s=[]),s.push(...t)}has(e){return this._map.has(e)}clear(){this._map.clear()}},Ys=1,Xs=":enter",Js=new RegExp(Xs,"g"),Zs=":leave",xs=new RegExp(Zs,"g");function pt(n,e,t,s,i,r=new Map,a=new Map,o,l,u=[]){return new it().buildKeyframes(n,e,t,s,i,r,a,o,l,u)}var it=class{buildKeyframes(e,t,s,i,r,a,o,l,u,h=[]){u=u||new ie;let c=new nt(e,t,u,i,r,h,[]);c.options=l;let _=l.delay?V(l.delay):0;c.currentTimeline.delayNextStep(_),c.currentTimeline.setStyles([a],null,c.errors,l),O(this,s,c);let y=c.timelines.filter(f=>f.containsAnimation());if(y.length&&o.size){let f;for(let g=y.length-1;g>=0;g--){let v=y[g];if(v.element===t){f=v;break}}f&&!f.allowOnlyTimelineStyles()&&f.setStyles([o],null,c.errors,l)}return y.length?y.map(f=>f.buildKeyframes()):[mt(t,[],[],[],0,_,"",!1)]}visitTrigger(e,t){}visitState(e,t){}visitTransition(e,t){}visitAnimateChild(e,t){let s=t.subInstructions.get(t.element);if(s){let i=t.createSubContext(e.options),r=t.currentTimeline.currentTime,a=this._visitSubInstructions(s,i,i.options);r!=a&&t.transformIntoNewTimeline(a)}t.previousNode=e}visitAnimateRef(e,t){let s=t.createSubContext(e.options);s.transformIntoNewTimeline(),this._applyAnimationRefDelays([e.options,e.animation.options],t,s),this.visitReference(e.animation,s),t.transformIntoNewTimeline(s.currentTimeline.currentTime),t.previousNode=e}_applyAnimationRefDelays(e,t,s){for(let i of e){let r=i?.delay;if(r){let a=typeof r=="number"?r:V(te(r,i?.params??{},t.errors));s.delayNextStep(a)}}}_visitSubInstructions(e,t,s){let r=t.currentTimeline.currentTime,a=s.duration!=null?V(s.duration):null,o=s.delay!=null?V(s.delay):null;return a!==0&&e.forEach(l=>{let u=t.appendInstructionToTimeline(l,a,o);r=Math.max(r,u.duration+u.delay)}),r}visitReference(e,t){t.updateOptions(e.options,!0),O(this,e.animation,t),t.previousNode=e}visitSequence(e,t){let s=t.subContextCount,i=t,r=e.options;if(r&&(r.params||r.delay)&&(i=t.createSubContext(r),i.transformIntoNewTimeline(),r.delay!=null)){i.previousNode.type==S.Style&&(i.currentTimeline.snapshotCurrentStyles(),i.previousNode=Ne);let a=V(r.delay);i.delayNextStep(a)}e.steps.length&&(e.steps.forEach(a=>O(this,a,i)),i.currentTimeline.applyStylesToKeyframe(),i.subContextCount>s&&i.transformIntoNewTimeline()),t.previousNode=e}visitGroup(e,t){let s=[],i=t.currentTimeline.currentTime,r=e.options&&e.options.delay?V(e.options.delay):0;e.steps.forEach(a=>{let o=t.createSubContext(e.options);r&&o.delayNextStep(r),O(this,a,o),i=Math.max(i,o.currentTimeline.currentTime),s.push(o.currentTimeline)}),s.forEach(a=>t.currentTimeline.mergeTimelineCollectedStyles(a)),t.transformIntoNewTimeline(i),t.previousNode=e}_visitTiming(e,t){if(e.dynamic){let s=e.strValue,i=t.params?te(s,t.params,t.errors):s;return le(i,t.errors)}else return{duration:e.duration,delay:e.delay,easing:e.easing}}visitAnimate(e,t){let s=t.currentAnimateTimings=this._visitTiming(e.timings,t),i=t.currentTimeline;s.delay&&(t.incrementTime(s.delay),i.snapshotCurrentStyles());let r=e.style;r.type==S.Keyframes?this.visitKeyframes(r,t):(t.incrementTime(s.duration),this.visitStyle(r,t),i.applyStylesToKeyframe()),t.currentAnimateTimings=null,t.previousNode=e}visitStyle(e,t){let s=t.currentTimeline,i=t.currentAnimateTimings;!i&&s.hasCurrentStyleProperties()&&s.forwardFrame();let r=i&&i.easing||e.easing;e.isEmptyStep?s.applyEmptyStep(r):s.setStyles(e.styles,r,t.errors,t.options),t.previousNode=e}visitKeyframes(e,t){let s=t.currentAnimateTimings,i=t.currentTimeline.duration,r=s.duration,o=t.createSubContext().currentTimeline;o.easing=s.easing,e.styles.forEach(l=>{let u=l.offset||0;o.forwardTime(u*r),o.setStyles(l.styles,l.easing,t.errors,t.options),o.applyStylesToKeyframe()}),t.currentTimeline.mergeTimelineCollectedStyles(o),t.transformIntoNewTimeline(i+r),t.previousNode=e}visitQuery(e,t){let s=t.currentTimeline.currentTime,i=e.options||{},r=i.delay?V(i.delay):0;r&&(t.previousNode.type===S.Style||s==0&&t.currentTimeline.hasCurrentStyleProperties())&&(t.currentTimeline.snapshotCurrentStyles(),t.previousNode=Ne);let a=s,o=t.invokeQuery(e.selector,e.originalSelector,e.limit,e.includeSelf,!!i.optional,t.errors);t.currentQueryTotal=o.length;let l=null;o.forEach((u,h)=>{t.currentQueryIndex=h;let c=t.createSubContext(e.options,u);r&&c.delayNextStep(r),u===t.element&&(l=c.currentTimeline),O(this,e.animation,c),c.currentTimeline.applyStylesToKeyframe();let _=c.currentTimeline.currentTime;a=Math.max(a,_)}),t.currentQueryIndex=0,t.currentQueryTotal=0,t.transformIntoNewTimeline(a),l&&(t.currentTimeline.mergeTimelineCollectedStyles(l),t.currentTimeline.snapshotCurrentStyles()),t.previousNode=e}visitStagger(e,t){let s=t.parentContext,i=t.currentTimeline,r=e.timings,a=Math.abs(r.duration),o=a*(t.currentQueryTotal-1),l=a*t.currentQueryIndex;switch(r.duration<0?"reverse":r.easing){case"reverse":l=o-l;break;case"full":l=s.currentStaggerTime;break}let h=t.currentTimeline;l&&h.delayNextStep(l);let c=h.currentTime;O(this,e.animation,t),t.previousNode=e,s.currentStaggerTime=i.currentTime-c+(i.startTime-s.currentTimeline.startTime)}},Ne={},nt=class n{_driver;element;subInstructions;_enterClassName;_leaveClassName;errors;timelines;parentContext=null;currentTimeline;currentAnimateTimings=null;previousNode=Ne;subContextCount=0;options={};currentQueryIndex=0;currentQueryTotal=0;currentStaggerTime=0;constructor(e,t,s,i,r,a,o,l){this._driver=e,this.element=t,this.subInstructions=s,this._enterClassName=i,this._leaveClassName=r,this.errors=a,this.timelines=o,this.currentTimeline=l||new Me(this._driver,t,0),o.push(this.currentTimeline)}get params(){return this.options.params}updateOptions(e,t){if(!e)return;let s=e,i=this.options;s.duration!=null&&(i.duration=V(s.duration)),s.delay!=null&&(i.delay=V(s.delay));let r=s.params;if(r){let a=i.params;a||(a=this.options.params={}),Object.keys(r).forEach(o=>{(!t||!a.hasOwnProperty(o))&&(a[o]=te(r[o],a,this.errors))})}}_copyOptions(){let e={};if(this.options){let t=this.options.params;if(t){let s=e.params={};Object.keys(t).forEach(i=>{s[i]=t[i]})}}return e}createSubContext(e=null,t,s){let i=t||this.element,r=new n(this._driver,i,this.subInstructions,this._enterClassName,this._leaveClassName,this.errors,this.timelines,this.currentTimeline.fork(i,s||0));return r.previousNode=this.previousNode,r.currentAnimateTimings=this.currentAnimateTimings,r.options=this._copyOptions(),r.updateOptions(e),r.currentQueryIndex=this.currentQueryIndex,r.currentQueryTotal=this.currentQueryTotal,r.parentContext=this,this.subContextCount++,r}transformIntoNewTimeline(e){return this.previousNode=Ne,this.currentTimeline=this.currentTimeline.fork(this.element,e),this.timelines.push(this.currentTimeline),this.currentTimeline}appendInstructionToTimeline(e,t,s){let i={duration:t??e.duration,delay:this.currentTimeline.currentTime+(s??0)+e.delay,easing:""},r=new rt(this._driver,e.element,e.keyframes,e.preStyleProps,e.postStyleProps,i,e.stretchStartingKeyframe);return this.timelines.push(r),i}incrementTime(e){this.currentTimeline.forwardTime(this.currentTimeline.duration+e)}delayNextStep(e){e>0&&this.currentTimeline.delayNextStep(e)}invokeQuery(e,t,s,i,r,a){let o=[];if(i&&o.push(this.element),e.length>0){e=e.replace(Js,"."+this._enterClassName),e=e.replace(xs,"."+this._leaveClassName);let l=s!=1,u=this._driver.query(this.element,e,l);s!==0&&(u=s<0?u.slice(u.length+s,u.length):u.slice(0,s)),o.push(...u)}return!r&&o.length==0&&a.push(It(t)),o}},Me=class n{_driver;element;startTime;_elementTimelineStylesLookup;duration=0;easing=null;_previousKeyframe=new Map;_currentKeyframe=new Map;_keyframes=new Map;_styleSummary=new Map;_localTimelineStyles=new Map;_globalTimelineStyles;_pendingStyles=new Map;_backFill=new Map;_currentEmptyStepKeyframe=null;constructor(e,t,s,i){this._driver=e,this.element=t,this.startTime=s,this._elementTimelineStylesLookup=i,this._elementTimelineStylesLookup||(this._elementTimelineStylesLookup=new Map),this._globalTimelineStyles=this._elementTimelineStylesLookup.get(t),this._globalTimelineStyles||(this._globalTimelineStyles=this._localTimelineStyles,this._elementTimelineStylesLookup.set(t,this._localTimelineStyles)),this._loadKeyframe()}containsAnimation(){switch(this._keyframes.size){case 0:return!1;case 1:return this.hasCurrentStyleProperties();default:return!0}}hasCurrentStyleProperties(){return this._currentKeyframe.size>0}get currentTime(){return this.startTime+this.duration}delayNextStep(e){let t=this._keyframes.size===1&&this._pendingStyles.size;this.duration||t?(this.forwardTime(this.currentTime+e),t&&this.snapshotCurrentStyles()):this.startTime+=e}fork(e,t){return this.applyStylesToKeyframe(),new n(this._driver,e,t||this.currentTime,this._elementTimelineStylesLookup)}_loadKeyframe(){this._currentKeyframe&&(this._previousKeyframe=this._currentKeyframe),this._currentKeyframe=this._keyframes.get(this.duration),this._currentKeyframe||(this._currentKeyframe=new Map,this._keyframes.set(this.duration,this._currentKeyframe))}forwardFrame(){this.duration+=Ys,this._loadKeyframe()}forwardTime(e){this.applyStylesToKeyframe(),this.duration=e,this._loadKeyframe()}_updateStyle(e,t){this._localTimelineStyles.set(e,t),this._globalTimelineStyles.set(e,t),this._styleSummary.set(e,{time:this.currentTime,value:t})}allowOnlyTimelineStyles(){return this._currentEmptyStepKeyframe!==this._currentKeyframe}applyEmptyStep(e){e&&this._previousKeyframe.set("easing",e);for(let[t,s]of this._globalTimelineStyles)this._backFill.set(t,s||z),this._currentKeyframe.set(t,z);this._currentEmptyStepKeyframe=this._currentKeyframe}setStyles(e,t,s,i){t&&this._previousKeyframe.set("easing",t);let r=i&&i.params||{},a=ei(e,this._globalTimelineStyles);for(let[o,l]of a){let u=te(l,r,s);this._pendingStyles.set(o,u),this._localTimelineStyles.has(o)||this._backFill.set(o,this._globalTimelineStyles.get(o)??z),this._updateStyle(o,u)}}applyStylesToKeyframe(){this._pendingStyles.size!=0&&(this._pendingStyles.forEach((e,t)=>{this._currentKeyframe.set(t,e)}),this._pendingStyles.clear(),this._localTimelineStyles.forEach((e,t)=>{this._currentKeyframe.has(t)||this._currentKeyframe.set(t,e)}))}snapshotCurrentStyles(){for(let[e,t]of this._localTimelineStyles)this._pendingStyles.set(e,t),this._updateStyle(e,t)}getFinalKeyframe(){return this._keyframes.get(this.duration)}get properties(){let e=[];for(let t in this._currentKeyframe)e.push(t);return e}mergeTimelineCollectedStyles(e){e._styleSummary.forEach((t,s)=>{let i=this._styleSummary.get(s);(!i||t.time>i.time)&&this._updateStyle(s,t.value)})}buildKeyframes(){this.applyStylesToKeyframe();let e=new Set,t=new Set,s=this._keyframes.size===1&&this.duration===0,i=[];this._keyframes.forEach((o,l)=>{let u=new Map([...this._backFill,...o]);u.forEach((h,c)=>{h===ne?e.add(c):h===z&&t.add(c)}),s||u.set("offset",l/this.duration),i.push(u)});let r=[...e.values()],a=[...t.values()];if(s){let o=i[0],l=new Map(o);o.set("offset",0),l.set("offset",1),i=[o,l]}return mt(this.element,i,r,a,this.duration,this.startTime,this.easing,!1)}},rt=class extends Me{keyframes;preStyleProps;postStyleProps;_stretchStartingKeyframe;timings;constructor(e,t,s,i,r,a,o=!1){super(e,t,a.delay),this.keyframes=s,this.preStyleProps=i,this.postStyleProps=r,this._stretchStartingKeyframe=o,this.timings={duration:a.duration,delay:a.delay,easing:a.easing}}containsAnimation(){return this.keyframes.length>1}buildKeyframes(){let e=this.keyframes,{delay:t,duration:s,easing:i}=this.timings;if(this._stretchStartingKeyframe&&t){let r=[],a=s+t,o=t/a,l=new Map(e[0]);l.set("offset",0),r.push(l);let u=new Map(e[0]);u.set("offset",as(o)),r.push(u);let h=e.length-1;for(let c=1;c<=h;c++){let _=new Map(e[c]),y=_.get("offset"),f=t+y*s;_.set("offset",as(f/a)),r.push(_)}s=a,t=0,i="",e=r}return mt(this.element,e,this.preStyleProps,this.postStyleProps,s,t,i,!0)}};function as(n,e=3){let t=Math.pow(10,e-1);return Math.round(n*t)/t}function ei(n,e){let t=new Map,s;return n.forEach(i=>{if(i==="*"){s??=e.keys();for(let r of s)t.set(r,z)}else for(let[r,a]of i)t.set(r,a)}),t}function os(n,e,t,s,i,r,a,o,l,u,h,c,_){return{type:0,element:n,triggerName:e,isRemovalTransition:i,fromState:t,fromStyles:r,toState:s,toStyles:a,timelines:o,queriedElements:l,preStyleProps:u,postStyleProps:h,totalTime:c,errors:_}}var He={},Ce=class{_triggerName;ast;_stateStyles;constructor(e,t,s){this._triggerName=e,this.ast=t,this._stateStyles=s}match(e,t,s,i){return ti(this.ast.matchers,e,t,s,i)}buildStyles(e,t,s){let i=this._stateStyles.get("*");return e!==void 0&&(i=this._stateStyles.get(e?.toString())||i),i?i.buildStyles(t,s):new Map}build(e,t,s,i,r,a,o,l,u,h){let c=[],_=this.ast.options&&this.ast.options.params||He,y=o&&o.params||He,f=this.buildStyles(s,y,c),g=l&&l.params||He,v=this.buildStyles(i,g,c),w=new Set,A=new Map,C=new Map,N=i==="void",Z={params:_s(g,_),delay:this.ast.options?.delay},B=h?[]:pt(e,t,this.ast.animation,r,a,f,v,Z,u,c),k=0;return B.forEach(D=>{k=Math.max(D.duration+D.delay,k)}),c.length?os(t,this._triggerName,s,i,N,f,v,[],[],A,C,k,c):(B.forEach(D=>{let j=D.element,x=R(A,j,new Set);D.preStyleProps.forEach(W=>x.add(W));let gt=R(C,j,new Set);D.postStyleProps.forEach(W=>gt.add(W)),j!==t&&w.add(j)}),os(t,this._triggerName,s,i,N,f,v,B,[...w.values()],A,C,k))}};function ti(n,e,t,s,i){return n.some(r=>r(e,t,s,i))}function _s(n,e){let t=fe({},e);return Object.entries(n).forEach(([s,i])=>{i!=null&&(t[s]=i)}),t}var at=class{styles;defaultParams;normalizer;constructor(e,t,s){this.styles=e,this.defaultParams=t,this.normalizer=s}buildStyles(e,t){let s=new Map,i=_s(e,this.defaultParams);return this.styles.styles.forEach(r=>{typeof r!="string"&&r.forEach((a,o)=>{a&&(a=te(a,i,t));let l=this.normalizer.normalizePropertyName(o,t);a=this.normalizer.normalizeStyleValue(o,l,a,t),s.set(o,a)})}),s}};function si(n,e,t){return new ot(n,e,t)}var ot=class{name;ast;_normalizer;transitionFactories=[];fallbackTransition;states=new Map;constructor(e,t,s){this.name=e,this.ast=t,this._normalizer=s,t.states.forEach(i=>{let r=i.options&&i.options.params||{};this.states.set(i.name,new at(i.style,r,s))}),ls(this.states,"true","1"),ls(this.states,"false","0"),t.transitions.forEach(i=>{this.transitionFactories.push(new Ce(e,i,this.states))}),this.fallbackTransition=ii(e,this.states)}get containsQueries(){return this.ast.queryCount>0}matchTransition(e,t,s,i){return this.transitionFactories.find(a=>a.match(e,t,s,i))||null}matchStyles(e,t,s){return this.fallbackTransition.buildStyles(e,t,s)}};function ii(n,e,t){let s=[(a,o)=>!0],i={type:S.Sequence,steps:[],options:null},r={type:S.Transition,animation:i,matchers:s,options:null,queryCount:0,depCount:0};return new Ce(n,r,e)}function ls(n,e,t){n.has(e)?n.has(t)||n.set(t,n.get(e)):n.has(t)&&n.set(e,n.get(t))}var ni=new ie,lt=class{bodyNode;_driver;_normalizer;_animations=new Map;_playersById=new Map;players=[];constructor(e,t,s){this.bodyNode=e,this._driver=t,this._normalizer=s}register(e,t){let s=[],i=[],r=ft(this._driver,t,s,i);if(s.length)throw Vt(s);this._animations.set(e,r)}_buildPlayer(e,t,s){let i=e.element,r=qe(this._normalizer,e.keyframes,t,s);return this._driver.animate(i,r,e.duration,e.delay,e.easing,[],!0)}create(e,t,s={}){let i=[],r=this._animations.get(e),a,o=new Map;if(r?(a=pt(this._driver,t,r,_e,re,new Map,new Map,s,ni,i),a.forEach(h=>{let c=R(o,h.element,new Map);h.postStyleProps.forEach(_=>c.set(_,null))})):(i.push($t()),a=[]),i.length)throw Ut(i);o.forEach((h,c)=>{h.forEach((_,y)=>{h.set(y,this._driver.computeStyle(c,y,z))})});let l=a.map(h=>{let c=o.get(h.element);return this._buildPlayer(h,new Map,c)}),u=$(l);return this._playersById.set(e,u),u.onDestroy(()=>this.destroy(e)),this.players.push(u),u}destroy(e){let t=this._getPlayer(e);t.destroy(),this._playersById.delete(e);let s=this.players.indexOf(t);s>=0&&this.players.splice(s,1)}_getPlayer(e){let t=this._playersById.get(e);if(!t)throw Gt(e);return t}listen(e,t,s,i){let r=ge(t,"","","");return pe(this._getPlayer(e),s,r,i),()=>{}}command(e,t,s,i){if(s=="register"){this.register(e,i[0]);return}if(s=="create"){let a=i[0]||{};this.create(e,t,a);return}let r=this._getPlayer(e);switch(s){case"play":r.play();break;case"pause":r.pause();break;case"reset":r.reset();break;case"restart":r.restart();break;case"finish":r.finish();break;case"init":r.init();break;case"setPosition":r.setPosition(parseFloat(i[0]));break;case"destroy":this.destroy(e);break}}},us="ng-animate-queued",ri=".ng-animate-queued",Ye="ng-animate-disabled",ai=".ng-animate-disabled",oi="ng-star-inserted",li=".ng-star-inserted",ui=[],Ss={namespaceId:"",setForRemoval:!1,setForMove:!1,hasAnimation:!1,removedBeforeQueried:!1},ci={namespaceId:"",setForMove:!1,setForRemoval:!1,hasAnimation:!1,removedBeforeQueried:!0},q="__ng_removed",ce=class{namespaceId;value;options;get params(){return this.options.params}constructor(e,t=""){this.namespaceId=t;let s=e&&e.hasOwnProperty("value"),i=s?e.value:e;if(this.value=di(i),s){let r=e,{value:a}=r,o=Et(r,["value"]);this.options=o}else this.options={};this.options.params||(this.options.params={})}absorbOptions(e){let t=e.params;if(t){let s=this.options.params;Object.keys(t).forEach(i=>{s[i]==null&&(s[i]=t[i])})}}},ue="void",Xe=new ce(ue),ut=class{id;hostElement;_engine;players=[];_triggers=new Map;_queue=[];_elementListeners=new Map;_hostClassName;constructor(e,t,s){this.id=e,this.hostElement=t,this._engine=s,this._hostClassName="ng-tns-"+e,I(t,this._hostClassName)}listen(e,t,s,i){if(!this._triggers.has(t))throw jt(s,t);if(s==null||s.length==0)throw Wt(t);if(!fi(s))throw Ht(s,t);let r=R(this._elementListeners,e,[]),a={name:t,phase:s,callback:i};r.push(a);let o=R(this._engine.statesByElement,e,new Map);return o.has(t)||(I(e,ae),I(e,ae+"-"+t),o.set(t,Xe)),()=>{this._engine.afterFlush(()=>{let l=r.indexOf(a);l>=0&&r.splice(l,1),this._triggers.has(t)||o.delete(t)})}}register(e,t){return this._triggers.has(e)?!1:(this._triggers.set(e,t),!0)}_getTrigger(e){let t=this._triggers.get(e);if(!t)throw Yt(e);return t}trigger(e,t,s,i=!0){let r=this._getTrigger(t),a=new he(this.id,t,e),o=this._engine.statesByElement.get(e);o||(I(e,ae),I(e,ae+"-"+t),this._engine.statesByElement.set(e,o=new Map));let l=o.get(t),u=new ce(s,this.id);if(!(s&&s.hasOwnProperty("value"))&&l&&u.absorbOptions(l.options),o.set(t,u),l||(l=Xe),!(u.value===ue)&&l.value===u.value){if(!gi(l.params,u.params)){let g=[],v=r.matchStyles(l.value,l.params,g),w=r.matchStyles(u.value,u.params,g);g.length?this._engine.reportError(g):this._engine.afterFlush(()=>{G(e,v),K(e,w)})}return}let _=R(this._engine.playersByElement,e,[]);_.forEach(g=>{g.namespaceId==this.id&&g.triggerName==t&&g.queued&&g.destroy()});let y=r.matchTransition(l.value,u.value,e,u.params),f=!1;if(!y){if(!i)return;y=r.fallbackTransition,f=!0}return this._engine.totalQueuedPlayers++,this._queue.push({element:e,triggerName:t,transition:y,fromState:l,toState:u,player:a,isFallbackTransition:f}),f||(I(e,us),a.onStart(()=>{se(e,us)})),a.onDone(()=>{let g=this.players.indexOf(a);g>=0&&this.players.splice(g,1);let v=this._engine.playersByElement.get(e);if(v){let w=v.indexOf(a);w>=0&&v.splice(w,1)}}),this.players.push(a),_.push(a),a}deregister(e){this._triggers.delete(e),this._engine.statesByElement.forEach(t=>t.delete(e)),this._elementListeners.forEach((t,s)=>{this._elementListeners.set(s,t.filter(i=>i.name!=e))})}clearElementCache(e){this._engine.statesByElement.delete(e),this._elementListeners.delete(e);let t=this._engine.playersByElement.get(e);t&&(t.forEach(s=>s.destroy()),this._engine.playersByElement.delete(e))}_signalRemovalForInnerTriggers(e,t){let s=this._engine.driver.query(e,oe,!0);s.forEach(i=>{if(i[q])return;let r=this._engine.fetchNamespacesByElement(i);r.size?r.forEach(a=>a.triggerLeaveAnimation(i,t,!1,!0)):this.clearElementCache(i)}),this._engine.afterFlushAnimationsDone(()=>s.forEach(i=>this.clearElementCache(i)))}triggerLeaveAnimation(e,t,s,i){let r=this._engine.statesByElement.get(e),a=new Map;if(r){let o=[];if(r.forEach((l,u)=>{if(a.set(u,l.value),this._triggers.has(u)){let h=this.trigger(e,u,ue,i);h&&o.push(h)}}),o.length)return this._engine.markElementAsRemoved(this.id,e,!0,t,a),s&&$(o).onDone(()=>this._engine.processLeaveNode(e)),!0}return!1}prepareLeaveAnimationListeners(e){let t=this._elementListeners.get(e),s=this._engine.statesByElement.get(e);if(t&&s){let i=new Set;t.forEach(r=>{let a=r.name;if(i.has(a))return;i.add(a);let l=this._triggers.get(a).fallbackTransition,u=s.get(a)||Xe,h=new ce(ue),c=new he(this.id,a,e);this._engine.totalQueuedPlayers++,this._queue.push({element:e,triggerName:a,transition:l,fromState:u,toState:h,player:c,isFallbackTransition:!0})})}}removeNode(e,t){let s=this._engine;if(e.childElementCount&&this._signalRemovalForInnerTriggers(e,t),this.triggerLeaveAnimation(e,t,!0))return;let i=!1;if(s.totalAnimations){let r=s.players.length?s.playersByQueriedElement.get(e):[];if(r&&r.length)i=!0;else{let a=e;for(;a=a.parentNode;)if(s.statesByElement.get(a)){i=!0;break}}}if(this.prepareLeaveAnimationListeners(e),i)s.markElementAsRemoved(this.id,e,!1,t);else{let r=e[q];(!r||r===Ss)&&(s.afterFlush(()=>this.clearElementCache(e)),s.destroyInnerAnimations(e),s._onRemovalComplete(e,t))}}insertNode(e,t){I(e,this._hostClassName)}drainQueuedTransitions(e){let t=[];return this._queue.forEach(s=>{let i=s.player;if(i.destroyed)return;let r=s.element,a=this._elementListeners.get(r);a&&a.forEach(o=>{if(o.name==s.triggerName){let l=ge(r,s.triggerName,s.fromState.value,s.toState.value);l._data=e,pe(s.player,o.phase,l,o.callback)}}),i.markedForDestroy?this._engine.afterFlush(()=>{i.destroy()}):t.push(s)}),this._queue=[],t.sort((s,i)=>{let r=s.transition.ast.depCount,a=i.transition.ast.depCount;return r==0||a==0?r-a:this._engine.driver.containsElement(s.element,i.element)?1:-1})}destroy(e){this.players.forEach(t=>t.destroy()),this._signalRemovalForInnerTriggers(this.hostElement,e)}},ct=class{bodyNode;driver;_normalizer;players=[];newHostElements=new Map;playersByElement=new Map;playersByQueriedElement=new Map;statesByElement=new Map;disabledNodes=new Set;totalAnimations=0;totalQueuedPlayers=0;_namespaceLookup={};_namespaceList=[];_flushFns=[];_whenQuietFns=[];namespacesByHostElement=new Map;collectedEnterElements=[];collectedLeaveElements=[];onRemovalComplete=(e,t)=>{};_onRemovalComplete(e,t){this.onRemovalComplete(e,t)}constructor(e,t,s){this.bodyNode=e,this.driver=t,this._normalizer=s}get queuedPlayers(){let e=[];return this._namespaceList.forEach(t=>{t.players.forEach(s=>{s.queued&&e.push(s)})}),e}createNamespace(e,t){let s=new ut(e,t,this);return this.bodyNode&&this.driver.containsElement(this.bodyNode,t)?this._balanceNamespaceList(s,t):(this.newHostElements.set(t,s),this.collectEnterElement(t)),this._namespaceLookup[e]=s}_balanceNamespaceList(e,t){let s=this._namespaceList,i=this.namespacesByHostElement;if(s.length-1>=0){let a=!1,o=this.driver.getParentElement(t);for(;o;){let l=i.get(o);if(l){let u=s.indexOf(l);s.splice(u+1,0,e),a=!0;break}o=this.driver.getParentElement(o)}a||s.unshift(e)}else s.push(e);return i.set(t,e),e}register(e,t){let s=this._namespaceLookup[e];return s||(s=this.createNamespace(e,t)),s}registerTrigger(e,t,s){let i=this._namespaceLookup[e];i&&i.register(t,s)&&this.totalAnimations++}destroy(e,t){e&&(this.afterFlush(()=>{}),this.afterFlushAnimationsDone(()=>{let s=this._fetchNamespace(e);this.namespacesByHostElement.delete(s.hostElement);let i=this._namespaceList.indexOf(s);i>=0&&this._namespaceList.splice(i,1),s.destroy(t),delete this._namespaceLookup[e]}))}_fetchNamespace(e){return this._namespaceLookup[e]}fetchNamespacesByElement(e){let t=new Set,s=this.statesByElement.get(e);if(s){for(let i of s.values())if(i.namespaceId){let r=this._fetchNamespace(i.namespaceId);r&&t.add(r)}}return t}trigger(e,t,s,i){if(we(t)){let r=this._fetchNamespace(e);if(r)return r.trigger(t,s,i),!0}return!1}insertNode(e,t,s,i){if(!we(t))return;let r=t[q];if(r&&r.setForRemoval){r.setForRemoval=!1,r.setForMove=!0;let a=this.collectedLeaveElements.indexOf(t);a>=0&&this.collectedLeaveElements.splice(a,1)}if(e){let a=this._fetchNamespace(e);a&&a.insertNode(t,s)}i&&this.collectEnterElement(t)}collectEnterElement(e){this.collectedEnterElements.push(e)}markElementAsDisabled(e,t){t?this.disabledNodes.has(e)||(this.disabledNodes.add(e),I(e,Ye)):this.disabledNodes.has(e)&&(this.disabledNodes.delete(e),se(e,Ye))}removeNode(e,t,s){if(we(t)){let i=e?this._fetchNamespace(e):null;i?i.removeNode(t,s):this.markElementAsRemoved(e,t,!1,s);let r=this.namespacesByHostElement.get(t);r&&r.id!==e&&r.removeNode(t,s)}else this._onRemovalComplete(t,s)}markElementAsRemoved(e,t,s,i,r){this.collectedLeaveElements.push(t),t[q]={namespaceId:e,setForRemoval:i,hasAnimation:s,removedBeforeQueried:!1,previousTriggersValues:r}}listen(e,t,s,i,r){return we(t)?this._fetchNamespace(e).listen(t,s,i,r):()=>{}}_buildInstruction(e,t,s,i,r){return e.transition.build(this.driver,e.element,e.fromState.value,e.toState.value,s,i,e.fromState.options,e.toState.options,t,r)}destroyInnerAnimations(e){let t=this.driver.query(e,oe,!0);t.forEach(s=>this.destroyActiveAnimationsForElement(s)),this.playersByQueriedElement.size!=0&&(t=this.driver.query(e,Se,!0),t.forEach(s=>this.finishActiveQueriedAnimationOnElement(s)))}destroyActiveAnimationsForElement(e){let t=this.playersByElement.get(e);t&&t.forEach(s=>{s.queued?s.markedForDestroy=!0:s.destroy()})}finishActiveQueriedAnimationOnElement(e){let t=this.playersByQueriedElement.get(e);t&&t.forEach(s=>s.finish())}whenRenderingDone(){return new Promise(e=>{if(this.players.length)return $(this.players).onDone(()=>e());e()})}processLeaveNode(e){let t=e[q];if(t&&t.setForRemoval){if(e[q]=Ss,t.namespaceId){this.destroyInnerAnimations(e);let s=this._fetchNamespace(t.namespaceId);s&&s.clearElementCache(e)}this._onRemovalComplete(e,t.setForRemoval)}e.classList?.contains(Ye)&&this.markElementAsDisabled(e,!1),this.driver.query(e,ai,!0).forEach(s=>{this.markElementAsDisabled(s,!1)})}flush(e=-1){let t=[];if(this.newHostElements.size&&(this.newHostElements.forEach((s,i)=>this._balanceNamespaceList(s,i)),this.newHostElements.clear()),this.totalAnimations&&this.collectedEnterElements.length)for(let s=0;s<this.collectedEnterElements.length;s++){let i=this.collectedEnterElements[s];I(i,oi)}if(this._namespaceList.length&&(this.totalQueuedPlayers||this.collectedLeaveElements.length)){let s=[];try{t=this._flushAnimations(s,e)}finally{for(let i=0;i<s.length;i++)s[i]()}}else for(let s=0;s<this.collectedLeaveElements.length;s++){let i=this.collectedLeaveElements[s];this.processLeaveNode(i)}if(this.totalQueuedPlayers=0,this.collectedEnterElements.length=0,this.collectedLeaveElements.length=0,this._flushFns.forEach(s=>s()),this._flushFns=[],this._whenQuietFns.length){let s=this._whenQuietFns;this._whenQuietFns=[],t.length?$(t).onDone(()=>{s.forEach(i=>i())}):s.forEach(i=>i())}}reportError(e){throw Xt(e)}_flushAnimations(e,t){let s=new ie,i=[],r=new Map,a=[],o=new Map,l=new Map,u=new Map,h=new Set;this.disabledNodes.forEach(d=>{h.add(d);let m=this.driver.query(d,ri,!0);for(let p=0;p<m.length;p++)h.add(m[p])});let c=this.bodyNode,_=Array.from(this.statesByElement.keys()),y=ds(_,this.collectedEnterElements),f=new Map,g=0;y.forEach((d,m)=>{let p=_e+g++;f.set(m,p),d.forEach(T=>I(T,p))});let v=[],w=new Set,A=new Set;for(let d=0;d<this.collectedLeaveElements.length;d++){let m=this.collectedLeaveElements[d],p=m[q];p&&p.setForRemoval&&(v.push(m),w.add(m),p.hasAnimation?this.driver.query(m,li,!0).forEach(T=>w.add(T)):A.add(m))}let C=new Map,N=ds(_,Array.from(w));N.forEach((d,m)=>{let p=re+g++;C.set(m,p),d.forEach(T=>I(T,p))}),e.push(()=>{y.forEach((d,m)=>{let p=f.get(m);d.forEach(T=>se(T,p))}),N.forEach((d,m)=>{let p=C.get(m);d.forEach(T=>se(T,p))}),v.forEach(d=>{this.processLeaveNode(d)})});let Z=[],B=[];for(let d=this._namespaceList.length-1;d>=0;d--)this._namespaceList[d].drainQueuedTransitions(t).forEach(p=>{let T=p.player,P=p.element;if(Z.push(T),this.collectedEnterElements.length){let M=P[q];if(M&&M.setForMove){if(M.previousTriggersValues&&M.previousTriggersValues.has(p.triggerName)){let H=M.previousTriggersValues.get(p.triggerName),F=this.statesByElement.get(p.element);if(F&&F.has(p.triggerName)){let de=F.get(p.triggerName);de.value=H,F.set(p.triggerName,de)}}T.destroy();return}}let Q=!c||!this.driver.containsElement(c,P),L=C.get(P),U=f.get(P),b=this._buildInstruction(p,s,U,L,Q);if(b.errors&&b.errors.length){B.push(b);return}if(Q){T.onStart(()=>G(P,b.fromStyles)),T.onDestroy(()=>K(P,b.toStyles)),i.push(T);return}if(p.isFallbackTransition){T.onStart(()=>G(P,b.fromStyles)),T.onDestroy(()=>K(P,b.toStyles)),i.push(T);return}let St=[];b.timelines.forEach(M=>{M.stretchStartingKeyframe=!0,this.disabledNodes.has(M.element)||St.push(M)}),b.timelines=St,s.append(P,b.timelines);let vs={instruction:b,player:T,element:P};a.push(vs),b.queriedElements.forEach(M=>R(o,M,[]).push(T)),b.preStyleProps.forEach((M,H)=>{if(M.size){let F=l.get(H);F||l.set(H,F=new Set),M.forEach((de,Le)=>F.add(Le))}}),b.postStyleProps.forEach((M,H)=>{let F=u.get(H);F||u.set(H,F=new Set),M.forEach((de,Le)=>F.add(Le))})});if(B.length){let d=[];B.forEach(m=>{d.push(Jt(m.triggerName,m.errors))}),Z.forEach(m=>m.destroy()),this.reportError(d)}let k=new Map,D=new Map;a.forEach(d=>{let m=d.element;s.has(m)&&(D.set(m,m),this._beforeAnimationBuild(d.player.namespaceId,d.instruction,k))}),i.forEach(d=>{let m=d.element;this._getPreviousPlayers(m,!1,d.namespaceId,d.triggerName,null).forEach(T=>{R(k,m,[]).push(T),T.destroy()})});let j=v.filter(d=>fs(d,l,u)),x=new Map;hs(x,this.driver,A,u,z).forEach(d=>{fs(d,l,u)&&j.push(d)});let W=new Map;y.forEach((d,m)=>{hs(W,this.driver,new Set(d),l,ne)}),j.forEach(d=>{let m=x.get(d),p=W.get(d);x.set(d,new Map([...m?.entries()??[],...p?.entries()??[]]))});let Oe=[],yt=[],_t={};a.forEach(d=>{let{element:m,player:p,instruction:T}=d;if(s.has(m)){if(h.has(m)){p.onDestroy(()=>K(m,T.toStyles)),p.disabled=!0,p.overrideTotalTime(T.totalTime),i.push(p);return}let P=_t;if(D.size>1){let L=m,U=[];for(;L=L.parentNode;){let b=D.get(L);if(b){P=b;break}U.push(L)}U.forEach(b=>D.set(b,P))}let Q=this._buildAnimation(p.namespaceId,T,k,r,W,x);if(p.setRealPlayer(Q),P===_t)Oe.push(p);else{let L=this.playersByElement.get(P);L&&L.length&&(p.parentPlayer=$(L)),i.push(p)}}else G(m,T.fromStyles),p.onDestroy(()=>K(m,T.toStyles)),yt.push(p),h.has(m)&&i.push(p)}),yt.forEach(d=>{let m=r.get(d.element);if(m&&m.length){let p=$(m);d.setRealPlayer(p)}}),i.forEach(d=>{d.parentPlayer?d.syncPlayerEvents(d.parentPlayer):d.destroy()});for(let d=0;d<v.length;d++){let m=v[d],p=m[q];if(se(m,re),p&&p.hasAnimation)continue;let T=[];if(o.size){let Q=o.get(m);Q&&Q.length&&T.push(...Q);let L=this.driver.query(m,Se,!0);for(let U=0;U<L.length;U++){let b=o.get(L[U]);b&&b.length&&T.push(...b)}}let P=T.filter(Q=>!Q.destroyed);P.length?mi(this,m,P):this.processLeaveNode(m)}return v.length=0,Oe.forEach(d=>{this.players.push(d),d.onDone(()=>{d.destroy();let m=this.players.indexOf(d);this.players.splice(m,1)}),d.play()}),Oe}afterFlush(e){this._flushFns.push(e)}afterFlushAnimationsDone(e){this._whenQuietFns.push(e)}_getPreviousPlayers(e,t,s,i,r){let a=[];if(t){let o=this.playersByQueriedElement.get(e);o&&(a=o)}else{let o=this.playersByElement.get(e);if(o){let l=!r||r==ue;o.forEach(u=>{u.queued||!l&&u.triggerName!=i||a.push(u)})}}return(s||i)&&(a=a.filter(o=>!(s&&s!=o.namespaceId||i&&i!=o.triggerName))),a}_beforeAnimationBuild(e,t,s){let i=t.triggerName,r=t.element,a=t.isRemovalTransition?void 0:e,o=t.isRemovalTransition?void 0:i;for(let l of t.timelines){let u=l.element,h=u!==r,c=R(s,u,[]);this._getPreviousPlayers(u,h,a,o,t.toState).forEach(y=>{let f=y.getRealPlayer();f.beforeDestroy&&f.beforeDestroy(),y.destroy(),c.push(y)})}G(r,t.fromStyles)}_buildAnimation(e,t,s,i,r,a){let o=t.triggerName,l=t.element,u=[],h=new Set,c=new Set,_=t.timelines.map(f=>{let g=f.element;h.add(g);let v=g[q];if(v&&v.removedBeforeQueried)return new Y(f.duration,f.delay);let w=g!==l,A=pi((s.get(g)||ui).map(k=>k.getRealPlayer())).filter(k=>{let D=k;return D.element?D.element===g:!1}),C=r.get(g),N=a.get(g),Z=qe(this._normalizer,f.keyframes,C,N),B=this._buildPlayer(f,Z,A);if(f.subTimeline&&i&&c.add(g),w){let k=new he(e,o,g);k.setRealPlayer(B),u.push(k)}return B});u.forEach(f=>{R(this.playersByQueriedElement,f.element,[]).push(f),f.onDone(()=>hi(this.playersByQueriedElement,f.element,f))}),h.forEach(f=>I(f,Ue));let y=$(_);return y.onDestroy(()=>{h.forEach(f=>se(f,Ue)),K(l,t.toStyles)}),c.forEach(f=>{R(i,f,[]).push(y)}),y}_buildPlayer(e,t,s){return t.length>0?this.driver.animate(e.element,t,e.duration,e.delay,e.easing,s):new Y(e.duration,e.delay)}},he=class{namespaceId;triggerName;element;_player=new Y;_containsRealPlayer=!1;_queuedCallbacks=new Map;destroyed=!1;parentPlayer=null;markedForDestroy=!1;disabled=!1;queued=!0;totalTime=0;constructor(e,t,s){this.namespaceId=e,this.triggerName=t,this.element=s}setRealPlayer(e){this._containsRealPlayer||(this._player=e,this._queuedCallbacks.forEach((t,s)=>{t.forEach(i=>pe(e,s,void 0,i))}),this._queuedCallbacks.clear(),this._containsRealPlayer=!0,this.overrideTotalTime(e.totalTime),this.queued=!1)}getRealPlayer(){return this._player}overrideTotalTime(e){this.totalTime=e}syncPlayerEvents(e){let t=this._player;t.triggerCallback&&e.onStart(()=>t.triggerCallback("start")),e.onDone(()=>this.finish()),e.onDestroy(()=>this.destroy())}_queueEvent(e,t){R(this._queuedCallbacks,e,[]).push(t)}onDone(e){this.queued&&this._queueEvent("done",e),this._player.onDone(e)}onStart(e){this.queued&&this._queueEvent("start",e),this._player.onStart(e)}onDestroy(e){this.queued&&this._queueEvent("destroy",e),this._player.onDestroy(e)}init(){this._player.init()}hasStarted(){return this.queued?!1:this._player.hasStarted()}play(){!this.queued&&this._player.play()}pause(){!this.queued&&this._player.pause()}restart(){!this.queued&&this._player.restart()}finish(){this._player.finish()}destroy(){this.destroyed=!0,this._player.destroy()}reset(){!this.queued&&this._player.reset()}setPosition(e){this.queued||this._player.setPosition(e)}getPosition(){return this.queued?0:this._player.getPosition()}triggerCallback(e){let t=this._player;t.triggerCallback&&t.triggerCallback(e)}};function hi(n,e,t){let s=n.get(e);if(s){if(s.length){let i=s.indexOf(t);s.splice(i,1)}s.length==0&&n.delete(e)}return s}function di(n){return n??null}function we(n){return n&&n.nodeType===1}function fi(n){return n=="start"||n=="done"}function cs(n,e){let t=n.style.display;return n.style.display=e??"none",t}function hs(n,e,t,s,i){let r=[];t.forEach(l=>r.push(cs(l)));let a=[];s.forEach((l,u)=>{let h=new Map;l.forEach(c=>{let _=e.computeStyle(u,c,i);h.set(c,_),(!_||_.length==0)&&(u[q]=ci,a.push(u))}),n.set(u,h)});let o=0;return t.forEach(l=>cs(l,r[o++])),a}function ds(n,e){let t=new Map;if(n.forEach(o=>t.set(o,[])),e.length==0)return t;let s=1,i=new Set(e),r=new Map;function a(o){if(!o)return s;let l=r.get(o);if(l)return l;let u=o.parentNode;return t.has(u)?l=u:i.has(u)?l=s:l=a(u),r.set(o,l),l}return e.forEach(o=>{let l=a(o);l!==s&&t.get(l).push(o)}),t}function I(n,e){n.classList?.add(e)}function se(n,e){n.classList?.remove(e)}function mi(n,e,t){$(t).onDone(()=>n.processLeaveNode(e))}function pi(n){let e=[];return Es(n,e),e}function Es(n,e){for(let t=0;t<n.length;t++){let s=n[t];s instanceof me?Es(s.players,e):e.push(s)}}function gi(n,e){let t=Object.keys(n),s=Object.keys(e);if(t.length!=s.length)return!1;for(let i=0;i<t.length;i++){let r=t[i];if(!e.hasOwnProperty(r)||n[r]!==e[r])return!1}return!0}function fs(n,e,t){let s=t.get(n);if(!s)return!1;let i=e.get(n);return i?s.forEach(r=>i.add(r)):e.set(n,s),t.delete(n),!0}var ke=class{_driver;_normalizer;_transitionEngine;_timelineEngine;_triggerCache={};onRemovalComplete=(e,t)=>{};constructor(e,t,s){this._driver=t,this._normalizer=s,this._transitionEngine=new ct(e.body,t,s),this._timelineEngine=new lt(e.body,t,s),this._transitionEngine.onRemovalComplete=(i,r)=>this.onRemovalComplete(i,r)}registerTrigger(e,t,s,i,r){let a=e+"-"+i,o=this._triggerCache[a];if(!o){let l=[],u=[],h=ft(this._driver,r,l,u);if(l.length)throw Qt(i,l);o=si(i,h,this._normalizer),this._triggerCache[a]=o}this._transitionEngine.registerTrigger(t,i,o)}register(e,t){this._transitionEngine.register(e,t)}destroy(e,t){this._transitionEngine.destroy(e,t)}onInsert(e,t,s,i){this._transitionEngine.insertNode(e,t,s,i)}onRemove(e,t,s){this._transitionEngine.removeNode(e,t,s)}disableAnimations(e,t){this._transitionEngine.markElementAsDisabled(e,t)}process(e,t,s,i){if(s.charAt(0)=="@"){let[r,a]=Be(s),o=i;this._timelineEngine.command(r,t,a,o)}else this._transitionEngine.trigger(e,t,s,i)}listen(e,t,s,i,r){if(s.charAt(0)=="@"){let[a,o]=Be(s);return this._timelineEngine.listen(a,t,o,r)}return this._transitionEngine.listen(e,t,s,i,r)}flush(e=-1){this._transitionEngine.flush(e)}get players(){return[...this._transitionEngine.players,...this._timelineEngine.players]}whenRenderingDone(){return this._transitionEngine.whenRenderingDone()}afterFlushAnimationsDone(e){this._transitionEngine.afterFlushAnimationsDone(e)}};function yi(n,e){let t=null,s=null;return Array.isArray(e)&&e.length?(t=Je(e[0]),e.length>1&&(s=Je(e[e.length-1]))):e instanceof Map&&(t=Je(e)),t||s?new _i(n,t,s):null}var _i=(()=>{class n{_element;_startStyles;_endStyles;static initialStylesByElement=new WeakMap;_state=0;_initialStyles;constructor(t,s,i){this._element=t,this._startStyles=s,this._endStyles=i;let r=n.initialStylesByElement.get(t);r||n.initialStylesByElement.set(t,r=new Map),this._initialStyles=r}start(){this._state<1&&(this._startStyles&&K(this._element,this._startStyles,this._initialStyles),this._state=1)}finish(){this.start(),this._state<2&&(K(this._element,this._initialStyles),this._endStyles&&(K(this._element,this._endStyles),this._endStyles=null),this._state=1)}destroy(){this.finish(),this._state<3&&(n.initialStylesByElement.delete(this._element),this._startStyles&&(G(this._element,this._startStyles),this._endStyles=null),this._endStyles&&(G(this._element,this._endStyles),this._endStyles=null),K(this._element,this._initialStyles),this._state=3)}}return n})();function Je(n){let e=null;return n.forEach((t,s)=>{Si(s)&&(e=e||new Map,e.set(s,t))}),e}function Si(n){return n==="display"||n==="position"}var De=class{element;keyframes;options;_specialStyles;_onDoneFns=[];_onStartFns=[];_onDestroyFns=[];_duration;_delay;_initialized=!1;_finished=!1;_started=!1;_destroyed=!1;_finalKeyframe;_originalOnDoneFns=[];_originalOnStartFns=[];domPlayer=null;time=0;parentPlayer=null;currentSnapshot=new Map;constructor(e,t,s,i){this.element=e,this.keyframes=t,this.options=s,this._specialStyles=i,this._duration=s.duration,this._delay=s.delay||0,this.time=this._duration+this._delay}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(e=>e()),this._onDoneFns=[])}init(){this._buildPlayer()&&this._preparePlayerBeforeStart()}_buildPlayer(){if(this._initialized)return this.domPlayer;this._initialized=!0;let e=this.keyframes,t=this._triggerWebAnimation(this.element,e,this.options);if(!t)return this._onFinish(),null;this.domPlayer=t,this._finalKeyframe=e.length?e[e.length-1]:new Map;let s=()=>this._onFinish();return t.addEventListener("finish",s),this.onDestroy(()=>{t.removeEventListener("finish",s)}),t}_preparePlayerBeforeStart(){this._delay?this._resetDomPlayerState():this.domPlayer?.pause()}_convertKeyframesToObject(e){let t=[];return e.forEach(s=>{t.push(Object.fromEntries(s))}),t}_triggerWebAnimation(e,t,s){let i=this._convertKeyframesToObject(t);try{return e.animate(i,s)}catch{return null}}onStart(e){this._originalOnStartFns.push(e),this._onStartFns.push(e)}onDone(e){this._originalOnDoneFns.push(e),this._onDoneFns.push(e)}onDestroy(e){this._onDestroyFns.push(e)}play(){let e=this._buildPlayer();e&&(this.hasStarted()||(this._onStartFns.forEach(t=>t()),this._onStartFns=[],this._started=!0,this._specialStyles&&this._specialStyles.start()),e.play())}pause(){this.init(),this.domPlayer?.pause()}finish(){this.init(),this.domPlayer&&(this._specialStyles&&this._specialStyles.finish(),this._onFinish(),this.domPlayer.finish())}reset(){this._resetDomPlayerState(),this._destroyed=!1,this._finished=!1,this._started=!1,this._onStartFns=this._originalOnStartFns,this._onDoneFns=this._originalOnDoneFns}_resetDomPlayerState(){this.domPlayer?.cancel()}restart(){this.reset(),this.play()}hasStarted(){return this._started}destroy(){this._destroyed||(this._destroyed=!0,this._resetDomPlayerState(),this._onFinish(),this._specialStyles&&this._specialStyles.destroy(),this._onDestroyFns.forEach(e=>e()),this._onDestroyFns=[])}setPosition(e){this.domPlayer||this.init(),this.domPlayer&&(this.domPlayer.currentTime=e*this.time)}getPosition(){return this.domPlayer?+(this.domPlayer.currentTime??0)/this.time:this._initialized?1:0}get totalTime(){return this._delay+this._duration}beforeDestroy(){let e=new Map;this.hasStarted()&&this._finalKeyframe.forEach((s,i)=>{i!=="offset"&&e.set(i,this._finished?s:Te(this.element,i))}),this.currentSnapshot=e}triggerCallback(e){let t=e==="start"?this._onStartFns:this._onDoneFns;t.forEach(s=>s()),t.length=0}},ht=class{validateStyleProperty(e){return!0}validateAnimatableStyleProperty(e){return!0}containsElement(e,t){return Qe(e,t)}getParentElement(e){return ye(e)}query(e,t,s){return Ve(e,t,s)}computeStyle(e,t,s){return Te(e,t)}animate(e,t,s,i,r,a=[]){let o=i==0?"both":"forwards",l={duration:s,delay:i,fill:o};r&&(l.easing=r);let u=new Map,h=a.filter(y=>y instanceof De);ts(s,i)&&h.forEach(y=>{y.currentSnapshot.forEach((f,g)=>u.set(g,f))});let c=xt(t).map(y=>new Map(y));c=ss(e,c,u);let _=yi(e,c);return new De(e,c,l,_)}};function Mi(n,e){return n==="noop"?new ke(e,new gs,new xe):new ke(e,new ht,new et)}var ms=class{_driver;_animationAst;constructor(e,t){this._driver=e;let s=[],r=ft(e,t,s,[]);if(s.length)throw qt(s);this._animationAst=r}buildTimelines(e,t,s,i,r){let a=Array.isArray(t)?Ge(t):t,o=Array.isArray(s)?Ge(s):s,l=[];r=r||new ie;let u=pt(this._driver,e,this._animationAst,_e,re,a,o,i,r,l);if(l.length)throw Bt(l);return u}},Ae="@",Ts="@.disabled",Re=class{namespaceId;delegate;engine;_onDestroy;\u0275type=0;constructor(e,t,s,i){this.namespaceId=e,this.delegate=t,this.engine=s,this._onDestroy=i}get data(){return this.delegate.data}destroyNode(e){this.delegate.destroyNode?.(e)}destroy(){this.engine.destroy(this.namespaceId,this.delegate),this.engine.afterFlushAnimationsDone(()=>{queueMicrotask(()=>{this.delegate.destroy()})}),this._onDestroy?.()}createElement(e,t){return this.delegate.createElement(e,t)}createComment(e){return this.delegate.createComment(e)}createText(e){return this.delegate.createText(e)}appendChild(e,t){this.delegate.appendChild(e,t),this.engine.onInsert(this.namespaceId,t,e,!1)}insertBefore(e,t,s,i=!0){this.delegate.insertBefore(e,t,s),this.engine.onInsert(this.namespaceId,t,e,i)}removeChild(e,t,s,i){if(i){this.delegate.removeChild(e,t,s,i);return}this.parentNode(t)&&this.engine.onRemove(this.namespaceId,t,this.delegate)}selectRootElement(e,t){return this.delegate.selectRootElement(e,t)}parentNode(e){return this.delegate.parentNode(e)}nextSibling(e){return this.delegate.nextSibling(e)}setAttribute(e,t,s,i){this.delegate.setAttribute(e,t,s,i)}removeAttribute(e,t,s){this.delegate.removeAttribute(e,t,s)}addClass(e,t){this.delegate.addClass(e,t)}removeClass(e,t){this.delegate.removeClass(e,t)}setStyle(e,t,s,i){this.delegate.setStyle(e,t,s,i)}removeStyle(e,t,s){this.delegate.removeStyle(e,t,s)}setProperty(e,t,s){t.charAt(0)==Ae&&t==Ts?this.disableAnimations(e,!!s):this.delegate.setProperty(e,t,s)}setValue(e,t){this.delegate.setValue(e,t)}listen(e,t,s,i){return this.delegate.listen(e,t,s,i)}disableAnimations(e,t){this.engine.disableAnimations(e,t)}},dt=class extends Re{factory;constructor(e,t,s,i,r){super(t,s,i,r),this.factory=e,this.namespaceId=t}setProperty(e,t,s){t.charAt(0)==Ae?t.charAt(1)=="."&&t==Ts?(s=s===void 0?!0:!!s,this.disableAnimations(e,s)):this.engine.process(this.namespaceId,e,t.slice(1),s):this.delegate.setProperty(e,t,s)}listen(e,t,s,i){if(t.charAt(0)==Ae){let r=Ei(e),a=t.slice(1),o="";return a.charAt(0)!=Ae&&([a,o]=Ti(a)),this.engine.listen(this.namespaceId,r,a,o,l=>{let u=l._data||-1;this.factory.scheduleListenerCallback(u,s,l)})}return this.delegate.listen(e,t,s,i)}};function Ei(n){switch(n){case"body":return document.body;case"document":return document;case"window":return window;default:return n}}function Ti(n){let e=n.indexOf("."),t=n.substring(0,e),s=n.slice(e+1);return[t,s]}var ps=class{delegate;engine;_zone;_currentId=0;_microtaskId=1;_animationCallbacksBuffer=[];_rendererCache=new Map;_cdRecurDepth=0;constructor(e,t,s){this.delegate=e,this.engine=t,this._zone=s,t.onRemovalComplete=(i,r)=>{r?.removeChild(null,i)}}createRenderer(e,t){let i=this.delegate.createRenderer(e,t);if(!e||!t?.data?.animation){let u=this._rendererCache,h=u.get(i);if(!h){let c=()=>u.delete(i);h=new Re("",i,this.engine,c),u.set(i,h)}return h}let r=t.id,a=t.id+"-"+this._currentId;this._currentId++,this.engine.register(a,e);let o=u=>{Array.isArray(u)?u.forEach(o):this.engine.registerTrigger(r,a,e,u.name,u)};return t.data.animation.forEach(o),new dt(this,a,i,this.engine)}begin(){this._cdRecurDepth++,this.delegate.begin&&this.delegate.begin()}_scheduleCountTask(){queueMicrotask(()=>{this._microtaskId++})}scheduleListenerCallback(e,t,s){if(e>=0&&e<this._microtaskId){this._zone.run(()=>t(s));return}let i=this._animationCallbacksBuffer;i.length==0&&queueMicrotask(()=>{this._zone.run(()=>{i.forEach(r=>{let[a,o]=r;a(o)}),this._animationCallbacksBuffer=[]})}),i.push([t,s])}end(){this._cdRecurDepth--,this._cdRecurDepth==0&&this._zone.runOutsideAngular(()=>{this._scheduleCountTask(),this.engine.flush(this._microtaskId)}),this.delegate.end&&this.delegate.end()}whenRenderingDone(){return this.engine.whenRenderingDone()}componentReplaced(e){this.engine.flush(),this.delegate.componentReplaced?.(e)}};export{is as AnimationDriver,gs as NoopAnimationDriver,ms as \u0275Animation,ke as \u0275AnimationEngine,dt as \u0275AnimationRenderer,ps as \u0275AnimationRendererFactory,Ze as \u0275AnimationStyleNormalizer,Re as \u0275BaseAnimationRenderer,_e as \u0275ENTER_CLASSNAME,re as \u0275LEAVE_CLASSNAME,xe as \u0275NoopAnimationStyleNormalizer,he as \u0275TransitionAnimationPlayer,ht as \u0275WebAnimationsDriver,De as \u0275WebAnimationsPlayer,et as \u0275WebAnimationsStyleNormalizer,ts as \u0275allowPreviousPlayerStylesMerge,qs as \u0275camelCaseToDashCase,Qe as \u0275containsElement,Mi as \u0275createEngine,ye as \u0275getParentElement,Ve as \u0275invokeQuery,xt as \u0275normalizeKeyframes,Zt as \u0275validateStyleProperty,Rs as \u0275validateWebAnimatableStyleProperty};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a}from"./chunk-3YTNATAH.js";import"./chunk-B4AJQJMI.js";export default a();
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a as b}from"./chunk-UO7KCTHV.js";import{Lb as f,W as p,_,aa as d,ba as M,bc as w,cc as C,dc as y,nb as a,oa as v,pa as h,sb as u,v as c,wc as E,ya as l}from"./chunk-MKV5RAJQ.js";var q=["editorContainer"],I="[_nghost-%COMP%]{display:block;height:200px}.editor-container[_ngcontent-%COMP%]{width:100%;height:98%}",D=new _("NGX_MONACO_EDITOR_CONFIG"),O=!1,N,R=(()=>{class t{constructor(){this.config=d(D),this.onInit=new v,this._insideNg=!1}set insideNg(e){this._insideNg=e,this._editor&&(this._editor.dispose(),this.initMonaco(this._options,this.insideNg))}get insideNg(){return this._insideNg}ngAfterViewInit(){O?N.then(()=>{this.initMonaco(this._options,this.insideNg)}):(O=!0,N=new Promise(e=>{let i=this.config.baseUrl;if((i==="assets"||!i)&&(i="./assets/monaco/min/vs"),typeof window.monaco=="object"){this.initMonaco(this._options,this.insideNg),e();return}let o=s=>{let g=s||window.require,m={paths:{vs:`${i}`}};Object.assign(m,this.config.requireConfig||{}),g.config(m),g(["vs/editor/editor.main"],()=>{typeof this.config.onMonacoLoad=="function"&&this.config.onMonacoLoad(),this.initMonaco(this._options,this.insideNg),e()})};if(this.config.monacoRequire)o(this.config.monacoRequire);else if(window.require)if(window.require.config)o();else{var n=`${i}/loader.js`,r=new XMLHttpRequest;r.addEventListener("load",()=>{let s=document.createElement("script");s.type="text/javascript",s.text=["var nodeRequire = require;",r.responseText.replace('"use strict";',""),"var monacoAmdRequire = require;","require = nodeRequire;","require.nodeRequire = require;"].join(`
|
|
2
|
+
`),document.body.appendChild(s),o(window.monacoAmdRequire)}),r.open("GET",n),r.send()}else{let s=document.createElement("script");s.type="text/javascript",s.src=`${i}/loader.js`,s.addEventListener("load",()=>{o()}),document.body.appendChild(s)}}))}ngOnDestroy(){this._windowResizeSubscription&&this._windowResizeSubscription.unsubscribe(),this._editor&&(this._editor.dispose(),this._editor=void 0)}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275cmp=a({type:t,selectors:[["ng-component"]],viewQuery:function(i,o){if(i&1&&w(q,7),i&2){let n;C(n=y())&&(o._editorContainer=n.first)}},inputs:{insideNg:"insideNg"},outputs:{onInit:"onInit"},standalone:!1,decls:0,vars:0,template:function(i,o){},encapsulation:2})}}return t})(),k=(()=>{class t extends R{constructor(){super(...arguments),this.zone=d(h),this._value="",this.propagateChange=e=>{},this.onTouched=()=>{}}set options(e){this._options=Object.assign({},this.config.defaultOptions,e),this._editor&&(this._editor.dispose(),this.initMonaco(this._options,this.insideNg))}get options(){return this._options}set model(e){this.options.model=e,this._editor&&(this._editor.dispose(),this.initMonaco(this.options,this.insideNg))}writeValue(e){this._value=e||"",setTimeout(()=>{this._editor&&!this.options.model&&this._editor.setValue(this._value)})}registerOnChange(e){this.propagateChange=e}registerOnTouched(e){this.onTouched=e}setDisabledState(e){this.options.readOnly=e||this._options.readOnly}initMonaco(e,i){let o=!!e.model;if(o){let n=monaco.editor.getModel(e.model.uri||"");n?(e.model=n,e.model.setValue(this._value)):e.model=monaco.editor.createModel(e.model.value,e.model.language,e.model.uri)}i?this._editor=monaco.editor.create(this._editorContainer.nativeElement,e):this.zone.runOutsideAngular(()=>{this._editor=monaco.editor.create(this._editorContainer.nativeElement,e)}),o||this._editor.setValue(this._value),this._editor.onDidChangeModelContent(n=>{let r=this._editor.getValue();this.zone.run(()=>{this.propagateChange(r),this._value=r})}),this._editor.onDidBlurEditorWidget(()=>{this.onTouched()}),this._editor.setTheme=n=>{this.options.theme=n,monaco.editor.setTheme(n)},this._windowResizeSubscription&&this._windowResizeSubscription.unsubscribe(),this._windowResizeSubscription=c(window,"resize").subscribe(()=>this._editor.layout()),this.onInit.emit(this._editor)}static{this.\u0275fac=(()=>{let e;return function(o){return(e||(e=l(t)))(o||t)}})()}static{this.\u0275cmp=a({type:t,selectors:[["ngx-monaco-editor"]],inputs:{options:"options",model:"model"},features:[E([{provide:b,useExisting:p(()=>t),multi:!0}]),u],decls:2,vars:0,consts:[["editorContainer",""],[1,"editor-container"]],template:function(i,o){i&1&&f(0,"div",1,0)},styles:["[_nghost-%COMP%]{display:block;height:200px}.editor-container[_ngcontent-%COMP%]{width:100%;height:98%}"],changeDetection:0})}}return t})(),Q=(()=>{class t extends R{constructor(){super(...arguments),this.zone=d(h)}set options(e){this._options=Object.assign({},this.config.defaultOptions,e),this._editor&&(this._editor.dispose(),this.initMonaco(this._options,this.insideNg))}get options(){return this._options}set originalModel(e){this._originalModel=e,this._editor&&(this._editor.dispose(),this.initMonaco(this.options,this.insideNg))}set modifiedModel(e){this._modifiedModel=e,this._editor&&(this._editor.dispose(),this.initMonaco(this.options,this.insideNg))}initMonaco(e,i){if(!this._originalModel||!this._modifiedModel)throw new Error("originalModel or modifiedModel not found for ngx-monaco-diff-editor");this._originalModel.language=this._originalModel.language||e.language,this._modifiedModel.language=this._modifiedModel.language||e.language;let o=monaco.editor.createModel(this._originalModel.code,this._originalModel.language),n=monaco.editor.createModel(this._modifiedModel.code,this._modifiedModel.language);this._editorContainer.nativeElement.innerHTML="";let r=e.theme;i?this._editor=monaco.editor.createDiffEditor(this._editorContainer.nativeElement,e):this.zone.runOutsideAngular(()=>{this._editor=monaco.editor.createDiffEditor(this._editorContainer.nativeElement,e)}),e.theme=r,this._editor.setModel({original:o,modified:n}),this._windowResizeSubscription&&this._windowResizeSubscription.unsubscribe(),this._windowResizeSubscription=c(window,"resize").subscribe(()=>this._editor.layout()),this.onInit.emit(this._editor)}static{this.\u0275fac=(()=>{let e;return function(o){return(e||(e=l(t)))(o||t)}})()}static{this.\u0275cmp=a({type:t,selectors:[["ngx-monaco-diff-editor"]],inputs:{options:"options",originalModel:"originalModel",modifiedModel:"modifiedModel"},features:[u],decls:2,vars:0,consts:[["editorContainer",""],[1,"editor-container"]],template:function(i,o){i&1&&f(0,"div",1,0)},styles:[I],changeDetection:0})}}return t})();function U(t={}){return M([{provide:D,useValue:t}])}export{k as a,Q as b,U as c};
|