{"version":3,"sources":["assets/svg/refresh.svg","assets/images/experio-card.jpg","assets/images/blue-uv-card.jpg","assets/images/eyezen-card.png","assets/gif/eye.gif","assets/images/varilux-card.png","assets/images/crizal-card.png","assets/images/optifog-card.png","assets/images/transitions-card.png","assets/images/stellest-card2.png","assets/svg/varilux-g9/icons/control-1-white.svg","assets/svg/varilux-g9/icons/control-2-white.svg","assets/svg/varilux-g9/icons/control-3-white.svg","assets/svg/varilux-g9/icons/control-4-white.svg","assets/svg/varilux-g9/icons/control-5-white.svg","assets/images/prescription/Clear_Lens.png","assets/svg/eye.svg","assets/svg/varilux-g9/icons/fill.svg","assets/svg/hamburger.svg","assets/images/lens-consulatation/Lens_All.png","assets/images/lens-consulatation/Lens_Correct_Active.png","assets/images/lens-consulatation/Lens_Enhance_Active.png","assets/images/lens-consulatation/Lens_Protect_Active.png","assets/images/lens-consulatation/tinted-lens/transition/transition_green.png","assets/images/lens-consulatation/tinted-lens/transition/transition_amber.png","assets/images/lens-consulatation/tinted-lens/transition/transition_amethyst.png","assets/images/lens-consulatation/tinted-lens/transition/transition_brown.png","assets/images/lens-consulatation/tinted-lens/transition/transition_emerald.png","assets/images/lens-consulatation/tinted-lens/transition/transition_grey.png","assets/images/lens-consulatation/tinted-lens/transition/transition_saphirre.png","assets/images/lens-consulatation/tinted-lens/xperio/polarized/xperio_P_amber.png","assets/images/lens-consulatation/tinted-lens/xperio/polarized/xperio_P_blue_ink.png","assets/images/lens-consulatation/tinted-lens/xperio/polarized/xperio_P_blue_purple.png","assets/images/lens-consulatation/tinted-lens/xperio/polarized/xperio_P_blue_sky.png","assets/images/lens-consulatation/tinted-lens/xperio/polarized/xperio_P_brown.png","assets/images/lens-consulatation/tinted-lens/xperio/polarized/xperio_P_grey.png","assets/images/lens-consulatation/tinted-lens/xperio/polarized/xperio_P_grey_green.png","assets/images/lens-consulatation/tinted-lens/xperio/polarized/xperio_P_herbal.png","assets/images/lens-consulatation/tinted-lens/xperio/polarized/xperio_P_violet.png","assets/images/lens-consulatation/tinted-lens/xperio/tinted/xperio_T_black.png","assets/images/lens-consulatation/tinted-lens/xperio/tinted/xperio_T_blue_ink.png","assets/images/lens-consulatation/tinted-lens/xperio/tinted/xperio_T_brown.png","assets/images/lens-consulatation/tinted-lens/xperio/tinted/xperio_T_burgundy.png","assets/images/lens-consulatation/tinted-lens/xperio/tinted/xperio_T_grey_green.png","assets/images/lens-consulatation/tinted-lens/xperio/tinted/xperio_T_grey.png","assets/images/lens-consulatation/tinted-lens/xperio/tinted/xperio_T_herbal.png","assets/images/lens-consulatation/tinted-lens/xperio/tinted/xperio_T_newbrown.png","assets/images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_bronze_shadow.png","assets/images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_bronze.png","assets/images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_candy.png","assets/images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_forestgreen.png","assets/images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_goldpink.png","assets/images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_green_shadow.png","assets/images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_kaki.png","assets/images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_mauve_silver.png","assets/images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_new_blue.png","assets/images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_new_silver.png","assets/images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_ocean_blue.png","assets/images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_orange.png","assets/images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_parma.png","assets/images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_pink_silver.png","assets/images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_silver_shadow.png","assets/images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_silver.png","assets/images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_skyblue_silver.png","assets/images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_violet.png","assets/images/lens-consulatation/lens-thickness/concave/Concave_Lens_50.png","assets/images/lens-consulatation/lens-thickness/concave/Concave_Lens_56.png","assets/images/lens-consulatation/lens-thickness/concave/Concave_Lens_60.png","assets/images/lens-consulatation/lens-thickness/concave/Concave_Lens_67.png","assets/images/lens-consulatation/lens-thickness/concave/Concave_Lens_74.png","assets/images/lens-consulatation/lens-thickness/convexe/Convexe_Lens_50.png","assets/images/lens-consulatation/lens-thickness/convexe/Convexe_Lens_56.png","assets/images/lens-consulatation/lens-thickness/convexe/Convexe_Lens_60.png","assets/images/lens-consulatation/lens-thickness/convexe/Convexe_Lens_67.png","assets/images/lens-consulatation/lens-thickness/convexe/Convexe_Lens_74.png","assets/svg/varilux-g9/icons/control-1.svg","assets/svg/varilux-g9/icons/control-2.svg","assets/svg/varilux-g9/icons/control-3.svg","assets/svg/varilux-g9/icons/control-4.svg","assets/svg/varilux-g9/icons/control-5.svg","assets/svg/temp/Varilux_Stairs_ComfortMax.svg","assets/svg/temp/Varilux_Stairs_Eseries.svg","assets/svg/temp/Varilux_Stairs_Liberty.svg","assets/svg/temp/Varilux_Stairs_Physio.svg","assets/svg/temp/Varilux_Stairs_Sseries.svg","assets/svg/temp/Varilux_Stairs_Xseries.svg","assets/svg/temp/Varilux_Stairs_STANDARD.svg","assets/svg/temp/Varilux_Stairs_Comfort3.svg","assets/svg/temp/Varilux_Stairs_ComfortMax-Line.svg","assets/svg/temp/Varilux_Stairs_Eseries-Line.svg","assets/svg/temp/Varilux_Stairs_Liberty-Line.svg","assets/svg/temp/Varilux_Stairs_Physio-Line.svg","assets/svg/temp/Varilux_Stairs_Sseries-Line.svg","assets/svg/temp/Varilux_Stairs_Xseries-Line.svg","assets/svg/temp/Varilux_Stairs_STANDARD-Line.svg","assets/svg/temp/Varilux_Stairs_Comfort3-Line.svg","assets/svg/refresh-new.svg","assets/svg/demo.svg","assets/svg/hamburger-new.svg","assets/png/logo.png","assets/svg/essilor-logo-white.svg","assets/images/field-of-vision-min.jpg","assets/images/discovery/enhance-lens-min.png","assets/images/discovery/protect-lens.png","assets/images/discovery/correct-lens.png","assets/images/discovery/montage_background_00000-min.png","assets/images/lens-consulatation/Lens_None.png","assets/images/lens-consulatation/Lens_Correct_Protect_Active.png","assets/images/lens-consulatation/Lens_Correct_Enhance_Active.png","assets/images/lens-consulatation/Lens_Protect_Enhance_Active.png","assets/videos/lens_glow/Lens_Correct_Glow.mp4","assets/videos/lens_glow/Lens_Protect_Glow.mp4","assets/videos/lens_glow/Lens_Enhance_Glow.mp4","assets/svg/lensMenuBlack.svg","assets/svg/flip.svg","assets/images/lens-consulatation/transition-in/TransitionIn_00000.png","assets/images/lens-consulatation/transition-in/TransitionIn_00001.png","assets/images/lens-consulatation/transition-in/TransitionIn_00002.png","assets/images/lens-consulatation/transition-in/TransitionIn_00003.png","assets/images/lens-consulatation/transition-in/TransitionIn_00004.png","assets/images/lens-consulatation/transition-in/TransitionIn_00005.png","assets/images/lens-consulatation/transition-in/TransitionIn_00006.png","assets/images/lens-consulatation/transition-in/TransitionIn_00007.png","assets/images/lens-consulatation/transition-in/TransitionIn_00008.png","assets/images/lens-consulatation/transition-in/TransitionIn_00009.png","assets/images/lens-consulatation/transition-in/TransitionIn_00010.png","assets/images/lens-consulatation/transition-in/TransitionIn_00011.png","assets/images/lens-consulatation/transition-in/TransitionIn_00012.png","assets/images/lens-consulatation/transition-in/TransitionIn_00013.png","assets/images/lens-consulatation/transition-in/TransitionIn_00014.png","assets/images/lens-consulatation/transition-in/TransitionIn_00015.png","assets/images/lens-consulatation/transition-in/TransitionIn_00016.png","assets/images/lens-consulatation/transition-in/TransitionIn_00017.png","assets/images/lens-consulatation/transition-in/TransitionIn_00018.png","assets/images/lens-consulatation/transition-in/TransitionIn_00019.png","assets/images/lens-consulatation/transition-in/TransitionIn_00020.png","assets/images/lens-consulatation/transition-in/TransitionIn_00021.png","assets/images/lens-consulatation/transition-in/TransitionIn_00022.png","assets/images/lens-consulatation/transition-in/TransitionIn_00023.png","assets/images/lens-consulatation/transition-in/TransitionIn_00024.png","assets/images/lens-consulatation/transition-in/TransitionIn_00025.png","assets/images/lens-consulatation/transition-in/TransitionIn_00026.png","assets/images/lens-consulatation/transition-in/TransitionIn_00027.png","assets/images/lens-consulatation/transition-in/TransitionIn_00028.png","assets/images/lens-consulatation/transition-in/TransitionIn_00029.png","assets/images/lens-consulatation/transition-in/TransitionIn_00030.png","assets/images/lens-consulatation/transition-in/TransitionIn_00031.png","assets/images/lens-consulatation/transition-in/TransitionIn_00032.png","assets/images/lens-consulatation/transition-in/TransitionIn_00033.png","assets/images/lens-consulatation/transition-in/TransitionIn_00034.png","assets/images/lens-consulatation/transition-in/TransitionIn_00035.png","assets/images/lens-consulatation/transition-in/TransitionIn_00036.png","assets/images/lens-consulatation/transition-in/TransitionIn_00037.png","assets/images/lens-consulatation/transition-in/TransitionIn_00038.png","assets/images/lens-consulatation/transition-in/TransitionIn_00039.png","assets/images/lens-consulatation/transition-in/TransitionIn_00040.png","assets/images/lens-consulatation/transition-in/TransitionIn_00041.png","assets/images/lens-consulatation/transition-in/TransitionIn_00042.png","assets/images/lens-consulatation/transition-in/TransitionIn_00043.png","assets/images/lens-consulatation/transition-in/TransitionIn_00044.png","assets/images/lens-consulatation/transition-in/TransitionIn_00045.png","assets/images/lens-consulatation/transition-in/TransitionIn_00046.png","assets/images/lens-consulatation/transition-in/TransitionIn_00047.png","assets/images/lens-consulatation/transition-in/TransitionIn_00048.png","assets/images/lens-consulatation/transition-in/TransitionIn_00049.png","assets/images/lens-consulatation/transition-in/TransitionIn_00050.png","assets/images/lens-consulatation/transition-in/TransitionIn_00051.png","assets/images/lens-consulatation/transition-in/TransitionIn_00052.png","assets/images/lens-consulatation/transition-in/TransitionIn_00053.png","assets/images/lens-consulatation/transition-in/TransitionIn_00054.png","assets/images/lens-consulatation/transition-in/TransitionIn_00055.png","assets/images/lens-consulatation/transition-in/TransitionIn_00056.png","assets/images/lens-consulatation/transition-in/TransitionIn_00057.png","assets/images/lens-consulatation/transition-in/TransitionIn_00058.png","assets/images/lens-consulatation/transition-in/TransitionIn_00059.png","assets/images/lens-consulatation/transition-in/TransitionIn_00060.png","assets/images/discovery/texture/loop verre01_plan01_00000-min.png","assets/images/discovery/texture/loop verre01_plan01_00001-min.png","assets/images/discovery/texture/loop verre01_plan01_00002-min.png","assets/images/discovery/texture/loop verre01_plan01_00003-min.png","assets/images/discovery/texture/loop verre01_plan01_00004-min.png","assets/images/discovery/texture/loop verre01_plan01_00005-min.png","assets/images/discovery/texture/loop verre01_plan01_00006-min.png","assets/images/discovery/texture/loop verre01_plan01_00007-min.png","assets/images/discovery/texture/loop verre01_plan01_00008-min.png","assets/images/discovery/texture/loop verre01_plan01_00009-min.png","assets/images/discovery/texture/loop verre01_plan01_00010-min.png","assets/images/discovery/texture/loop verre01_plan01_00011-min.png","assets/images/discovery/texture/loop verre01_plan01_00012-min.png","assets/images/discovery/texture/loop verre01_plan01_00013-min.png","assets/images/discovery/texture/loop verre01_plan01_00014-min.png","assets/images/discovery/texture/loop verre01_plan01_00015-min.png","assets/images/discovery/texture/loop verre01_plan01_00016-min.png","assets/images/discovery/texture/loop verre01_plan01_00017-min.png","assets/images/discovery/texture/loop verre01_plan01_00018-min.png","assets/images/discovery/texture/loop verre01_plan01_00019-min.png","assets/images/discovery/texture/loop verre01_plan01_00020-min.png","assets/images/discovery/texture/loop verre01_plan01_00021-min.png","assets/images/discovery/texture/loop verre01_plan01_00022-min.png","assets/images/discovery/texture/loop verre01_plan01_00023-min.png","assets/images/discovery/texture/loop verre01_plan01_00024-min.png","assets/images/discovery/texture/loop verre01_plan01_00025-min.png","assets/images/discovery/texture/loop verre01_plan01_00026-min.png","assets/images/discovery/texture/loop verre01_plan01_00027-min.png","assets/images/discovery/texture/loop verre01_plan01_00028-min.png","assets/images/discovery/texture/loop verre01_plan01_00029-min.png","assets/images/discovery/texture/loop verre01_plan01_00030-min.png","assets/images/discovery/texture/loop verre01_plan01_00031-min.png","assets/images/discovery/texture/loop verre01_plan01_00032-min.png","assets/images/discovery/texture/loop verre01_plan01_00033-min.png","assets/images/discovery/texture/loop verre01_plan01_00034-min.png","assets/images/discovery/texture/loop verre01_plan01_00035-min.png","assets/images/discovery/texture/loop verre01_plan01_00036-min.png","assets/images/discovery/texture/loop verre01_plan01_00037-min.png","assets/images/discovery/texture/loop verre01_plan01_00038-min.png","assets/images/discovery/texture/loop verre01_plan01_00039-min.png","assets/images/discovery/texture/loop verre01_plan01_00040-min.png","assets/images/discovery/texture/loop verre01_plan01_00041-min.png","assets/images/discovery/texture/loop verre01_plan01_00042-min.png","assets/images/discovery/texture/loop verre01_plan01_00043-min.png","assets/images/discovery/texture/loop verre01_plan01_00044-min.png","assets/images/discovery/texture/loop verre01_plan01_00045-min.png","assets/images/discovery/texture/loop verre01_plan01_00046-min.png","assets/images/discovery/texture/loop verre01_plan01_00047-min.png","assets/images/discovery/texture/loop verre01_plan01_00048-min.png","assets/images/discovery/texture/loop verre01_plan01_00049-min.png","assets/images/discovery/texture/loop verre01_plan01_00050-min.png","assets/images/discovery/texture/loop verre01_plan01_00051-min.png","assets/images/discovery/texture/loop verre01_plan01_00052-min.png","assets/images/discovery/texture/loop verre01_plan01_00053-min.png","assets/images/discovery/texture/loop verre01_plan01_00054-min.png","assets/images/discovery/texture/loop verre01_plan01_00055-min.png","assets/images/discovery/texture/loop verre01_plan01_00056-min.png","assets/images/discovery/texture/loop verre01_plan01_00057-min.png","assets/images/discovery/texture/loop verre01_plan01_00058-min.png","assets/images/discovery/texture/loop verre01_plan01_00059-min.png","assets/images/discovery/texture/loop verre01_plan01_00060-min.png","assets/images/discovery/texture/loop verre01_plan01_00061-min.png","assets/images/discovery/texture/loop verre01_plan01_00062-min.png","assets/images/discovery/texture/loop verre01_plan01_00063-min.png","assets/images/discovery/texture/loop verre01_plan01_00064-min.png","assets/images/discovery/texture/loop verre01_plan01_00065-min.png","assets/images/discovery/texture/loop verre01_plan01_00066-min.png","assets/images/discovery/texture/loop verre01_plan01_00067-min.png","assets/images/discovery/texture/loop verre01_plan01_00068-min.png","assets/images/discovery/texture/loop verre01_plan01_00069-min.png","assets/images/discovery/texture/loop verre01_plan01_00070-min.png","assets/images/discovery/texture/loop verre01_plan01_00071-min.png","assets/images/discovery/texture/loop verre01_plan01_00072-min.png","assets/images/discovery/texture/loop verre01_plan01_00073-min.png","assets/images/discovery/texture/loop verre01_plan01_00074-min.png","assets/images/discovery/texture/loop verre01_plan01_00075-min.png","assets/images/discovery/texture/loop verre01_plan01_00076-min.png","assets/images/discovery/texture/loop verre01_plan01_00077-min.png","assets/images/discovery/texture/loop verre01_plan01_00078-min.png","assets/images/discovery/texture/loop verre01_plan01_00079-min.png","assets/images/discovery/texture/loop verre01_plan01_00080-min.png","assets/images/discovery/texture/loop verre01_plan01_00081-min.png","assets/images/discovery/texture/loop verre01_plan01_00082-min.png","assets/images/discovery/texture/loop verre01_plan01_00083-min.png","assets/images/discovery/texture/loop verre01_plan01_00084-min.png","assets/images/discovery/texture/loop verre01_plan01_00085-min.png","assets/images/discovery/texture/loop verre01_plan01_00086-min.png","assets/images/discovery/texture/loop verre01_plan01_00087-min.png","assets/images/discovery/texture/loop verre01_plan01_00088-min.png","assets/images/discovery/texture/loop verre01_plan01_00089-min.png","assets/images/discovery/texture/loop verre01_plan01_00090-min.png","assets/images/discovery/texture/loop verre01_plan01_00091-min.png","assets/images/discovery/texture/loop verre01_plan01_00092-min.png","assets/images/discovery/texture/loop verre01_plan01_00093-min.png","assets/images/discovery/texture/loop verre01_plan01_00094-min.png","assets/images/discovery/texture/loop verre01_plan01_00095-min.png","assets/images/discovery/texture/loop verre01_plan01_00096-min.png","assets/images/discovery/texture/loop verre01_plan01_00097-min.png","assets/images/discovery/texture/loop verre01_plan01_00098-min.png","assets/images/discovery/texture/loop verre01_plan01_00099-min.png","assets/images/discovery/texture/loop verre01_plan01_00100-min.png","assets/images/discovery/texture/loop verre01_plan01_00101-min.png","assets/images/discovery/texture/loop verre01_plan01_00102-min.png","assets/images/discovery/texture/loop verre01_plan01_00103-min.png","assets/images/discovery/texture/loop verre01_plan01_00104-min.png","assets/images/discovery/texture/loop verre01_plan01_00105-min.png","assets/images/discovery/texture/loop verre01_plan01_00106-min.png","assets/images/discovery/texture/loop verre01_plan01_00107-min.png","assets/images/discovery/texture/loop verre01_plan01_00108-min.png","assets/images/discovery/texture/loop verre01_plan01_00109-min.png","assets/images/discovery/texture/loop verre01_plan01_00110-min.png","assets/images/discovery/texture/loop verre01_plan01_00111-min.png","assets/images/discovery/texture/loop verre01_plan01_00112-min.png","assets/images/discovery/texture/loop verre01_plan01_00113-min.png","assets/images/discovery/texture/loop verre01_plan01_00114-min.png","assets/images/discovery/texture/loop verre01_plan01_00115-min.png","assets/images/discovery/texture/loop verre01_plan01_00116-min.png","assets/images/discovery/texture/loop verre01_plan01_00117-min.png","assets/images/discovery/texture/loop verre01_plan01_00118-min.png","assets/images/discovery/texture/loop verre01_plan01_00119-min.png","assets/images/discovery/texture/loop verre01_plan01_00120-min.png","assets/images/discovery/texture/loop verre01_plan01_00121-min.png","assets/images/discovery/texture/loop verre01_plan01_00122-min.png","assets/images/discovery/texture/loop verre01_plan01_00123-min.png","assets/images/discovery/texture/loop verre01_plan01_00124-min.png","assets/images/discovery/texture/loop verre01_plan01_00125-min.png","assets/images/discovery/texture/loop verre01_plan01_00126-min.png","assets/images/discovery/texture/loop verre01_plan01_00127-min.png","assets/images/discovery/texture/loop verre01_plan01_00128-min.png","assets/images/discovery/texture/loop verre01_plan01_00129-min.png","assets/images/discovery/texture/loop verre01_plan01_00130-min.png","assets/images/discovery/texture/loop verre01_plan01_00131-min.png","assets/images/discovery/texture/loop verre01_plan01_00132-min.png","assets/images/discovery/texture/loop verre01_plan01_00133-min.png","assets/images/discovery/texture/loop verre01_plan01_00134-min.png","assets/images/discovery/texture/loop verre01_plan01_00135-min.png","assets/images/discovery/texture/loop verre01_plan01_00136-min.png","assets/images/discovery/texture/loop verre01_plan01_00137-min.png","assets/images/discovery/texture/loop verre01_plan01_00138-min.png","assets/images/discovery/texture/loop verre01_plan01_00139-min.png","assets/images/discovery/texture/loop verre01_plan01_00140-min.png","assets/images/discovery/texture/loop verre01_plan01_00141-min.png","assets/images/discovery/texture/loop verre01_plan01_00142-min.png","assets/images/discovery/texture/loop verre01_plan01_00143-min.png","assets/images/discovery/texture/loop verre01_plan01_00144-min.png","assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00000.png","assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00001.png","assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00002.png","assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00003.png","assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00004.png","assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00005.png","assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00006.png","assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00007.png","assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00008.png","assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00009.png","assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00010.png","assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00011.png","assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00012.png","assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00013.png","assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00014.png","assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00015.png","assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00016.png","assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00017.png","assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00018.png","assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00019.png","assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00020.png","assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00021.png","assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00022.png","assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00023.png","assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00024.png","assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00025.png","assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00026.png","assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00027.png","assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00028.png","assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00029.png","assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00030.png","assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00031.png","assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00032.png","assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00033.png","assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00034.png","assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00035.png","assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00036.png","assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00037.png","assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00038.png","assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00039.png","assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00040.png","assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00041.png","assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00042.png","assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00043.png","assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00044.png","assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00045.png","assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00046.png","assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00047.png","assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00048.png","assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00049.png","assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00000.png","assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00001.png","assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00002.png","assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00003.png","assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00004.png","assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00005.png","assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00006.png","assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00007.png","assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00008.png","assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00009.png","assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00010.png","assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00011.png","assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00012.png","assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00013.png","assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00014.png","assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00015.png","assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00016.png","assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00017.png","assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00018.png","assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00019.png","assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00020.png","assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00021.png","assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00022.png","assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00023.png","assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00024.png","assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00025.png","assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00026.png","assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00027.png","assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00028.png","assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00029.png","assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00030.png","assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00031.png","assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00032.png","assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00033.png","assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00034.png","assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00035.png","assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00036.png","assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00037.png","assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00038.png","assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00039.png","assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00040.png","assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00041.png","assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00042.png","assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00043.png","assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00044.png","assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00045.png","assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00046.png","assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00047.png","assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00048.png","assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00049.png","assets/images/gen_eyes.png","assets/images/gen_eyeglasses.png","assets/images/gen_stop.png","assets/images/gen_nearby.png","assets/images/gen_distance.png","assets/images/gen_far_away.png","assets/images/gen_drag_screen.png","assets/images/gen_drag_daily.png","assets/images/gen_drag_outdoor.png","assets/images/gen_drag_indoor.png","assets/images/gen_woman_children.png","assets/images/running.png","assets/images/gen_expose.png","assets/images/running-solo.png","assets/images/gen_discomfort.png","assets/images/gen_smudge.png","assets/images/gen_scratch_glasses.png","assets/images/gen_rain.png","assets/images/gen_multiple_screen.png","assets/images/gen_discussion.png","assets/images/gen_meetings.png","assets/images/bike.png","assets/images/scooter.png","assets/images/motor.png","assets/images/gen_car.png","assets/images/gen_bus_driver.png","assets/images/gen_brightlight.png","assets/images/gen_lowlight.png","assets/images/gen_reduced_dark.png","assets/images/gen_changing_light.png","assets/images/gen_glare.png","assets/images/gen_headlights.png","assets/images/gen_multitask.png","assets/images/gen_precision_task.png","assets/images/gen_electrician.png","assets/images/gen_farsighted.png","assets/images/gen_drag_quick_eye.png","assets/images/gen_drag_high_risk.png","assets/images/gen_fast_response.png","assets/images/gen_drag_kitchen.png","assets/images/gen_smudge_dust_grease.png","assets/images/gen_light_circumstances.png","assets/images/regions/oceanie.jpg","assets/images/regions/amera.jpg","assets/images/regions/noam.jpg","assets/images/regions/europe.jpg","assets/images/regions/latam.jpg","assets/images/regions/africa.jpg","assets/png/logo-white.png","assets/images/demonstrations/icons/Union.png","assets/svg/varilux-g9/icons/refresh.svg","assets/svg/varilux-g9/icons/play-video.svg","assets/png/variluxG9-bg-4.png","assets/png/variluxG9-bg-2.png","assets/png/variluxG9-bg-3.png","assets/images/demonstrations/01.png","assets/images/demonstrations/027.png","assets/images/demonstrations/03.png","assets/images/demonstrations/04.png","assets/images/demonstrations/05.png","assets/images/qrcode-ca.png","assets/images/qrcode-canada.png","assets/images/qrcode-sample.png","assets/images/qrcode-sk.png","assets lazy /^/.//.*$/ groupOptions: {} namespace object","assets/images sync /^/.//qrcode/-.*/.png$","types/experience.type.ts","components/ui/Icon.tsx","utils/hooks/useBEM.ts","components/ui/Arrow.tsx","components/ui/RouterLink.tsx","constants/routes.constant.ts","constants/breadcrumbs.contant.ts","constants/settings.constants.ts","utils/Utils.ts","constants/endpoints.ts","utils/hooks/useTranslation.ts","constants/my-companion.constants.ts","constants/theme.constants.ts","constants/translations.contants.ts","constants/language-code.constants.ts","types/complementary-equipment.type.ts","store/slices/app.slice.ts","utils/hooks/useDisableOnVariluxG9.ts","components/Breadcrumb.tsx","store/slices/sidebar.slice.ts","types/lens-category.type.ts","types/lens-enhance.type.ts","types/lens-family.type.ts","types/lens-protect.type.ts","types/product-demo.type.ts","types/product-download.type.ts","constants/lens-demo/experio-mirrors.constants.ts","constants/lens-demo/experio-polarise.constants.ts","constants/lens-demo/experio-tinted.constants.ts","constants/lens-demo/experio-tinted-mirrors.constants.ts","constants/lens-demo/stellest.constants.ts","constants/lens-demo/transitions-style-mirrors.constants.ts","constants/lens-demo/transitions-xtractive-mirrors.constants.ts","constants/lens-demo/experio-polarised-mirrors.constants.ts","constants/lens-demo/lens-demo.constants.ts","constants/products.constants.ts","types/lens-pair.type.ts","store/slices/products.slice.ts","constants/lens-consultation-data.constants.ts","constants/pricing-breakdown.ts","types/need-explorer-view.type.ts","store/slices/lens-consultation.slice.ts","store/slices/measure.slice.ts","store/slices/mycompanion.slice.ts","constants/need-explorer-questionaires.contants.ts","types/age-category.type.ts","constants/need-explorer-kids-questionaires.contants.ts","store/slices/need-explorer.slice.ts","types/precision.type.ts","constants/prescription-lens-proposal.constants.ts","types/prescription-view.type.ts","types/discovery-view.type.ts","store/slices/prescription.slice.ts","store/slices/lens-thickness.slice.ts","store/slices/user.slice.ts","store/slices/education.slice.ts","store/slices/delivery.slice.ts","store/slices/products-demo.slice.ts","utils/misc.ts","store/slices/discovery.slice.ts","store/slices/license.slice.ts","constants/package-offer.constants.ts","constants/product-logic.constants.ts","types/prescription-product-varilux.type.ts","store/slices/package-offer.slice.ts","constants/delivery-pairs.constants.ts","store/slices/summary.slice.ts","constants/summary-data.constants.ts","store/slices/tutorial.slice.ts","store/slices/push-notification.slice.ts","constants/variluxG9/need-explorer-choices.ts","store/slices/variluxG9.slice.ts","store/store.ts","utils/hooks/useGoogleAnalytics.ts","utils/hooks/useGoto.ts","constants/product-config.constants.ts","constants/lens-thickness.constants.ts","constants/skip-eprom-validation.constants.ts","pages/lens-consultation/useLensConsultation.ts","utils/hooks/useProducts.ts","utils/hooks/useEnv.ts","utils/context/indexedDBContext.tsx","types/lens-proposal-section.type.ts","components/ui/Tooltip.tsx","utils/hooks/useEprom.ts","components/NavBar.tsx","components/ui/BadgeNotification.tsx","components/sidebar/components/menu.tsx","constants/menu.constant.ts","components/sidebar/Sidebar.tsx","components/ui/Button.tsx","pages/homepage/components/ContinueWithID.tsx","components/ui/svg-icon/svg-icon-list.ts","components/ui/svg-icon/icons/stacked-group.ts","components/ui/svg-icon/SvgIcon.tsx","components/ui/ButtonGroup.tsx","pages/demonstrations/components/SeeThrougDemo.tsx","pages/demonstrations/components/DrawLine.tsx","pages/demonstrations/components/DemoTextOverlay.tsx","pages/demonstrations/components/ProductDemo.tsx","constants/lens-consultation-modified-colors.ts","pages/demonstrations/components/ProductDemoSelection.tsx","pages/demonstrations/components/ProductDemoCompare.tsx","components/ui/Text.tsx","pages/demonstrations/components/ProductDescription.tsx","components/ui/Spinner.tsx","pages/demonstrations/Demonstrations.tsx","components/Modal.tsx","components/ui/InputText.tsx","pages/homepage/components/StartFrom.tsx","constants/home.contants.ts","pages/homepage/components/AgeCategory.tsx","pages/homepage/components/HomeStart.tsx","components/ui/CircleArrow.tsx","utils/hooks/useIndexedDB.ts","utils/deep-replace-object-value.ts","components/ui/Alert.tsx","pages/homepage/components/PatientListModal.tsx","components/products/components/SubProducts.tsx","components/ui/Loading.tsx","components/products/components/ProductCard.tsx","utils/hooks/useCarouselStyle.ts","pages/homepage/components/ProductSelectionHome.tsx","pages/homepage/HomePage.tsx","utils/hooks/useDisableCountry.ts","pages/my-companion/components/MyCompanionFooter.tsx","components/ui/ListMenu.tsx","pages/my-companion/components/MyCompanionLeft.tsx","components/ui/Accordion.tsx","components/ui/Checkbox.tsx","pages/my-companion/components/MyCompanionList.tsx","pages/my-companion/MyCompanion.tsx","components/ui/MateriaTextlnput.tsx","pages/practice-id/PracticeID.tsx","pages/lens-proposal-builder/components/LensProposaBuilderlExperience.tsx","pages/lens-proposal-builder/components/LensProposalBuilderCard.tsx","components/ThemeSetting.tsx","pages/lens-proposal-builder/components/LensProposalBuilderFooter.tsx","pages/lens-proposal-builder/LensProposalBuilder.tsx","utils/hoc/withAnimationTransition.tsx","pages/legal-notices/LegalNotices.tsx","constants/anamnesis.constants.ts","constants/anamnesis-summery.constants.ts","pages/need-explorer/components/NeedExplorerAnamnesisDetails.tsx","constants/need-explorer-summary.constant.ts","constants/email-css.constants.ts","constants/need-explorer-summary-kids.constant.ts","constants/need-explorer-summary-products.constant.ts","constants/product-logic-kids.constants.ts","utils/KidsDecisionTree.ts","pages/need-explorer/components/NeedExplorerAnamnesis.tsx","pages/need-explorer/components/NeedExplorerFinished.tsx","constants/need-explorer-intro.contants.ts","pages/need-explorer/components/NeedExplorerIntro.tsx","pages/need-explorer/components/NeedExplorerProgress.tsx","pages/need-explorer/components/NeedExplorerCategory.tsx","pages/need-explorer/components/question-types/ChoiceBox.tsx","pages/need-explorer/components/question-types/ChoiceBoxImage.tsx","components/ui/Islayder.tsx","pages/need-explorer/components/question-types/ChoiceBoxImageDuration.tsx","pages/need-explorer/components/question-types/ChoiceBoxKids.tsx","pages/need-explorer/components/question-types/ChoiceImageKids.tsx","pages/need-explorer/components/question-types/ChoiceList.tsx","pages/need-explorer/components/question-types/Dial.tsx","pages/need-explorer/components/question-types/DragAndDropSorter.tsx","pages/need-explorer/components/question-types/Note.tsx","pages/need-explorer/components/question-types/SliderGroup.tsx","pages/need-explorer/components/NeedExplorerQuestion.tsx","pages/need-explorer/components/CategoryProgressBar.tsx","pages/need-explorer/components/NeedExplorerQuestionPanel.tsx","pages/need-explorer/components/NeedExplorerQuestionaires.tsx","pages/need-explorer/components/NeedExplorerGeneralCheckPoint.tsx","pages/need-explorer/NeedExplorer.tsx","pages/varilux-g9/components/ProgressBar.tsx","pages/prescription/components/PrescriptionLensProposal.tsx","constants/prescription.constants.ts","pages/prescription/components/PrescriptionInput.tsx","pages/prescription/components/PrescriptionForm.tsx","components/ui/SideBoxBordered.tsx","pages/lens-thickness/useLensThickness.ts","pages/prescription/components/PrescriptionSide.tsx","pages/prescription/Prescription.tsx","constants/measure-steps.contants.ts","utils/api/frametrace.ts","pages/measures/components/FrametraceListModal.tsx","pages/measures/components/MeasureModal.tsx","pages/measures/components/MeasureStepNavigation.tsx","constants/measures-validation.constants.ts","utils/MeasuresValidation.ts","pages/measures/components/MeasureStepOne.tsx","pages/measures/components/MeasureStepThree.tsx","pages/measures/components/MeasureStepTwo.tsx","utils/hooks/usePricing.ts","pages/measures/components/MeasuresContainer.tsx","pages/measures/components/MeasureDataCard.tsx","pages/measures/components/MeasuresData.tsx","pages/measures/Measures.tsx","pages/lens-thickness/components/LensThicknessControl.tsx","pages/lens-thickness/components/LensThicknessSide.tsx","pages/lens-thickness/LensThickness.tsx","components/email-template/components/Footer.tsx","components/email-template/components/Header.tsx","components/email-template/components/SummaryDetails.tsx","components/email-template/SummaryTemplate.tsx","constants/lens-demo/lens-protect-summary.constants.ts","constants/xperio-sunfit-benefit.constants.ts","pages/summary/components/SummaryDetails.tsx","pages/advance-price-setting/useAdvancePricing.ts","pages/summary/components/SummarySide.tsx","components/ui/GenericToolTip.tsx","utils/hooks/useOnClickOutside.ts","pages/summary/Summary.tsx","pages/package-offer/components/PackageProduct.tsx","components/bink-eye.tsx","components/Loading.tsx","pages/package-offer/PackageOffer.tsx","constants/education.constants.ts","components/education/components/EducationLanding.tsx","components/ui/Dropdown.tsx","components/ui/ToggleRadio.tsx","components/ui/ToggleButton.tsx","components/education/components/EducationControls.tsx","components/education/components/EducationSteps.tsx","components/education/components/EducationContent.tsx","components/education/Education.tsx","utils/hooks/useDragScroll.ts","components/products/components/ProductSelection.tsx","constants/variluxG9/varilux-demo-categories.ts","utils/varilux-g9-videos.ts","components/products/Products.tsx","pages/delivery/components/DeliveryAdvices.tsx","components/email-template/components/HeaderSummary.tsx","components/email-template/components/Prescription.tsx","components/email-template/DeliveryTemplate.tsx","pages/delivery/components/DeliveryNavigation.tsx","pages/lens-consultation-v2/components/LensTransitionInAnimation.tsx","pages/delivery/components/DeliveryPairConsultation.tsx","pages/delivery/components/DeliveryPairDetails.tsx","pages/delivery/components/DeliveryPairMeasure.tsx","pages/delivery/components/DeliveryPair.tsx","pages/delivery/components/DeliveryPrescription.tsx","pages/delivery/components/DeliverySummarySection.tsx","constants/delivery.constants.ts","pages/delivery/components/DeliveryVisionTest.tsx","pages/delivery/components/DeliverySummary.tsx","pages/delivery/components/DeliveryTotal.tsx","pages/delivery/Delivery.tsx","pages/emat/components/EmatCard.tsx","pages/emat/components/EmatSlider.tsx","pages/emat/Emat.tsx","pages/license-activation/LicenseActivation.tsx","pages/discovery/components/DiscoveryIntro.tsx","pages/discovery/components/DiscoveryArrows.tsx","pages/discovery/components/DiscoveryLens.tsx","constants/discovery.constants.ts","pages/discovery/components/DiscoverySteps.tsx","pages/discovery/components/DiscoveryLensInfo.tsx","pages/discovery/components/DiscoverySplashScreen.tsx","pages/discovery/Discovery.tsx","components/SlideView.tsx","pages/lens-consultation/components/LensConsultationBrand.tsx","pages/lens-consultation/components/LensConsultationProduct.tsx","pages/lens-consultation-v2/components/LensAnimation.tsx","components/ui/ColoredCircleProgress.tsx","pages/lens-consultation-v2/components/LensTransitionOut.tsx","pages/lens-consultation-v2/components/LensConsultationSideV2.tsx","pages/lens-consultation/components/ProtectColorPicker.tsx","pages/lens-consultation/components/SubProductsDropdown.tsx","pages/lens-consultation-v2/components/LensFamily.tsx","pages/lens-consultation-v2/components/LensRecommendation.tsx","components/ToggleCard.tsx","pages/lens-consultation-v2/LensConsultationV2.tsx","components/ui/loadingAssets.tsx","components/DownloadAssets.tsx","components/RouteChangeTracker.tsx","constants/regions.constants.ts","components/RegionSelection.tsx","components/Language.tsx","pages/tutorial-content/components/TutorialCard.tsx","pages/tutorial-content/components/TutorialMain.tsx","pages/tutorial-content/components/TutorialSection.tsx","pages/tutorial-content/Tutorial.tsx","components/first-login/components/Language.tsx","components/first-login/components/MyComapanion.tsx","components/first-login/components/TermsCondition.tsx","components/first-login/FirstLogin.tsx","pages/advance-price-setting/components/AdvancePriceModifierInput.tsx","pages/advance-price-setting/components/AdvanceSettingFilterResults.tsx","pages/advance-price-setting/components/AdvanceSettingFilterField.tsx","pages/advance-price-setting/components/AdvanceSettingFilterFieldSelection.tsx","pages/advance-price-setting/components/AdvancePriceSettingFilter.tsx","pages/advance-price-setting/AdvancePriceSetting.tsx","pages/varilux-g9/components/LanguageSetting.tsx","pages/varilux-g9/components/DemonstrationPopup.tsx","pages/varilux-g9/components/VarNavbarHeader.tsx","constants/variluxG9/variluxSteps.ts","types/prescription-add-segmentation-varilux.type.ts","utils/hooks/useVariluxDisableButton.ts","constants/variluxG9/varilux-products-matrix.ts","types/prescription-eye-condition-varilux.type.ts","interface/varilux-product-card.interface.ts","utils/hooks/useVariluxMatrix.ts","pages/varilux-g9/components/VarNavbarBottom.tsx","pages/varilux-g9/components/VarNavbar.tsx","pages/varilux-g9/components/ConclusionVarilux.tsx","constants/variluxG9/varilux-categories.ts","utils/varilux-products.ts","pages/varilux-g9/components/demonstrations-varilux/ProductCardVarilux.tsx","pages/varilux-g9/components/demonstrations-varilux/ProductCardVariluxModalContent.tsx","pages/varilux-g9/components/demonstrations-varilux/ProductCardVariluxModal.tsx","constants/variluxG9/prescription-options.ts","pages/varilux-g9/components/DemonstrationsVarilux.tsx","pages/varilux-g9/components/IntroVarilux.tsx","components/ui/Champ.tsx","components/ui/Dialogue.tsx","pages/varilux-g9/components/NeedExplorerVarilux.tsx","pages/varilux-g9/components/PrescriptionVarilux2.tsx","pages/varilux-g9/components/VariluxContainer.tsx","utils/hooks/useVariluxBackground.ts","pages/varilux-g9/components/DownloadVariluxAssets.tsx","pages/varilux-g9/Varilux.tsx","App.tsx","serviceWorkerRegistration.ts","reportWebVitals.ts","index.tsx"],"names":["map","webpackAsyncContext","req","__webpack_require__","o","Promise","resolve","then","e","Error","code","ids","id","all","slice","keys","Object","module","exports","webpackContext","webpackContextResolve","ExperienceType","Icon","name","type","extension","className","click","background","customStyle","position","gtmId","useState","image","setImage","folders","svg","png","gif","onClickHandler","mounting","useRef","useEffect","current","imgName","ext","img","default","catch","console","log","loadImage","style","backgroundImage","backgroundPosition","backgroundSize","onClick","src","alt","useBEM","blockName","modifiers","modifier","Array","isArray","m","join","trim","elementName","Arrow","color","size","thickness","disabled","B","stlye","borderWidth","borderColor","width","height","push","classModifers","RouterLink","route","children","history","useHistory","preventDefault","path","href","routes","testing","label","home","myCompanion","practiceID","legalNotices","lensProposalBuilder","needExplorer","prescription","measures","lensConsultation","lensThickness","summary","packageOffer","delivery","demonstration","demonstration2","emat","whatsNew","licenseActivation","discovery","variluxG9","advanceSetting","breadcrumbs","settings","environment","dev","version","apiUrl","GA","demoAssetsUrl","newAssetsUrl","siteAssets","dataStructureVersion","signalRUrl","azureApiUrl","azureApiCodes","uat","prod","Utils","isObject","object","cloneObject","obj","str","JSON","stringify","parse","downloadAsset","progressCallback","XMLHttpRequest","open","responseType","addEventListener","evt","lengthComputable","percentComplete","loaded","total","toFixed","Number","promise","resolved","reject","onload","this","status","response","blobData","URL","createObjectURL","onerror","send","downloadAssetBase64","callback","reader","FileReader","readAsDataURL","onloadend","result","generateRandomNumbers","count","fill","i","sort","Math","random","getThemeVariables","theme","main","dark","bubbleMain","bubbleSub","getDateTimeDifference","start","end","getTime","timediff","Date","toISOString","isNullUndefined","undefined","isMobileTablet","a","check","navigator","userAgent","vendor","test","substr","lensDemoURL","deepEqual","object1","object2","keys1","keys2","length","key","val1","val2","areObjects","apiURL","withVersion","apiUrlWithVersion","ENDPOINTS","activateLicense","account","translation","email","eprom","region","country","emats","whatsnew","tutorial","products","productCombi","masterLicenseData","orders","order","frametraces","countryCode","shopId","frametrace","useTranslation","app","tg9","fallback","g9Lang","g9currentLanguage","t","lang","getTranslations","params","onSuccess","onError","axios","get","headers","Authorization","res","err","getTranslations2","loading","rej","resp","responseData","sortCountries","data","entries","b","aa","toLocaleLowerCase","bb","sorter","generateIconImage","countryName","replace","categories","value","icon","price","enabled","discount","discountAmount","discountPercentage","amountEnabled","discountEnabled","KIDS_THEMES","TRANSLATIONS_DEFAULT","region_language_change_region","region_filter","language_lang__back_","home_hom_whats_new","home_hommemat","home_home_disc_essilor","home_hom_lp_builder","home_hom_start","home_hom_start_from","home_hom_id","home_hm_qr_code","masterlicense_patientlist","languageCode","anBA","caIS","grDA","saLU","veZU","baBA","barBAR","guGU","jaJA","trTR","niNI","crCR","enUK","doDO","multipleLanguage","esBO","language","ecEC","svSV","gtGT","hnHN","paPA","pePE","ComplementaryEquipmentType","initialState","g9CountryLanguages","g9Languages","g9LanguageSetting","alphaCode","show","lensThicknessSettings","discountSettings","subLanguage","regions","enUS","globalInformation","storeName","phone","address","license","nickname","recentEmat","recentNew","firstLogin","view","isOpen","selectedLanguage","firstStatus","cookieEnabled","ematModal","selected","description","created_date","file","myCompannion","isPriceOff","essilorRecommend","category","tempLensThicknessSettings","tempDiscountSettings","configUpdatedAt","dataRetention","lastDeletionDate","lastCheckedServerDate","isDateSync","globalAlert","message","experience","STANDARD","isModalOpen","appSlice","createSlice","reducers","state","action","payload","changeTheme","showGlobalAlert","saveLensThicknessSettings","saveDiscountSettings","setLanguage","setSubLanguage","setToken","token","saveAccountDetails","accountDetails","saveRegions","setTranslationRegion","translationRegion","setTranslationCountry","translationCountry","setTranslationCountryLanguage","translationCountryLanguage","setTranslations","sorted","store","storeKey","hasOwnProperty","firstSort","secondSort","toLowerCase","translations","setTranslation","setG9LanguageSetting","setG9CountryLanguages","setG9Languages","setProducts","setProductCombi","isInAppRefresh","originalDataList","x","find","originalData","filter","correct","correct_sub","protect1","protect2","enhance","index","protect1_price","protect2_price","updateAdvancePriceCombinations","saveGlobalInformation","saveLicense","updateLicenseStatus","setLicenseValidationDate","licenseValidationDate","seteMatList","newList","load","v","moment","today","diff","setNewList","setEmatModal","detail","setViewFirstLogin","setOpenFirstLogin","selectedSubLanguage","setFirstLoginStatus","setCookieEnabled","updateDataStructureVersion","resetData","videos","saveMyCompannionData","updateDataRententionData","setExperience","saveEPROMData","epromData","setIsModalOpen","getApp","useDisableOnVariluxG9","variluxIdentifier","includes","BreadCrumb","location","useLocation","activeBreadCrumbs","setActiveBreadCrumbs","activeRoute","setActiveRoute","useSelector","disableBreadCrumbsOnVarilux","clonedbreadcrumbs","getActiveRoute","pathname","routeKeys","clonedRoutes","activeRouteKey","k","sidebarSlice","selectedMenu","close","selectMenu","menu","callerId","getSidebar","sidebar","LensCategoryType","LensEnhanceType","LensFamilyType","LensProtectType","ProductDemoType","DemoDownloadType","sellout","experioMirrorsDemo","demo","demoType","SLIDER_IMAGE","asset","colorID","packshotPolarized","getVideoByColor","folder","generateDemo","replaceAll","SIDE_BY_SIDE_VIDEO","hideSlider","experioPolarisedDemo","NESTED_DEMO","hideCenterButton","packshotTinted","experioTintedDemo","SLIDER_VIDEO","experioTintedMirrorsDemo","stellestDemo","compareByDefault","hideCompareButton","withSellout","control","parent","instruction","VERTICAL_SLIDER_VIDEO","transitionsStyleMirrorsDemo","transitionsXtractiveMirrorDemo","experioPolarisedMirrorsDemo","PRODUCT_LENS_DEMO","TEMPORARY_PRODUCT_LIST","variluxCard","eyezenCard","blueUVCard","experioCard","CORRECT","brands","logo","lensDesign","PROGRESSIVE","downgrade","subProducts","smallTitle","benefits","complementaryEquipments","COMPUTER","PROGRESSIVE_SV_LENS","isKids","SINGLE_VISION","kidsPrescriptionRange","min","max","stellestCard2","MYOPIA","PROTECT","colors","SUN","DRIVING","TINTED","BLUE_CUT","transitionsCard","PHOTOCROMIC","ENHANCE","crizalCard","AR","optifogCard","baseAssetURL","url","newAssetURL","LENS_DEMO","is360","drawline","left","blur","xseriesBlur","line","xseriesLine","right","eseriesBlur","eseriesLine","physioBlur","physioLine","libertyBlur","libertyLine","comformaxBlur","comformaxLine","comfor3Blur","comfor3Line","sseriesBlur","sseriesLine","standardBlur","standardLine","DIVIDER_VIDEO","SEE_THROUGH_VIDEO","VIDEO","NESTED_DEMO_TRANSVERSAL","LensPairType","downloadStatus","WAITING","downloadCountText","demoDownloadStatus","preloadedProductDemos","temporaryProductList","lensDemo","enabledProducts","openBrand","selectedProduct","isQrCodeOpen","productsSlice","changeDownloadStatus","changeDownloadCount","updateDownloadStatus","brandId","info","resetDownloadPendingStatus","newState","forEach","newStatus","COMPLETED","productPreloadComplete","currentList","found","clearSelectedProduct","changeView","selectBrandTodemo","brandToDemo","openBrandCard","selectProductTodemo","productToDemo","selectProductToCompare","productToCompare","updateProductList","family","brand","product","attachedProductDemo","productList","demos","arrayOfProductWithId","arrayOfXperioAndTransitions","getProductLabelById","productId","foundProductId","p","foundCount","isWithSubProducts","sb","reset","openQrCode","getProducts","lensConsultationData","packageOffersDowngrade","pricingBreakdown","currency","summaryTotal","deliveryTotal","isValidated","pair1","categoryLens","summaryPrice","deliveryPrice","correctPrice","protectPrice","protect2Price","enhancePrice","hasNocombi","pair2","NeedExplorerViewType","activePair","PAIR1","isLensThickness","sliderPage","lensType","lensRecommendation","storedLensRecommendation","selectedProtect","lensProducts","subProduct","protect","breakdown","sliderPageTwo","temporaryByPassProduct","lensConsultationSlice","setSliderPage","selectLensType","selectLensBrand","lensBrand","selectLensProduct","setPrefilledDataFromNeedExplorer","setPrefilledDataFromNeedExplorerStored","changePair","setIsLensThickness","validate","dateValidated","removeProduct","lensFamily","currentActivePair","newFamilyState","item","validOnEPROM","selectProduct","manual","isManual","pair","currentLensFamily","newLensFamily","saveSelectProtect","selectProductFamily","productFamily","selectProductBrand","productBrand","setProtectColor","saveLensRecommendationDataFromStore","showWarning","sessionStart","setBreakdown","setCurrency","setValidOnEPROM","setFamily","clearSecondPair","showDialogue","setShowDialogue","setShowWarning","setByPassXR","getLensConsultation","step","activeDataIndex","measurementData","one","two","three","isSavePairData","isIvsGenerated","measureSlice","changeStep","saveMeasureData","saveFrametraceMeasure","addPair","editPair","saveMeasureFromStore","savePairData","generateIvs","getMeasure","measure","myCompanionSlice","offPrice","offEssilorRecommended","selectCategory","selectPrice","setProductList","setLensThicknessSettings","setDiscountSettings","enableDisabledLensThicknessSetting","enableAmountBtn","enableDiscountBtn","enableDisabledDiscountSettings","updateDiscountPair","isAmount","newPrice","updatePriceLensThicknessSetting","updateBrandProductPrices","familyId","updateProductSubProductsPrices","enableDisableProduct","updateProductPrice","saveConfigurationData","product_selected","pricing_discount","updated_at","lens_thickness","getMyCompanion","neddExplorerQuestionaires","questions","question","kind","options","isAnswered","canSelectMultiple","answer","sliders","minValue","simpleIcon","subQuestion","dial","durations","AgeCategoryType","needExplorerKidsQuestionaires","INTRO","categoryStep","questionStep","activeCategory","activeQuestion","isGeneralDone","isExtraDone","answers","showSaved","needExplorerSlice","changeInitialStateToKids","nextQuestion","newQuestionStep","newCategoryStep","isLastQuestionOfCategory","isLastCategory","generalDone","isComplete","categoriesWithAnswer","cat","categoryQuestions","q","categoryIndex","questionIndex","previousQuestion","prevStep","questionaireFromStart","answerQuestion","gotoCategory","gotoQuestion","setShowSaved","setData","populateSelectedModal","selectedId","populateSelectedModalSignificance","significance","populateSelectedModalLens","selectedLens","populateSelectedModalLensIcon","selectedLensIcon","setIsExtraDone","setFinalAnswers","generalQuestionSessionStart","moreQuestionSessionStart","getNeedExplorer","PrecisionType","GENERAL_EQUIPMENTS","field","required","ageCategories","ADULT","YOUNG_ADULT","PERSONALIZED","KIDS","COMPLEMENTARY_EQUIPMENTS","currentCountry","localStorage","getItem","isXrEnable","RX_LENS_RECOMMENDATIONS","adult","equipment","kids","RX_LENS_RECOMMENDATIONS_WITH_XR","RX_LENS_RECOMMENDATIONS_RUSSIA","PrescriptionViewType","DiscoveryView","PRESCRIPTION","isValidPrescription","tempGeneralEquipment","tempComplementaryEquipment","tempPrescriptionData","precision","values","sphere","od","os","cylinder","axis","addition","valueSign","temporaryData","prescriptionSlice","saveTemporaryLensEquipment","general","complementary","updateLensEquipment","capitalizedEquipment","charAt","toUpperCase","storeProperty","validPrescription","setPrescriptionPrecision","saveTempPrescriptionData","saveValueSign","presicription","sign","setTemporaryData","getPrescription","tempBaseLensThicknessCalculation","tempLensThicknessCalculation","error","sliderValue","sliderCount","lensThicknessSlice","setLensThickness","tempLensThickness","saveBaseLensThickness","saveLensThicknessDifference","clearLensThicknessCalculationData","setLensThicknessOnePair","changeError","setSliderValue","setSliderCount","updateBaseLens","updateLensDifference","getlensThickness","summaryList1","summaryList2","userSlice","setId","setUserData","clearUserState","setAgeCategory","ageCategory","savePrescriptionData","saveLensEquipment","generalEquipment","complementaryEquipment","saveMeasuresData","saveSummary1","saveSummary2","saveNeedExplorerData","savePrefilledData","saveLensThickness","saveLensRecommendationData","createdDate","getUser","user","isControlsOpen","isItemEnabled","isLensEnabled","educationSlice","toggleControls","toggleItemControl","toggleLensControl","resetState","setEnvironment","getEducation","education","activeSection","scrollView","isShowSummaryDetails","isWithInteraction","deliverySlice","setActiveSection","scrollToView","showSummaryDetails","timeStamp","validatedTimestamp","clearValidatedTimestamp","getDelivery","productDescription","syncVideoPlayFlag","isControlsDisabled","isCompareEnabled","triggerCenter","enableDrawLine","seeThroughActivated","qrPopup","productDemoSlice","changeDemoType","setSubDemoType","subDemoType","setProductDescription","disableControls","enableCompare","selectLensFamily","setActiveProductDemo","activeProductDemo","setActiveCompareProductDemo","activeCompareProductDemo","updateVideoPlayFlag","newValue","setRecommendationDemo","recommendationDemo","setRecommendationDemoBrands","recommendationDemoBrand","setDemoFrom","demoFrom","toggleDrawLine","activateSeeThrough","openQrPopup","getProductDemo","productDemo","SummaryExportType","discoverySlice","selectLens","getDiscovery","licenseSlice","updateStatus","packages","subLabel","isDisabled","productLogic","answerId","scoreMatrix","high_questions_indexes","low_questions_indexes","general_question_indeces","low_answer_ids","correct_indexes","protect_indexes","enhance_indexes","product_ids1","product_ids2","product_ids3","brand_ids","evaluateDecisionTree","currentNeedExplorerData","isGeneral","pl","product_ids","setProductId","ANSWER_IDS","getAnswerIds","isAgeLow","GENERAL_PRODUCT_LOGIC_MATRIX","ANSWER_MATRIX","REFERENCE","ApplyDragDropSorterMultiplier","MATRIX_SUM","AddMatrixValues","j","pop","HIGHEST_SCORE_INDECES","getHighestScorePerCategory","isXperio","fetchBrandDetailsViaId","fetchProductDetailsViaId","fetchSubProductDetailsViaProductId","significantAnswers","getAnswerIDwithSignificantAnswers","allAnswers","selectedNone","ALL_PRODUCT_LOGIC_MATRIX","answerMatrix","filtered","am","getProductInfo","uniqueSubProduct","getUniqueSubProducts","fetchSubProductDetailsViaSubProductId","getSubProductFromId","getProductFromId","fetchBrandDetailsViaProductId","hasId","l","s","answerIDs","dialAnswers","qid","dialLogic","has","ans","sumMatrix","correctScores","indeces_correct","GetFirstSecondHighestIndex","protectScores","indeces_protect","enhanceScores","indeces_enhance","first","second","matrix","reduce","r","inp","outp","rank_answers_1_6","rank_answers_4_4","cut_ranking_answers","reverse","answers_multiplied_1_6","multiplied","answers_multiplied_4_4","isLowestIndex","unique","uniqueSubProducts","lowestIndex","sortSubProducts","saveToPdf","inputDom","pdfName","pageOptions","scale","onComplete","topOffset","removeElements","containerWidth","element","document","getElementById","setAttribute","html2canvas","canvas","imgData","toDataURL","pdf","jsPDF","internal","pageSize","getWidth","getHeight","imgHeight","pageTopOffset","currentPage","isMultiplePage","firstPageImgHeight","additionalOffset","addImage","remainingHeight","addPage","abs","save","removeAttribute","PrescriptionProductTypeVarilux","sendMail","receiver","subject","emailComponentTemplate","currentDateTime","toLocaleString","day","month","year","hour","minute","requestBody","renderToString","axiosConfig","post","isAdvancePricing","packageOfferSlice","setPackageOfferData","productDowngrade","brandDowngrade","getPackageOfferPrice","getDiscount","getCurrency","getAdvancePrice","newData","cats","getCorrect","ref","getSubProduct","productDetails","getPrice","correct_id","correct_code","correct_index","protect_id","protect2_id","enhance_id","finalPrice","toString","temp","personalized","optimized","standard","getPackageOffer","deliveryPairDesc","progressive","desc","single","both","title","sub","descriptions","summaryBrand","summaryNotes","summarySlice","setPairDetails","newState1","newState2","deliveryDescription","PAIR2","saveSummaryNotes","getSummary","tutorialSlice","items","newFeatures","useJourney","personalizedCompanion","updateApp","content","viewed","selectedCard","val","selectedKey","saveViewMode","saveTutorialItems","getTutorial","pushNotificationSlice","inAppHasNewUpdate","eMatHasNewUpdate","whatsNewHasNewUpdate","tutorialHasNewUpdate","notificationEvent","setInAppNotification","setEmatNotification","setWhatsNewNotification","setTutorialNotification","setCountryCode","setNotificationEvent","setProductTimestamp","setTranslationTimestamp","setPricingTimestamp","pricing","setEmatCount","setWhatsNewCount","whats_new","setTutorialCount","getPushNotification","pushNotification","variluxChoices","needExplorerChoices","prescriptionVarilux","productSelected","NONE","sphereMean","ametropia","additionSegmentation","categoryPercentages","lensCategorySelected","showDownloadPopup","prescriptionVideoPlay","variluxgG9Slice","selectChoice","newChoices","choice","resetNeedExplorerChoices","savePrescription","convertValuesToNumber","isPositive","number","add","setEyeCondition","setAddSegmentation","setCategoryPercentages","setLensCategorySelected","setShowDownloadPopup","setPrescriptionVideoPlay","getVariluxG9","configureStore","reducer","preloadedState","serialisedState","warn","loadFromLocalStorage","middleware","getDefaultMiddleware","immutableCheck","useGoogleAnalytics","event","newDataLayer","variable_id","getState","window","dataLayer","useGoto","delay","setTimeout","routeWithTransition","fromRoute","toRoute","transition","pageElement","querySelector","classToAppend","classList","remove","PRODUCT_CONFIG","BRAND_CONFIG","COLOR_CONFIG","LENS_THICKNESS_RULES","range","negative","positive","SKIP_EPROM_VALIDATION_DATA","be","useLensConsultation","getProductsByFamily","N","String","split","getPrescriptionByPosition","pos","rx","rxProp","parseFloat","sph","cyl","axl","transformRxFieldData","rxField","defaultValue","rxValues","getSubProductsByLabel","isSortByIndex","targetIndex","target","isValidRecommendation","recommendations","withProducts","cloned","pairKey","familyKey","isWithRecommendedProduct","getProductById","list","fam","f","rxLensRecommendation","recommendation","recommended","withResult","brandLoop","productLoop","loopProducts","getMeasuresHighestValues","measures1","pd","getLeftAndRightPrescription","isValidOnEPROM","getRequestType","withRX","validateEPROM","flag","correctPrescriptionData","finalData","odos","skipEPROMValidation","subProductId","skipCountry","skipProduct","useProducts","validateProductData","validateProductPricingData","getColorIdPrefix","getProductData","getPriceCombination","getProductData2","getPriceCombination2","mapProducts","correct_family","protect_family","enhance_family","getSubProducts","subs","sp","ind","getBrandLabel","famType","getStaticValues","config","filterSelectedColor","getColorIdFromType","assignProductData","transformColors","availableColors","brandGroup","rv","groupArrayOfObjects","brandLabel","productLabel","ageCategoryId","getBrands","symbol","familyType","useENV","IndexedDBContext","React","IndexedDBProvider","LensProposalEquipmentType","db","database","table","getRequest","transaction","objectStore","onsuccess","ev","update","request","put","insert","Provider","Tooltip","useEprom","checkIfValidMassTint","correctCode","protectIds","masstint","valid","mass","checkIfValidTreatment","enhanceId","treatment","getAvailableColors","protectId","getEPROMData","formatData","ep","getAvailableProduct","masstintOrTreatment","filterByAvailableIndex","enabledIndexes","avalableIndexes","isSubProducstAvailable","subProductIds","epromSubProducts","filterSubProductsAvailable","getTheLowestIndex","baseIndex","subProductCode","epromIndexes","getEpromApiEndpoint","shop","query","productIds","validProductIds","toCheckIds","validIds","isValidOnEpromBO","correctId","toCheck","availableIds","NavBar","dispatch","useDispatch","appStore","ga","goto","productStore","env","useContext","inAppShowTooltip","setInAppShowTooltip","disableNavbarOnVarilux","pushGADataLayers","trackUserGoogleAnalytics","checkDataStructureVersion","actions","initSignalR","checkNotification","displayTooltip","currencyCode","ga_code","trackingId","ReactGA","set","License","license_id","newDataVersion","clearData","closeNavOnly","reloadPage","onLine","clear","reload","regionIdToUse","translationsData","defaultRegion","updateTranslationData","mappedProductData","prices","formatted","updateEvent","reloadPageCallback","cancelReload","errorMsg","apiCallFailed","countryLanguageCode","countryTranslationData","connectSignalR","userId","groupId","connection","HubConnectionBuilder","withUrl","configureLogging","LogLevel","Information","withAutomaticReconnect","build","on","tempCurrentEventFly","currentEvent","record_count","timestamp","register","retrieve","machineID","latestEvent","latestProductDate","latestPricingDate","latestTranslationDate","currentProductDate","currentPricingDate","currentTranslationDate","latestEmat","currentEmat","newEmat","latestWhatsNew","currentWhatsNew","newWhatsNew","latestTutorial","currentTutorial","newTutorial","fetch","method","json","respEvent","setItem","groupName","body","essilorLogoWhite","refreshNew","refresh","page","playVideo","hamburgerNew","hamburger","BadgeNotification","E","Menu","soonHover","setSoonHover","submenu","updateNotification","isActiveMenu","activeMenuClass","selectIcon","showBadge","badgeCount","comingSoonMenu","onMouseEnter","onMouseLeave","activeIcon","renderMenu","menus","SideBar","firstUpdate","Button","text","outlined","circle","active","iconPosition","weight","outlineType","textSize","themed","soon","icontype","sunBack","classes","finalClass","ContinueWithID","SvgIcons","gps","accountCircle","arrowRight","arrowLeft","minus","qrcode","stackedGroup","SvgIcon","backgroundColor","bordered","html","withViewBox","padding","mods","modfiers","focusable","viewBox","d","ReactHtmlParser","ButtonGroup","buttons","onSelect","iconType","extraControlDisabler","showNewCanvas","classModifies","button","c","isClearValue","onSelectHandler","pointerEvents","SeeThrougDemo","videoRef","assetSource","setAssetSource","fadeOut","setFadeOUt","play","pause","currentTime","getAssetSource","mouseDown","mouseUp","onMouseDown","onMouseUp","onTouchStart","onTouchEnd","onContextMenu","playsInline","autoPlay","loop","muted","DrawLine","mode","leftBlur","setLeftBlur","leftLine","setLeftLine","rightBlur","setRightBlur","rightLine","setRightLine","source","getPreloadedAsset","loadAssets","DemoTextOverlay","finalDemoType","classExtension","classExtender","ProductDemo","isChangeDemoTypeLoading","setFinalDemoType","previousLensDemo","showTextOverLay","isImageDemo","needVideoPlaySync","paused","SEE_THROUGH_IMAGE","timer","clearTimeout","isVideoDemo","sceneId","imageSource","fieldOfVision","autoLoad","showZoomCtrl","showFullscreenCtrl","doubleClickZoom","keyboardZoom","mouseZoom","LENS_COLOR_MODIFICATIONS","DEMO_COLORS_MODIFICATIONS","ProductDemoSelection","hideDemo","selectedDemo","forceDisableSelect","onSelectProduct","isOpenSubProducts","setIsOpenSubProducts","countryLicense","setDescription","showSubProducts","isShow","disableProductSelection","eventAction","showProduct","checkedColorFromBO","newColors","filteredColors","stardardDemo","standardLabel","getDynamicLabel","withDescription","subProductModifierClass","pp","renderSubProducts","ProductDemoCompare","screenWidth","innerWidth","documentElement","clientWidth","showTextOverLay2","diamondPos","useSpring","throttle","bindDiamondPos","useDrag","sliderValueSetter","offset","checkOffsetValue","xValue","base","percent","span","touchAction","onChange","slider","flex","onSelectProductToCompare","Text","bold","modifierClass","ProductDescription","onClose","getModifiers","ReactHTMLParser","Spinner","Demonstrations","demoTypes","setDemoTypes","preloadingComplete","setPreloadingComplete","preloadCount","setPreloadCount","preloadCompleteCount","setPreloadCompleteCount","recommendationTypes","setRecommendationTypes","changeDemoTypeLoading","mounted","parentDemo","setParentDemo","setLensType","lensTypes","preloadDemoAssets","defaultDemo","isAlreadyPreloaded","isNested","toPreloadAssets","posKey","imgType","chp","ctrlChild","ctrlChildProduct","ch","ap","base64","prev","isGrXperioMirror","isGrXperioPolarised","isCoTransitionMirrors","isCoXperioMirrors","demoToUse","getSubDemoTypes","rightAssset","leftVideo","isTransversal","productsToUse","isDividerOnly","isCompare","selectedColor","newProductToDemo","newBrand","showControlChildren","mainCanvas","subDemo","selectSubDemo","childDemo","btnData","isSelected","selectedIcon","Icon_1_white","Icon_2_white","Icon_3_white","Icon_4_white","Icon_5_white","productsName","productName","initialCurrentDemoState","selectedButtonIndex","selectedProductIndex","selectedProductName","currentDemo","setCurrentDemo","setShowNewCanvas","setShowSubProducts","showNewControls","setShowControls","controlButtonData","setControlButtonData","productSelection","setProductSelection","videoAssetArray","setVideoAssetArray","controlBtnClickHandler","leftVideoKey","getAssetMatrix","getVideoFromIndexedDB","controlTimer","demotypes","productLevel","rightVideo","arr","showOtherProducts","brandIsDownloaded","productIsPreloaded","preloadCountProgress","toDemo","forceValue","enable","leftVideoID","withEffects","toggleCompare","toSelect","option","ii","btn","Modal","hideCloseButton","closeModalOnOutsideClick","rightHeaderDetail","radius","transparent","noPadding","closeButtonColor","portal","isWithBanner","withBanner","bannerElement","visible","display","onCloseHandler","ReactDOM","createPortal","mofifierClass","borderRadius","InputText","forwardRef","placeholder","maxlength","inputType","blockClass","dynamicClass","maxLength","StartFrom","isVisible","Boolean","setShow","AgeCategory","choices","choiced","setChoiced","activeChoiceID","floor","onSelectCategory","HomeStart","isSelectAge","isShowAge","setIsShowAge","CircleArrow","props","diameter","useIndexedDB","tables","tableIndexes","userStore","connect","upgradeCallBack","DBOpenRequest","indexedDB","createTables","objectStoreNames","contains","indx","indexNames","createIndex","createObjectStore","keyPath","getAll","condition","tx","openCursor","cursor","continue","oncomplete","indexes","delete","queryByDateRange","indexField","dateRange","from","to","IDBKeyRange","bound","lowerBound","upperBound","results","DeepReplaceObjectValue","transformArray","newObject","transformObject","Alert","onButtonSelect","PatientListModal","showModal","onModalClose","setOrders","setDB","dbRef","showAlert","setShowAlert","isLoading","setIsLoading","indexDB","connectIndexDB","loadOrders","deepReplace","transformNeedExplorer","userData","todaysOrders","orderList","created_at","getDate","orderStatus","ctrPres","el","orderDetails","toLocaleTimeString","order_id","patientId","newOrderData","finalNeedExplorer","SubProducts","use","indiaBusinessRule","demoProduct","Loading","dim","ProductCard","download","DownloadStatus","Fragment","DOWNLOADING","getLogoType","useCarouselStyle","distance","directionDist","setX","z","setZ","opacity","setOpacity","direction","pixel","maxDistance","transform","styleSettings","dragging","ProductSelectionHome","setBrands","activeIndex","setActiveIndex","brandLength","setDistance","setDirection","setDragging","bindXPosition","isTouchEnd","_lastEventType","isClickOnly","_dragIsTap","navigate","tempBrands","isDemoAvailable","indexSettings","HomePage","isStart","setStart","showStartFromIDModal","setShowStartFromIDModal","showPatientListModal","setShowPatientListModal","startFromIDField","setStartFromIDField","themes","isNordicsCountries","enableVarilux","setServerDateError","validateLicense","validateFirstLogin","currentTimeStamp","dataRetentionProcess","setHours","expiration_date","toDateString","modalOnClose","sentIDManual","alert","onCardSelect","card","labelKey","getExpiredOrders","days","now","thisDate","setDate","date","deleteExpiredOrders","expiredOrders","getServerDetails","current_date","checkOnline","serverDateString","serverDate","randomNumbers","randomTheme","themeStyle","cards","age","getAge","useDisableCountry","countries","enabledCountry","MyCompanionFooter","priceOff","setPriceOff","isEssilorRecommend","setEssilorRecommend","showSaveModal","setShowSaveModal","showSuccessModal","setShowSuccessModal","configCreationDate","setConfigCreationDate","dispath","companion","showConfirmModal","setShowConfirmModal","showErrorModal","setShowErrorModal","errorMessage","setErrorMessage","setIsBelgium","hideEssilorRecommend","hidePrice","is_master","created_by","shop_id","shop_account_no","region_id","toLocaleDateString","patient_list","ListMenu","selectedItemClass","MyCompanionLeft","menuItem","selectMenuItem","onSelectMenu","groupCategory","advance_pricing","group","Accordion","rightTitle","clicked","rightTitleClicked","setOpen","isRightTitleClick","Checkbox","checked","MyCompanionList","editProductPrice","setEditProductPrice","editBrandPrice","setEditBrandPrice","editProductSubProductsPrice","setEditProductSubProductsPrice","editThicknessPrice","setEditThicknessPrice","editPrice","setEditPrice","displayAdv","setDisplayAdv","setProductFamily","isLensProduct","getProductBrands","priceContent","checkBrandProductPriceZero","checkProductSubProductsPriceZero","renderDiscountRightTitle","isFirstLayer","isAmountEnabled","enableAmountDiscountButton","isNaN","setting","enableDisabledLensThickness","MyCompanion","MaterialTextInput","readOnly","validation","onValidate","setError","regex","PracticeID","shop_name","globalInfo","setGlobalInfo","emailValidation","invalidForm","setInvalidForm","onChangeHandler","LensProposaBuilderlExperience","LensProposalBuilderCard","completed","footer","classModifiers","plus","actionButtonIcon","ThemeSetting","multiColor","themeKey","LensProposalBuilderFooter","isExperience","onActionTrigger","offlineAlert","showOfflineAlert","handlePushButton","newUserData","appendLensRecommendation","withAnimationTransition","WrappedComponent","entrance","animate","setState","Component","setIsExperience","modifyId","setModifyId","modifyIDField","setModifyIDField","randomThemeIndex","setRandomThemeIndex","measuresState","checkIfAllModuleAreCompleted","IsModuleCompleted","editId","isGeneralComplete","isPrescriptionComplete","isMeasuresComplete","isLensConsultationComplete","getRandomTheme","randomIndex","checker","completedModules","indexOf","lensConsultationFooter","LegalNotices","replaceString","sections","header","content1","content2","section","anamnesis","tag","anamnesisDetails","side","questionRef","answerRef","lens","NeedExplorerAnamnesisDetails","details","setDetails","getSummaryDetails","questions_answer","questionTypes","qq","answersId","validateSignificance","QUESTIONNAIRE","iNeedExplorerSummary","roundCorner","textDecoration","border","maxWidth","align","margin","backgroundPerRow","minWidth","OverflowWrap","WordWrap","WordBreak","imageLogo","marginLeft","h3","Direction","fontFamily","fontSize","FontWeight","letterSpacing","lineHeight","marginTop","marginBottom","TextTransform","paragraph","TextAlign","pairHeader","paddingTop","paddingRight","paddingBottom","paddingLeft","pairContainer","pairSpan","summaryRowPadding","summaryRowBlock","summaryRowTitleLabel","summaryRowTitleII","summaryProductTitle","summaryBenefitContainerLI","mainIcon","footerText","marginRight","footerLogo","flexSpaceBetween","justifyContent","valueContainer","valueContainerAdd","headerImage1","backgroundRepeat","headerImage2","backgroundColorHeader","containerWhite","h2","prescriptionLabel","flexSpaceAround","iNeedExplorerKidsSummary","iNeedExplorerProductsSummary","kidsProductLogic","evaluateKidsDecisionTree","index_correct","index_enhance","isEyezenKids","isStellest_pair1","NeedExplorerAnamnesis","showSummary","setShowSummary","setResult","currentLensConsultation","setSummary","setPair","setLens","getNeedExplorerSummary","dataPopulate","correctp1","correctp2","protectp1","protectp2","enhancep1","enhancep2","getValues","saveDataAndPrefilled","recom","FINISHED","GENERAL_CHECKPOINT","onSelectCard","gotoLPB","NeedExplorerFinished","saveAllQuestionsSessionDuration","saveMoreQuestionsSessionDuration","gotoAnamnesis","ANAMNESIS","neddExplorerIntro","NeedExplorerIntro","setStep","intro","isLastStep","NeedExplorerProgress","generalProgressPercentage","setGeneralProgressPercentage","othersProgressPercentage","setOthersProgressPercentage","setIsKids","localIsKids","generalQuestions","getCategoryQuestions","generalAnsweredQuestions","countCategoryAnsweredQuestions","computePercentage","consolidatedOtherCategoryQuestions","totalOtherCategoryAnsweredQuestions","categoryId","of","ceil","dynamicShadeWidth","h","dynamicTheme","NeedExplorerCategory","categoryToAnimate","setCategoryToAnimate","setThemeStyle","modiferClass","ChoiceBox","onAnswer","getAnswer","selectedChoiceClassName","finalAnswer","select","ChoiceBoxImage","fa","Islayder","withIndex","adjustment","setThumbPosition","renderIndexGuide","ChoiceBoxImageDuration","duration","newAnswers","ChoiceBoxKids","ChoiceImageKids","ChoiceList","leftAlignedQuestions","Dial","setAnswer","valueWithinLimits","onChangeEnd","whole","dialChanged","strokeWidth","stroke","textAnchor","y","fontWeight","DragAndDropSorter","drag","setDrag","drop","getValue","getImage","isAssigned","removeDrop","indexValue","onPick","Note","SliderGroup","getSliderValue","handleOnChange","NeedExplorerQuestion","answerPanel","CategoryProgressBar","disableBack","disableNext","currentQuestion","numberOfQuestions","isCurrentQuestionWithAnwer","fullIndexes","onNavigate","barClassModifiers","dir","_","NeedExplorerQuestionPanel","optionalQuestionIds","showLoader","setShowLoader","questionsWithAnswer","setQuestionsWithAnswer","withAnswers","penultimateQuestionInGeneral","isGeneralQuestionDone","disableButton","isQuestionTypeKids","NeedExplorerQuestionaires","NeedExplorerGeneralCheckPoint","saveGeneralQuestionsSessionDuration","NeedExplorer","dynamicView","iViewStep","PrescriptionLensProposal","showPersonalized","setShowPersonalized","showCorrect","setShowCorrect","setPreSelectedValues","sphereValues","highest","correctPreSelectedValue","protectPreSelectedValue","preSelectValue","preSelectedValue","onSelectFieldOption","unSelectSelected","dataToUpdate","GENERAL","isSameValue","renderFiendOptions","renderData","hidden","renderFields","fields","COMPLEMENTARY","PRESCRIPTION_RULES_VARILUX","increment","requiredSign","suffix","ava","PRESCRIPTION_FORM","PRESCRIPTION_FORM_VARILUX","PRESCRIPTION_RULES","PrescriptionInput","rules","submitData","fieldValue","transformedData","incrementValue","appendSign","firstCharacter","isNegative","decimalValue","floorValue","incrementBase","finalValue","addSign","onBlur","onKeyDown","onKeyDownHandler","PrescriptionForm","dirtyFields","setDirtyFields","prescriptionFormFields","prescriptionRule","prescriptionRules","isFirstLoad","setIsFirstLoad","forVarilux","tempPrescriptionDataState","prescriptionValues","setPrescriptionValues","updateFormFieldValuesBaseOnPrecision","changePrecision","updatePrescriptionRules","row","activateLabel","AVA","sphereOD","sphereOS","cylinderOD","cylinderOS","precission","fieldName","setFieldsDirty","newDirtyFields","getRules","partnerFields","currentField","partnerField","isWithSign","column","ignoreDirtyCondition","changeSign","substring","validateVariluxAdd","osData","odData","updatePrescription","SideBoxBordered","useLensThickness","getTheClosestSubProductByIndex","closest","curr","getRecommendedLensThickness","rule","odRange","osRange","odCondition","osCondition","getRecommendedSubProductByIndex","filterSubProductsWithEnabledIndex","allIndex","PrescriptionSide","showImportModal","setShowImportModal","lensThicknessRules","noRecommendation","savePrescriptionOnGA","getGeneralEquipmentValue","getComplementaryEquipmentValue","finalText","recommendProductsForKids","correctLensCategory","protectLensCategory","enhanceLensCategory","pair1Correct","pair1Protect","pair1Enhance","saveRecommendedProducts","selectedEquipment","pair2Correct","pair2Protect","pair2Enhance","recommendProducts","selectedCorrect","selectedEnhance","saveRecommendLensThickness","getLabelIcon","clearLens","LENSPROPOSAL","Prescription","measuresSteps","navigationTitle","getFrametraceList","endpoint","deleteFrametrace","FrametraceListModal","onHideModal","displayModal","setFrametraces","loadFrametraces","deleteSelectedFrametrace","_id","ft","FNCLIENT","LNCLIENT","measureData","HBOX","VBOX","DBL","OCHT","IPD","pantoscopicAngle","PANTO","wrapAngle","ZTILT","vertexDistance","BVD","ivsValue","BVDV2","readingDistance","buildMeasureData","onSelectFrametrace","MeasureModal","onImport","showFrametradeModal","setShowFrametraceModal","MeasureStepNavigation","steps","measuresTranslationKeys","activeStepClass","measuresValidations","allowZero","validateMeasures","isError","MeasureStepOne","onSave","defaultData","localData","setLocalData","inputChangeHandler","floatRegExp","RegExp","data-placeholder","MeasureStepThree","setLeft","setRight","handedness","MeasureStepTwo","usePricing","lensRecom","defaultVal","orig","isPair1","lrpair","p1Percentage","p2Percentage","disc","getDetails","getLensThickness","getMeasureData","getManualSubProductPrice","getManualPrice","thickVal","thick","p1Amount","p2Amount","getPackagePrice","correctSub","mp1","mp2","fetchProductCombi","cs","p1","p2","pc","getBreakdown","getPackagePriceViaId","MeasuresContainer","showNewPairModal","setShowNewPairModal","activeStep","nextStep","newStep","cond","isMaxPair","renderMeasureStep","MeasureDataCard","empty","MeasuresData","Measures","animationRef","timeoutDelays","animation","setAnimation","vid","downloadVideo","clearTimeouts","addDelay","timeout","LensThicknessControl","setSubProducts","online","setRecommendationToDemo","setRecommendationToDemoBrands","isConfirmEPROM","setConfirmEPROM","isInitialLoad","previousRequestBody","withDemo","recommendationBrands","initialSubProducts","finalSubProducts","setSliderValuePairLoad","familyBE","correctSubProductId","isWithRX","skipEPROM","isValidateEPROM","product_code","handleProductCode","sub_product_code","handleSubProductCode","request_type","dataString","isBelgium","productIdsToCheck","getProductIdsToCheck","validProducts","eprom_recommendation","epromBOValidation","validateEPROMIndexes","statuscode","max_edge_thk","center_thk","productCode","edge","center","recommendedIndex","recommendedSubProduct","currentDiff","diffData","computeDifferencePercentage","checkEnhance","protectIdsToCheck","enhanceIdsToCheck","subp","actualIndex","sliderIndex","timerThrottle","setManualThickness","setFinalSubProduct","italyProductsByPass","masstingResult","treatmentResult","currentValue","deffPercentage","finalPercent","round","updateThickness","newIndex","styles","xstep","xmin","xmax","isVariluxXRRecommended","byPassXR","sessionStorage","confirmEPROM","LensThicknessSide","recommendLensThickness","LensThickness","Footer","iconDisplay","Header","SummaryDetails","groupBy","parseInt","textTransform","alignItems","iii","textAlign","SummaryTemplate","onNull","PROTECT_LENS_DEMO","XPERIO_SUNFIT_SUMMARY","setColorSelected","idColor","colorUrl","validateExisting","isSunProtect","modify","useAdvancePricing","getPairPriceCombination","computePrice","combi","discountType","originalPrice","protectModifier","correctEnhanceModifier","flatFee","protectModifierValue","correctEnhanceModifierValue","isAdvance","isEssilorPrice","getAdvancePricingTotal","SummarySide","isShowPriceBreakDown","priceOn","showPriceBreakDown","advancePrice","setAdvancePrice","showPricingModal","renderPackage","tableData","class","design","td","colSpan","renderBreakdown","isSunExp","hasPair2","renderManualBreakdown","GenericToolTip","setAnimate","localShow","setLocalShow","delay2","mainModifier","useOnClickOutside","handler","listener","removeEventListener","Summary","heightRef","setHeightRef","scrollVisible","setScrollVisible","divRef","addOnHover","setAddOnHover","addOnClick","setAddOnClick","discountHover","setDiscountHover","discountClick","setDiscountClick","showToolTip","setShowToolTip","setPriceOn","isValidate","setIsValidate","isShowExportModal","setShowExportModal","summaryContainer","notes","qrCountry","setQRCountry","hide","saveSummarySessionDuration","saveLensConsultationSessionDuration","scrollHeight","getFinalProducts","pairType","exportSummary","takeExportSummaryAction","QRCODE","PRINT","EMAIL","isSunXP","require","isQRCodeExists","PackageProduct","BlinkEye","onHoverEye","setOnHoverEye","gifSource","setGifSource","svgSource","setSvgSource","eyeGif","eyeSVG","onHoverHandler","isHover","textOnly","PackageOffer","selectedPackage","setSelectedPackage","isPair1Active","setPair1Active","isDemoClick","packageCount","setPackageCount","setLoading","prefilledDataInPackageOffer","fetchDowngrade","lr","prefilledDataInLC","getPackageDemo","initialDemo","initial","selectPackage","packageDemo","controlOptions","visualDefect1","visualDefect2","myopia","hyperopia","presbyopia","astigmatism","none","screenMode","landingCards","EducationLanding","Dropdown","classExtend","showOptions","setShowOptions","toggleOptions","focusHandler","getCurrentValue","selectedOptionClass","opt","ToggleRadio","ToggleButton","activeClass","setValue","EducationControls","setVisualDefect1","setVisualDefect2","lensSlider","setLensSlider","setScreenMode","getVisualDefect2Options","track","thumb","EducationSteps","isFirstStep","guide","EducationContent","educationSteps","Education","saveEducationSessionDuration","useDragScroll","draggable","startingPoint","touchEnabled","matchMedia","matches","clientX","onMouseMove","scrollLeft","stop","listen","ProductSelection","fadeIn","setFadeIn","dynamicWidth","setDynamicWidth","showDownloadAlertOnFirsttime","scrollIntoView","newBrands","downloadStatusIntinialData","downloadAllDemo","brandIndex","downloadInfo","initBrandCount","getAssetLength","newBrandIndex","updateBrands","updateDonwloadStatusOnStore","completedBrands","onDoneUpdate","XRaddition","onAlertConfirm","varluxDemoCategories","INSTANT","SHARP","STABILIZED","EXTENDED","PANOROMIC","newAssetsURL","variluxG9Videos","directory","CATEGORY","Products","downloadXRAssets","isDownloading","isXRDemoAlreadyPreloaded","DeliveryAdvices","setLensDesign","advicesContentMapping","wearing","singlevision","stellest","progressive_sv_lens","ergo","isStellest","lensDesignValue","HeaderSummary","headerVal","returnPrice","eq","prescription_rx_driving","prescription_rx_computer","prescription_rx_sun","returnEquipment","onUndefinded","DeliveryTemplate","DeliveryNavigation","setIsShowExportModal","isWithInteractionRef","saveDeliverySessionDuration","summaryDomRef","1","2","getAdvancePairPrice","measuresPair","scrollTo","LensTransitionInAnimation","trigger","setFadeOut","DeliveryPairConsultation","renderLensData","DeliveryPairDetails","getPairVisionType","DeliveryPairMeasures","measuresImage","setMeasuresImage","measureStep","setmeasureStep","setRef","slideShow","tempStep","DeliveryPair","summaryDetails","getDesc","DeliveryPairMeasure","DeliveryPrescription","DeliverySummarySection","data-view","NearVisionMenuItems","visionTestValues","va","DeliveryVisiontest","selectedMenuItem","setSelectedMenuItem","testItem","DeliverySummary","deliverySummaryRef","observer","viewObserver","lensObserver","lensViewObserver","disconnect","root","threshold","IntersectionObserver","checkView","querySelectorAll","observe","checkLensView","entry","isIntersecting","getAttribute","behavior","block","DeliveryTotal","validatePairs","withComplementaryEquipment","getPairPrice","vision","getPair2VisionType","Delivery","EmatCard","returnImage","word","onTranslate","format","EmatSlider","itemsLength","setItemsLength","setMaxHeight","setMinHeight","sliderStep","myRef","createRef","currUrl","getLength","ls","onNextScroll","tempCount","onUndefined","onScroll","scrollWidth","Emat","fileSort","sortKey","Bfs","Efs","Bfc","Efc","setSortKey","setPage","setItems","fetchMore","onType","dataLength","loader","next","hasMore","endMessage","scrollableTarget","openModal","renderFiles","controls","LicenseActivation","password","setPassword","deviceId","setDeviceId","getDeviceID","activate","username","machine_id","getAccountDetails","currentLanguageData","todo","win","uuidv4","DiscoveryIntro","onNextView","STEPS","DiscoveryArrows","DiscoveryLens","translationKey","showLensClass","renderArrow","correctLensOuter","protectLensOuter","enhanceLensOuter","LENS_FAMILY_DESCRIPTION","DISCOVER_STEPS","DiscoverySteps","animateIn","setAnimateIn","animateOut","setAnimateOut","setFadeInSprite","generateStepDots","clas","animationClass","LENS","DiscoveryLensInfo","lensFamilyDescription","DiscoverySplashScreen","progress","Discovery","darkNavBar","setDarkNavBar","montageRef","fadeInEndExperience","setFadeInEndExperience","isFinalFrame","setIsFinalFrame","fadeInFinalFrame","setFadeInFinalFrame","fadeInTextture","setFadeInTextture","montage","setMontage","nextView","newView","videoEnend","poster","EXIT","SlideView","numberOfSlides","currentSlide","finalWidth","setFinalWidth","offsetWidth","selector","slide","assignActiveSlide","LensConsultationBrand","getClassName","productCtr","BOTH","PRODUCT_YOUNG_ADULT","correctProductId","epromProducts","targetProducts","epromProductIds","isBrandAlreadySelected","selectBrand","LensConsultationProduct","setProduct","setSubProduct","isFamilyCorrect","selectSubProduct","isSelectedProduct","isSelectedSubProduct","availableSubProductsOnEprom","lowestIndexOnEPROM","isEPROMisEnabled","productType","self","countryBusinessRule","isAlreadySelected","LensAnimation","activeImage","setActiveImage","images","setImages","isProtectXperio","setIsProtectXperio","withLensSlider","setWithLensSlider","getProtectLensImage","imageId","validateProtect","setImagesAssets","isExperio","exists","lensTransitionAmber","lensTransitionAmethyst","lensTransitionBrown","lensTransitionEmerald","lensTransitionGrey","lensTransitionSapphire","lensTransitionGreen","lensPolarizedAmber","lensPolarizedBlueInk","lensPolarizedBluePurple","lensPolarizedBlueSky","lensPolarizedBrown","lensPolarizedGrey","lensPolarizedGreyGreen","lensPolarizedHerbal","lensPolarizedViolet","lensTintedBlack","lensTintedBlueInk","lensTintedBrown","lensTintedBurgundy","lensTintedGreyGreen","lensTintedGrey","lensTintedHerbal","lensTintedNewBrown","lensMirrorBronzeShadow","lensMirrorBronze","lensMirrorCandy","lensMirrorForestGreen","lensMirrorGoldPink","lensMirrorGreenShadow","lensMirrorKaki","lensMirrorMauveSilver","lensMirrorNewBlue","lensMirrorNewSilver","lensMirrorOceanBlue","lensMirrorOrange","lensMirrorParma","lensMirrorPinkSilver","lensMirrorSilverShadow","lensMirrorSilver","lensMirrorSkyBlueSilver","lensMirrorViolet","lensCorrectLens","lensProtectLens","lensEnhanceLens","lensAll","lensNone","correctProtect","lensCorrectProtect","correctEnhance","lensCorrectEnhance","protectEnhance","lensProtectEnhance","findIndex","imgKey","imageKey","ystep","ymin","ymax","correctGlow","protectGlow","enhanceGlow","ColoredCircleProgress","isNA","setIsNA","finalHue","finalThickness","additionalHSL","dynamicProperty","data-thickness","LensTransitionOut","thicknessImage","setThicknessImage","fadeInLensThickness","setFadeInLensThickness","indexImage","Concave","t5","concaveLens50","t59","concaveLens56","t6","concaveLens60","t67","concaveLens67","t74","concaveLens74","Convexe","convexeLens50","convexeLens56","convexeLens60","convexeLens67","convexeLens74","lensThicknessType","getLensThicknessType","lensImage","LensConsultationSideV2","transitionOutType","setTransitionOutType","isAnimateLensThickness","setAnimateLensThickness","isTransitionInAnimationComplete","setTransitionInAnimationComplete","lensThicknessTimestamp","lensConsultationTimestamp","recommendationToDemo","recommendationToDemoBrands","controlNextButton","setControlNextButton","isSame","getSavedSelectedIndex","parseSavedIndex","recomValue","parseRecomValue","isActivePairWithCorrectSubProduct","displayWarning","displayWarning2","clearSecondPairRecom","disableNextButton","saveAndNext","gotoSummary","saveLensThicknessSessionDuration","recommendSubProductByIndex","isWithDemo","demoProducts","getInitialDemo","disableDemo","transitionInAnimationComplete","bottom","ProtectColorPicker","showColors","setShowColors","lensColors","optionClassModifier","SubProductsDropdown","renderOptions","LensFamily","extraComponent","noLabel","allowMultiple","onEvent","force","productBelgiumXperioMirrors","xperio_mirrors","LensRecommendation","validatePackageOfferModal","setValidatePackageOfferModal","validateLensIfEmpty","validOnEpromBO","checkIfValidOnEpromBO","clearLensBaseThickness","isValid","withCorrect","getRecommendedValue","checkCountry","checkProduct","currentData","renderExtraComponent","recommendedValue","validateProduct","finalColors","onSelectProtectColor","filterColorsOnEPROM","available","colorIdPrefix","isLensRecommendationValid","selectedPair","renderLensFamily","eventHander","removeFromCountries","ToggleCard","onToggle","openClassModifier","LensConsultationV2","setReload","openPrescription","setOpenPrescription","windowOnresize","getBackButtonLabel","LoadingAssets","percentage","setProgress","isInXRPage","loadingText","third","siteAssetURL","measurementAnimation","discoveryMontageAnimation","DownloadAssets","preloadComplete","setPreloadComplete","doneCount","setDoneCount","loadedCount","downloadDiscoveryMontageAnimation","downloadMeasurementbase64","discoverybase64","measurementbase64","downloadAppVideos","downloadPercentage","transitionIn0","onLoad","transitionIn1","transitionIn2","transitionIn3","transitionIn4","transitionIn5","transitionIn6","transitionIn7","transitionIn8","transitionIn9","transitionIn10","transitionIn11","transitionIn12","transitionIn13","transitionIn14","transitionIn15","transitionIn16","transitionIn17","transitionIn18","transitionIn19","transitionIn20","transitionIn21","transitionIn22","transitionIn23","transitionIn24","transitionIn25","transitionIn26","transitionIn27","transitionIn28","transitionIn29","transitionIn30","transitionIn31","transitionIn32","transitionIn33","transitionIn34","transitionIn35","transitionIn36","transitionIn37","transitionIn38","transitionIn39","transitionIn40","transitionIn41","transitionIn42","transitionIn43","transitionIn44","transitionIn45","transitionIn46","transitionIn47","transitionIn48","transitionIn49","transitionIn50","transitionIn51","transitionIn52","transitionIn53","transitionIn54","transitionIn55","transitionIn56","transitionIn57","transitionIn58","transitionIn59","transitionIn60","texture0","texture1","texture2","texture3","texture4","texture5","texture6","texture7","texture8","texture9","texture10","texture11","texture12","texture13","texture14","texture15","texture16","texture17","texture18","texture19","texture20","texture21","texture22","texture23","texture24","texture25","texture26","texture27","texture28","texture29","texture30","texture31","texture32","texture33","texture34","texture35","texture36","texture37","texture38","texture39","texture40","texture41","texture42","texture43","texture44","texture45","texture46","texture47","texture48","texture49","texture50","texture51","texture52","texture53","texture54","texture55","texture56","texture57","texture58","texture59","texture60","texture61","texture62","texture63","texture64","texture65","texture66","texture67","texture68","texture69","texture70","texture71","texture72","texture73","texture74","texture75","texture76","texture77","texture78","texture79","texture80","texture81","texture82","texture83","texture84","texture85","texture86","texture87","texture88","texture89","texture90","texture91","texture92","texture93","texture94","texture95","texture96","texture97","texture98","texture99","texture100","texture101","texture102","texture103","texture104","texture105","texture106","texture107","texture108","texture109","texture110","texture111","texture112","texture113","texture114","texture115","texture116","texture117","texture118","texture119","texture120","texture121","texture122","texture123","texture124","texture125","texture126","texture127","texture128","texture129","texture130","texture131","texture132","texture133","texture134","texture135","texture136","texture137","texture138","texture139","texture140","texture141","texture142","texture143","texture144","transitionOutConvexe0","transitionOutConvexe1","transitionOutConvexe2","transitionOutConvexe3","transitionOutConvexe4","transitionOutConvexe5","transitionOutConvexe6","transitionOutConvexe7","transitionOutConvexe8","transitionOutConvexe9","transitionOutConvexe10","transitionOutConvexe11","transitionOutConvexe12","transitionOutConvexe13","transitionOutConvexe14","transitionOutConvexe15","transitionOutConvexe16","transitionOutConvexe17","transitionOutConvexe18","transitionOutConvexe19","transitionOutConvexe20","transitionOutConvexe21","transitionOutConvexe22","transitionOutConvexe23","transitionOutConvexe24","transitionOutConvexe25","transitionOutConvexe26","transitionOutConvexe27","transitionOutConvexe28","transitionOutConvexe29","transitionOutConvexe30","transitionOutConvexe31","transitionOutConvexe32","transitionOutConvexe33","transitionOutConvexe34","transitionOutConvexe35","transitionOutConvexe36","transitionOutConvexe37","transitionOutConvexe38","transitionOutConvexe39","transitionOutConvexe40","transitionOutConvexe41","transitionOutConvexe42","transitionOutConvexe43","transitionOutConvexe44","transitionOutConvexe45","transitionOutConvexe46","transitionOutConvexe47","transitionOutConvexe48","transitionOutConvexe49","transitionOutConcave0","transitionOutConcave1","transitionOutConcave2","transitionOutConcave3","transitionOutConcave4","transitionOutConcave5","transitionOutConcave6","transitionOutConcave7","transitionOutConcave8","transitionOutConcave9","transitionOutConcave10","transitionOutConcave11","transitionOutConcave12","transitionOutConcave13","transitionOutConcave14","transitionOutConcave15","transitionOutConcave16","transitionOutConcave17","transitionOutConcave18","transitionOutConcave19","transitionOutConcave20","transitionOutConcave21","transitionOutConcave22","transitionOutConcave23","transitionOutConcave24","transitionOutConcave25","transitionOutConcave26","transitionOutConcave27","transitionOutConcave28","transitionOutConcave29","transitionOutConcave30","transitionOutConcave31","transitionOutConcave32","transitionOutConcave33","transitionOutConcave34","transitionOutConcave35","transitionOutConcave36","transitionOutConcave37","transitionOutConcave38","transitionOutConcave39","transitionOutConcave40","transitionOutConcave41","transitionOutConcave42","transitionOutConcave43","transitionOutConcave44","transitionOutConcave45","transitionOutConcave46","transitionOutConcave47","transitionOutConcave48","transitionOutConcave49","optiFogCard","lensMenuBlack","flip","needExplorerBike","needExplorerBrightlight","needExplorerBusDriver","needExplorerCar","needExplorerChangingLight","needExplorerDicussion","needExplorerDiscomfort","needExplorerDistance","needExplorerDragDaily","needExplorerDragHighRisk","needExplorerDragIndoor","needExplorerDragKitchen","needExplorerDragOutdoor","needExplorerDragQuickEye","needExplorerDragScreen","needExplorerElectrician","needExplorerExpose","needExplorerEyeGlasses","needExplorerEyes","needExplorerFarAway","needExplorerFarsighted","needExplorerFastResponse","needExplorerGlare","needExplorerHeadlights","needExplorerLightCircumstances","needExplorerLowlight","needExplorerMeetings","needExplorerMotor","needExplorerMultipleScreen","needExplorerMultitask","needExplorerNearby","needExplorerPrecisionTask","needExplorerRain","needExplorerReducedDark","needExplorerRunning","needExplorerRunningSolo","needExplorerScooter","needExplorerScratchGlasses","needExplorerSmudge","needExplorerSmudgeDustGrease","needExplorerStop","needExplorerWomanChildren","withRouter","routeGuard","pageview","REGIONS","oceanie","amera","noam","europe","latam","africa","RegionSelection","currentRegion","Language","showMultiple","setShowMultiple","setCurrentRegion","localTranslation","setLocalTranslation","localTranslationCountry","setLocalTranslationCountry","localTranslationCountryLanguage","setLocalTranslationCountryLanguage","languageView","setLanguageView","modalSettings","backButtonText","translationData","changeLanguage","downloadRegionsData","backButtonHandler","isTranslationsAvailable","languages","avalalableTranslationKeys","multipleLanguageSelectedClass","countryId","selectCountryLanguage","availableTranslations","onLanguageSelect","TutorialCard","totalCount","computeProgress","TutorialMain","onClickContent","returnTotal","returnRemaining","TutorialSection","setFile","showVideo","onChangeView","renderContainer","Tutorial","filterTutorialData","stateNewFeatures","contentIndex","existing","MyComapanion","TermsCondition","accept","FirstLogin","getCookies","loadCurrency","pairs","cookie","cookies","unescape","_ga","onSelectRegion","onTitleChange","onNextPage","AdvancePriceModifierInput","changeType","AdvanceSettingFilterResults","onUpdateItem","getLabel","AdvanceSettingFilterField","onClear","AdvanceSettingFilterFieldSelection","onCloseModal","ops","subSelection","AdvanceSettingFilter","onSubmit","showFilterSelection","setShowFilterSelection","activeFieldId","setActiveFieldId","selectOptions","setSelectOptions","setFields","flds","useCallback","getDynamicOptions","onClearHandler","prevStat","selectionOnCloseHandler","onSelectOptionHandler","AdvancePriceSetting","originalResults","filteredResults","setFilteredResults","showSuccessAlert","setShowSuccessAlert","appendAdvanceProperties","filterOnSubmit","filterFieldsWithValues","requiredFound","LanguageSetting","setSelectedLanguage","setShowModal","searchText","setSearchText","dataList","setDataList","setLocation","continent","setContinent","strings","handleLocation","loc","engCountryCode","enCountryLanguageCode","g9lang","englishTranslation","handleSelectLanguage","contenent","standardTranslationData","variluxTranslationData","standardTranslation","variluxTranslation","newTranslation","continents","SearchIcon","DemonstrationPopup","showDemoModal","setShowDemoModal","videoController","clickedIcon","defaultIcon","Icon_1","isClicked","Icon_2","Icon_3","Icon_4","Icon_5","showProductList","setShowProductList","controller","setController","videoIndex","instant","stabilized","panoramic","sharp","extended","caption","setCaption","currentSelectedProduct","setCurrentSelectedProduct","leftVideoAsset","rightVideoAsset","PlayVideoIcon","getScreenWidth","video","productListHandler","VarNavbarHeader","supported","setSupported","installed","setInstalled","RefreshIcon","variluxSteps","PrescriptionAddSegmentationType","ProgressBar","multiplier","setMultiplier","useVariluxDisableButton","needExplorerHasSelectedValue","every","sphereMax","sphereMin","additionMax","additionMin","currentView","disableButtonNav","disabledView","demonstrations","conclusion","varilux_matrix","low_myope","low_add","mid_add","high_add","high_myope","emmetropic","low_hyperope","high_hyperope","standard_progressive_lens","varilux_comfort","varilux_x_series","varilux_physio_30","PrescriptionEyeConditionType","VariluxPreviewType","useVariluxMatrix","getAmetropia","LOW_MYOPE","HIGH_MYOPE","EMMETROPIC","LOW_HYPEROPE","HIGH_HYPEROPE","getAddSegmentation","n","HIGH_ADD","MID_ADD","LOW_ADD","getCategoryPercentages","VarNavbarBottom","setStepProgress","VarNavbar","ConclusionVarilux","endExperience","variluxCategories","PANORAMIC","variluxProducts","Image1","isRecommended","isExclusive","previewItems","Image2","Image3","Image4","Image5","ProductCardVarilux","setShowDemo","setPreviewItem","setPreviewItemIndex","setActive","setPlayVideo","ProductCardVariluxModalContent","handlControlClick","IMAGE","Icon_fill","ProductCardVariluxModal","showDemo","prescriptionOptions","DemonstrationsVarilux","setIsDownloading","iVariluxProducts","setIVariluxProducts","previewItem","previewItemIndex","nextButtonContainerRef","setPreviewAssets","filterVideoByCategoryPercentage","filteredItem","filterVideoByCategory","getVideoIndex","demoCategory","getDemoCategory","getPreviewAssets","getVideoIndexByCategory","leftAsset","rightAsset","leftTitle","VARILUX_CATEGORY","DEMO_CATEGORY","handlDownloadAsset","resutls","categoryItem","itemData","prescriptionOption","initialSlide","infinite","centerMode","slidesToShow","slidesToScroll","variableWidth","responsive","breakpoint","IntroVarilux","Champ","Dialogue","flexColumn","NeedExplorerVarilux","PrescriptionVarilux2","showSkip","setShowSkip","setAsset","prescriptionVideo","downloadPrescriptionAsset","onPlay","VariluxContainer","viewPage","useVariluxBackground","backgroundStyle","DownloadVariluxAssets","downloadAssets","Varilux","installPWA","setInstallPWA","background1","background2","background3","useLayoutEffect","closeDownloadPopup","fetchG9Translation","sortedCountryLanguages","localeCompare","prompt","App","setTheme","subscribe","oldTheme","loadingPrevValue","watchAppTheme","axiosInterceptors","initializeGoogleAnalytics","fixIndexedDbData","removeDateTime","initialize","isBackground","interceptors","currentTheme","dbCopy","saveToLocalStorage","exact","component","LensProposalBuilder","isLocalhost","hostname","match","registerValidSW","swUrl","serviceWorker","registration","onupdatefound","installingWorker","installing","onstatechange","onUpdate","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","render","StrictMode","process","origin","contentType","ready","unregister","checkValidServiceWorker","serviceWorkerRegistration","waiting","postMessage"],"mappings":"qHAAA,OAAe,cAA0B,qC,+BCAzC,OAAe,cAA0B,0C,6BCAzC,OAAe,cAA0B,0C,6BCAzC,OAAe,cAA0B,yC,6BCAzC,OAAe,o+V,8BCAf,OAAe,cAA0B,0C,6BCAzC,OAAe,cAA0B,yC,6BCAzC,OAAe,cAA0B,0C,6BCAzC,OAAe,cAA0B,8C,8BCAzC,OAAe,cAA0B,4C,6BCAzC,OAAe,cAA0B,6C,6BCAzC,OAAe,cAA0B,6C,6BCAzC,OAAe,cAA0B,6C,6BCAzC,OAAe,cAA0B,6C,6BCAzC,OAAe,cAA0B,6C,6BCAzC,OAAe,cAA0B,wC,6BCAzC,OAAe,cAA0B,iC,8BCAzC,OAAe,cAA0B,kC,sCCAzC,OAAe,cAA0B,uC,6BCAzC,OAAe,cAA0B,sC,6BCAzC,OAAe,cAA0B,iD,6BCAzC,OAAe,cAA0B,iD,6BCAzC,OAAe,cAA0B,iD,6BCAzC,OAAe,cAA0B,8C,6BCAzC,OAAe,cAA0B,8C,6BCAzC,OAAe,cAA0B,iD,6BCAzC,OAAe,cAA0B,8C,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,6C,6BCAzC,OAAe,cAA0B,iD,6BCAzC,OAAe,cAA0B,4C,6BCAzC,OAAe,cAA0B,+C,6BCAzC,OAAe,cAA0B,kD,6BCAzC,OAAe,cAA0B,+C,6BCAzC,OAAe,cAA0B,4C,6BCAzC,OAAe,cAA0B,2C,6BCAzC,OAAe,cAA0B,iD,6BCAzC,OAAe,cAA0B,6C,6BCAzC,OAAe,cAA0B,6C,6BCAzC,OAAe,cAA0B,4C,6BCAzC,OAAe,cAA0B,+C,6BCAzC,OAAe,cAA0B,4C,6BCAzC,OAAe,cAA0B,+C,6BCAzC,OAAe,cAA0B,iD,6BCAzC,OAAe,cAA0B,2C,6BCAzC,OAAe,cAA0B,6C,6BCAzC,OAAe,cAA0B,+C,6BCAzC,OAAe,cAA0B,oD,6BCAzC,OAAe,cAA0B,6C,6BCAzC,OAAe,cAA0B,4C,6BCAzC,OAAe,cAA0B,kD,6BCAzC,OAAe,cAA0B,+C,6BCAzC,OAAe,cAA0B,mD,6BCAzC,OAAe,cAA0B,2C,6BCAzC,OAAe,cAA0B,mD,6BCAzC,OAAe,cAA0B,+C,6BCAzC,OAAe,cAA0B,iD,6BCAzC,OAAe,cAA0B,iD,6BCAzC,OAAe,cAA0B,6C,6BCAzC,OAAe,cAA0B,4C,6BCAzC,OAAe,cAA0B,kD,6BCAzC,OAAe,cAA0B,oD,6BCAzC,OAAe,cAA0B,6C,6BCAzC,OAAe,cAA0B,qD,6BCAzC,OAAe,cAA0B,6C,6BCAzC,OAAe,cAA0B,6C,6BCAzC,OAAe,cAA0B,6C,6BCAzC,OAAe,cAA0B,6C,6BCAzC,OAAe,cAA0B,6C,6BCAzC,OAAe,cAA0B,6C,6BCAzC,OAAe,cAA0B,6C,6BCAzC,OAAe,cAA0B,6C,6BCAzC,OAAe,cAA0B,6C,6BCAzC,OAAe,cAA0B,6C,6BCAzC,OAAe,cAA0B,6C,6BCAzC,OAAe,cAA0B,uC,6BCAzC,OAAe,cAA0B,uC,6BCAzC,OAAe,cAA0B,uC,6BCAzC,OAAe,cAA0B,uC,6BCAzC,OAAe,cAA0B,uC,oCCAzC,OAAe,cAA0B,uD,6BCAzC,OAAe,cAA0B,oD,6BCAzC,OAAe,cAA0B,oD,6BCAzC,OAAe,cAA0B,mD,6BCAzC,OAAe,cAA0B,oD,6BCAzC,OAAe,cAA0B,oD,6BCAzC,OAAe,cAA0B,qD,6BCAzC,OAAe,cAA0B,qD,6BCAzC,OAAe,cAA0B,4D,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,wD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,0D,6BCAzC,OAAe,cAA0B,0D,qCCAzC,OAAe,cAA0B,yC,6BCAzC,OAAe,cAA0B,kC,6BCAzC,OAAe,cAA0B,2C,6BCAzC,OAAe,cAA0B,kC,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,iD,6BCAzC,OAAe,cAA0B,8C,6BCAzC,OAAe,cAA0B,0C,6BCAzC,OAAe,cAA0B,0C,6BCAzC,OAAe,cAA0B,0D,6BCAzC,OAAe,cAA0B,uC,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,+C,6BCAzC,OAAe,cAA0B,+C,6BCAzC,OAAe,cAA0B,+C,6BCAzC,OAAe,cAA0B,2C,6BCAzC,OAAe,cAA0B,kC,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,2D,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,yD,6BCAzC,OAAe,cAA0B,sC,6BCAzC,OAAe,cAA0B,4C,6BCAzC,OAAe,cAA0B,sC,6BCAzC,OAAe,cAA0B,wC,6BCAzC,OAAe,cAA0B,0C,6BCAzC,OAAe,cAA0B,0C,6BCAzC,OAAe,cAA0B,6C,6BCAzC,OAAe,cAA0B,4C,6BCAzC,OAAe,cAA0B,8C,6BCAzC,OAAe,cAA0B,6C,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,qC,6BCAzC,OAAe,cAA0B,wC,6BCAzC,OAAe,cAA0B,0C,6BCAzC,OAAe,cAA0B,4C,6BCAzC,OAAe,cAA0B,wC,6BCAzC,OAAe,cAA0B,iD,6BCAzC,OAAe,cAA0B,sC,6BCAzC,OAAe,cAA0B,iD,6BCAzC,OAAe,cAA0B,4C,6BCAzC,OAAe,cAA0B,0C,6BCAzC,OAAe,cAA0B,kC,6BCAzC,OAAe,cAA0B,qC,6BCAzC,OAAe,cAA0B,mC,6BCAzC,OAAe,cAA0B,qC,6BCAzC,OAAe,cAA0B,4C,6BCAzC,OAAe,cAA0B,6C,6BCAzC,OAAe,cAA0B,0C,6BCAzC,OAAe,cAA0B,8C,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,uC,6BCAzC,OAAe,cAA0B,4C,6BCAzC,OAAe,cAA0B,2C,6BCAzC,OAAe,cAA0B,gD,6BCAzC,OAAe,cAA0B,6C,6BCAzC,OAAe,cAA0B,4C,6BCAzC,OAA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CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,+DAAgE,CAC/D,KAED,6BAA8B,CAC7B,IACA,KAED,2BAA4B,CAC3B,IACA,KAED,2BAA4B,CAC3B,IACA,KAED,2BAA4B,CAC3B,IACA,KAED,sCAAuC,CACtC,IACA,KAED,4BAA6B,CAC5B,IACA,KAED,uBAAwB,CACvB,IACA,KAED,4BAA6B,CAC5B,IACA,KAED,4BAA6B,CAC5B,IAED,8BAA+B,CAC9B,IACA,KAED,mCAAoC,CACnC,IACA,KAED,mBAAoB,CACnB,IACA,KAED,2BAA4B,CAC3B,IAED,mCAAoC,CACnC,KAED,iCAAkC,CACjC,IACA,KAED,+BAAgC,CAC/B,IACA,KAED,+BAAgC,CAC/B,KAED,8BAA+B,CAC9B,KAED,uBAAwB,CACvB,KAED,kCAAmC,CAClC,KAED,yBAA0B,CACzB,IACA,KAED,8BAA+B,CAC9B,KAED,8BAA+B,CAC9B,KAED,4BAA6B,CAC5B,KAED,8BAA+B,CAC9B,KAED,kCAAmC,CAClC,KAED,+BAAgC,CAC/B,KAED,gCAAiC,CAChC,KAED,gCAAiC,CAChC,KAED,kCAAmC,CAClC,KAED,+BAAgC,CAC/B,KAED,+BAAgC,CAC/B,KAED,yBAA0B,CACzB,IACA,KAED,0BAA2B,CAC1B,KAED,8BAA+B,CAC9B,KAED,wBAAyB,CACxB,KAED,4BAA6B,CAC5B,KAED,8BAA+B,CAC9B,KAED,iCAAkC,CACjC,KAED,yBAA0B,CACzB,KAED,8BAA+B,CAC9B,KAED,0BAA2B,CAC1B,IACA,KAED,uCAAwC,CACvC,KAED,4BAA6B,CAC5B,KAED,6BAA8B,CAC7B,IACA,KAED,4BAA6B,CAC5B,KAED,mCAAoC,CACnC,KAED,6BAA8B,CAC7B,KAED,0BAA2B,CAC1B,KAED,2BAA4B,CAC3B,IACA,KAED,kCAAmC,CAClC,KAED,wBAAyB,CACxB,KAED,gCAAiC,CAChC,KAED,2BAA4B,CAC3B,IACA,KAED,mCAAoC,CACnC,KAED,0BAA2B,CAC1B,IACA,KAED,kCAAmC,CAClC,IACA,KAED,kCAAmC,CAClC,IACA,KAED,kCAAmC,CAClC,IACA,KAED,gCAAiC,CAChC,IACA,KAED,+BAAgC,CAC/B,IACA,KAED,mCAAoC,CACnC,IACA,KAED,gCAAiC,CAChC,IACA,KAED,0BAA2B,CAC1B,KAED,sCAAuC,CACtC,KAED,wBAAyB,CACxB,KAED,6BAA8B,CAC7B,IACA,KAED,kCAAmC,CAClC,KAED,yBAA0B,CACzB,IACA,KAED,uCAAwC,CACvC,IACA,KAED,oBAAqB,CACpB,IACA,KAED,yBAA0B,CACzB,IACA,KAED,2CAA4C,CAC3C,IAED,sDAAuD,CACtD,IAED,8DAA+D,CAC9D,KAED,8DAA+D,CAC9D,KAED,sDAAuD,CACtD,IAED,4CAA6C,CAC5C,KAED,sDAAuD,CACtD,IAED,8DAA+D,CAC9D,KAED,yEAA0E,CACzE,KAED,yEAA0E,CACzE,KAED,yEAA0E,CACzE,KAED,yEAA0E,CACzE,KAED,yEAA0E,CACzE,KAED,yEAA0E,CACzE,KAED,yEAA0E,CACzE,KAED,yEAA0E,CACzE,KAED,yEAA0E,CACzE,KAED,yEAA0E,CACzE,KAED,0EAA2E,CAC1E,IAED,6EAA8E,CAC7E,IAED,0EAA2E,CAC1E,IAED,4EAA6E,CAC5E,IAED,0EAA2E,CAC1E,IAED,yEAA0E,CACzE,IAED,6EAA8E,CAC7E,IAED,4EAA6E,CAC5E,IAED,mFAAoF,CACnF,IAED,2EAA4E,CAC3E,IAED,iFAAkF,CACjF,IAED,8EAA+E,CAC9E,IAED,kFAAmF,CAClF,IAED,0EAA2E,CAC1E,KAED,kFAAmF,CAClF,KAED,8EAA+E,CAC9E,KAED,gFAAiF,CAChF,KAED,gFAAiF,CAChF,KAED,4EAA6E,CAC5E,KAED,2EAA4E,CAC3E,KAED,iFAAkF,CACjF,KAED,4EAA6E,CAC5E,KAED,mFAAoF,CACnF,KAED,oFAAqF,CACpF,KAED,4EAA6E,CAC5E,KAED,8EAA+E,CAC9E,IAED,iFAAkF,CACjF,IAED,oFAAqF,CACpF,IAED,iFAAkF,CACjF,IAED,8EAA+E,CAC9E,IAED,6EAA8E,CAC7E,IAED,mFAAoF,CACnF,IAED,+EAAgF,CAC/E,IAED,+EAAgF,CAC/E,IAED,2EAA4E,CAC3E,IAED,8EAA+E,CAC9E,IAED,2EAA4E,CAC3E,IAED,8EAA+E,CAC9E,IAED,0EAA2E,CAC1E,IAED,gFAAiF,CAChF,IAED,4EAA6E,CAC5E,IAED,8EAA+E,CAC9E,IAED,mEAAoE,CACnE,KAED,mEAAoE,CACnE,KAED,mEAAoE,CACnE,KAED,mEAAoE,CACnE,KAED,mEAAoE,CACnE,KAED,mEAAoE,CACnE,KAED,mEAAoE,CACnE,KAED,mEAAoE,CACnE,KAED,mEAAoE,CACnE,KAED,mEAAoE,CACnE,KAED,mEAAoE,CACnE,KAED,mEAAoE,CACnE,KAED,mEAAoE,CACnE,KAED,mEAAoE,CACnE,KAED,mEAAoE,CACnE,KAED,mEAAoE,CACnE,KAED,mEAAoE,CACnE,KAED,mEAAoE,CACnE,KAED,mEAAoE,CACnE,KAED,mEAAoE,CACnE,KAED,mEAAoE,CACnE,KAED,mEAAoE,CACnE,KAED,mEAAoE,CACnE,KAED,mEAAoE,CACnE,KAED,mEAAoE,CACnE,KAED,mEAAoE,CACnE,KAED,mEAAoE,CACnE,KAED,mEAAoE,CACnE,KAED,mEAAoE,CACnE,KAED,mEAAoE,CACnE,KAED,mEAAoE,CACnE,KAED,mEAAoE,CACnE,KAED,mEAAoE,CACnE,KAED,mEAAoE,CACnE,KAED,mEAAoE,CACnE,KAED,mEAAoE,CACnE,KAED,mEAAoE,CACnE,KAED,mEAAoE,CACnE,KAED,mEAAoE,CACnE,KAED,mEAAoE,CACnE,KAED,mEAAoE,CACnE,KAED,mEAAoE,CACnE,KAED,mEAAoE,CACnE,KAED,mEAAoE,CACnE,KAED,mEAAoE,CACnE,KAED,mEAAoE,CACnE,KAED,mEAAoE,CACnE,KAED,mEAAoE,CACnE,KAED,mEAAoE,CACnE,KAED,mEAAoE,CACnE,KAED,mEAAoE,CACnE,KAED,mEAAoE,CACnE,KAED,mEAAoE,CACnE,KAED,mEAAoE,CACnE,KAED,mEAAoE,CACnE,KAED,mEAAoE,CACnE,KAED,mEAAoE,CACnE,KAED,mEAAoE,CACnE,KAED,mEAAoE,CACnE,KAED,mEAAoE,CACnE,KAED,mEAAoE,CACnE,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,qFAAsF,CACrF,KAED,0BAA2B,CAC1B,IACA,KAED,oBAAqB,CACpB,IACA,KAED,8BAA+B,CAC9B,IACA,KAED,8BAA+B,CAC9B,IACA,KAED,8BAA+B,CAC9B,IACA,KAED,qBAAsB,CACrB,KAED,gDAAiD,CAChD,IACA,KAED,iCAAkC,CACjC,IACA,KAED,4BAA6B,CAC5B,IAED,4BAA6B,CAC5B,IACA,KAED,iCAAkC,CACjC,IACA,KAED,wCAAyC,CACxC,IACA,KAED,oCAAqC,CACpC,IACA,KAED,2BAA4B,CAC3B,IACA,KAED,uCAAwC,CACvC,IAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,gFAAiF,CAChF,IACA,KAED,kCAAmC,CAClC,IACA,KAED,4BAA6B,CAC5B,IACA,KAED,6BAA8B,CAC7B,IACA,KAED,gCAAiC,CAChC,IACA,KAED,uBAAwB,CACvB,IACA,KAED,yBAA0B,CACzB,KAED,6BAA8B,CAC7B,KAED,6BAA8B,CAC7B,KAED,yBAA0B,CACzB,KAED,4BAA6B,CAC5B,IACA,KAED,8BAA+B,CAC9B,KAED,6BAA8B,CAC7B,KAED,8BAA+B,CAC9B,KAED,6BAA8B,CAC7B,KAED,8BAA+B,CAC9B,IACA,KAED,4BAA6B,CAC5B,KAED,+BAAgC,CAC/B,KAED,4BAA6B,CAC5B,KAED,uBAAwB,CACvB,KAED,uBAAwB,CACvB,KAED,iCAAkC,CACjC,IACA,KAED,4BAA6B,CAC5B,IACA,KAED,iCAAkC,CACjC,IACA,KAED,4BAA6B,CAC5B,IACA,KAED,0CAA2C,CAC1C,IACA,KAED,gCAAiC,CAChC,IACA,KAED,8BAA+B,CAC9B,IAED,6BAA8B,CAC7B,IACA,KAED,0BAA2B,CAC1B,IACA,KAED,+BAAgC,CAC/B,IACA,KAED,gCAAiC,CAChC,IAED,gCAAiC,CAChC,IACA,KAED,qBAAsB,CACrB,IACA,KAED,mCAAoC,CACnC,IACA,KAED,4BAA6B,CAC5B,IAED,2BAA4B,CAC3B,IACA,KAED,wBAAyB,CACxB,IACA,KAED,2BAA4B,CAC3B,IACA,KAED,oBAAqB,CACpB,IACA,KAED,oCAAqC,CACpC,IACA,KAED,qCAAsC,CACrC,IACA,KAED,+BAAgC,CAC/B,IACA,KAED,+BAAgC,CAC/B,IACA,KAED,gCAAiC,CAChC,IACA,KAED,0BAA2B,CAC1B,IACA,KAED,6BAA8B,CAC7B,IACA,KAED,mCAAoC,CACnC,IACA,KAED,2BAA4B,CAC3B,IACA,KAED,qBAAsB,CACrB,IACA,KAED,sBAAuB,CACtB,IACA,KAED,yBAA0B,CACzB,IACA,KAED,0BAA2B,CAC1B,IACA,KAED,oBAAqB,CACpB,IACA,KAED,4BAA6B,CAC5B,IACA,KAED,wBAAyB,CACxB,IACA,KAED,yBAA0B,CACzB,IACA,KAED,oBAAqB,CACpB,IACA,KAED,oBAAqB,CACpB,IACA,KAED,gCAAiC,CAChC,IACA,KAED,sBAAuB,CACtB,IACA,KAED,gBAAiB,CAChB,IACA,KAED,yBAA0B,CACzB,IACA,KAED,mBAAoB,CACnB,IACA,KAED,0BAA2B,CAC1B,IACA,KAED,kBAAmB,CAClB,IACA,KAED,sBAAuB,CACtB,IACA,KAED,wBAAyB,CACxB,IACA,KAED,mBAAoB,CACnB,IACA,KAED,uBAAwB,CACvB,IACA,KAED,wBAAyB,CACxB,IACA,KAED,2BAA4B,CAC3B,IACA,KAED,qBAAsB,CACrB,IACA,KAED,4BAA6B,CAC5B,IACA,KAED,sBAAuB,CACtB,IACA,KAED,2BAA4B,CAC3B,IACA,KAED,qBAAsB,CACrB,IACA,KAED,yBAA0B,CACzB,IACA,KAED,0BAA2B,CAC1B,IACA,KAED,oBAAqB,CACpB,IACA,KAED,oBAAqB,CACpB,IACA,KAED,gBAAiB,CAChB,IACA,KAED,oBAAqB,CACpB,IACA,KAED,4BAA6B,CAC5B,IACA,KAED,sBAAuB,CACtB,IACA,KAED,sBAAuB,CACtB,IACA,KAED,2BAA4B,CAC3B,IACA,KAED,qBAAsB,CACrB,IACA,KAED,sBAAuB,CACtB,IACA,KAED,gBAAiB,CAChB,IACA,KAED,4BAA6B,CAC5B,IACA,KAED,6BAA8B,CAC7B,KACA,KAED,uBAAwB,CACvB,KACA,KAED,mCAAoC,CACnC,KACA,KAED,oCAAqC,CACpC,KACA,KAED,8BAA+B,CAC9B,KACA,KAED,oCAAqC,CACpC,KACA,KAED,qCAAsC,CACrC,KACA,KAED,yCAA0C,CACzC,KACA,KAED,uCAAwC,CACvC,KACA,KAED,qCAAsC,CACrC,KACA,KAED,+BAAgC,CAC/B,KACA,KAED,oBAAqB,CACpB,KACA,KAED,2BAA4B,CAC3B,KACA,KAED,4BAA6B,CAC5B,KACA,KAED,sBAAuB,CACtB,KACA,KAED,0BAA2B,CAC1B,KACA,KAED,oBAAqB,CACpB,KACA,KAED,0BAA2B,CAC1B,KACA,KAED,4BAA6B,CAC5B,KACA,KAED,wCAAyC,CACxC,KACA,KAED,yCAA0C,CACzC,KACA,KAED,yBAA0B,CACzB,KACA,KAED,uBAAwB,CACvB,KACA,KAED,sBAAuB,CACtB,KACA,KAED,gBAAiB,CAChB,KACA,KAED,4BAA6B,CAC5B,KACA,KAED,8BAA+B,CAC9B,KACA,KAED,wBAAyB,CACxB,KACA,KAED,wBAAyB,CACxB,KACA,KAED,kBAAmB,CAClB,KACA,KAED,uBAAwB,CACvB,KACA,KAED,yBAA0B,CACzB,KACA,KAED,0BAA2B,CAC1B,KACA,KAED,oBAAqB,CACpB,KACA,KAED,mBAAoB,CACnB,KACA,KAED,kBAAmB,CAClB,KACA,KAED,mBAAoB,CACnB,KACA,KAED,+BAAgC,CAC/B,KACA,KAED,+BAAgC,CAC/B,KACA,KAED,gCAAiC,CAChC,KACA,KAED,0BAA2B,CAC1B,KACA,KAED,2BAA4B,CAC3B,KACA,KAED,4BAA6B,CAC5B,KACA,KAED,sBAAuB,CACtB,KACA,KAED,2BAA4B,CAC3B,KACA,KAED,qBAAsB,CACrB,KACA,KAED,sBAAuB,CACtB,KACA,KAED,wBAAyB,CACxB,KACA,KAED,2BAA4B,CAC3B,KACA,KAED,oCAAqC,CACpC,KACA,KAED,yBAA0B,CACzB,KACA,KAED,0BAA2B,CAC1B,KACA,KAED,oBAAqB,CACpB,KACA,KAED,8BAA+B,CAC9B,KACA,KAED,wBAAyB,CACxB,KACA,KAED,4BAA6B,CAC5B,KACA,KAED,sBAAuB,CACtB,KACA,KAED,uBAAwB,CACvB,KACA,KAED,yBAA0B,CACzB,KACA,KAED,0BAA2B,CAC1B,KACA,KAED,4BAA6B,CAC5B,KACA,KAED,oBAAqB,CACpB,KACA,KAED,qBAAsB,CACrB,KACA,KAED,yBAA0B,CACzB,KACA,KAED,mBAAoB,CACnB,KACA,KAED,sBAAuB,CACtB,KACA,KAED,iCAAkC,CACjC,KACA,KAED,uBAAwB,CACvB,KACA,KAED,sCAAuC,CACtC,KACA,KAED,+BAAgC,CAC/B,KACA,KAED,8BAA+B,CAC9B,KACA,KAED,qCAAsC,CACrC,KACA,KAED,kCAAmC,CAClC,KACA,KAED,qCAAsC,CACrC,KACA,KAED,6BAA8B,CAC7B,KACA,KAED,qCAAsC,CACrC,KACA,KAED,iCAAkC,CACjC,KACA,KAED,mCAAoC,CACnC,KACA,KAED,mCAAoC,CACnC,KACA,KAED,+BAAgC,CAC/B,KACA,KAED,8BAA+B,CAC9B,KACA,KAED,oCAAqC,CACpC,KACA,KAED,sCAAuC,CACtC,KACA,KAED,+BAAgC,CAC/B,KACA,KAED,wCAAyC,CACxC,KACA,KAED,+BAAgC,CAC/B,KACA,KAED,iCAAkC,CACjC,KACA,KAED,oCAAqC,CACpC,KACA,KAED,uCAAwC,CACvC,KACA,KAED,oCAAqC,CACpC,KACA,KAED,iCAAkC,CACjC,KACA,KAED,sCAAuC,CACtC,KACA,KAED,gCAAiC,CAChC,KACA,KAED,kCAAmC,CAClC,KACA,KAED,kCAAmC,CAClC,KACA,KAED,8BAA+B,CAC9B,KACA,KAED,iCAAkC,CACjC,KACA,KAED,8BAA+B,CAC9B,KACA,KAED,iCAAkC,CACjC,KACA,KAED,mCAAoC,CACnC,KACA,KAED,6BAA8B,CAC7B,KACA,KAED,+BAAgC,CAC/B,KACA,KAED,kCAAmC,CAClC,KACA,KAED,mCAAoC,CACnC,KACA,KAED,sCAAuC,CACtC,KACA,KAED,mCAAoC,CACnC,KACA,KAED,qCAAsC,CACrC,KACA,KAED,mCAAoC,CACnC,KACA,KAED,kCAAmC,CAClC,KACA,KAED,sCAAuC,CACtC,KACA,KAED,uBAAwB,CACvB,KACA,KAED,iBAAkB,CACjB,KACA,KAED,uBAAwB,CACvB,KAED,iBAAkB,CACjB,KAED,kCAAmC,CAClC,KACA,KAED,mCAAoC,CACnC,KACA,KAED,2BAA4B,CAC3B,KACA,KAED,4BAA6B,CAC5B,KACA,KAED,sBAAuB,CACtB,KACA,KAED,0BAA2B,CAC1B,KACA,KAED,oBAAqB,CACpB,KACA,KAED,sBAAuB,CACtB,KACA,KAED,gBAAiB,CAChB,KACA,KAED,uBAAwB,CACvB,KACA,KAED,uBAAwB,CACvB,KACA,KAED,uBAAwB,CACvB,KACA,KAED,yBAA0B,CACzB,KACA,KAED,mBAAoB,CACnB,KACA,KAED,uBAAwB,CACvB,KACA,KAED,iBAAkB,CACjB,KACA,KAED,iCAAkC,CACjC,KACA,KAED,kCAAmC,CAClC,KACA,KAED,4BAA6B,CAC5B,KACA,KAED,wBAAyB,CACxB,KACA,KAED,2BAA4B,CAC3B,KACA,KAED,qBAAsB,CACrB,KACA,KAED,kBAAmB,CAClB,KACA,KAED,qBAAsB,CACrB,KACA,KAED,eAAgB,CACf,KACA,KAED,wBAAyB,CACxB,KACA,KAED,kBAAmB,CAClB,KACA,KAED,iCAAkC,CACjC,KACA,KAED,kCAAmC,CAClC,KACA,KAED,4BAA6B,CAC5B,KACA,KAED,kCAAmC,CAClC,KACA,KAED,mCAAoC,CACnC,KACA,KAED,6BAA8B,CAC7B,KACA,KAED,6BAA8B,CAC7B,KACA,KAED,8BAA+B,CAC9B,KACA,KAED,wBAAyB,CACxB,KACA,KAED,2BAA4B,CAC3B,KACA,KAED,6BAA8B,CAC7B,KACA,KAED,8BAA+B,CAC9B,KACA,KAED,+BAAgC,CAC/B,KACA,KAED,4BAA6B,CAC5B,KACA,KAED,kBAAmB,CAClB,KACA,KAED,2BAA4B,CAC3B,KACA,KAED,4BAA6B,CAC5B,KACA,KAED,sBAAuB,CACtB,KACA,KAED,uBAAwB,CACvB,KACA,KAED,iBAAkB,CACjB,KACA,KAED,gCAAiC,CAChC,KACA,KAED,iBAAkB,CACjB,KACA,KAED,kCAAmC,CAClC,KACA,KAED,oBAAqB,CACpB,KACA,KAED,wBAAyB,CACxB,KACA,KAED,8BAA+B,CAC9B,KACA,KAED,+BAAgC,CAC/B,KACA,KAED,yBAA0B,CACzB,KACA,KAED,iBAAkB,CACjB,KACA,KAED,wBAAyB,CACxB,KACA,KAED,0BAA2B,CAC1B,KACA,KAED,oBAAqB,CACpB,KACA,KAED,mBAAoB,CACnB,KACA,KAED,oBAAqB,CACpB,KACA,KAED,8BAA+B,CAC9B,KACA,KAED,+BAAgC,CAC/B,KACA,KAED,yBAA0B,CACzB,KACA,KAED,0BAA2B,CAC1B,KACA,KAED,oBAAqB,CACpB,KACA,KAED,0BAA2B,CAC1B,KACA,KAED,2BAA4B,CAC3B,KACA,KAED,qBAAsB,CACrB,KACA,KAED,mCAAoC,CACnC,KACA,KAED,oCAAqC,CACpC,KACA,KAED,8BAA+B,CAC9B,KACA,KAED,uBAAwB,CACvB,KACA,KAED,4BAA6B,CAC5B,KACA,KAED,6BAA8B,CAC7B,KACA,KAED,uBAAwB,CACvB,KACA,KAED,8BAA+B,CAC9B,KACA,KAED,sBAAuB,CACtB,KACA,KAED,4BAA6B,CAC5B,KACA,KAED,6BAA8B,CAC7B,KACA,KAED,uBAAwB,CACvB,KACA,KAED,mBAAoB,CACnB,KACA,KAED,0BAA2B,CAC1B,KACA,KAED,wBAAyB,CACxB,KACA,KAED,kBAAmB,CAClB,KACA,KAED,wBAAyB,CACxB,KACA,KAED,yBAA0B,CACzB,KACA,KAED,mBAAoB,CACnB,KACA,KAED,sBAAuB,CACtB,KACA,KAED,wBAAyB,CACxB,KACA,KAED,kBAAmB,CAClB,KACA,KAED,sBAAuB,CACtB,KACA,KAED,yBAA0B,CACzB,KACA,KAED,kCAAmC,CAClC,KACA,KAED,4BAA6B,CAC5B,KACA,KAED,qBAAsB,CACrB,KACA,KAED,eAAgB,CACf,KACA,KAED,4BAA6B,CAC5B,KACA,KAED,6BAA8B,CAC7B,KACA,KAED,uBAAwB,CACvB,KACA,KAED,gCAAiC,CAChC,KACA,KAED,2BAA4B,CAC3B,KACA,KAED,2BAA4B,CAC3B,KAED,2BAA4B,CAC3B,KAED,2BAA4B,CAC3B,KAED,+BAAgC,CAC/B,KACA,KAED,iCAAkC,CACjC,KACA,KAED,6BAA8B,CAC7B,KACA,KAED,8BAA+B,CAC9B,KACA,KAED,8BAA+B,CAC9B,KACA,KAED,2BAA4B,CAC3B,KACA,KAED,4BAA6B,CAC5B,KACA,KAED,8BAA+B,CAC9B,KACA,KAED,sCAAuC,CACtC,KACA,KAED,0CAA2C,CAC1C,KACA,KAED,wBAAyB,CACxB,KACA,KAED,kBAAmB,CAClB,KACA,KAED,mBAAoB,CACnB,KACA,KAED,wBAAyB,CACxB,KACA,KAED,kBAAmB,CAClB,KACA,KAED,6BAA8B,CAC7B,KACA,KAED,8BAA+B,CAC9B,KACA,KAED,wBAAyB,CACxB,KACA,KAED,uBAAwB,CACvB,KACA,KAED,iBAAkB,CACjB,KACA,KAED,yBAA0B,CACzB,KACA,KAED,eAAgB,CACf,KACA,IAED,8BAA+B,CAC9B,KACA,IAED,wBAAyB,CACxB,KACA,IAED,yBAA0B,CACzB,KACA,IAED,0BAA2B,CAC1B,KACA,IAED,mBAAoB,CACnB,KACA,IAED,gBAAiB,CAChB,KACA,IAED,gCAAiC,CAChC,KACA,IAED,sBAAuB,CACtB,KACA,IAED,kBAAmB,CAClB,KACA,IAED,sBAAuB,CACtB,KACA,IAED,oBAAqB,CACpB,KACA,IAED,qBAAsB,CACrB,KACA,IAED,oBAAqB,CACpB,KACA,IAED,qBAAsB,CACrB,KACA,IAED,oBAAqB,CACpB,KACA,IAED,oBAAqB,CACpB,KACA,IAED,qBAAsB,CACrB,KACA,IAED,mBAAoB,CACnB,KACA,IAED,mBAAoB,CACnB,KACA,IAED,oBAAqB,CACpB,KACA,IAED,oBAAqB,CACpB,KACA,IAED,0BAA2B,CAC1B,KACA,IAED,yBAA0B,CACzB,KACA,IAED,yBAA0B,CACzB,KACA,IAED,8BAA+B,CAC9B,KACA,IAED,sCAAuC,CACtC,KACA,IAED,uCAAwC,CACvC,KACA,IAED,iCAAkC,CACjC,KACA,IAED,kBAAmB,CAClB,KACA,IAED,kBAAmB,CAClB,KACA,IAED,wBAAyB,CACxB,KACA,IAED,uBAAwB,CACvB,KACA,IAED,8BAA+B,CAC9B,KACA,IAED,wBAAyB,CACxB,KACA,IAED,qBAAsB,CACrB,KACA,IAED,sBAAuB,CACtB,KACA,IAED,yBAA0B,CACzB,KACA,IAED,oBAAqB,CACpB,KACA,IAED,uBAAwB,CACvB,KACA,IAED,oBAAqB,CACpB,KACA,IAED,oBAAqB,CACpB,KACA,IAED,mBAAoB,CACnB,KACA,IAED,2BAA4B,CAC3B,KACA,IAED,qBAAsB,CACrB,KACA,IAED,iBAAkB,CACjB,KAED,oBAAqB,CACpB,KACA,IAED,sBAAuB,CACtB,KACA,IAED,qBAAsB,CACrB,KACA,IAED,+BAAgC,CAC/B,KACA,IAED,6BAA8B,CAC7B,KACA,IAED,uBAAwB,CACvB,KACA,IAED,6BAA8B,CAC7B,KACA,IAED,qBAAsB,CACrB,KACA,IAED,kBAAmB,CAClB,KACA,IAED,oBAAqB,CACpB,KACA,IAED,oBAAqB,CACpB,KACA,IAED,0BAA2B,CAC1B,KACA,IAED,oBAAqB,CACpB,KACA,IAED,sBAAuB,CACtB,KACA,IAED,kBAAmB,CAClB,KACA,IAED,wBAAyB,CACxB,KACA,IAED,uBAAwB,CACvB,KACA,IAED,iBAAkB,CACjB,KACA,IAED,yBAA0B,CACzB,KACA,IAED,yBAA0B,CACzB,KACA,IAED,oBAAqB,CACpB,KACA,IAED,+BAAgC,CAC/B,KAED,oBAAqB,CACpB,KACA,IAED,wBAAyB,CACxB,KACA,IAED,yBAA0B,CACzB,KACA,IAED,wBAAyB,CACxB,KACA,IAED,mBAAoB,CACnB,KACA,IAED,qBAAsB,CACrB,KACA,IAED,gBAAiB,CAChB,IAED,oBAAqB,CACpB,KACA,IAED,qBAAsB,CACrB,KACA,IAED,mBAAoB,CACnB,KACA,IAED,iBAAkB,CACjB,KACA,IAED,oBAAqB,CACpB,KACA,IAED,oBAAqB,CACpB,KACA,IAED,iBAAkB,CACjB,KAED,mBAAoB,CACnB,KACA,IAED,mBAAoB,CACnB,KACA,IAED,oBAAqB,CACpB,KACA,IAED,kBAAmB,CAClB,KACA,IAED,gBAAiB,CAChB,KACA,IAED,yBAA0B,CACzB,KACA,IAED,mBAAoB,CACnB,KACA,IAED,oBAAqB,CACpB,KACA,IAED,iBAAkB,CACjB,KACA,IAED,sBAAuB,CACtB,KACA,IAED,mBAAoB,CACnB,KACA,IAED,0BAA2B,CAC1B,KAED,sBAAuB,CACtB,IAED,0BAA2B,CAC1B,KACA,KAED,sBAAuB,CACtB,KACA,KAED,iBAAkB,CACjB,KACA,KAED,qBAAsB,CACrB,KACA,KAED,oBAAqB,CACpB,KACA,KAED,iBAAkB,CACjB,KACA,KAED,yBAA0B,CACzB,KACA,KAED,mBAAoB,CACnB,KACA,KAED,kBAAmB,CAClB,KACA,KAED,sBAAuB,CACtB,KACA,KAED,iBAAkB,CACjB,KACA,KAED,6BAA8B,CAC7B,KACA,KAED,8BAA+B,CAC9B,KACA,KAED,iBAAkB,CACjB,KACA,KAED,oBAAqB,CACpB,KACA,KAED,mBAAoB,CACnB,KACA,KAED,kBAAmB,CAClB,KACA,KAED,oBAAqB,CACpB,KACA,KAED,kBAAmB,CAClB,KACA,KAED,mBAAoB,CACnB,KACA,KAED,mBAAoB,CACnB,KACA,KAED,mBAAoB,CACnB,KACA,KAED,sBAAuB,CACtB,KACA,KAED,sBAAuB,CACtB,KACA,KAED,oBAAqB,CACpB,KACA,KAED,mCAAoC,CACnC,KACA,KAED,6BAA8B,CAC7B,KACA,KAED,8BAA+B,CAC9B,KACA,KAED,wBAAyB,CACxB,KACA,KAED,wBAAyB,CACxB,KACA,KAED,2BAA4B,CAC3B,KACA,KAED,iBAAkB,CACjB,KACA,KAED,0BAA2B,CAC1B,KAED,qBAAsB,CACrB,KACA,KAED,6BAA8B,CAC7B,KACA,KAED,iBAAkB,CACjB,KACA,KAED,uBAAwB,CACvB,KACA,KAED,iBAAkB,CACjB,KACA,KAED,sBAAuB,CACtB,KACA,KAED,qBAAsB,CACrB,KACA,KAED,qBAAsB,CACrB,KACA,KAED,0BAA2B,CAC1B,KACA,KAED,mBAAoB,CACnB,KACA,KAED,gBAAiB,CAChB,KACA,KAED,+BAAgC,CAC/B,KACA,KAED,mBAAoB,CACnB,KACA,KAED,oBAAqB,CACpB,KACA,KAED,yBAA0B,CACzB,KACA,KAED,oBAAqB,CACpB,KACA,KAED,oBAAqB,CACpB,KACA,KAED,sBAAuB,CACtB,KACA,KAED,0BAA2B,CAC1B,KACA,KAED,wBAAyB,CACxB,KACA,KAED,wBAAyB,CACxB,KACA,KAED,uBAAwB,CACvB,KACA,KAED,sBAAuB,CACtB,KACA,KAED,iBAAkB,CACjB,KACA,KAED,mBAAoB,CACnB,KACA,KAED,mBAAoB,CACnB,KACA,KAED,oCAAqC,CACpC,KACA,KAED,+BAAgC,CAC/B,KACA,KAED,yBAA0B,CACzB,KACA,KAED,mBAAoB,CACnB,KACA,KAED,iBAAkB,CACjB,KACA,KAED,wBAAyB,CACxB,KACA,KAED,kBAAmB,CAClB,KACA,KAED,8BAA+B,CAC9B,KACA,KAED,iBAAkB,CACjB,KACA,KAED,8BAA+B,CAC9B,KACA,KAED,wBAAyB,CACxB,KACA,KAED,+BAAgC,CAC/B,KACA,KAED,6BAA8B,CAC7B,KACA,KAED,uBAAwB,CACvB,KACA,KAED,iBAAkB,CACjB,KACA,KAED,mBAAoB,CACnB,KACA,KAED,qBAAsB,CACrB,KACA,KAED,qBAAsB,CACrB,KACA,KAED,+BAAgC,CAC/B,KACA,KAED,8BAA+B,CAC9B,KACA,KAED,yBAA0B,CACzB,KACA,KAED,kBAAmB,CAClB,KACA,KAED,kCAAmC,CAClC,KACA,KAED,4BAA6B,CAC5B,KACA,KAED,yBAA0B,CACzB,KACA,KAED,oBAAqB,CACpB,KACA,KAED,kBAAmB,CAClB,KACA,KAED,0BAA2B,CAC1B,KACA,KAED,yBAA0B,CACzB,KACA,KAED,mBAAoB,CACnB,KACA,KAED,0BAA2B,CAC1B,KACA,KAED,yBAA0B,CACzB,KACA,KAED,wBAAyB,CACxB,KAED,oBAAqB,CACpB,IAED,wBAAyB,CACxB,KACA,KAED,oCAAqC,CACpC,KACA,KAED,sCAAuC,CACtC,KACA,KAED,qCAAsC,CACrC,KACA,KAED,+BAAgC,CAC/B,KACA,KAED,8BAA+B,CAC9B,KACA,KAED,wBAAyB,CACxB,KACA,KAED,oBAAqB,CACpB,KACA,KAED,mBAAoB,CACnB,KACA,KAED,wBAAyB,CACxB,KACA,KAED,yBAA0B,CACzB,KACA,KAED,wBAAyB,CACxB,KACA,KAED,kBAAmB,CAClB,KACA,KAED,4BAA6B,CAC5B,KACA,KAED,qBAAsB,CACrB,KACA,KAED,mBAAoB,CACnB,KACA,KAED,2BAA4B,CAC3B,KACA,KAED,qBAAsB,CACrB,KACA,KAED,yBAA0B,CACzB,KACA,KAED,sBAAuB,CACtB,KACA,KAED,qBAAsB,CACrB,KACA,KAED,qBAAsB,CACrB,KACA,KAED,mBAAoB,CACnB,KACA,KAED,yBAA0B,CACzB,KACA,KAED,wBAAyB,CACxB,KACA,KAED,kBAAmB,CAClB,KACA,KAED,iBAAkB,CACjB,KACA,KAED,0BAA2B,CAC1B,KACA,KAED,2BAA4B,CAC3B,KACA,KAED,qBAAsB,CACrB,KACA,KAED,oBAAqB,CACpB,KACA,KAED,iBAAkB,CACjB,KACA,KAED,mBAAoB,CACnB,KACA,KAED,wBAAyB,CACxB,KACA,KAED,8CAA+C,CAC9C,KAED,yCAA0C,CACzC,KAED,gDAAiD,CAChD,KAED,2CAA4C,CAC3C,KAED,6CAA8C,CAC7C,KAED,wCAAyC,CACxC,KAED,6CAA8C,CAC7C,KAED,wCAAyC,CACxC,KAED,4CAA6C,CAC5C,KAED,uCAAwC,CACvC,KAED,8CAA+C,CAC9C,KAED,yCAA0C,CACzC,KAED,6CAA8C,CAC7C,KAED,wCAAyC,CACxC,KAED,6CAA8C,CAC7C,KAED,wCAAyC,CACxC,KAED,qBAAsB,CACrB,KACA,KAED,2BAA4B,CAC3B,KACA,KAED,kBAAmB,CAClB,KACA,KAED,gCAAiC,CAChC,KACA,KAED,mBAAoB,CACnB,KACA,KAED,gBAAiB,CAChB,KACA,KAED,2BAA4B,CAC3B,KACA,KAED,qCAAsC,CACrC,KACA,KAED,gBAAiB,CAChB,KACA,KAED,iBAAkB,CACjB,KACA,KAED,6BAA8B,CAC7B,KACA,KAED,6CAA8C,CAC7C,IAED,uCAAwC,CACvC,KAED,6CAA8C,CAC7C,IAED,uCAAwC,CACvC,KAED,6CAA8C,CAC7C,IAED,uCAAwC,CACvC,KAED,6CAA8C,CAC7C,IAED,uCAAwC,CACvC,KAED,6CAA8C,CAC7C,IAED,uCAAwC,CACvC,KAED,wCAAyC,CACxC,KACA,KAED,kCAAmC,CAClC,IAED,wCAAyC,CACxC,KAED,qCAAsC,CACrC,KAED,oBAAqB,CACpB,KACA,KAED,sBAAuB,CACtB,KACA,KAED,oBAAqB,CACpB,KACA,KAED,mBAAoB,CACnB,KACA,KAED,yBAA0B,CACzB,KACA,KAED,sBAAuB,CACtB,KACA,KAED,oBAAqB,CACpB,KACA,KAED,kBAAmB,CAClB,KACA,KAED,2BAA4B,CAC3B,KACA,KAED,oBAAqB,CACpB,KACA,KAED,cAAe,CACd,KACA,KAED,2CAA4C,CAC3C,KAED,2CAA4C,CAC3C,KAED,2CAA4C,CAC3C,KAED,2BAA4B,CAC3B,KACA,KAED,kCAAmC,CAClC,KACA,KAED,6BAA8B,CAC7B,KACA,KAED,mDAAoD,CACnD,KACA,KAED,mDAAoD,CACnD,KACA,KAED,6DAA8D,CAC7D,KACA,MAGF,SAASC,EAAoBC,GAC5B,IAAIC,EAAoBC,EAAEJ,EAAKE,GAC9B,OAAOG,QAAQC,UAAUC,MAAK,WAC7B,IAAIC,EAAI,IAAIC,MAAM,uBAAyBP,EAAM,KAEjD,MADAM,EAAEE,KAAO,mBACHF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AAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,SAAUC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC9F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,SAAUC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC9F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC7F,CAAED,SAAU,SAAUC,YAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAC9F,CAAED,SAAU,QAASC,YAAa,CAAC,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ACzC,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,IACzC,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,IACzC,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,IACzC,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,IACzC,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,IACzC,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,IACzC,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,IACzC,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,IACzC,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,IACzC,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,IACzC,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,IACzC,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,IACzC,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,IACzC,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,IACzC,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,IACzC,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,IACzC,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,IACzC,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,IACzC,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,IACzC,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,IACzC,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,IACzC,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,IACzC,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,IACzC,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,IACzC,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,IACzC,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,IACzC,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,IACzC,CAAED,SAAU,QAASC,YAAa,CAAC,EAAE,EAAE,EAAE,KC5CnCgB,GAAc,CAAC,WAAD,gDACdL,GAAY,CAAC,WAAD,4BAELssC,GAA2B,SACpCpsC,EACAE,GAEA96B,QAAQC,IAAI26B,GAGZ,IAAMwB,EAAU,sBACTxB,EAAwB1O,UAAU,GAAGA,WAD5B,YAET0O,EAAwB1O,UAAU,GAAGA,YAGxC+O,EAAaC,GAAakB,GAC9Bp8B,QAAQC,IAAI,eAAgBg7B,GAGxBA,EAAaoB,GAAapB,GAC1Bj7B,QAAQC,IAAI,uBAAwBg7B,GAGxC,IAAMqB,EAA2ByqC,GACjC/mE,QAAQC,IAAI,gBAAiBq8B,GAK7B,IAFA,IAAIjB,EAAgB,GAChBC,EAAY,GACPzzB,EAAI,EAAGA,EAAIozB,EAAWnxB,OAAQjC,IAAK,CACxC,IAAI2f,EAAQ8U,EAAyBlmB,MAAK,SAAApV,GAAC,OAAIA,EAAE84B,WAAamB,EAAWpzB,MACzEwzB,EAAct5B,KAAd,OAAmBylB,QAAnB,IAAmBA,OAAnB,EAAmBA,EAAMuS,aACzBuB,EAAUv5B,KAAKylB,GAEnBxnB,QAAQC,IAAI,kBAAmBo7B,GAG/B,IAAMG,EAAaC,GAAgBJ,GACnCr7B,QAAQC,IAAI,QAAQu7B,GAGpB,IAAIyrC,EAAgB,CAChBliD,MAAOyW,EAAW,GAAKA,EAAW,GAAK,EAAI,EAC3ChW,MAAOgW,EAAW,GAAKA,EAAW,GAAK,EAAI,GAG3C0rC,EAAgB,CAChBniD,MAAOyW,EAAW,GAAKA,EAAW,GAAK,EAAI,EAC3ChW,MAAOgW,EAAW,GAAKA,EAAW,GAAK,EAAI,GAGzC2rC,EAAuC,IAAxBF,EAAcliD,MAC7BqiD,EAA2C,IAAxBH,EAAcliD,MA+BvC,MA7Ba,CACTA,MAAM,yBACFxO,QAAS,CACLgN,MAAOwY,GAAuBrB,GAAUusC,EAAcliD,OAAQ+V,GAC9DtX,QAASwY,GAAyBjB,GAAYksC,EAAcliD,OAAQ+V,GACpE3U,WAAY8V,GAAmClB,GAAYksC,EAAcliD,OAAQ+V,GACjFoB,mBAAoBC,GAAkC8qC,EAAcliD,MAAOuW,KAI5E6rC,EAAe,CAAE/gD,QAAS,CAAC,CAC1B7C,MAAO4jD,EAAeprC,GAAuB,uBAAwBjB,GAAM,GAC3EtX,QAAS2jD,EAAenrC,GAAyB,qBAAsBlB,GAAM,GAC7EoB,mBAAoB,QACjB,CAAE9V,QAAS,OAbjB,IAcDzP,QAAS,CACL4M,MAA0BwY,GAAnBqrC,EAA0C,SAAuC1sC,GAAUwsC,EAAcniD,OAArD+V,GAC3DtX,QAA4BwY,GAAnBorC,EAA4C,cAA8CrsC,GAAYmsC,EAAcniD,OAAzD+V,GACpEoB,mBAAoBkrC,EAAmB,KAAOjrC,GAAkC+qC,EAAcniD,MAAOuW,MAG7G9V,MAAO,CACHjP,QAAS,KACT6P,QAAS,KACTzP,QAAS,MAEb6W,QAASyN,IAMXoB,GAAe,SAACpB,GAClB,IAAIuC,GAAM,EAQV,OANAvC,EAAWl+B,KAAI,SAACkM,GACH,UAANA,GAAuB,UAANA,GAAuB,UAANA,GAAuB,UAANA,IAClDu0B,GAAM,MAIPA,EAAMvC,EAAW3kB,QAAO,SAACrN,GAAD,MAAgB,UAALA,KAAgBgyB,GC6Q/CosC,GA3UgC,WAAM,MAElC3mE,EAAO,2BAF2B,mBAE1Ce,EAF0C,KAEvCw5C,EAFuC,KAG3ChG,EAAWC,cAHgC,EAIXn2C,oBAAkB,GAJP,mBAI1CuoE,EAJ0C,KAI7BC,EAJ6B,OAKrBxoE,mBAAgBsjE,IALK,mBAK1C56D,EAL0C,KAKlC+/D,EALkC,KAM3CC,EAA0BjuD,YAAY0P,IACpC1H,EAAyBhI,YAAY+K,IAArC/C,qBAPyC,EAQLhI,YAAYqW,IAAhDtC,EARyC,EAQzCA,YAAsBrB,GARmB,EAQ5BsB,QAR4B,EAQnBtB,WACxB0O,EAA0BphB,YAAYqW,IACpCgF,EAAgBrb,YAAYkc,IAA5Bb,YACFzyB,EAAUC,cACR2J,EAAMN,EAAe8N,YAAYX,IAAjC7M,EAZyC,EAaZwN,YAAYX,GAAzCxI,EAbyC,EAazCA,SAAUqE,EAb+B,EAa/BA,eAb+B,EAcnB3V,mBAAwCukE,IAdrB,mBAc1ChgE,EAd0C,KAcjCokE,EAdiC,OAenB3oE,mBAAiB,KAfE,mBAe1C2mB,EAf0C,KAe9BiiD,EAf8B,OAgBzB5oE,qBAhByB,mBAgB1C4jE,EAhB0C,KAgBpCiF,EAhBoC,KAiB3CxyB,EAAKnL,KACH1hC,EAA0BtD,IAA1BsD,sBACFsC,EAAO,OAAG6J,QAAH,IAAGA,OAAH,EAAGA,EAAgB4/B,KAAKzpC,QAGrCpL,qBAAU,WACNooE,IACAC,OACD,CAACxkE,IAEJ7D,qBAAU,WACNqoE,OACD,CAACz3D,IAEJ,IAAMw3D,EAAyB,WAC3B,IAAe,OAAXhzC,QAAW,IAAXA,OAAA,EAAAA,EAAahnB,SAAUkf,GAAgBuD,KAAM,CAC7C,IAAMhtB,EAAyCggE,GAC/CoE,EAAWpkE,GACXA,EAAQgf,SAAQ,SAACgM,GAAO,IAAD,IAKlB,GAJDA,EAAE9B,OAAF,UAAWN,EAAU,GAAGA,UAAU9V,MAAK,SAACqnB,GAAD,OAASA,EAAI9/B,KAAO2wB,EAAEnC,mBAA7D,aAAW,EAA6DK,OACrD,QAAf8B,EAAEnC,UAAsBmC,EAAE9B,OAAO1iB,OAAS,IAC3CwkB,EAAE9B,OAAS8B,EAAE9B,OAAO3uB,MAAM,EAAGywB,EAAE9B,OAAO1iB,OAAS,IAE9B,QAAfwkB,EAAEnC,SAAmB,OAAOmC,EAAE9B,OAAF,UAAWN,EAAU,GAAGA,UAAU9V,MAAK,SAACD,GAAD,OAAOA,EAAExY,KAAO2wB,EAAEnC,mBAAzD,aAAW,EAAyDK,UAEzGk7C,EAAWpkE,OAEV,CACD,IAAMA,EAAyCujE,GAC/Ca,EAAWpkE,GACXA,EAAQgf,SAAQ,SAACgM,GAAO,IAAD,EACnBA,EAAE9B,OAAF,UAAWN,EAAU,GAAGA,UAAU9V,MAAK,SAACqnB,GAAD,OAASA,EAAI9/B,KAAO2wB,EAAEnC,mBAA7D,aAAW,EAA6DK,UAE5Ek7C,EAAWpkE,KASbwkE,GAAe,WAAO,IAAD,4BAmBgB,IAIA,IAtB/B9hD,EAA6ByhD,EAA7BzhD,yBACF+hD,EAAS,OAAG/hD,QAAH,IAAGA,GAAH,UAAGA,EAA0BjB,aAA7B,aAAG,EAAiCxO,QAC7CyxD,EAAS,OAAGhiD,QAAH,IAAGA,GAAH,UAAGA,EAA0BR,aAA7B,aAAG,EAAiCjP,QAC7C0xD,EAAS,OAAGjiD,QAAH,IAAGA,GAAH,UAAGA,EAA0BjB,aAA7B,aAAG,EAAiCqB,QAC7C8hD,EAAS,OAAGliD,QAAH,IAAGA,GAAH,UAAGA,EAA0BR,aAA7B,aAAG,EAAiCY,QAC7C+hD,EAAS,OAAGniD,QAAH,IAAGA,GAAH,UAAGA,EAA0BjB,aAA7B,aAAG,EAAiCpO,QAC7CyxD,EAAS,OAAGpiD,QAAH,IAAGA,GAAH,UAAGA,EAA0BR,aAA7B,aAAG,EAAiC7O,QAE5ClP,EAAUq/D,IACjBr/D,EAAO,GAAG66D,IAAMyF,EAAS,UAAGA,EAAUvkD,eAAb,aAAG,EAAmB7gB,WAAOoG,EACtDtB,EAAO,GAAGoW,UAAoB,OAATkqD,QAAS,IAATA,GAAA,UAAAA,EAAWvkD,eAAX,eAAoB3F,gBAAY9U,EACrDtB,EAAO,GAAG66D,IAAO0F,EAAS,UAAGA,EAAUxkD,eAAb,aAAG,EAAmB7gB,WAAQoG,EACxDtB,EAAO,GAAGoW,UAAoB,OAATmqD,QAAS,IAATA,GAAA,UAAAA,EAAWxkD,eAAX,eAAoB3F,gBAAY9U,EACrDtB,EAAO,GAAG66D,IAAM6F,EAAYn8D,EAAC,UAACm8D,EAAU3kD,eAAX,aAAC,EAAmB7gB,YAASoG,EAC1DtB,EAAO,GAAGoW,SAAV,OAAqBsqD,QAArB,IAAqBA,GAArB,UAAqBA,EAAW3kD,eAAhC,aAAqB,EAAoB3F,SACzCpW,EAAO,GAAG66D,IAAM8F,EAAYp8D,EAAC,UAACo8D,EAAU5kD,eAAX,aAAC,EAAmB7gB,YAASoG,EAC1DtB,EAAO,GAAGoW,SAAV,OAAqBuqD,QAArB,IAAqBA,GAArB,UAAqBA,EAAW5kD,eAAhC,aAAqB,EAAoB3F,SAErCoqD,GAAaA,EAAUn+D,OAAS,KAChCrC,EAAO,GAAGoW,SAAV,UAAqBoqD,EAAU,GAAGzkD,eAAlC,aAAqB,EAAsB3F,SAC3CpW,EAAO,GAAG66D,IAAV,UAAgB2F,EAAU,GAAGzkD,eAA7B,aAAgB,EAAsB7gB,OAEtCulE,GAAaA,EAAUp+D,OAAS,IAChCrC,EAAO,GAAGoW,SAAV,UAAqBqqD,EAAU,GAAG1kD,eAAlC,aAAqB,EAAsB3F,SAC3CpW,EAAO,GAAG66D,IAAV,UAAgB4F,EAAU,GAAG1kD,eAA7B,aAAgB,EAAsB7gB,OAG1C6kE,EAAU//D,IA+CR4gE,GAAY,SAACzxD,GAAmB,IAAD,oCACzBoP,EAA6ByhD,EAA7BzhD,yBASR,OAAQpP,GACJ,KAAK,EAAG,MAAO,CAAEjZ,GAAE,OAAEqoB,QAAF,IAAEA,GAAF,UAAEA,EAA0BjB,aAA5B,iBAAE,EAAiCxO,QAAQiN,eAA3C,aAAE,EAAkD7lB,GAAIyxB,aAAY,OAAEpJ,QAAF,IAAEA,GAAF,UAAEA,EAA0BjB,aAA5B,aAAE,EAAiCxO,QAAQ2lB,oBAClI,KAAK,EAAG,MAAO,CAAEv+B,GAAE,OAAEqoB,QAAF,IAAEA,GAAF,UAAEA,EAA0BR,aAA5B,iBAAE,EAAiCjP,QAAQiN,eAA3C,aAAE,EAAkD7lB,GAAIyxB,aAAY,OAAEpJ,QAAF,IAAEA,GAAF,UAAEA,EAA0BR,aAA5B,aAAE,EAAiCjP,QAAQ2lB,oBAClI,KAAK,EAAG,MAAO,CAAEv+B,GAAE,OAAEqoB,QAAF,IAAEA,GAAF,UAAEA,EAA0BjB,aAA5B,iBAAE,EAAiCqB,QAAQ,GAAG5C,eAA9C,aAAE,EAAqD7lB,GAAIyxB,aAAY,OAAEpJ,QAAF,IAAEA,GAAF,UAAEA,EAA0BjB,aAA5B,aAAE,EAAiCqB,QAAQ,GAAG8V,oBACxI,KAAK,EAAG,MAAO,CAAEv+B,GAAE,OAAEqoB,QAAF,IAAEA,GAAF,UAAEA,EAA0BR,aAA5B,iBAAE,EAAiCY,QAAQ,GAAG5C,eAA9C,aAAE,EAAqD7lB,GAAIyxB,aAAY,OAAEpJ,QAAF,IAAEA,GAAF,UAAEA,EAA0BR,aAA5B,aAAE,EAAiCY,QAAQ,GAAG8V,oBACxI,KAAK,EAAG,MAAO,CAAEv+B,GAAE,OAAEqoB,QAAF,IAAEA,GAAF,UAAEA,EAA0BjB,aAA5B,iBAAE,EAAiCpO,QAAQ6M,eAA3C,aAAE,EAAkD7lB,GAAIyxB,aAAY,OAAEpJ,QAAF,IAAEA,GAAF,UAAEA,EAA0BjB,aAA5B,aAAE,EAAiCpO,QAAQulB,oBAClI,KAAK,EAAG,MAAO,CAAEv+B,GAAE,OAAEqoB,QAAF,IAAEA,GAAF,UAAEA,EAA0BR,aAA5B,iBAAE,EAAiC7O,QAAQ6M,eAA3C,aAAE,EAAkD7lB,GAAIyxB,aAAY,OAAEpJ,QAAF,IAAEA,GAAF,UAAEA,EAA0BR,aAA5B,aAAE,EAAiC7O,QAAQulB,oBAClI,QAAS,MAAO,CAAEv+B,GAAI,GAAIyxB,aAAc,QAI1Ck5C,GAAuB,WAEzB,IAGMC,EAHgC,UAAZ,OAAX1zC,QAAW,IAAXA,OAAA,EAAAA,EAAahnB,OAI5Bm5D,GAAyBpsC,EAAyBpZ,GAClDmZ,GAAqBC,GAAyB,EAAOpZ,EAAsB3W,GAG3EoqC,EAASzgB,GAAUuhB,QAAQ1gB,qBAAqBuF,IAGhD,IAAMoJ,EAAI,2BACHyjC,GADG,IAEN1hD,mBAAoB,CAChBhB,MAAOwjD,EAAMxjD,MACbS,MAAO+iD,EAAM/iD,OAEjBQ,yBAA0B,CACtBjB,MAAOwjD,EAAMxjD,MACbS,MAAO+iD,EAAM/iD,SAIrBxlB,QAAQC,IAAI,8BAA+B+jC,GAE3CiR,EAASzgB,GAAUuhB,QAAQzgB,kBAAkB0O,IAC7CiR,EAASvnB,GAAkBqoB,QAAQrmB,gBAAgB64C,EAAM/6C,UACzDynB,EAASzuB,GAAsBuvB,QAAQjvB,iCAAiCyhD,IACxEtzB,EAASzuB,GAAsBuvB,QAAQhvB,uCAAuCwhD,IAE9EtzB,EAASzgB,GAAUuhB,QAAQvgB,2BAA2B,CAClDzQ,MAAK,OAAEwjD,QAAF,IAAEA,OAAF,EAAEA,EAAOxjD,MACdS,MAAK,OAAE+iD,QAAF,IAAEA,OAAF,EAAEA,EAAO/iD,UAOtB,OACI,sBAAK/mB,UAAS,UAAKgD,IAAL,SAAd,UAEI,cAAC,GAAD,CACI/C,MA3FG,WACGu2C,EAAd1nB,EAAuBG,GAAkBqoB,QAAQlzB,WAAW4C,GAAqB+iD,UAAsB96C,GAAkBqoB,QAAQlzB,WAAW4C,GAAqBgjD,sBA2FzJhqE,UAAWw8C,EAAE,QACboB,KAAMrwC,EAAE,mBACR8B,KAAK,yBACL2uC,aAAa,OACbl+C,KAAK,YACLo+C,YAAY,SAGhB,sBAAKl+C,UAAWw8C,EAAE,SAAlB,UAEI,sBAAKx8C,UAAWw8C,EAAE,WAAlB,UAEI,sBAAKx8C,UAAWw8C,EAAE,mBAAlB,UACK33C,EAAQvG,KAAI,SAAC8lE,EAAsCnW,GAAvC,MAEQ,MAAjBmW,EAAQtkE,MAAgBskE,EAAQr2C,QAChC,sBAAK/tB,UAAWw8C,EAAE,mBAAlB,UAEI,uBAAMx8C,UAAWw8C,EAAE,eAAnB,UACI,cAAC,EAAD,CAAM38C,KAAMukE,EAAQ/0D,KAAMrP,UAAWw8C,EAAE,kBACvC,uBAAOx8C,UAAWw8C,EAAE,iBAApB,SAAuCjvC,EAAE62D,EAAQlgE,YAErD,oBAAIlE,UAAWw8C,EAAE,kBAAjB,SACKjvC,EAAE62D,EAAQr2C,OAAO7pB,eAK9B,sBAAKlE,UAAWw8C,EAAE,QAAS16C,QA/KhC,WACX00C,EAASvnB,GAAkBqoB,QAAQpnB,yBACnCsmB,EAASvnB,GAAkBqoB,QAAQlzB,WAAW4C,GAAqB49C,iBA6KnD,UACI,+BAAOr3D,EAAE,0BACT,cAAC,EAAD,CAAM1N,KAAK,kCAKnB,qBAAKG,UAAWw8C,EAAE,mBAAlB,SACK33C,EAAQvG,KAAI,SAAC8lE,EAAsCnW,GAAvC,MAEQ,MAAjBmW,EAAQtkE,MAAgBskE,EAAQr2C,QAChC,sBAAK/tB,UAAWw8C,EAAE,mBAAlB,UACI,uBAAMx8C,UAAWw8C,EAAE,eAAnB,UACI,cAAC,EAAD,CAAM38C,KAAMukE,EAAQ/0D,KAAMrP,UAAWw8C,EAAE,kBACvC,uBAAOx8C,UAAWw8C,EAAE,iBAApB,SAAuCjvC,EAAE62D,EAAQlgE,YAErD,qBAAKlE,UAAWw8C,EAAE,qBAAlB,SACM4nB,EAAQr2C,QAAUq2C,EAAQr2C,OAAOzvB,KAAI,SAACyvB,EAAakgC,GAAd,OACnC,oBAAIjuD,UAAWw8C,EAAE,kBAAjB,SACSjvC,EAAEwgB,EAAO7pB,yBAW1C,sBAAKlE,UAAWw8C,EAAE,UAAlB,UAEI,cAAC,GAAD,CACIv8C,MAAO,kBAAMipE,EAAQ,MACrBlpE,UAAgCw8C,EAAN,MAAfv1B,EAAuB,gBAAqB,iBACvD22B,KAAMrwC,EAAE,uBACR2wC,YAAY,SAGhB,cAAC,GAAD,CACIj+C,MAAO,kBAAMipE,EAAQ,MACrBlpE,UAAgCw8C,EAAN,MAAfv1B,EAAuB,gBAAqB,iBACvD22B,KAAMrwC,EAAE,yBACRzN,KAAK,YACLo+C,YAAY,YAGpB,qBAAKl+C,UAAWw8C,EAAE,SAAlB,SAGQxzC,EAAO1K,KAAI,SAACuhD,EAAG1nC,GAAJ,OACP0nC,EAAEgkB,KAAOhkB,EAAEz2B,OAASnC,GACpB,sBAAKjnB,UAAWw8C,EAAE,QAAlB,UACI,qBAAIx8C,UAAWw8C,EAAE,cAAjB,UACI,cAAC,EAAD,CAAMx8C,UAAWw8C,EAAE,aAAc38C,KAAMggD,EAAExwC,KAAMvP,KAAK,UADxD,IACoEyN,EAAEsyC,EAAEx4B,aAExE,sBAAMrnB,UAAWw8C,EAAE,YAAnB,SAAiCqD,EAAEgkB,MACnC,qBAAK7jE,UAAWw8C,EAAE,gBAAlB,SACMqD,EAAEzgC,UAAYygC,EAAEzgC,SAAS9gB,KAAI,SAACqQ,EAAQs/C,GAAT,OAC3B,sBAAKjuD,UAAWw8C,EAAE,iBAAlB,UACI,cAAC,EAAD,CAAM38C,KAAI,UAAK8O,EAAEU,KAAP,SAAoBvP,KAAK,MAAMK,YAAakP,KACtD,uBAAOrP,UAAWw8C,EAAE,cAApB,SAESn6C,MAAMC,QAAQqM,EAAEzK,OAAUqJ,EAAEoB,EAAEzK,MAAM,GAAIyK,EAAEzK,MAAM,IAAMqJ,EAAEoB,EAAEzK,WAJ9B+pD,QAUjD,sBAAKjuD,UAAWw8C,EAAE,aAAc16C,QAAS,kBAxLhD,SAACqW,EAAekP,EAAkBhY,GAAiB,MAEvCu6D,GAAUzxD,GAA/BjZ,EAF4D,EAE5DA,GAAIyxB,EAFwD,EAExDA,aAEN5L,EAAUwY,GAAyBr+B,EAAI6jB,GAE7CyzB,EAASvnB,GAAkBqoB,QAAQ9mB,sBAAsBzL,IACzDyxB,EAASvnB,GAAkBqoB,QAAQ5mB,kCAAkCC,IACrE6lB,EAASvnB,GAAkBqoB,QAAQ1mB,0BAA0BvJ,IAC7DmvB,EAASvnB,GAAkBqoB,QAAQxmB,8BAA8BzhB,IACjE85D,EAAQjF,GACR4E,GAAe,GA6KwDmB,CAAa9xD,EAAO0nC,EAAEx4B,SAAUw4B,EAAExwC,OAAjF,UACI,+BAAO9B,EAAE,wCAAyC,qBAClD,cAAC,EAAD,CAAOzN,KAAK,OAAO8C,MAAM,iBAnBDuV,QA0B5C,qBAAKnY,UAAWw8C,EAAE,UAAlB,SACI,cAAC,GAAD,CACIoB,KAAMrwC,EAAE,+BACR8B,KACI,cAAC,EAAD,CACIvP,KAAK,QACL8C,MAAM,SAGdo7C,aAAa,QACb/9C,MAAO,kBA/NX,WAKZ,GAJA4pE,KAEAlmE,EAAQL,KAAKU,EAAOO,oBAAoBT,MAEpCq4B,EAAwBjL,4BAA5B,CACA,IAAMhnB,EAAWJ,EAAsB,IAAIK,KAAKgyB,EAAwBjL,6BAA8B,IAAI/mB,MAC1GwsC,EAAGlL,MAAM,CACLp3B,SAAU,gBACViB,OAAQ,8BACRq2B,YAAa,2BACbznC,MAAOgG,KAoNkBggE,QAKjBrB,GACA,cAAC,GAAD,CAA8BlhB,QAAS,kBAAMmhB,GAAe,aCxLjEqB,GA3JiC,WAAO,MAEpCloE,EAAO,0BAF6B,mBAE5Ce,EAF4C,KAEzCw5C,EAFyC,KAG7ChG,EAAWC,cACXta,EAA0BphB,YAAYqW,IACtC43C,EAA0BjuD,YAAY0P,IACpC1H,EAAyBhI,YAAY+K,IAArC/C,qBACAqT,EAAgBrb,YAAYkc,IAA5Bb,YACFugB,EAAKnL,KACH1hC,EAA0BtD,IAA1BsD,sBACAyD,EAAON,EAAe8N,YAAYX,IAAlC7M,EACA0I,EAAqB8E,YAAYX,GAAjCnE,eACF7J,EAAO,OAAG6J,QAAH,IAAGA,OAAH,EAAGA,EAAgB4/B,KAAKzpC,QAGrCpL,qBAAU,WACN,OAAO,WACHopE,IACAC,OAEL,IAGH,IAKMD,EAAkC,WACpC,GAAIjuC,EAAwBjL,4BAA5B,CACA,IAAMhnB,EAAWJ,EAAsB,IAAIK,KAAKgyB,EAAwBjL,6BAA8B,IAAI/mB,MAC1GwsC,EAAGlL,MAAM,CACLp3B,SAAU,gBACViB,OAAQ,iBACRq2B,YAAa,sCACbznC,MAAOgG,MAITmgE,EAAmC,WACrC,GAAIluC,EAAwBhL,yBAA5B,CACA,IAAMjnB,EAAWJ,EAAsB,IAAIK,KAAKgyB,EAAwBhL,0BAA2B,IAAIhnB,MACvGwsC,EAAGlL,MAAM,CACLp3B,SAAU,gBACViB,OAAQ,gBACRq2B,YAAa,qCACbznC,MAAOgG,IAEXssC,EAASvnB,GAAkBqoB,QAAQpmB,iCAA4B5mB,MAG7DggE,EAAgB,WAElBT,IAEArzB,EAASvnB,GAAkBqoB,QAAQtmB,gBAAe,IAClDwlB,EAASvnB,GAAkBqoB,QAAQlzB,WAAW4C,GAAqBujD,aAGjEV,EAAuB,WAEzB,IAGMC,EAHgC,UAAZ,OAAX1zC,QAAW,IAAXA,OAAA,EAAAA,EAAahnB,OAI5Bm5D,GAAyBpsC,EAAyBpZ,GAClDmZ,GAAqBC,GAAyB,EAAOpZ,EAAsB3W,GAG3EoqC,EAASzgB,GAAUuhB,QAAQ1gB,qBAAqBuF,IAGhD,IAAMoJ,EAAI,2BACHyjC,GADG,IAEN1hD,mBAAoB,CAChBhB,MAAOwjD,EAAMxjD,MACbS,MAAO+iD,EAAM/iD,OAEjBQ,yBAA0B,CACtBjB,MAAOwjD,EAAMxjD,MACbS,MAAO+iD,EAAM/iD,SAIrBxlB,QAAQC,IAAI,8BAA+B+jC,GAE3CiR,EAASzgB,GAAUuhB,QAAQzgB,kBAAkB0O,IAC7CiR,EAASvnB,GAAkBqoB,QAAQrmB,gBAAgB64C,EAAM/6C,UACzDynB,EAASzuB,GAAsBuvB,QAAQjvB,iCAAiCyhD,IACxEtzB,EAASzuB,GAAsBuvB,QAAQhvB,uCAAuCwhD,IAE9EtzB,EAASzgB,GAAUuhB,QAAQvgB,2BAA2B,CAClDzQ,MAAK,OAAEwjD,QAAF,IAAEA,OAAF,EAAEA,EAAOxjD,MACdS,MAAK,OAAE+iD,QAAF,IAAEA,OAAF,EAAEA,EAAO/iD,UAItB,OACI,qBAAK/mB,UAAWgD,IAAhB,SAEI,sBAAKhD,UAAWw8C,EAAE,SAAlB,UACI,wBAEA,gCACI,sBAAKx8C,UAAU,QAAf,UACI,cAAC,EAAD,CACIA,UAAU,OACVH,KAAK,oBACLC,KAAK,QAET,cAAC,EAAD,CACIE,UAAU,OACVH,KAAK,oBACLC,KAAK,WAIb,6BAAKyN,EAAE,+BAEP,sBAAKvN,UAAU,OAAf,UACI,cAAC,GAAD,CACIA,UAAU,MACV49C,KAAMrwC,EAAE,wCACR8B,KAAK,2BACLpP,MAAOqqE,EACPxqE,KAAK,cAGT,cAAC,EAAD,CAAYE,UAAU,SAASC,MAzGpC,WACXu2C,EAASvnB,GAAkBqoB,QAAQpnB,yBACnCsmB,EAASvnB,GAAkBqoB,QAAQlzB,WAAW4C,GAAqB49C,iBAuGnD,SACKr3D,EAAE,2CAIX,sBAAKvN,UAAU,YAAf,UACI,wBACA,sCACA,2BAGJ,qBAAKA,UAAU,UAAf,SACI,cAAC,GAAD,CACIA,UAAU,MACV49C,KAAMrwC,EAAE,4BACRzN,KAAK,SACLuP,KAAK,cACLpP,MAAOqqE,eC5JpBE,GAXW,CACtB,CACIvkC,MAAO,+CACPlyB,YAAa,oDAEjB,CACIkyB,MAAO,iCACPlyB,YAAa,iDCiGN02D,GAvF8B,WAAO,MAEjCxoE,EAAO,uBAF0B,mBAEzCe,EAFyC,KAEtCw5C,EAFsC,OAGtBl8C,mBAAS,GAHa,mBAGxCoqB,EAHwC,KAGlCggD,EAHkC,KAI1CC,EAAQH,GACRh0B,EAAWC,cACX9yC,EAAUC,cACR2J,EAAMN,EAAe8N,YAAYX,IAAjC7M,EAERvM,qBAAU,WACNw1C,EAASvnB,GAAkBqoB,QAAQpmB,6BAA4B,IAAI/mB,MAAOC,kBAC3E,IAGH,IAAMwgE,EAAa,WACf,OAAOD,EAAMt/D,SAAYqf,EAAO,GAmBpC,OACI,qBAAK1qB,UAAWgD,IAAhB,SAEI,qBAAKhD,UAAWw8C,EAAE,SAAlB,SAEI,sBAAKx8C,UAAWw8C,EAAE,QAAlB,UAEI,wBAAOx8C,UAAWw8C,EAAE,iBAApB,UAEM9xB,EAAO,GAAK,cAAC,EAAD,CAAM7qB,KAAK,yBAAyBI,MArBrD,WACbyqE,EAAQhgD,EAAO,MAsBGA,EAAO,EAJb,MAImBigD,EAAMt/D,UAGzB,6BACKkC,EAAEo9D,EAAMjgD,GAAMub,SAEnB,mBAAGjmC,UAAWw8C,EAAE,oBAAhB,SACKjvC,EAAEo9D,EAAMjgD,GAAM3W,eAGnB,qBAAK/T,UAAS,UAAKw8C,EAAE,gBAAP,YAA2BouB,IAAwB,GAAT,QAAxD,SAESA,IAKQ,qCACD,cAAC,GAAD,CACIhtB,KAAMrwC,EAAE,2BACR8B,KAAK,cACLpP,MAxCrB,WACXu2C,EAASvnB,GAAkBqoB,QAAQlzB,WAAW4C,GAAqB49C,iBAwCnCtmB,SAAS,QAEb,cAAC,GAAD,CACIV,KAAMrwC,EAAE,4BACRzN,KAAK,YACLuP,KAAK,UACLivC,SAAS,MACTr+C,MA5CpB,WACZ0D,EAAQL,KAAK,gCA2BW,cAAC,GAAD,CACIs6C,KAAMrwC,EAAE,oCACR8B,KAAK,2BACLpP,MA3Cf,WACbyqE,EAAQhgD,EAAO,gBC4FRmgD,GAlHiC,WAAO,MAEpC5oE,EAAO,0BAF6B,mBAE5Ce,EAF4C,KAEzCw5C,EAFyC,OAGbzhC,YAAYqW,IAA1C3D,EAH2C,EAG3CA,UAAWkB,EAHgC,EAGhCA,eACXphB,EAAON,EAAe8N,YAAYX,IAAlC7M,EAJ2C,EAKejN,mBAAiB,GALhC,mBAK5CwqE,EAL4C,KAKjBC,EALiB,OAMazqE,mBAAiB,GAN9B,mBAM5C0qE,EAN4C,KAMlBC,EANkB,KAO3C70C,EAAgBrb,YAAYkc,IAA5Bb,YAP2C,EAQvB91B,oBAAS,GARc,mBAQ5Ckf,EAR4C,KAQpC0rD,EARoC,KAanDlqE,qBAAU,WACN,IAAMmqE,EAAqC,UAAZ,OAAX/0C,QAAW,IAAXA,OAAA,EAAAA,EAAahnB,OAGjC,GAFA87D,EAAUC,IAENA,EAAa,CAEb,IAAMC,EAAmBC,EAAqB59C,EAAW,KACnD69C,EAA2BC,EAA+BH,GAChEL,EAA6BS,EAAkBJ,EAAiB//D,OAAQigE,IAI5E,IAAIG,EAA8D,GAC9DC,EAAsC,EAElBj+C,EAAU5V,QAAQ,SAAAgY,GAAC,MAAa,MAATA,EAAE3wB,MACjC2kB,SAAS,SAAA08B,GACrBkrB,EAAkC,sBAC3BA,GAD2B,YAE3BlrB,EAAE9yB,YAETi+C,GAAwCH,EAA+BhrB,EAAE9yB,cAE7Ew9C,EAA4BO,EAAkBC,EAAmCpgE,OAAQqgE,MAE3F,CAACj+C,IAEH,IAAM49C,EAAuB,SAACl8D,EAAqCw8D,GAE/D,OADiBx8D,EAAW0I,QAAQ,SAAA0oC,GAAC,OAAIA,EAAErhD,KAAOysE,KAAa,GAC/Cl+C,WAGd89C,EAAiC,SAAC99C,GACpC,OAAOA,EAAU5V,QAAQ,SAAAgY,GAAC,OAAIA,EAAEhC,cAAaxiB,QAG3CmgE,EAAoB,SAAC7jE,EAAeikE,GACtC,IAAM5kB,EAAU,IAAMr/C,EAAQikE,EAC9B,OAAOtiE,KAAKuiE,KAAK7kB,IAGf8kB,EAAoB,SAAC1oE,GACvB,MAAO,CACH,gBAAgB,GAAhB,OAAoBA,EAApB,OA6BR,OACI,sBAAKpD,UAAWgD,IAAKtB,MA1BJ,WACjB,IAAMiG,EAAQmjE,EAA4BE,EACtCe,EAAI,SACJrtC,EAAI,MACJD,EAAI,MAcP,OAZE92B,EAAQ,IACPokE,EAAI,QACJrtC,EAAI,MACJD,EAAI,OAGL92B,EAAQ,KACPokE,EAAI,SACJrtC,EAAI,MACJD,EAAI,OAGA,CACJ,qBAAsBstC,EACtB,qBAAsBrtC,EACtB,qBAAsBD,GAKEutC,GAA5B,UACI,sBAAKhsE,UAAWw8C,EAAE,UAAlB,UACI,gCACKjvC,EAAE,8BAEP,wBAAOvN,UAAWw8C,EAAE,cAApB,UACMsuB,EAA4BE,EADlC,WAKJ,sBAAKhrE,UAAWw8C,EAAE,YAAlB,UACI,qBACI96C,MAAOoqE,EAAmBtsD,EAAqCwrD,EAA5BF,GACnC9qE,UAAWw8C,EAAE,eAAgB,cAI5BwuB,EAA2B,GAA2B,MAAtBr8C,EAAezvB,MAAgBsgB,GAChE,qBACI9d,MAAOoqE,EAAkBd,GACzBhrE,UAAWw8C,EAAE,eAAgB,mBClBtCyvB,GAtFiC,WAAO,MAEpChqE,EAAO,0BAF6B,mBAE5Ce,EAF4C,KAEzCw5C,EAFyC,OAGbzhC,YAAYqW,IAA1C3D,EAH2C,EAG3CA,UAAWkB,EAHgC,EAGhCA,eACXyH,EAAgBrb,YAAYkc,IAA5Bb,YACFogB,EAAWC,cALkC,EAODn2C,qBAPC,mBAO5C4rE,EAP4C,KAOzBC,EAPyB,KAS3C1iE,GADgB1I,mBACNga,YAAYX,GAAtB3Q,OAT2C,EAUEjD,IAA7CyC,EAV2C,EAU3CA,sBAAuBO,EAVoB,EAUpBA,kBACzBkvD,EAAS7oD,EAXoC,EAYbvP,qBAZa,mBAY3Co6D,EAZ2C,KAY/B0R,EAZ+B,KAc3C7+D,EAAON,EAAe8N,YAAYX,IAAlC7M,EAIRvM,qBAAU,WACN,GAAIyI,GAAsB,UAAbA,EAAMvK,GAAnB,CACA,IAAMs7D,EAAgBvxD,EAAsByvD,EAAOrtD,OAAS,GACtDovD,EAAc/B,EAAO8B,EAAc,IACzC4R,EAAc5iE,EAAkBixD,OACjC,IAEHz5D,qBAAU,WACFkrE,GAAqBA,EAAkBhtE,KAAOyvB,EAAezvB,IAC7DitE,EAAqBx9C,KAE1B,CAACA,IAOJ,IAAM09C,EAAe,SAACh4D,GAClB,IAAMmqC,EAAU,GAGhB,OAFGnqC,EAASob,YAAW+uB,EAAQl7C,KAAK,aACjC+Q,EAASnV,KAAOyvB,EAAezvB,IAAGs/C,EAAQl7C,KAAK,UAC3Ck7C,GAsBX,OACI,sBAAKx+C,UAAWgD,EAAC,OAACozB,QAAD,IAACA,OAAD,EAACA,EAAahnB,OAAQ1N,MAAOg5D,EAA9C,UAEI,oBAAI16D,UAAWw8C,EAAE,SAAjB,SAGQ/uB,EAAUnvB,KAAK,SAAC+V,EAAU8D,GAAX,OACX,qBAAInY,UAAWw8C,EAAE,OAAQ6vB,EAAah4D,IAA8BvS,QAAS,kBA1B5E,SAACuS,EAAiC8D,GAC/C9D,EAASob,YACb+mB,EAASvnB,GAAkBqoB,QAAQlnB,aAAa,CAAE/b,WAAS8D,WAwBwCiY,CAAa/b,EAAU8D,IAA1G,UACI,uBAAOnY,UAAWw8C,EAAE,aAAc6vB,EAAah4D,IAA/C,SACK9G,EAAE8G,EAASA,YAGhB,sBAAMrU,UAAWw8C,EAAE,aAAc6vB,EAAah4D,IAA9C,iBALmDA,EAASnV,SAY5E,cAAC,GAAD,QCqBGotE,GArGsB,SAAC,GAG9B,IAFJ5+C,EAEG,EAFHA,SACA6+C,EACG,EADHA,SACG,EAEatqE,EAAO,cAFpB,mBAEKe,EAFL,KAEQw5C,EAFR,KAGKpmB,EAAgBrb,YAAYkc,IAA5Bb,YACA7oB,EAAON,EAAe8N,YAAYX,IAAlC7M,EAKFi/D,EAAY,WACd,OAAI9+C,EAASK,OAEVL,EAASI,kBACDJ,EAASK,OAEZL,EAASK,OAA2B3e,MALjBse,EAASI,kBAAoB,GAAK,IAwC3D2+C,EAA0B,SAACze,GAC7B,OAAItgC,EAASI,kBAGF,CAFQ0+C,IACW30D,QAAO,SAAA0oC,GAAC,OAAIA,EAAEnxC,QAAU4+C,EAAO5+C,SACtC/D,OAAS,EAAI,WAAa,IAE1C,CAACmhE,MAAgBxe,EAAO5+C,MAAQ,WAAa,KAYxD,OACI,qBAAKpP,UAAW,qBAAhB,SACI,oBAAIA,UAAS,UAAKgD,EAAC,OAACozB,QAAD,IAACA,OAAD,EAACA,EAAahnB,OAApB,aANd,OAACse,QAAD,IAACA,OAAD,EAACA,EAAUE,WACC,OAARF,QAAQ,IAARA,OAAA,EAAAA,EAAUE,QAAQ,GAAGve,MAAO,kBADN,IAMzB,SAEQqe,EAASE,SAAWF,EAASE,QAAQtvB,KAAI,SAAA0vD,GAAM,OAC3C,qBAEIhuD,UAAWw8C,EAAE,OAAQiwB,EAAwBze,IAC7ClsD,QAAS,kBA1DlB,SAACksD,GAEZ,GAAGtgC,EAASI,kBAAmB,CAC3B,IAEI4+C,EAFE3+C,EAASy+C,IAuBf,OAnBIE,EAHY3+C,EAAOlW,QAAO,SAAA0oC,GAAC,OAAIA,EAAEnxC,QAAU4+C,EAAO5+C,SAE1C/D,OAAS,EACN,OAAG0iB,QAAH,IAAGA,OAAH,EAAGA,EAAQlW,QAAO,SAAA0oC,GAAC,OAAIA,EAAEnxC,QAAU4+C,EAAO5+C,SAE1C,sBAAQ2e,GAAR,CAAgBigC,IAIZ,QAAhBtgC,EAASxuB,KACRwtE,EAA+B,UAAjB1e,EAAO5+C,MACrB,CAAC4+C,GACD0e,EAAY70D,QAAO,SAAAH,GAAC,MAAgB,UAAZA,EAAEtI,UAGX,QAAhBse,EAASxuB,KACRwtE,EAA+B,UAAjB1e,EAAO5+C,MACrB,CAAC4+C,GACD0e,EAAY70D,QAAO,SAAAH,GAAC,MAAgB,UAAZA,EAAEtI,eAG3Bm9D,GAAUA,EAASG,IAIvBH,GAASA,EAASve,GA6Bc2e,CAAO3e,IAH1B,UAMQA,EAAO3+C,MACP,cAAC,EAAD,CACIvP,KAAK,MACLD,KAAMmuD,EAAO3+C,KACbrP,UAAWw8C,EAAE,YAIpBsD,KAAgBvyC,EAAEygD,EAAO9pD,UAbrB8pD,EAAO5+C,eCYzBw9D,GA1F2B,SAAC,GAGnC,IAFJl/C,EAEG,EAFHA,SACA6+C,EACG,EADHA,SACG,EAEatqE,EAAO,oBAFpB,mBAEKe,EAFL,KAEQw5C,EAFR,KAGKjvC,EAAON,EAAe8N,YAAYX,IAAlC7M,EAKFi/D,EAAY,WACd,OAAI9+C,EAASK,OAEVL,EAASI,kBACDJ,EAASK,OAEZL,EAASK,OAA2B3e,MALhBse,EAASI,kBAAoB,GAAK,IAoC5D2+C,EAA0B,SAACze,GAC7B,OAAItgC,EAASI,kBAKF,CAHQ0+C,IACW30D,QAAO,SAAA0oC,GAAC,OAAIA,EAAEnxC,QAAU4+C,EAAO5+C,SAEtC/D,OAAS,EAAI,WAAa,IAG1C,CAACmhE,MAAgBxe,EAAO5+C,MAAQ,WAAa,KAGxD,OACI,oBAAIpP,UAAS,UAAKgD,IAAL,YAAY0qB,EAASE,SAAuC,IAA5BF,EAASE,QAAQviB,OAAe,WAAa,IAA1F,SAEQqiB,EAASE,SAAWF,EAASE,QAAQtvB,KAAI,SAAA0vD,GAAM,OAC3C,qBAEIhuD,UAAS,UAAKw8C,EAAE,OAAQiwB,EAAwBze,IAAvC,YAAmDA,EAAOluD,KAAO,SAAW,IACrFgC,QAAS,kBA/Cd,SAACmoC,GAEZ,GAAGvc,EAASI,kBAAmB,CAE3B,IAEI4+C,EAFE39C,EAAUy9C,IAkBhB,OAjBgBz9C,EAAQlX,QAAO,SAAA0oC,GAAC,OAAIA,EAAEnxC,QAAU66B,EAAO76B,SAG3C/D,OAAS,EACjBqhE,EAAW,OAAG39C,QAAH,IAAGA,OAAH,EAAGA,EAASlX,QAAO,SAAA0oC,GAAC,OAAIA,EAAEnxC,QAAU66B,EAAO76B,UAEtDs9D,EAAW,sBAAQ39C,GAAR,CAAiBkb,IAGxByiC,EADiB,WAAX,OAANziC,QAAM,IAANA,OAAA,EAAAA,EAAQnqC,MACM,CAAEmqC,GAEFyiC,EAAY70D,QAAO,SAAAg1D,GAAE,MAAiB,WAAX,OAAFA,QAAE,IAAFA,OAAA,EAAAA,EAAI/sE,eAIhDysE,GAAUA,EAASG,IAKvBH,GAAUA,EAAStiC,GAsBS0iC,CAAO3e,IAH1B,UAMI,cAAC,EAAD,CACIluD,KAAK,QACLD,KAAMmuD,EAAOztD,OAAS,GACtBP,UAAS,UAAKw8C,EAAE,SAAP,YAAmBwR,EAAOluD,KAAO,SAAW,IACrDI,YAAY8tD,EAAOluD,KACnBM,SAAS,WAGb,sBAAMJ,UAAWw8C,EAAE,WAEnB,8BACI,uBAAOx8C,UAAS,gBAAWguD,EAAOluD,KAAO,SAAW,IAApD,SAA2DggD,KAAgBvyC,EAAEygD,EAAO9pD,cAhBnF8pD,EAAO5+C,aCIrB09D,GAxEqB,SAAC,GAO7B,IAAD,IANHntD,WAMG,MANG,EAMH,MALHC,WAKG,MALG,GAKH,MAJHmtD,iBAIG,SAHH39D,EAGG,EAHHA,MACA6e,EAEG,EAFHA,SACAk5B,EACG,EADHA,SACG,EAEYllD,EAAO,YAFnB,mBAEIe,EAFJ,KAEOw5C,EAFP,OAGqCl8C,qBAHrC,mBAaGigE,GAbH,UAaqB,SAACzhE,GACrB,IAAMi7B,EAAWlyB,OAAO/I,EAAE0vC,OAAOp/B,OACjC,GAAG+3C,EAAS,CACR,GAAGl5B,GAAYA,EAAW8L,EAAS,OACnCotB,EAASt/C,OAAOkyB,OA0BxB,OACI,sBAAK/5B,UAAWgD,IAAhB,UAEI,qBAAKhD,UAAWw8C,EAAE,SAAU96C,MAzBX,WACrB,IAAIsrE,EAAc59D,IAAUuQ,EAAO,IAAM,OAGzC,OAFGvQ,IAAUwQ,IAAKotD,EAAa,SAExB,CACH/rD,KAAK,GAAD,OAAe,GAAR7R,EAAP,KACJynD,UAAU,cAAD,OAAgBmW,EAAhB,MAmB0BC,GAAnC,SACI,cAAC,EAAD,CAAOntE,KAAK,QAAQ+C,KAAK,YAE7B,qBAAK7C,UAAWw8C,EAAE,YAAa96C,MAjB5B,CACH0B,MAAM,GAAD,OAAe,GAARgM,EAAP,QAkBL,uBAAOtP,KAAK,QAAQ6f,IAAKA,EAAKC,IAAKA,EAAKunC,SAAU,SAACroD,GAAD,OAAOyhE,EAAgBzhE,MAGrEiuE,GA9Ca,WACrB,IAAMxa,EAAU,IAAIlwD,MAAMud,GAAOD,EAAM,IAAIxW,KAAK,IAAI7K,KAAK,SAAC8K,EAAG+O,GAAJ,OAAe,wBAAWA,MACnF,OAAO,qBAAKnY,UAAWw8C,EAAE,SAAlB,SAA6B+V,IA6C5B2a,GAGJ,qBAAKltE,UAAWw8C,EAAE,WAAY96C,MApB3B,CACH,KAAO,QAAP,OAAwB,GAAR0N,EAAhB,cAmBA,SACI,iCAAOA,EAAP,aCZD+9D,GAnDkC,SAAC,GAG3C,IAAD,EAFJz/C,EAEI,EAFJA,SACA6+C,EACI,EADJA,SACI,EACWtqE,EAAO,6BADlB,mBACGe,EADH,KACMw5C,EADN,KAEIjvC,EAAON,EAAe8N,YAAYX,IAAlC7M,EACA5G,EAAgBH,IAAhBG,YAUR,OACE,qBAAK3G,UAAWgD,IAAhB,mBAEI0qB,EAASW,iBAFb,aAEI,EAAoB/vB,KAAI,SAAC8uE,EAAU9hE,GAAX,OACtB,sBAAKtL,UAAWw8C,EAAE,OAAlB,UACE,cAAC,EAAD,CACG18C,KAAK,QACLD,KAAMutE,EAAS7sE,OAAS,GACxBP,UAAU,SACVE,YAAY,IAEf,sBAAKF,UAAU,cAAf,UACE,gCACGuN,EAAE6/D,EAASlpE,SAEd,cAAC,GAAD,CACE+pB,SAAUm/C,EAASn/C,SACnBtO,IAAKytD,EAASztD,IACdC,IAAKwtD,EAASxtD,IACdxQ,OArBS+I,EAqBY7M,EArBOoiB,EAASK,OAAoB5V,IAsBzDgvC,SAAU,SAAC14C,GAAD,OA5BP,SAACA,EAAW0J,GAC3B,IAAMk1D,EAAa1mE,EAAY+mB,EAASK,QACxCs/C,EAAWl1D,GAAS1J,EACjB89D,GAAUA,EAASc,GAyBUlmB,CAAS14C,EAAMnD,IACnCyhE,WAAW,IAEb,sBAAK/sE,UAAWw8C,EAAE,UAAlB,UACI,iCAAO4wB,EAASztD,IAAhB,OACA,iCAAOytD,EAASxtD,IAAhB,gBA3BM,IAACzH,QCgFVm1D,GA7F0B,SAAC,GAGlC,IAFJ5/C,EAEG,EAFHA,SACA6+C,EACG,EADHA,SACG,EAEatqE,EAAO,mBAFpB,mBAEKe,EAFL,KAEQw5C,EAFR,KAGKpmB,EAAgBrb,YAAYkc,IAA5Bb,YACA7oB,EAAON,EAAe8N,YAAYX,IAAlC7M,EAKFi/D,EAAY,WACd,OAAI9+C,EAASK,OAEVL,EAASI,kBACDJ,EAASK,OAEZL,EAASK,OAA2B3e,MALjBse,EAASI,kBAAoB,GAAK,IAkC3D2+C,EAA0B,SAACze,GAC7B,OAAItgC,EAASI,kBAGF,CAFQ0+C,IACW30D,QAAO,SAAA0oC,GAAC,OAAIA,EAAEnxC,QAAU4+C,EAAO5+C,SACtC/D,OAAS,EAAI,WAAa,IAE1C,CAACmhE,MAAgBxe,EAAO5+C,MAAQ,WAAa,KAYxD,OACI,qBAAKpP,UAAW,0BAAhB,SACI,oBAAIA,UAAS,UAAKgD,EAAC,OAACozB,QAAD,IAACA,OAAD,EAACA,EAAahnB,OAApB,aANd,OAACse,QAAD,IAACA,OAAD,EAACA,EAAUE,WACC,OAARF,QAAQ,IAARA,OAAA,EAAAA,EAAUE,QAAQ,GAAGve,MAAO,uBADN,IAMzB,SAEQqe,EAASE,SAAWF,EAASE,QAAQtvB,KAAI,SAAA0vD,GAAM,OAC3C,qBAEIhuD,UAAWw8C,EAAE,OAAQiwB,EAAwBze,IAC7ClsD,QAAS,kBApDlB,SAACksD,GAEZ,GAAGtgC,EAASI,kBAAmB,CAC3B,IAEI4+C,EAFE3+C,EAASy+C,IAiBf,OAbIE,EAHY3+C,EAAOlW,QAAO,SAAA0oC,GAAC,OAAIA,EAAEnxC,QAAU4+C,EAAO5+C,SAE1C/D,OAAS,EACN,OAAG0iB,QAAH,IAAGA,OAAH,EAAGA,EAAQlW,QAAO,SAAA0oC,GAAC,OAAIA,EAAEnxC,QAAU4+C,EAAO5+C,SAE1C,sBAAQ2e,GAAR,CAAgBigC,IAIZ,QAAhBtgC,EAASxuB,KACRwtE,EAA+B,UAAjB1e,EAAO5+C,MACrB,CAAC4+C,GACD0e,EAAY70D,QAAO,SAAAH,GAAC,MAAgB,UAAZA,EAAEtI,eAG3Bm9D,GAAUA,EAASG,IAIvBH,GAASA,EAASve,GA6Bc2e,CAAO3e,IAH1B,UAMQA,EAAO3+C,MACP,cAAC,EAAD,CAAMvP,KAAK,MACXD,KAAMmuD,EAAO3+C,KACbrP,UAAWw8C,EAAE,YAGjB,6BAAKsD,KAAgBvyC,EAAEygD,EAAO9pD,YAXzB8pD,EAAO5+C,eCwBzBm+D,GAhG4B,SAAC,GAGpC,IAFJ7/C,EAEG,EAFHA,SACA6+C,EACG,EADHA,SACG,EAEatqE,EAAO,qBAFpB,mBAEKe,EAFL,KAEQw5C,EAFR,KAGKpmB,EAAgBrb,YAAYkc,IAA5Bb,YACA7oB,EAAON,EAAe8N,YAAYX,IAAlC7M,EAKFi/D,EAAY,WACd,OAAI9+C,EAASK,OAEVL,EAASI,kBACDJ,EAASK,OAEZL,EAASK,OAA2B3e,MALjBse,EAASI,kBAAoB,GAAK,IAkC3D2+C,EAA0B,SAACze,GAC7B,OAAItgC,EAASI,kBAGF,CAFQ0+C,IACW30D,QAAO,SAAA0oC,GAAC,OAAIA,EAAEnxC,QAAU4+C,EAAO5+C,SACtC/D,OAAS,EAAI,WAAa,IAE1C,CAACmhE,MAAgBxe,EAAO5+C,MAAQ,WAAa,KAYxD,OACI,qBAAKpP,UAAW,4BAAhB,SACI,oBAAIA,UAAS,UAAKgD,EAAC,OAACozB,QAAD,IAACA,OAAD,EAACA,EAAahnB,OAApB,aANd,OAACse,QAAD,IAACA,OAAD,EAACA,EAAUE,WACC,OAARF,QAAQ,IAARA,OAAA,EAAAA,EAAUE,QAAQ,GAAGve,MAAO,yBADN,IAMzB,SAEQqe,EAASE,SAAWF,EAASE,QAAQtvB,KAAI,SAAA0vD,GAAM,OAC3C,qBAEIhuD,UAAWw8C,EAAE,OAAQiwB,EAAwBze,IAC7ClsD,QAAS,kBApDlB,SAACksD,GAEZ,GAAGtgC,EAASI,kBAAmB,CAC3B,IAEI4+C,EAFE3+C,EAASy+C,IAiBf,OAbIE,EAHY3+C,EAAOlW,QAAO,SAAA0oC,GAAC,OAAIA,EAAEnxC,QAAU4+C,EAAO5+C,SAE1C/D,OAAS,EACN,OAAG0iB,QAAH,IAAGA,OAAH,EAAGA,EAAQlW,QAAO,SAAA0oC,GAAC,OAAIA,EAAEnxC,QAAU4+C,EAAO5+C,SAE1C,sBAAQ2e,GAAR,CAAgBigC,IAIZ,QAAhBtgC,EAASxuB,KACRwtE,EAA+B,UAAjB1e,EAAO5+C,MACrB,CAAC4+C,GACD0e,EAAY70D,QAAO,SAAAH,GAAC,MAAgB,UAAZA,EAAEtI,eAG3Bm9D,GAAUA,EAASG,IAIvBH,GAASA,EAASve,GA6Bc2e,CAAO3e,IAH1B,UAMQA,EAAO3+C,MACP,cAAC,EAAD,CAAMvP,KAAK,MACXD,KAAMmuD,EAAO3+C,KACbrP,UAAWw8C,EAAE,YAGjB,kCACI,yBACA,8BAAMjvC,EAAEygD,EAAO9pD,cAbd8pD,EAAO5+C,eCiCzBo+D,GAzGuB,SAAC,GAG/B,IAFJ9/C,EAEG,EAFHA,SACA6+C,EACG,EADHA,SACG,EAEatqE,EAAO,eAFpB,mBAEKe,EAFL,KAEQw5C,EAFR,KAGKjvC,EAAON,EAAe8N,YAAYX,IAAlC7M,EACFkgE,EAAuB,CAAC,MAAO,MAAO,MAAO,MAAO,OAOpDjB,EAAY,WACd,OAAI9+C,EAASK,OAEVL,EAASI,kBACDJ,EAASK,OAEZL,EAASK,OAA2B3e,MALjBse,EAASI,kBAAoB,GAAK,IAiC3D2+C,EAA0B,SAACze,GAC7B,OAAItgC,EAASI,kBAGF,CAFQ0+C,IACW30D,QAAO,SAAA0oC,GAAC,OAAIA,EAAEnxC,QAAU4+C,EAAO5+C,SACtC/D,OAAS,EAAI,WAAa,IAE1C,CAACmhE,MAAgBxe,EAAO5+C,MAAQ,WAAa,KAsBxD,OACI,oBACIpP,UAAS,4BACHgD,IADG,YART0qB,EAASE,QAENF,EAASE,QAAQ,GAAGve,KAAO,mBAC9Bqe,EAASE,QAAQ,GAAGM,WAAa,0BAA4B,GAHrC,GAQf,6BAtEiB,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,OAwE9B3T,SAASmT,EAASxuB,IAAM,iBAAmB,QAFlE,6BArEU,CAAC,OAwEKqb,SAASmT,EAASxuB,IAAM,cAAgB,GAHxD,kBADb,SAOQwuB,EAASE,SAAWF,EAASE,QAAQtvB,KAAI,SAAA0vD,GAAM,OAC3C,qBAEIhuD,UAAS,UAAKw8C,EAAE,OAAQiwB,EAAwBze,IAAvC,YAAmDyf,EAAqBlzD,SAASmT,EAASxuB,IAAM,cAAgB,IACzH4C,QAAS,kBAjEd,SAACksD,GACZ,GAAGtgC,EAASI,kBAAmB,CAC3B,IAEI4+C,EAFE3+C,EAASy+C,IAiBf,OAbIE,EAHY3+C,EAAOlW,QAAO,SAAA0oC,GAAC,OAAIA,EAAEnxC,QAAU4+C,EAAO5+C,SAE1C/D,OAAS,EACN,OAAG0iB,QAAH,IAAGA,OAAH,EAAGA,EAAQlW,QAAO,SAAA0oC,GAAC,OAAIA,EAAEnxC,QAAU4+C,EAAO5+C,SAE1C,sBAAQ2e,GAAR,CAAgBigC,IAGZ,QAAhBtgC,EAASxuB,KACRqC,QAAQC,IAAI,OACZkrE,EAA+B,UAAjB1e,EAAO5+C,MACrB,CAAC4+C,GACD0e,EAAY70D,QAAO,SAAAH,GAAC,MAAgB,UAAZA,EAAEtI,eAG3Bm9D,GAAUA,EAASG,IAIvBH,GAASA,EAASve,GA2CU2e,CAAO3e,IAH1B,UAMQA,EAAO3+C,MAAQ2+C,EAAO9/B,WACtB,cAAC,EAAD,CAAMpuB,KAAK,MACXD,MApCAoqC,EAoCqB+jB,EAnCtC/jB,EAAO56B,KACCm9D,MAAgBviC,EAAO76B,MAAvB,UAAkC66B,EAAO56B,KAAzC,oBAA2D46B,EAAO56B,MAErE46B,EAAO/b,WACJs+C,MAAgBviC,EAAO76B,MAAvB,UAAkC66B,EAAO/b,WAAzC,oBAAiE+b,EAAO/b,YAGxE,IA6BSluB,UAAWw8C,EAAE,YAAe,KAG/BjvC,EAAEygD,EAAO9pD,SAXL8pD,EAAO5+C,OA7BT,IAAC66B,Q,SCiBbyjC,GA5EiB,SAAC,GAGzB,IAAD,IAFHhgD,EAEG,EAFHA,SACA6+C,EACG,EADHA,SAGQh/D,EAAON,EAAe8N,YAAYX,IAAlC7M,EAFL,EAGyBjN,mBAAUotB,EAASK,OAAkB,IAH9D,mBAGIA,EAHJ,KAGY4/C,EAHZ,KAUGC,EAAoB,SAAC70D,GACvB,OAAOzP,KAAKqW,IAAIrW,KAAKsW,IAAI7G,EAPjB,OACA,MAaZ,OACI,qBAAK/Y,UAAU,OAAf,SAoBI,eAAC,iBAAD,CACIoP,MAAOw+D,EAAkB7/C,GACzBwgC,OAAQ,IAERpH,SAAU,SAAApuC,GAAC,OAAI40D,EAAUC,EAAkB70D,KAC3C4G,IAAG,UAAE+N,EAASU,YAAX,aAAE,EAAezO,IACpBC,IAAG,UAAE8N,EAASU,YAAX,aAAE,EAAexO,IACpBiuD,YAAa,SAACp/D,IAjCN,SAACA,GACjB,IAAMq/D,EAAQxkE,KAAKuiE,KAAKviE,KAAKuiE,KAAU,IAALp9D,GAAU,IACzC89D,GAASA,EAASuB,GA+BmBC,CAAYt/D,IAPhD,UASQ,cAAC,iBAAD,CAAeu/D,YAAa,GAAIC,OAAO,qBAGvC,cAAC,oBAAD,CAAkBD,YAAa,GAAIC,OAAO,UAC1CjuE,UAAU,kBACnB,cAAC,iBAAD,CAAe6/B,EAAG,GAAI12B,KAAK,QAClBnJ,UAAU,kBACV,sBAAMkuE,WAAW,SAASx2D,EAAE,MAAMy2D,EAAE,MACpCzsE,MAAO,CAAEokE,SAAU,SAAUsI,WAAY,QACzCjlE,KAAK,UAFL,SAISG,KAAKuiE,KAAKviE,KAAKinD,MAAa,IAAPxiC,GAAY,MAE1C,uBACA,sBAAMmgD,WAAW,SAASx2D,EAAE,MAAMy2D,EAAE,MACpCzsE,MAAO,CAAEokE,SAAU,UAAWsI,WAAY,QAC1CjlE,KAAK,UAFL,SAISoE,EAAE,oCCiHhB8gE,GArL8B,SAAC,GAGtC,IAAD,MAFH3gD,EAEG,EAFHA,SACA6+C,EACG,EADHA,SACG,EAEYtqE,EAAO,wBAFnB,mBAEIe,EAFJ,KAEOw5C,EAFP,OAGyBl8C,mBAAS,IAAI+B,MAAJ,UAAUqrB,EAASE,eAAnB,aAAU,EAAkBviB,QAAQlC,KAAK,OAH3E,mBAGI4kB,EAHJ,KAGY4/C,EAHZ,KAIKpgE,EAAON,EAAe8N,YAAYX,IAAlC7M,EAJL,EAKsBjN,mBAAS,IAAI+B,MAAJ,UAAUqrB,EAASE,eAAnB,aAAU,EAAkBviB,QAAQlC,KAAK,KALxE,mBAKImlE,EALJ,KAKUC,EALV,OAMsBjuE,mBAAS,IAAI+B,MAAJ,UAAUqrB,EAASE,eAAnB,aAAU,EAAkBviB,QAAQlC,KAAK,KANxE,mBAMIqlE,EANJ,UASHxtE,qBAAU,WACH0sB,EAASK,SACPL,EAASK,OAA6BzvB,KAAI,SAACI,EAAOyZ,GACtC,OAANzZ,QAAkB4L,IAAJ5L,GAAuB,KAANA,EAAW4vE,EAAKn2D,GAAS,IAEvDm2D,EAAKn2D,GAASzZ,EAAE0Q,MAChB2e,EAAO5V,GAASzZ,MAGxB6vE,EAAQ,YAAID,IACZX,EAAU,YAAI5/C,OAGjB,CAACygD,IAGN,IAwCMC,EAAW,SAACt2D,GACd,GAAGuV,EAASK,OAAQ,CAChB,IAAMA,EAAUL,EAASK,OAA6B5V,GACtD,GAAG4V,EACC,OAAO,qBAAK/tB,UAAU,QAAf,SACFuN,EAAEwgB,EAAO7pB,SAItB,OAAO,MAGLwqE,EAAW,SAACv2D,GACd,GAAGuV,EAASK,OAAQ,CAChB,IAAMA,EAAUL,EAASK,OAA6B5V,GACtD,GAAG4V,EACC,OACI,cAAC,EAAD,CACIjuB,KAAK,QACLD,KAAMkuB,EAAOxtB,OAAS,GACtBP,UAAU,QACVE,YAAY,EACZE,SAAS,WAKzB,OAAO,MAGLuuE,EAAa,SAAC3gB,GAEhB,QADgBtgC,EAASK,QAEXugD,EAAKz2D,QAAQ,SAAAnZ,GAAC,OAAIA,GAAKA,IAAMsvD,EAAO5+C,SACrC/D,OAAS,GAkB1B,OACI,sBAAKrL,UAAWgD,IAAhB,UAEI,qBAAKhD,UAAWw8C,EAAE,QAAlB,SAEQ9uB,EAASE,SAAWF,EAASE,QAAQtvB,KAAK,SAAC0vD,EAAQ71C,GAAT,OACtC,sBAIInY,UAAWw8C,EAAE,YAAa,CAAC8xB,EAAKn2D,GAAS,aAAe,KAJ5D,UAMI,+BACMA,EAAQ,IAGVm2D,EAAKn2D,IACL,qBAAKnY,UAAWw8C,EAAE,YAAa,CAAC8xB,EAAKn2D,GAAQ,cAAgB,KAAMrW,QAAS,kBAxFrF,SAACqW,GAChB,IAAI61C,EACJ,GAAGtgC,EAASK,OAAQ,CAChB,IAAMA,EAAUL,EAASK,OAA6B5V,GACtD61C,EAASjgC,GAAmB,GAEhC,IAAMlV,EAAUkV,EAAOzvB,KAAI,WAA2B,IAA1B8Q,EAAyB,uDAAb,GAAI+I,EAAS,uCACjD,GAAa,OAAV/I,QAA4B9E,IAAV8E,GAAuBA,EAAMA,QAAU4+C,EAAO5+C,MAK9D,OAAOA,EAJR2e,EAAO5V,GAAS,KAEhBm2D,EAAKn2D,GAAO,MAIpBo2D,EAAQ,YAAID,IACZX,EAAU,YAAI90D,IACX0zD,GAASA,EAAS,YAAIx+C,IAwE+E6gD,CAAWz2D,MAK7Fm2D,EAAKn2D,IAAUu2D,EAASv2D,GAExBm2D,EAAKn2D,IAAUs2D,EAASt2D,KAjBrBA,QAyBrB,qBAAKnY,UAAWw8C,EAAE,QAAlB,SAEQ9uB,EAASE,SAAWF,EAASE,QAAQtvB,KAAK,SAAC0vD,EAAO71C,GAAR,OAEtC,sBACIrW,QAAS,SAAC2pC,GAAD,OAnDlB,SAACA,EAAYuiB,EAAa71C,GAErC,GADAszB,EAAM5nC,mBACHyqE,EAAKnL,QAAQnV,EAAO5+C,QAAU,GAAjC,CAEA,IAAMX,EAAOu/C,EACP6gB,EAAaP,EAAKnL,QAAQ,IAChCp1C,EAAO8gD,GAAcpgE,EACrBk/D,EAAU,YAAI5/C,IACdugD,EAAKO,GAAY9gD,EAAO8gD,GAAYz/D,MACpCm/D,EAAQ,YAAID,IAET/B,GAASA,EAAS,YAAIx+C,KAwCe+gD,CAAOrjC,EAAOuiB,IAElChuD,UAAWw8C,EAAE,YAAc,CAAEmyB,EAAW3gB,GAAU,aAAe,KAHrE,UAKI,cAAC,EAAD,CACIluD,KAAK,QACLD,KAAMmuD,EAAOztD,OAAS,GACtBP,UAAU,QACVE,YAAY,EACZE,SAAS,WAGb,sBAAMJ,UAAU,QAAhB,SACKuN,EAAEygD,EAAO9pD,WAX8D8pD,EAAO5+C,gBC7IhG2/D,GArBiB,SAAC,GAGzB,IAFJrhD,EAEG,EAFHA,SACA6+C,EACG,EADHA,SAGQh/D,EAAON,EAAe8N,YAAYX,IAAlC7M,EAQR,OACI,0BACI6B,MAAOse,EAASK,OAChB/tB,UAAU,OAAOwvD,YAAajiD,EAAEmgB,EAAS8hC,YAAc9hC,EAAS8hC,YAAc,IAAKrI,SAPnE,SAAC1b,GAClB8gC,GAAUA,EAAS9gC,EAAM+C,OAAOp/B,WC8C5B4/D,GApDwB,SAAC,GAGhC,IAFJthD,EAEG,EAFHA,SACA6+C,EACG,EADHA,SACG,EAEYtqE,EAAO,gBAFnB,mBAEIe,EAFJ,KAEOw5C,EAFP,KAGK71C,EAAgBH,IAAhBG,YACA4G,EAAON,EAAe8N,YAAYX,IAAlC7M,EAWF0hE,EAAiB,SAAC92D,GACpB,OAAQuV,EAASK,OAAoB5V,IAGzC,OACI,qBAAKnY,UAAWgD,IAAhB,SAEQ0qB,EAASM,SAAWN,EAASM,QAAQ1vB,KAAK,SAAC8oD,EAAQjvC,GAAT,OACtC,sBAAKnY,UAAWw8C,EAAE,cAAlB,UACI,uBAAOx8C,UAAWw8C,EAAE,gBAApB,SACKjvC,EAAE65C,EAAOljD,SAGd,cAAC,GAAD,CACIkL,MAAO6/D,EAAe92D,GACtBwH,IAAKynC,EAAOznC,IACZC,IAAKwnC,EAAOxnC,IACZqO,SAAUm5B,EAAOn5B,SACjBk5B,SAAU,SAAC14C,GAAD,OAxBX,SAACA,EAAW0J,GAC/B,IAAMk1D,EAAa1mE,EAAY+mB,EAASK,QACxCs/C,EAAWl1D,GAAS1J,EACjB89D,GAAUA,EAASc,GAqBkB6B,CAAezgE,EAAM0J,IACzC40D,WAAW,MAXmB50D,SC2D3Cg3D,GA3EiC,SAAC,GAEzC,IADJzhD,EACG,EADHA,SACG,EAEYzrB,EAAO,0BAFnB,mBAEIe,EAFJ,KAEOw5C,EAFP,KAGGhG,EAAWC,cACTlpC,EAAON,EAAe8N,YAAYX,IAAlC7M,EACF4uB,EAA0BphB,YAAYqW,IALzC,EASCrW,YAAYqW,IAFZ3C,EAPD,EAOCA,aACAC,EARD,EAQCA,aAGI3Z,EADSgG,YAAYX,GACrBrF,WAGR/T,qBAAU,WACNw1C,EAASzgB,GAAUuhB,QAAQ1gB,qBAAqBuF,MACjD,CAACA,IAGJ,IAAMhM,EAAiB,SAACpC,GACpB,IAAM1Z,EAAWoa,EACXf,EAAWgB,EACjB8nB,EAASvnB,GAAkBqoB,QAAQnnB,eAAe,CAACpC,SAAQ1Z,WAAUqZ,cACrE8oB,EAASvnB,GAAkBqoB,QAAQhnB,cAAa,KA8BpD,OACI,sBAAKtwB,UAAWgD,IAAhB,UACI,oBAAIhD,UAAWw8C,EAAGznC,IAAepV,EAAesgB,IAAM,eAAgB,WAAa,EAAS,OAARyN,QAAQ,IAARA,OAAA,EAAAA,EAAUS,aAAc,mBAAqB,KAAjI,SACK5gB,EAAC,OAACmgB,QAAD,IAACA,OAAD,EAACA,EAAUA,YAMjB,uBAAO1tB,UAAWw8C,EAAEznC,IAAepV,EAAesgB,IAAM,oBAAqB,iBAA7E,SAAgG1S,EAAC,OAACmgB,QAAD,IAACA,OAAD,EAACA,EAAUC,QApChG,SAACkC,GACjB,OAAQA,EAAE/vB,MACN,IAAK,cACD,OAAO,cAAC,GAAD,CAAY4tB,SAAUmC,EAAG08C,SAAU,SAACvtC,GAAD,OAAS7O,EAAe6O,MACtE,IAAK,aACD,OAAO,cAAC,GAAD,CAAWtR,SAAUmC,EAAG08C,SAAU,SAACvtC,GAAD,OAAS7O,EAAe6O,MACrE,IAAK,kBACD,OAAO,cAAC,GAAD,CAAetR,SAAUmC,EAAG08C,SAAU,SAACvtC,GAAD,OAAS7O,EAAe6O,MACzE,IAAK,oBACD,OAAO,cAAC,GAAD,CAAiBtR,SAAUmC,EAAG08C,SAAU,SAACvtC,GAAD,OAAS7O,EAAe6O,MAC3E,IAAK,eACD,OAAO,cAAC,GAAD,CAAatR,SAAUmC,EAAG08C,SAAU,SAACvtC,GAAD,OAAS7O,EAAe6O,MACvE,IAAK,uBACD,OAAO,cAAC,GAAD,CAAmBtR,SAAUmC,EAAG08C,SAAU,SAACvtC,GAAD,OAAS7O,EAAe6O,MAC7E,IAAK,mBACD,OAAO,cAAC,GAAD,CAAgBtR,SAAUmC,EAAG08C,SAAU,SAACvtC,GAAD,OAAS7O,EAAe6O,MAC1E,IAAK,OACD,OAAO,cAAC,GAAD,CAAMtR,SAAUmC,EAAG08C,SAAU,SAACvtC,GAAD,OAAS7O,EAAe6O,MAChE,IAAK,OACD,OAAO,cAAC,GAAD,CAAMtR,SAAUmC,EAAG08C,SAAU,SAACvtC,GAAD,OAAS7O,EAAe6O,MAChE,IAAK,iBACD,OAAO,cAAC,GAAD,CAAwBtR,SAAUmC,EAAG08C,SAAU,SAACvtC,GAAD,OAAS7O,EAAe6O,MAClF,QACI,OAAO,MAmBTowC,CAAY1hD,OCfX2hD,GAhEgC,SAAC,GASxC,IARJ7vD,EAQG,EARHA,OACA8vD,EAOG,EAPHA,YACAC,EAMG,EANHA,YACAC,EAKG,EALHA,gBACAC,EAIG,EAJHA,kBACAC,EAGG,EAHHA,2BACAC,EAEG,EAFHA,YACAC,EACG,EADHA,WACG,EAEY3tE,EAAO,yBAFnB,mBAEIe,EAFJ,KAEOw5C,EAFP,KAOGqzB,EAAoB,SAAC13D,GACvB,IAAMhW,EAAY,GASlB,OARGgW,IAAUq3D,GAAiBrtE,EAAUmB,KAAK,YAEzC6U,EAAQq3D,GACNE,GAA8Bv3D,IAAUq3D,GAC1CG,EAAYp1D,SAASpC,KACvBhW,EAAUmB,KAAK,QACdkc,GAAQrd,EAAUmB,KAAK,QAEnBnB,GAUL01D,EAAW,SAACiY,GACd,GAAW,SAARA,EAKAR,GACHM,EAAW,YANX,CACI,GAAGL,EAAY,OACfK,EAAW,UAOnB,OACI,sBAAK5vE,UAAWgD,IAAhB,UACI,sBAAKhD,UAAWw8C,EAAE,UAAlB,UACI,cAAC,EAAD,CAAMx8C,UAAWw8C,EAAE,QAAQ,CAAC,OAAQ8yB,EAAc,WAAa,KAAMzvE,KAAK,qBAAqBI,MAAO,kBAAM43D,EAAS,WAErH,cAAC,EAAD,CACI73D,UAAWw8C,EAAE,QAAQ,CAAC,QAAS+yB,EAAc,WAAa,KAC1D1vE,KAAK,qBACLI,MAAO,kBAAM43D,EAAS,cAG9B,qBAAK73D,UAAWw8C,EAAE,YAAlB,SA3BG,IAAIn6C,MAAMotE,GAAmBtmE,KAAK,IAAI7K,KAAK,SAACyxE,EAAG53D,GAAJ,OAC9C,qBAAiBnY,UAAWw8C,EAAE,eAAgBqzB,EAAkB13D,KAAtDA,YCyIP63D,GAtKsC,WAAO,MAEzC/tE,EAAO,gCAFkC,mBAEjDe,EAFiD,KAE9Cw5C,EAF8C,OAUpDzhC,YAAYqW,IANZ3D,EAJoD,EAIpDA,UACAgB,EALoD,EAKpDA,aACAC,EANoD,EAMpDA,aACAC,EAPoD,EAOpDA,eACAC,EARoD,EAQpDA,eACAI,EAToD,EASpDA,UAEEwnB,EAAWC,cACTrgB,EAAgBrb,YAAYkc,IAA5Bb,YACA7oB,EAAON,EAAe8N,YAAYX,IAAlC7M,EACF0iE,EAAsB,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAdpC,EAehC3vE,mBAAc,MAfkB,mBAejDmS,EAfiD,KAe3Cw9C,EAf2C,OAgBpB3vD,oBAAS,GAhBW,mBAgBjD4vE,EAhBiD,KAgBrCC,EAhBqC,OAiBF7vE,mBAAmB,IAjBjB,mBAiBjD8vE,EAjBiD,KAiB5BC,EAjB4B,KAqBxDrvE,qBAAU,WACFguB,GACAid,YAAW,kBAAMkkC,GAAc,KAAO,IACtCA,GAAc,GAEd35B,EAASvnB,GAAkBqoB,QAAQhnB,cAAa,KAEhD2/B,EAAQ,MAGZkgB,GAAc,KACf,CAACnhD,IAEJhuB,qBAAU,WACFkvE,GACAjkC,YAAW,WACPgkB,EAAQ,WACT,OAER,CAACigB,IAEJlvE,qBAAU,WACNmvE,GAAc,KACf,CAAC19D,IAEJzR,qBAAU,WACN,IAAMsvE,EAAwB,GACJ7iD,EAAU5V,QAAQ,SAAA0oC,GAAC,OAAIA,EAAErhD,KAAOyvB,EAAezvB,MAAI,GAAGuuB,UAC9D5J,SAAS,SAACnM,EAAEtO,GACvBsO,EAAEmW,YAAWyiD,EAAYhtE,KAAK8F,MAErCinE,EAAuBC,KACxB,CAAC7iD,EAAWgB,EAAcC,EAAcC,IAK3C,IAcMQ,EAAe,YANS,WAC1B,IAAIohD,EAA+B9iD,EAAU,GAAGA,UAAUpiB,OAAO,EAEjE,OAAOqjB,IAAiB6hD,GAAiD,IAAjB9hD,GAIpD+hD,IAAkD,UAAZ,OAAXp6C,QAAW,IAAXA,OAAA,EAAAA,EAAahnB,QACxConC,EAASvnB,GAAkBqoB,QAAQlzB,WAAW4C,GAAqBgjD,qBAEvExzB,EAASvnB,GAAkBqoB,QAAQnoB,gBAjB5B1B,EAAUpiB,SAAYojB,EAAe,GAIrCE,EAAelB,UAAUpiB,SAAYqjB,EAAe,GAgBvD8nB,EAASvnB,GAAkBqoB,QAAQlzB,WAAW4C,GAAqB+iD,WAGvEvzB,EAASvnB,GAAkBqoB,QAAQhnB,cAAa,IAChD2/B,EAAQ,OAWNwgB,EAAgB,SAAC50D,GACnB,GAA2B,yBAAxB+S,EAAe9uB,KAAiC,CAC/C,IAAMivB,EAAUH,EAAeb,OAC/B,OAAGgB,EAAQ1jB,OAAS,GACb0jB,EAAQ6Q,QAAO,SAACp1B,EAAEmE,GACrB,OAAIA,EACGnE,EAAI,EADEA,IAEf,GAAK,EAIX,QAAGylE,EAAoB11D,SAASqU,EAAe1vB,KAAoB,WAAb2c,KAInDxZ,MAAMC,QAAQssB,EAAeb,QAAgBa,EAAeb,OAAO1iB,OAAS,EAC3C,kBAA1BujB,EAAeb,OAA4Ba,EAAeb,OAAS,GACtEa,EAAeb,SAGpB2iD,EAAqB,WAEvB,OADenjC,OAAO3e,EAAe9uB,MAAM+O,oBAAoBs0D,QAAQ,SAAW,GAItF,OACI,sBAAKnjE,UAAWgD,EAAG0tE,IAAuB,OAAS,IAAnD,UAOI,cAAC,GAAD,CAAsBhjD,SAAUkB,IAEhC,sBAAK5uB,UAAWw8C,EAAE,UAAlB,UACI,cAAC,GAAD,CACI18C,KAAM4wE,IAAuB,YAAc,UAC3C7yB,UAAU,EACV96C,SAAU0tE,EAAc,UACxBxwE,MAAOkvB,EACP9f,KAAK,cACLuuC,KAAMrwC,EAAE,yBACR6wC,OAA+B,UAAZ,OAAXhoB,QAAW,IAAXA,OAAA,EAAAA,EAAahnB,SAGzB,qBAAKpP,UAAS,iBAAYkwE,EAAa,QAAU,MAEjD,sBAAKlwE,UAAS,gBAAWyS,GAAzB,UACI,cAAC,EAAD,CAAMzS,UAAU,OAAOH,KAAK,UAC5B,kCACK0N,EAAE,wBADP,aAOR,cAAC,GAAD,CACIiS,OAAQkxD,IACRf,YAAaS,EACbb,YAAakB,EAAc,YAC3BnB,YAA8B,IAAjB5gD,EACbkhD,WAtEe,SAACE,GACb,SAARA,EAIH3gD,IAHIqnB,EAASvnB,GAAkBqoB,QAAQtnB,qBAqE/B0/C,4BAA6Be,EAAc,YAC3ChB,kBAAmB9gD,EAAelB,UAAUpiB,OAC5CmkE,gBAAiB9gD,QCvJlBiiD,GAjBsC,WAAO,MAE5C1uE,EAAO,+BAAZe,EAFiD,oBAOxD,OACI,sBAAKhD,UAAWgD,IAAhB,UAEI,cAAC,GAAD,IACA,cAAC,GAAD,QC2KG4tE,GAvK0C,WAAO,MAE7C3uE,EAAO,oCAFsC,mBAErDe,EAFqD,KAElDw5C,EAFkD,KAGtDhG,EAAWC,cACXta,EAA0BphB,YAAYqW,IACtC43C,EAA0BjuD,YAAY0P,IACrCxU,EAAkB8E,YAAYX,GAA9BnE,eACD7J,EAAO,OAAG6J,QAAH,IAAGA,OAAH,EAAGA,EAAgB4/B,KAAKzpC,QAC7B2W,EAAyBhI,YAAY+K,IAArC/C,qBACFpf,EAAUC,cACV+yC,EAAKnL,KACH1hC,EAA0BtD,IAA1BsD,sBACAyD,EAAON,EAAe8N,YAAYX,IAAlC7M,EAGRvM,qBAAU,WAIN,OAFA6oE,IAEO,WACHgH,OAEL,IAGH,IAAMA,EAAsC,WACxC,GAAI10C,EAAwBjL,4BAA5B,CACA,IAAMhnB,EAAWJ,EAAsB,IAAIK,KAAKgyB,EAAwBjL,6BAA8B,IAAI/mB,MAC1GwsC,EAAGlL,MAAM,CACLp3B,SAAU,gBACViB,OAAQ,eACRq2B,YAAa,oCACbznC,MAAOgG,IAEXssC,EAASvnB,GAAkBqoB,QAAQpmB,iCAA4B5mB,MAuB7Du/D,EAAuB,WAEzB,IAAMC,EAAQ5tC,GAAqBC,GAAyB,EAAMpZ,EAAsB3W,GAGxFoqC,EAASzgB,GAAUuhB,QAAQ1gB,qBAAqBuF,IAGhD,IAAMoJ,EAAI,2BACHyjC,GADG,IAEN1hD,mBAAoB,CAChBhB,MAAOwjD,EAAMxjD,MACbS,MAAO+iD,EAAM/iD,OAEjBQ,yBAA0B,CACtBjB,MAAOwjD,EAAMxjD,MACbS,MAAO+iD,EAAM/iD,SAIrBxlB,QAAQC,IAAI,sBAAuB+jC,GAEnCiR,EAASzgB,GAAUuhB,QAAQzgB,kBAAkB0O,IAC7CiR,EAASvnB,GAAkBqoB,QAAQrmB,gBAAgB64C,EAAM/6C,UACzDynB,EAASzuB,GAAsBuvB,QAAQjvB,iCAAiCyhD,IACxEtzB,EAASzuB,GAAsBuvB,QAAQhvB,uCAAuCwhD,IAC9EtzB,EAASzuB,GAAsBuvB,QAAQhtB,iBAAgB,IACvDksB,EAASzuB,GAAsBuvB,QAAQ/sB,gBAAe,IAEtDisB,EAASzgB,GAAUuhB,QAAQvgB,2BAA2B,CAClDzQ,MAAK,OAAEwjD,QAAF,IAAEA,OAAF,EAAEA,EAAOxjD,MACdS,MAAK,OAAE+iD,QAAF,IAAEA,OAAF,EAAEA,EAAO/iD,UAYtB,OACI,qBAAK/mB,UAAWgD,IAAhB,SAEI,sBAAKhD,UAAWw8C,EAAE,SAAlB,UACI,wBAEA,gCACI,sBAAKx8C,UAAU,QAAf,UACI,cAAC,EAAD,CACIA,UAAU,OACVH,KAAK,oBACLC,KAAK,QAET,cAAC,EAAD,CACIE,UAAU,OACVH,KAAK,eACLC,KAAK,WAIb,6BAAKyN,EAAE,mCAEP,sBAAKvN,UAAU,OAAf,UACI,cAAC,GAAD,CACIA,UAAU,MACV49C,KAAMrwC,EAAE,8BACR8B,KAAK,2BACLpP,MA7EJ,WAEhB4pE,IAEAlmE,EAAQL,KAAKU,EAAOO,oBAAoBT,OA0EpBhE,KAAK,cAGT,cAAC,EAAD,CAAYE,UAAU,SAASC,MA9FpC,WACXu2C,EAASvnB,GAAkBqoB,QAAQpnB,yBACnCsmB,EAASvnB,GAAkBqoB,QAAQlzB,WAAW4C,GAAqB49C,iBA4FnD,SACKr3D,EAAE,2CAIX,sBAAKvN,UAAU,YAAf,UACI,wBACA,sCACA,2BAGJ,sBAAKA,UAAU,UAAf,UACI,cAAC,GAAD,CACIA,UAAU,MACV49C,KAAMrwC,EAAE,oCACR8B,KAAK,2BACLpP,MAvDE,WACtBu2C,EAASvnB,GAAkBqoB,QAAQnmB,0BAAyB,IAAIhnB,MAAOC,gBAEvEosC,EAASvnB,GAAkBqoB,QAAQlzB,WAAW4C,GAAqB49C,iBAqD/C9kE,KAAK,cAGT,cAAC,GAAD,CACIE,UAAU,MACV49C,KAAMrwC,EAAE,4BACRzN,KAAK,SACLuP,KAAK,cACLpP,MAlHF,WAKlBu2C,EAASvnB,GAAkBqoB,QAAQlzB,WAAW4C,GAAqBujD,2BC5B5DuG,GA1ByB,WAAO,MAE/B7uE,EAAO,iBAAZe,EAFoC,oBAGnCwQ,EAASuH,YAAYqW,IAArB5d,KAgBR,OACI,qBAAKxT,UAAWgD,IAAhB,SAZgB,WAChB,OAAQwQ,GACJ,KAAKwT,GAAqBwH,MAAO,OAAO,cAAC,GAAD,IACxC,KAAKxH,GAAqB49C,cAAe,OAAO,cAAC,GAAD,IAChD,KAAK59C,GAAqBgjD,mBAAoB,OAAO,cAAC,GAAD,IACrD,KAAKhjD,GAAqB+iD,SAAU,OAAO,cAAC,GAAD,IAC3C,KAAK/iD,GAAqBujD,UAAW,OAAO,cAAC,GAAD,IAC5C,QAAS,OAAO,MAMXwG,O,S1FtCZ99B,K,kBAAAA,E,+BAAAA,Q,KAKUA,I2FGH+9B,G3FHG/9B,M4FwPAg+B,GAvOqC,WAAO,MAExChvE,EAAO,8BAFiC,mBAEhDe,EAFgD,KAE7Cw5C,EAF6C,OAOnDzhC,YAAY2Z,IAHZ7B,EAJmD,EAInDA,qBACAC,EALmD,EAKnDA,2BACAC,EANmD,EAMnDA,qBANmD,EAYnDhY,YAAYkc,IAHZV,EATmD,EASnDA,iBACAC,EAVmD,EAUnDA,uBACAJ,EAXmD,EAWnDA,YAEEogB,EAAWC,cACTlpC,EAAMN,EAAe8N,YAAYX,IAAjC7M,EAd+C,EAePjN,oBAAS,GAfF,mBAehD4wE,EAfgD,KAe9BC,EAf8B,OAgBjB7wE,oBAAS,GAhBQ,mBAgBhD8wE,EAhBgD,KAgBnCC,EAhBmC,KAmBvDrwE,qBAAU,WACNswE,MACD,IAGH,IAAMA,EAAuB,WACzB,IAAI19C,EAAU2C,GAAoB1D,EAC9BgB,EAAgB2C,GAA0B1D,EAExCy+C,EAAex+C,EAAqBE,OAAOC,OAC3Cs+C,EAAU3pE,OAAM,OAAC0pE,QAAD,IAACA,OAAD,EAACA,EAAcp+C,IAAMtrB,OAAM,OAAC0pE,QAAD,IAACA,OAAD,EAACA,EAAcn+C,IAChDm+C,EAAap+C,GACbo+C,EAAan+C,GAIzB,IAAc,OAAXgD,QAAW,IAAXA,OAAA,EAAAA,EAAahnB,SAAUkf,GAAgBuD,KAAK,CAC3C,IAAM4/C,EAA0B5pE,OAAO2pE,KAAa,GAChDx1D,GAAiByD,cACjBzD,GAAiB8D,OAEf4xD,EAA0B7pE,OAAO2pE,KAAa,GAChDr1D,GAAgBiE,cAAW9V,EAE/BspB,EAAU+9C,EAAe/9C,EAAU1X,GAAe0C,QAAS6yD,GAC3D79C,EAAU+9C,EAAe/9C,EAAS1X,GAAe6D,QAAS2xD,GAEtDn7C,IACA3C,EAAU+9C,EAAe/9C,EAAS1X,GAAeqE,QAAStE,GAAgBwE,SAI3E,CACH,IAAMgxD,EAA2B1+C,EAAqBE,OAAOM,SAE7DvX,GAAiBgD,YADjBhD,GAAiByD,cAGjBmU,EAAU+9C,EAAe/9C,EAAS1X,GAAe0C,QAAS6yD,GAIlEj7B,EAAS9iB,GAAkB4jB,QAAQ3jB,2BAA2B,CAC1DC,UACAC,oBAqBF89C,EAAiB,SACnB/9C,EACA/O,EACAzV,GAEA,IACMwiE,EADah+C,EAAQ/b,QAAQ,SAAAH,GAAC,OAAIA,EAAE6Z,QAAU1M,KAAQ,GACxB+I,QAAQ/V,QAAQ,SAAAH,GAAC,OAAIA,EAAEtI,QAAUA,KAAO,GAO5E,OANAwkB,EAAUA,EAAQt1B,KAAK,SAAAoZ,GACnB,OAAGA,EAAE6Z,QAAU1M,EACJ,2BAAKnN,GAAZ,IAAetI,MAAOwiE,IAEnBl6D,MASTm6D,EAAsB,SACxBx/C,EACAd,EACAy8B,GAEE,IADF8jB,IACC,yDACKC,EAAgB1/C,IAAc4gB,GAA0B++B,QAC9Dn/C,EAAuBC,EAEjBlP,EAAiCmuD,EAAazzE,KAAK,SAAA6wC,GACrD,GAAIA,EAAE5d,QAAUA,EAAMA,MAAO,CAAC,IAAD,EAMzB,GALkB,YAAfA,EAAMA,OAAuC,iBAAjBy8B,EAAO5+C,QAE7BiiE,GADDH,IACiBE,GAClBF,GAAiBC,GAAoB,IAE1B,YAAf5/C,EAAMA,OAAuC,iBAAjBy8B,EAAO5+C,MAElC+hE,GADmBD,GAGvB,IAAMe,GAAe,UAAA1gD,EAAMniB,aAAN,eAAaA,SAAU4+C,EAAO5+C,QAAUmiB,EAAMC,UAAasgD,EAChF,OAAO,2BAAK3iC,GAAZ,IAAe//B,MAAQ6iE,EAAuB,KAATjkB,IAIzC,OAAO7e,KAIXqH,EAAS9iB,GAAkB4jB,QAAQxjB,oBAAoB,CACnDrlB,KAAMmV,EACNyO,gBAIF6/C,EAAqB,SAAC3gD,EAA2Bc,GAEnD,OAAOd,EAAM3D,QAAQtvB,KAAK,SAAC0vD,GAAa,IAAD,IAEnC,GAAIA,EAAOv8B,gBACNu8B,EAAOv8B,cAAclX,SAArB,OAA8B6b,QAA9B,IAA8BA,OAA9B,EAA8BA,EAAahnB,OAC5C,OAAO,KAEX,GAAmB,YAAhBmiB,EAAMA,MACT,CACI,IAAI4gD,EAC+B,IAAnC,GAAoB,iBAAjBnkB,EAAO5+C,MACN+iE,EACA,qBACInyE,UAAS,kCAAiC,OAALuxB,QAAK,IAALA,GAAA,UAAAA,EAAOniB,aAAP,eAAcA,SAAU4+C,EAAO5+C,MAAQ,WAAa,IACzFtN,QAAS,kBAAM+vE,EAAoBx/C,EAAWd,EAAOy8B,IAFzD,UAKKzgD,EAAEygD,EAAO9pD,OACV,cAAC,GAAD,CAAU45D,SAAc,OAALvsC,QAAK,IAALA,GAAA,UAAAA,EAAOniB,aAAP,eAAcA,SAAU4+C,EAAO5+C,UAH7C4+C,EAAO5+C,YAQhB+iE,EACA,qBACInyE,UAAS,iCAA4BkxE,EAAmB,WAAa,IACrEpvE,QAAS,kBAAM+vE,EAAoBx/C,EAAWd,EAAOy8B,IAFzD,UAKKzgD,EAAEygD,EAAO9pD,OACV,cAAC,GAAD,CAAU45D,QAAUoT,MAHfljB,EAAO5+C,OAMpB,OAAO+iE,EAGX,MAAoB,YAAjBnkB,EAAO9pD,OAAuB8pD,EAAOokB,OAAc,KAE/C,qBACKpyE,UAAS,kCAAiC,OAALuxB,QAAK,IAALA,GAAA,UAAAA,EAAOniB,aAAP,eAAcA,SAAU4+C,EAAO5+C,MAAQ,WAAa,IACzFtN,QAAS,kBAAM+vE,EAAoBx/C,EAAWd,EAAOy8B,IAF1D,UAKMzgD,EAAEygD,EAAO9pD,OACV,cAAC,GAAD,CAAU45D,SAAc,OAALvsC,QAAK,IAALA,GAAA,UAAAA,EAAOniB,aAAP,eAAcA,SAAU4+C,EAAO5+C,UAH7C4+C,EAAO5+C,WAS1BijE,EAAe,SAACC,EAA8B3O,GAChD,OAAO2O,EAAOh0E,KAAI,SAACizB,GAAD,OACd,eAAC,WAAD,WACMA,EAAMrtB,OAAS,uBAAOlE,UAAWw8C,EAAE,cAApB,SAAoCjvC,EAAEgkB,EAAMrtB,SAC7D,oBAAIlE,UAAU,OAAd,SACKkyE,EAAmB3gD,EAAOoyC,OAHpBpyC,EAAMA,WAU7B,OACI,sBAAKvxB,UAAWgD,IAAhB,UAEI,cAAC,GAAD,CACI/C,MA1GC,WACTu2C,EAAS9iB,GAAkB4jB,QAAQlzB,WAAWqO,GAAqBE,gBA0G3DirB,KAAMrwC,EAAE,mBACR8B,KAAK,yBACL2uC,aAAa,OACbl+C,KAAK,cAIT,sBAAKE,UAAWw8C,EAAE,UAAlB,UAEI,qBAAKx8C,UAAWw8C,EAAE,WAAlB,SACI,gCAAQjvC,EAAE,qCAEb8kE,EAAax/C,EAAsBogB,GAA0B++B,SAE9D,qBAAKhyE,UAAWw8C,EAAE,WAAlB,SACI,gCAAQjvC,EAAE,kCAEb8kE,EAAav/C,EAA4BmgB,GAA0Bs/B,sBCrK9EC,GAA6B,CAC/B9sC,SAAU,CACNxS,OAAQ,CACJu/C,UAAW,IACX9yD,KAAM,GACNC,IAAK,GACLggD,WAAY,CACRpuC,UAAU,EACVkhD,cAAc,IAGtBr/C,SAAU,CACNo/C,UAAW,IACX9yD,KAAM,EACNC,IAAK,EACLggD,WAAY,CACRpuC,UAAU,EACVkhD,cAAc,IAGtBp/C,KAAM,CACFm/C,UAAW,EACX9yD,IAAK,EACLC,IAAK,IACL+yD,OAAQ,OACR/S,WAAY,CACRpuC,UAAU,EACVkhD,cAAc,IAGtBn/C,SAAU,CACNk/C,UAAW,IACX9yD,IAAK,GACLC,IAAK,EACLggD,WAAY,CACRpuC,UAAU,EACVkhD,cAAc,KAI1BE,IAAK,CACD1/C,OAAQ,CACJu/C,UAAW,EACX9yD,KAAM,GACNC,IAAK,GACLggD,WAAY,CACRpuC,UAAU,EACVkhD,cAAc,IAGtBr/C,SAAU,CACNo/C,UAAW,EACX9yD,KAAM,EACNC,IAAK,EACLggD,WAAY,CACRpuC,UAAU,EACVkhD,cAAc,IAGtBp/C,KAAM,CACFm/C,UAAW,EACX9yD,IAAK,EACLC,IAAK,IACL+yD,OAAQ,OACR/S,WAAY,CACRpuC,UAAU,EACVkhD,cAAc,IAGtBn/C,SAAU,CACNk/C,UAAW,IACX9yD,IAAK,GACLC,IAAK,EACLggD,WAAY,CACRpuC,UAAU,EACVkhD,cAAc,MAQxBG,GAAoB,CACtB,CACI3uE,MAAO,yBACPrE,KAAM,SACNyyE,OAAQ,CACJ,CACIlyE,SAAU,KACV8D,MAAO,gBAEX,CACI9D,SAAU,KACV8D,MAAO,iBAInB,CACIA,MAAO,4BACPrE,KAAM,WACNyyE,OAAQ,CACJ,CACIlyE,SAAU,KACV8D,MAAO,gBAEX,CACI9D,SAAU,KACV8D,MAAO,iBAInB,CACIA,MAAO,wBACPrE,KAAM,OACNyyE,OAAQ,CACJ,CACIlyE,SAAU,KACV8D,MAAO,gBAEX,CACI9D,SAAU,KACV8D,MAAO,iBAInB,CACIA,MAAO,4BACPrE,KAAM,WACNyyE,OAAQ,CACJ,MAINQ,GAA4B,CAC9B,CACI5uE,MAAO,yBACPrE,KAAM,SACNyyE,OAAQ,CACJ,CACIlyE,SAAU,KACV8D,MAAO,gBAEX,CACI9D,SAAU,KACV8D,MAAO,iBAInB,CACIA,MAAO,4BACPrE,KAAM,WACNyyE,OAAQ,CACJ,MAaGS,GAtPY,CACvBrtC,SAAU,CACNxS,OAAQ,CACJu/C,UAAW,IACX9yD,KAAM,GACNC,IAAK,GACLggD,WAAY,CACRpuC,UAAU,EACVkhD,cAAc,IAGtBr/C,SAAU,CACNo/C,UAAW,IACX9yD,KAAM,EACNC,IAAK,EACLggD,WAAY,CACRpuC,UAAU,EACVkhD,cAAc,IAGtBp/C,KAAM,CACFm/C,UAAW,EACX9yD,IAAK,EACLC,IAAK,IACL+yD,OAAQ,OACR/S,WAAY,CACRpuC,UAAU,EACVkhD,cAAc,IAGtBn/C,SAAU,CACNk/C,UAAW,IACX9yD,IAAK,GACLC,IAAK,EACLggD,WAAY,CACRpuC,UAAU,EACVkhD,cAAc,KAI1BE,IAAK,CACD1/C,OAAQ,CACJu/C,UAAW,EACX9yD,KAAM,GACNC,IAAK,GACLggD,WAAY,CACRpuC,UAAU,EACVkhD,cAAc,IAGtBr/C,SAAU,CACNo/C,UAAW,EACX9yD,KAAM,EACNC,IAAK,EACLggD,WAAY,CACRpuC,UAAU,EACVkhD,cAAc,IAGtBp/C,KAAM,CACFm/C,UAAW,EACX9yD,IAAK,EACLC,IAAK,IACL+yD,OAAQ,OACR/S,WAAY,CACRpuC,UAAU,EACVkhD,cAAc,IAGtBn/C,SAAU,CACNk/C,UAAW,IACX9yD,IAAK,GACLC,IAAK,EACLggD,WAAY,CACRpuC,UAAU,EACVkhD,cAAc,MC4DfM,GApH8B,SAAC,GAStC,IARJ3+B,EAQG,EARHA,MACAurB,EAOG,EAPHA,WACA17D,EAMG,EANHA,MACAkL,EAKG,EALHA,MACA6jE,EAIG,EAJHA,MAIG,IAHHtT,gBAGG,SAFHxY,EAEG,EAFHA,SACAnpC,EACG,EADHA,OACG,EAEY/b,EAAO,sBAFnB,mBAEIe,EAFJ,KAEOw5C,EAFP,KAGGhG,EAAWC,cAEX8pB,EAAkB,SAAC90B,GACrB,IAAM+C,EAAS/C,EAAM+C,OAClB2Y,GAASA,EAAS3Y,EAAOp/B,QAe1B8jE,EAAa,WACf,GAAItT,EAAWvrB,OAAkC,IAAzB9G,OAAOn+B,GAAO/D,OAAtC,CACA,IAAI8nE,EAAa/jE,EAEd6jE,EAAMN,SAAQQ,EAAa5lC,OAAO4lC,GAAYjkE,QAAQ+jE,EAAMN,OAAQ,KAEvE,IAAIS,EAAkBC,EAAexrE,OAAOsrE,KAGzCC,GAAuC,IAApBA,KAAuBA,EAAkBvrE,OAAOurE,GAAiBxrE,QAAQ,IAG5FqrE,EAAMrT,WAAW8S,eAAaU,EAAkBE,EAAWF,IAG3DH,EAAMN,QAAUvjE,IAAOgkE,EAAkBA,EAAkB,IAAKH,EAAMN,QAEtES,IAAoBhkE,GACpB+3C,GAASA,EAASisB,KAGnBE,EAAa,SAAClkE,GAChB,IAAIA,GAA0B,IAAjBA,EAAM/D,OAAa,OAAO+D,EAEvC,IAAMmkE,EAAiBnkE,EAAMtE,OAAO,EAAE,GAEtC,MADiB,CAAC,IAAI,KAAKyP,SAASg5D,IACX,SAAVnkE,EAAwBA,EACjC,IAAN,OAAWA,IAGTikE,EAAiB,SAAC5kE,GACpB,GAAuB,IAApBwkE,EAAMR,UAAgB,OAAOhkE,EAGhC,IAAM+kE,GAAc/kE,GAAQ,GAAK,EAC3B0kE,EAAa7pE,KAAKs5B,IAAIn0B,GAAQ,GAChCglE,EAAeN,EAAa,EAC1BO,EAAapqE,KAAKinD,MAAM4iB,GACxBQ,EAAgBrqE,KAAKinD,MAAMkjB,EAAeR,EAAMR,WAAaQ,EAAMR,UAGzE,GAAIgB,EAAe,EAAG,CAClB,IAEIG,EAAiBF,EACLC,GAHQV,EAAMR,UAAY,EACvBgB,EAAeE,EAGW,EAAIV,EAAMR,WAIvD,OAFDmB,EAAaX,EAAMrT,WAAW8S,aAAemB,EAAQD,EAAYJ,GAAcI,EAIlF,OAAOnlE,GAGLolE,EAAU,SAACplE,EAAc+kE,GAC3B,MAAM,GAAN,OAAUA,EAAa,IAAM,KAA7B,OAAmC/kE,IAGvC,OACI,sBAAKzO,UAAWgD,EAAEgb,GAAlB,UAEM9Z,GACE,wBAAOlE,UAAWw8C,EAAE,SAApB,UACKt4C,EADL,IACamwC,EAAQ,IAAM,MAG/B,uBACIr0C,UAAWw8C,EAAE,SAAU18C,KAAK,OAAOsP,MAASA,GAA2B,MAAlBm+B,OAAOn+B,GAAuBA,EAAL,GAC9E0kE,OAjFU,WAClBt9B,EAASxhB,GAAmBsiB,QAAQ/hB,YAAY,iBAChD29C,KAgFQa,UAAW,SAACtoC,GAAD,OA7EE,SAACA,GAEV,UADA8B,OAAO9B,EAAMngC,KAAKuD,qBAE1BqkE,IA0E0Bc,CAAiBvoC,IACvC0b,SAAU,SAAC1b,GAAD,OAAW80B,EAAgB90B,IACrCk0B,SAAUA,IAEd,sBAAM3/D,UAAWw8C,EAAE,mBAAnB,gBAGKnI,IAAUsrB,GACX,sBAAM3/D,UAAWw8C,EAAE,SAAnB,SAA8BojB,EAAW9qD,cC6R1Cm/D,GAvY6B,SAAC,GAIrC,IAHJj2D,EAGG,EAHHA,OAGG,IAFH2hD,gBAEG,aADHpK,WACG,MADG,UACH,IAEYtzD,EAAO,qBAFnB,mBAEIe,EAFJ,KAEOw5C,EAFP,OAIkCzhC,YAAYkc,IAAzCxyB,EAJL,EAIKA,aAAa2xB,EAJlB,EAIkBA,YAJlB,EAKyCrb,YAAY2Z,IAAhD3B,EALL,EAKKA,qBAAsBS,EAL3B,EAK2BA,UACvB4V,EAAuBruB,YAAY+vB,IAAnC1B,oBANJ,EAOmC9oC,mBAAmB,IAPtD,mBAOI4zE,EAPJ,KAOiBC,EAPjB,KAQG39B,EAAWC,cACX29B,EAAiC,YAAR7e,EAAqBsd,GAAoBC,GAClEuB,EAA2B,YAAR9e,EAAqBwd,GAAqBP,GAC7D8B,EAAoBvzE,iBAAOszE,GAX9B,EAYmC/zE,oBAAS,GAZ5C,mBAYIi0E,EAZJ,KAYiBC,EAZjB,KAaG99B,EAAW37B,YAAYX,GACrBrF,EAAe2hC,EAAf3hC,WACAxH,EAAMN,EAAeypC,GAArBnpC,EACFknE,EAAqB,YAARlf,EACbmf,EAA4BD,EAAarrC,EAAoBnW,OAASF,EAAqBE,OAjB9F,EAkBiD3yB,mBAAco0E,GAlB/D,mBAkBIC,EAlBJ,KAkBwBC,EAlBxB,KAmBGvrC,EAAkBD,EAAoBC,gBAE5CroC,qBAAU,WAEHuzE,GAECE,GACAI,MAGL,CAAC9hD,EAAqBC,YAEzBhyB,qBAAU,WACHyzE,GAAcprC,IAAoBtG,GAA+BuG,OAChEsrC,EAAsB,CAClB1hD,OAAQ,CAAEC,GAAI,GAAIC,GAAI,IACtBG,SAAU,KAEd4gD,EAAe,OAEpB,CAAC9qC,IAEJroC,qBAAU,WACF+xB,EAAqBE,OAAOC,OAAOC,IAAOshD,IAC1ChwE,EAAawuB,QAAU2hD,EAAsBnwE,EAAawuB,QAC1D6hD,EAAgBrwE,EAAauuB,YAGjCiZ,YAAW,kBAAMuoC,GAAe,KAAQ,OACzC,IAEHxzE,qBAAU,WACN+zE,KAGA,IAAIniD,GAAsB,EAa1B,GAZAwhD,EAAuBvwD,SAAS,SAAAsrB,GAC5B,IAAM6lC,EAAM7lC,EAAEtvC,KACdsvC,EAAEmjC,OAAOzuD,SAAS,SAAC08B,GACH93B,GAASusD,EAAKz0B,EAAEngD,UAAU,GAC9Bi0C,QACJzhB,GAAsB,SAO9B6hD,EAOC,CAEDj+B,EAAS1M,GAAgBwN,QAAQnN,iBAAiB,CAC9C5W,SAASohD,EAAmBphD,SAC5BL,OAAOyhD,EAAmBzhD,UAJ7B,IAOMK,EAAoBohD,EAApBphD,SAAUL,EAAUyhD,EAAVzhD,OACA,KAAbK,GAAiC,KAAdL,EAAOE,IAA2B,KAAdF,EAAOC,IAC9CghD,EAAe,SAfnB39B,EAAS9iB,GAAkB4jB,QAAQnjB,kBAAkBvB,IACrD4jB,EAAS9iB,GAAkB4jB,QAAQjjB,yBAAyB,CACxDpB,OAAQ0hD,EACR3hD,UAAWD,EAAqBC,aAEpCiiD,MAcL,CAACN,IAGJ,IAAMM,EAAgB,WACfN,GAAsBA,EAAmBzhD,OAAOC,IAC/CqjB,EAAS9iB,GAAkB4jB,QAAQhjB,cAAc,CAC7CC,cAAe,SACfC,KAAMmgD,EAAmBzhD,OAAOC,GAAGa,OAAO,MAG/C2gD,GAAsBA,EAAmBthD,SAASF,IACjDqjB,EAAS9iB,GAAkB4jB,QAAQhjB,cAAc,CAC7CC,cAAe,WACfC,KAAMmgD,EAAmBthD,SAASF,GAAGa,OAAO,OAIlD6gD,EAAuC,WACzC,GAAG9hD,EAAqBC,YAAc3B,GAAc6jD,IAApD,CAEA,IAAMC,EAAW9B,EAAesB,EAAmBzhD,OAAOC,GAAIJ,EAAqBC,UAAW,UACxFoiD,EAAW/B,EAAesB,EAAmBzhD,OAAOE,GAAIL,EAAqBC,UAAW,UACxFqiD,EAAahC,EAAesB,EAAmBthD,SAASF,GAAIJ,EAAqBC,UAAW,YAC5FsiD,EAAajC,EAAesB,EAAmBthD,SAASD,GAAIL,EAAqBC,UAAW,YAElG4hD,GAAsB,SAAC/qB,GAAD,mBAAC,eAChBA,GADe,IAElB32B,OAAQ,CAAEC,GAAIgiD,EAAU/hD,GAAIgiD,GAC5B/hD,SAAU,CAAEF,GAAIkiD,EAAYjiD,GAAIkiD,UAKlCjC,EAAiB,SAAC5kE,EAAc8mE,EAA2BC,GAC7D,IAAIvC,EAAQqB,EAAkBrzE,QAAQs0E,GAAYC,GAClD,GAAuB,IAApBvC,EAAMR,YAAoBhkE,EAAK,OAAOA,EAGzC,IAAM+kE,GAAc/kE,GAAQ,GAAK,EAC3B0kE,EAAa7pE,KAAKs5B,IAAIn0B,GAAQ,GAChCglE,EAAeN,EAAa,EAC1BO,EAAapqE,KAAKinD,MAAM4iB,GACxBQ,EAAgBrqE,KAAKinD,MAAMkjB,EAAeR,EAAMR,WAAaQ,EAAMR,UAEzE,GAAIgB,EAAe,EAAG,CAClB,IAEIG,EAAiBF,EACLC,GAHQV,EAAMR,UAAY,EACvBgB,EAAeE,EAGW,EAAIV,EAAMR,WAIvD,OAFDmB,EAAaX,EAAMrT,WAAW8S,aAAemB,EAAQD,EAAYJ,GAAcI,EAIlF,OAAOnlE,GAELolE,EAAU,SAACplE,EAAc+kE,GAC3B,MAAM,GAAN,OAAUA,EAAa,IAAM,KAA7B,OAAmC/kE,IAOjCqmE,EAAkB,SAAC1lE,GACrBonC,EAAS9iB,GAAkB4jB,QAAQljB,yBAAyBhlB,KAgB1DqmE,GAAiB,SAAClkD,GACpB,IAAI2iD,EAAY35D,SAASgX,GAAO,CAC5B,IAAImkD,EAAc,sBACXxB,GADW,CAEd3iD,IAIDmkD,EAAen7D,SAAS,cAAgBm7D,EAAen7D,SAAS,SAAQm7D,EAAepyE,KAAK,QAC5FoyE,EAAen7D,SAAS,UAAYm7D,EAAen7D,SAAS,aAAYm7D,EAAepyE,KAAK,YAC/F6wE,EAAeuB,KAIjBC,GAAW,SAACJ,EAA2BC,GACzC,IAAIvC,EAAQqB,EAAkBrzE,QAAQs0E,GAAYC,GAC5CI,EAAgB,CAAC,WAAY,QACnC,GAAGA,EAAcr7D,SAASi7D,GAAW,CAEjC,IACMK,EAAeD,EADAJ,IAAcI,EAAc,GAAK,EAAI,IAEvDjB,EAAmBkB,GAAc1iD,IAAMwhD,EAAmBkB,GAAcziD,MACvE6/C,EAAK,2BACEA,GADF,IAEDrT,WAAW,2BACJqT,EAAMrT,YADH,IAENpuC,UAAU,OAMtB,IACMskD,EAAeF,EADAJ,IAAcI,EAAc,GAAK,EAAI,IAEvDjB,EAAmBmB,GAAc3iD,IAAMwhD,EAAmBmB,GAAc1iD,MACvE6/C,EAAK,2BACEA,GADF,IAEDrT,WAAW,2BACJqT,EAAMrT,YADH,IAENpuC,UAAU,OAK1B,OAAOyhD,GAGL8C,GAAa,SAAC3mE,GAChB,IAAMmkE,EAAiBhmC,OAAOn+B,GAAS,IAAI4kB,OAAO,GAClD,MAAO,CAAC,IAAI,KAAKzZ,SAASg5D,IAOxB9qD,GAAW,SAACusD,EAAagB,GAAkD,IAAlCC,EAAiC,wDACtExnE,EAAOggE,GAASuG,EAAKgB,GACrB/C,EAAQ0C,GAAS5iD,EAAqBC,UAAWgiD,GACnDhsE,EAAS,CAAEqrC,OAAO,EAAMv/B,QAAS,IACjCq+D,EAAa1kE,GAAQ,EAMzB,OAHGwkE,EAAMN,SAAOQ,EAAa5lC,OAAO4lC,GAAYjkE,QAAQ+jE,EAAMN,OAAQ,KAGlEuB,EAAY35D,SAASy6D,IAASiB,GAE/BhD,EAAMrT,WAAWpuC,WAAa/iB,GAAyB,MAAjB8+B,OAAO9+B,GAC5CzF,EAAS,CAAEqrC,OAAO,EAAOv/B,QAASvH,EAAE,6BAElC4lE,IAAeA,EAAaF,EAAMtzD,KAAOwzD,EAAaF,EAAMrzD,MAC9D0/C,MAAM6T,KAEHF,EAAMrT,WAAW8S,cAAgBqD,GAAW5C,MAE/CnqE,EAAS,CAAGqrC,OAAO,EAAOv/B,QAASvH,EAAE,mCAGlCvE,GAbwDA,GAgB7DylE,GAAW,SAACuG,EAAagB,GAC3B,IAAIzkD,EAAQojD,EAAmBK,GAE/B,OADGgB,IAAOzkD,EAAQA,EAAMykD,IACjBzkD,GAGL2kD,GAAa,SAAClB,EAAYxgD,GAC5B,IAAIjD,EAAQojD,EAAmBK,QACI1qE,IAA/BqqE,EAAmBK,GAAK5hD,SAAmD9oB,IAA/BqqE,EAAmBK,GAAK7hD,IAExEyhD,EAAsB,2BACXD,GADU,kBAEZK,EAAM,CACH7hD,GAAIqB,GAAMjD,EAAM4B,IAAM,IAAIgjD,UAAU,GACpC/iD,GAAIoB,GAAOjD,EAAM6B,IAAM,IAAI+iD,UAAU,QAM/C/zE,GAAW,WACb,OAAO4b,GAAU,IAKf+2D,GAA0B,WAC5B,GAAc,sBAAX/2D,EAAH,CACA,IAAMwT,KAAYmjD,EAAmBzhD,OAAOC,KAAMwhD,EAAmBzhD,OAAOE,IAC5EkhD,EAAkBrzE,QAAlB,2BACOqzE,EAAkBrzE,SADzB,IAEIykC,SAAS,2BACF4uC,EAAkBrzE,QAAQykC,UADzB,IAEJxS,OAAO,2BACAohD,EAAkBrzE,QAAQykC,SAASxS,QADpC,IAEF0sC,WAAY,CACRpuC,WACAkhD,cAAc,WAQ5B0D,GAAqB,SAACpB,EAAYgB,GACrC,IAAMvnE,EAAOggE,GAASuG,EAAKgB,GACrBK,EAAS5H,GAAS,SAAU,MAC5B6H,EAAS7H,GAAS,SAAU,MAClC,OAAGhmD,GAAS,SAAU,MAAM3T,UAAavH,EAAE,4BACvCkb,GAAS,SAAU,MAAM4rB,OAAU5lC,EAE9Bga,GAAS,SAAU,MAAM3T,UAAavH,EAAE,4BACvCkb,GAAS,SAAU,OAAO4rB,OAAU5lC,EAGzCga,GAAS,SAAU,MAAM4rB,OACzB5rB,GAAS,SAAU,MAAM4rB,OACzBgiC,GACAC,IACC7nE,EACM,CAAE4lC,OAAO,EAAOv/B,QAASvH,EAAE,4BAE/Bkb,GAASusD,EAAKgB,GATFvtD,GAAS,SAAU,MAH/BA,GAAS,SAAU,OAe9B,OACI,qBAAKzoB,UAAWgD,EAAE+R,GAAlB,SAqBMq/D,EAAuB91E,KAAK,SAAC02E,EAAK78D,GAEhC,MAAgB,aAAb68D,EAAIn1E,MAvHRu2B,GAAeA,EAAYhnB,QAAUkf,GAAgBuD,KAuHN,wBAAU,MAEjD,sBAAK7xB,UAAWw8C,EAAE,QAAS,CAACw4B,EAAIn1E,KAAMuC,OAAtC,UACK,sBAAKpC,UAAWw8C,EAAE,eAAgBp6C,MAAlB,WAAoC4yE,EAAIn1E,MAAxD,UACI,gCAAQ0N,EAAEynE,EAAI9wE,SACd,wBAGkB,WAAb8wE,EAAIn1E,MAAkC,aAAbm1E,EAAIn1E,QAAyB8/D,GACvD,sBAAK3/D,UAAWw8C,EAAE,oBAAlB,UACI,qBAAKx8C,UAAW,2BAA4C,MAAxBwzB,EAAUwhD,EAAIn1E,MAAgB,SAAW,IAA7D,4BAAyF01D,GACzGzzD,QAAS,kBAAIo0E,GAAWlB,EAAIn1E,KAAM,MADlC,eAEA,qBAAKG,UAAW,2BAA6C,MAAzBwzB,EAAUwhD,EAAIn1E,MAAiB,SAAU,IAA7D,4BAAyF01D,GACxGzzD,QAAS,kBAAIo0E,GAAWlB,EAAIn1E,KAAM,MADnC,qBAQE,qBAAVme,GACA,0BAIFg3D,EAAI1C,OAAOh0E,KAAI,SAAC03E,EAAa79D,GAAd,OACb,cAAC,GAAD,CAEIwnD,SAAUA,EACVtrB,MAAO2hC,EAAO3hC,MACdurB,WAAY6U,GAA2B,aAAbO,EAAIn1E,KAAsBu2E,GAAmBpB,EAAIn1E,KAAMm2E,EAAO51E,UAAYqoB,GAASusD,EAAIn1E,KAAMm2E,EAAO51E,UAC9H6yE,MAAO0C,GAAS5iD,EAAqBC,UAAWgiD,EAAIn1E,MACpDqE,MAAOqJ,EAAEyoE,EAAO9xE,OAChBkL,MAAOq/D,GAASuG,EAAIn1E,KAAMm2E,EAAO51E,UACjC+mD,SAAU,SAAApuC,GAAC,OA3NhB,SAACwY,EAAeniB,EAAehP,GACtD,IAAMwjB,EAAQ,2BACP+wD,GADO,kBAETpjD,EAAQnxB,EAAQ,2BACVu0E,EAAmBpjD,IADT,kBAEZnxB,EAAWgP,IACZA,IAERwlE,EAAsBhxD,GACtB6xD,GAAelkD,GACfilB,EAAS9iB,GAAkB4jB,QAAQ7iB,iBAAiB7Q,IAiNT2yD,CAAmBvB,EAAIn1E,KAAMkZ,EAAGi9D,EAAO51E,WACtD4d,OAAQA,GARH7F,QAzBuC68D,EAAIn1E,YCzVrE22E,GAjB4B,SAAC,GAEpC,IADJ9yE,EACG,EADHA,SACG,EAESzB,EAAO,qBAAZe,EAFJ,oBAQH,OACI,qBAAKhD,UAAWgD,IAAhB,SACKU,KCyCE+yE,GAlDW,WAEtB,IA0BMC,EAAiC,SAACx3D,EAA4B/G,GAChE,IACMw+D,EADUz3D,EAAY5gB,KAAK,SAAAoZ,GAAC,OAAIA,EAAES,SAChBynB,QAAO,SAASiqB,EAAM+sB,GAC1C,OAAQttE,KAAKs5B,IAAIg0C,EAAOz+D,GAAS7O,KAAKs5B,IAAIinB,EAAO1xC,GAASy+D,EAAO/sB,IAClE,GACH,OAAO3qC,EAAYrH,QAAQ,SAAAH,GAAC,OAAIA,EAAES,QAAUw+D,MAUhD,MAAO,CACHE,4BA1CgC,SAAC3jD,EAAkC+/C,GACnE,IAAIruE,EAAgB,EAcpB,OAbAquE,EAAMpvD,SAAS,SAACizD,GACZ,GAAGA,EAAK/pC,MAAM,CACV,IAAMgqC,EAAU7jD,EAAOC,GAAK,EAAI2jD,EAAK/pC,MAAMC,SAAW8pC,EAAK/pC,MAAME,SAC3D+pC,EAAU9jD,EAAOE,GAAK,EAAI0jD,EAAK/pC,MAAMC,SAAW8pC,EAAK/pC,MAAME,SAC3DgqC,EAAc/jD,EAAOC,IAAM4jD,EAAQp3D,KAAOuT,EAAOC,IAAM4jD,EAAQn3D,IAC/Ds3D,EAAchkD,EAAOE,IAAM4jD,EAAQr3D,KAAOuT,EAAOE,IAAM4jD,EAAQp3D,KAElEq3D,GAAeC,KAEdtyE,EAAgBkyE,EAAK1nE,MAAQxK,EAAgBkyE,EAAK1nE,MAAQxK,OAI/DA,GA4BPuyE,gCAzBoC,SAACj4D,EAA4B/G,GACjE,IAAIm3B,EAAcpwB,EAAYrH,QAAQ,SAAAH,GAAC,OAAIA,EAAES,QAAUA,KAIvD,OAH0B,IAAvBm3B,EAAYjkC,SACXikC,EAAconC,EAA+Bx3D,EAAa/G,IAEvDm3B,EAAY,IAqBnB8nC,kCAVsC,SAACl4D,EAA4BxM,GACnE,IAAM2kE,EAAW3kE,EACZmF,QAAQ,SAAAH,GAAC,OAAIA,EAAEnI,WACfjR,KAAK,SAAAoZ,GAAC,OAAIA,EAAEtI,SACjB,OAAO8P,EAAYrH,QAAQ,SAAAH,GAAC,OAAI2/D,EAAS98D,SAAS7C,EAAES,a,SC6Z7Cm/D,GAva6B,WAAO,MAEhCr1E,EAAO,qBAFyB,mBAExCe,EAFwC,KAErCw5C,EAFqC,KAGvCz5B,EAAyBhI,YAAY+K,IAArC/C,qBACAqT,EAAgBrb,YAAYkc,IAA5Bb,YACFsgB,EAAW37B,YAAYX,GACTnE,GAAmBygC,EAA/B3hC,WAA+B2hC,EAAnBzgC,gBACd7J,EAAO,OAAG6J,QAAH,IAAGA,OAAH,EAAGA,EAAgB4/B,KAAKzpC,QAC7BmB,EAAMN,EAAeypC,GAArBnpC,EARuC,EAgB3CwN,YAAY2Z,IALZlhB,EAX2C,EAW3CA,KACAof,EAZ2C,EAY3CA,oBACAG,EAb2C,EAa3CA,qBACAF,EAd2C,EAc3CA,qBACAC,EAf2C,EAe3CA,2BAEE0jB,EAAWC,cAjB8B,GAkB/B7yC,cAC8BtD,oBAAS,IAnBR,mBAmBxCi3E,EAnBwC,KAmBvBC,EAnBuB,KAoBzCC,EAAqB3qC,GACnB+pC,EAAgCJ,KAAhCI,4BAEJznC,EACAhC,KADAgC,qBAEEuH,EAAKnL,KACLtU,EAAOnc,YAAYkc,IACnBygD,EAAwB,CAC1B3yD,aAASza,EACTwa,WAAOxa,GAGLssC,EAAO7K,KACLzkB,EAAuBvM,YAAY0P,IAAnCnD,mBAGRtmB,qBAAU,WACFsmB,GAEJkvB,EAASzgB,GAAUuhB,QAAQvgB,2BAA2BzP,MACvD,CAACA,IAGJ,IAkCMqwD,EAAuB,WACzB,IAAM7/D,EAAU8/D,EAAyB17D,GAAe0C,SAClD+I,EAAUiwD,EAAyB17D,GAAe6D,UAAY,GAC9D7H,EAAU0/D,EAAyB17D,GAAeqE,UAAY,GAC9DsT,EAAgBgkD,KAAoC,GAEpDC,EAAY,sBACThgE,EAAU,CAACA,GAAW,IADb,YAET6P,EAAU,CAACA,GAAW,IAFb,YAGTzP,EAAU,CAACA,GAAW,IAHb,YAIT2b,EAAgB,CAACA,GAAiB,KACzCrxB,KAAK,KACPm0C,EAAGlL,MAAM,CACLp3B,SAAS,kBAAD,OAAoB0e,EAAqBC,WACjD1d,OAAQ,eACRpR,MAAM,2BAAD,OAA6B4zE,GAClCnsC,YAAa,4BAGfisC,EAA2B,SAAC/yD,GAC9B,OAAOgO,EACNhb,QAAQ,SAAAnZ,GAAC,OAAIA,EAAE6yB,QAAU1M,KACzBvmB,KAAK,SAAAI,GAAC,uBAAIA,EAAE0Q,aAAN,aAAI,EAASA,SAAO,IAGzByoE,EAAiC,WAAO,IAAD,EACzC,iBAAO/kD,EAA2B,GAAG1jB,aAArC,aAAO,EAAqCA,OAG1C2oE,EAA2B,WAAO,IAAD,EAC7BC,EAAsBJ,EAAyB17D,GAAe0C,SAC9Dq5D,EAAsBL,EAAyB17D,GAAe6D,SAC9Dm4D,EAAsBN,EAAyB17D,GAAeqE,SAE9D43D,EAAe/oC,EAAqB,CACtC5iC,SAAUuW,EACVqT,YAAa9H,GAAgBuD,KAC7BhN,OAAQ3I,GAAe0C,QACvBwK,KAAM3G,GAAayE,MACnB7S,SAAU2jE,IAEVI,EAAgB,eAAOV,GAEK,cAA7B,UAAAS,EAAapzD,eAAb,eAAsB7lB,MACrBk5E,EAAehpC,EAAqB,CAChC5iC,SAAUuW,EACVqT,YAAa9H,GAAgBuD,KAC7BhN,OAAQ3I,GAAe6D,QACvBqJ,KAAM3G,GAAayE,MACnB7S,SAAU4jE,GAAuB97D,GAAgBmE,YAAc03D,EAAsB77D,GAAgBmE,eAI7G,IAAI+3D,EAAgB,eAAOX,GAExBQ,IACCG,EAAejpC,EAAqB,CAChC5iC,SAAUuW,EACVqT,YAAa9H,GAAgBuD,KAC7BhN,OAAQ3I,GAAeqE,QACvB6I,KAAM3G,GAAayE,MACnB7S,SAAU2jE,KAIlBM,EAAwB,CACpBxgE,QAASqgE,EACTxwD,QAASywD,EACTlgE,QAASmgE,GACV51D,GAAayE,OAGhB,IAAMqxD,EAAoBV,IAEpBW,EAAeppC,EAAqB,CACtC5iC,SAAUuW,EACVqT,YAAa9H,GAAgBuD,KAC7BhN,OAAQ3I,GAAe0C,QACvBwK,KAAM3G,GAAakkB,QAGjB8xC,EAAerpC,EAAqB,CACtC5iC,SAAUuW,EACVqT,YAAa9H,GAAgBuD,KAC7BhN,OAAQ3I,GAAe6D,QACvBqJ,KAAM3G,GAAakkB,MACnBtU,UAAWkmD,IAGTG,EAAetpC,EAAqB,CACtC5iC,SAAUuW,EACVqT,YAAa9H,GAAgBuD,KAC7BhN,OAAQ3I,GAAeqE,QACvB6I,KAAM3G,GAAakkB,MACnBtU,UAAWkmD,IAGfD,EAAwB,CACpBxgE,QAAS0gE,EACT7wD,QAAS4wD,EAAoBE,EAAef,EAC5Cx/D,QAASqgE,EAAoBG,EAAehB,GAC7Cj1D,GAAakkB,QAGdgyC,EAAoB,WACtB,IAAMC,EAAkBhB,EAAyB17D,GAAe0C,SAC1D4I,EAAkBowD,EAAyB17D,GAAe6D,SAC5D84D,EAAkBjB,EAAyB17D,GAAeqE,SAC1Ds4D,GAAmBrxD,IAAoBrL,GAAgBgE,SACvD04D,EAAkB58D,GAAgBkE,QAEtC,IAAMiW,EAAc9H,GAAgBoD,MAG9BymD,EAAe/oC,EAAqB,CACtC5iC,SAAUuW,EACVqT,cACAvR,OAAQ3I,GAAe0C,QACvBwK,KAAM3G,GAAayE,MACnB7S,SAAUukE,EACVxsE,QAAQA,IAGNgsE,EAAehpC,EAAqB,CACtC5iC,SAAUuW,EACVqT,cACAvR,OAAQ3I,GAAe6D,QACvBqJ,KAAM3G,GAAayE,MACnB7S,SAAUmT,IAGR6wD,EAAejpC,EAAqB,CACtC5iC,SAAUuW,EACVqT,cACAvR,OAAQ3I,GAAeqE,QACvB6I,KAAM3G,GAAayE,MACnB7S,SAAUwkE,IAGdP,EAAwB,CACpBxgE,QAASqgE,EACTxwD,QAASywD,EACTlgE,QAASmgE,GACV51D,GAAayE,OAGhB,IAAMqxD,EAAoBV,IAEtBW,EAAeL,EAEd,CAAChmE,GAA2B8N,IAAK9N,GAA2B+N,SAAU3F,SAASg+D,KAEhFC,EAAeppC,EAAqB,CAChC5iC,SAAUuW,EACVqT,cACAvR,OAAQ3I,GAAe0C,QACvBwK,KAAM3G,GAAakkB,MACnBtyB,SAAUukE,EACVvmD,UAAWkmD,EACXnsE,QAAQA,KAGhB,IAAMqsE,EAAerpC,EAAqB,CACtC5iC,SAAUuW,EACVqT,cACAvR,OAAQ3I,GAAe6D,QACvBqJ,KAAM3G,GAAakkB,MACnBtU,UAAWkmD,IAGXG,EAAetpC,EAAqB,CACpC5iC,SAAUuW,EACVqT,cACAvR,OAAQ3I,GAAeqE,QACvB6I,KAAM3G,GAAakkB,MACnBtU,UAAWkmD,IAGXG,EAAa3zD,UACb2zD,EAAetpC,EAAqB,CAChC5iC,SAAUuW,EACVqT,cACAvR,OAAQ3I,GAAeqE,QACvB6I,KAAM3G,GAAakkB,MACnBtU,UAAWkmD,EACXpgE,MAAO,KAIfmgE,EAAwB,CACpBxgE,QAASygE,EAAoBC,EAAed,EAC5C/vD,QAAS4wD,EAAoBE,EAAef,EAC5Cx/D,QAASqgE,EAAoBG,EAAehB,GAC7Cj1D,GAAakkB,QAGd2xC,EAA0B,SAAC9rE,EAI9B4c,GAAwB,IAChBtR,EAA6BtL,EAA7BsL,QAAS6P,EAAoBnb,EAApBmb,QAASzP,EAAW1L,EAAX0L,QAEzBs+B,EAASzuB,GAAsBuvB,QAAQruB,cAAc,CACjDL,WAAY1M,GAAe0C,QAC3BmG,QAASjN,EAAQiN,QACjB2C,WAAY5P,EAAQ4P,WACpB0B,UAGJotB,EAASzuB,GAAsBuvB,QAAQruB,cAAc,CACjDL,WAAY1M,GAAe6D,QAC3BgF,QAAS4C,EAAQ5C,QACjBD,MAAO6C,EAAQ7C,MACfoE,QAAQ,EACRE,UAGJotB,EAASzuB,GAAsBuvB,QAAQruB,cAAc,CACjDL,WAAY1M,GAAeqE,QAC3BuE,MAAO5M,EAAQ4M,MACfC,QAAS7M,EAAQ6M,QACjBqE,WAsBF0vD,EAA6B,SAACh2E,GAChC0zC,EAASxhB,GAAmBsiB,QAAQriB,iBAAiB,CACjD3O,MAAOxjB,EACPikB,MAAOjkB,KAEX0zC,EAASzgB,GAAUuhB,QAAQxgB,kBAAkB,CACzCxQ,MAAOxjB,EACPikB,MAAOjkB,MAyBT0c,EAAS,WACX,OAAO4W,GAAeA,EAAYhnB,QAAUkf,GAAgBuD,MAgBhE,OAEI,qBAAK7xB,UAAWgD,IAAhB,SACI,eAAC,GAAD,WACI,sBAAKhD,UAAWw8C,EAAE,UAAlB,UACI,wBAAOx8C,UAAWw8C,EAAS,kBAAPhpC,EAAyB,cAAgB,SAA7D,UAZK,WACQ0jB,EAAjBzyB,aACR,MAAY,iBAAT+O,EAAgC,cAAC,EAAD,CAAM3T,KAAK,oBAC7B,kBAAT2T,EAAiC,cAAC,EAAD,CAAM3T,KAAK,iBAC7C,GAUWk5E,GAnBN,iBAATvlE,EAA+BjG,EAAE,gCACnB,kBAATiG,EAAiCjG,EAAE,+BACpC,MAoBMiS,KACG,cAAC,GAAD,CAAQnQ,KAAK,gBAAgBvP,KAAK,YAClC89C,KAAMrwC,EAAE,4BAA6B8wC,MAAI,OA7C5C,kBAAT7qC,EACO,mCACH,qBAAKzR,IAAKi3E,WAAWh3E,IAAI,GAAGhC,UAAWw8C,EAAE,kBAK1C,sBAAKx8C,UAAWw8C,EAAE,YAAa,EAAqB,OAApBzpB,QAAoB,IAApBA,OAAA,EAAAA,EAAsBC,aAAc3B,GAAcrc,SAAW,OAAO,KAApG,UACK,cAAC,EAAD,CAAMlV,KAAK,MAAMC,UAAU,MAAMF,KAAK,mBACtC,cAAC,EAAD,CAAMC,KAAK,QAAQD,KAAK,2BA6C5B,qBAAKG,UAAWw8C,EAAE,WAAlB,SAEI,cAAC,GAAD,CACIz5C,UAAW6vB,EACXgrB,KA9DmBrwC,EAAlB,iBAATiG,EAA6B,uBAA4B,+BA8DlBnE,KAAK,2BAA2BpP,MAhWtE,WACT,GAAY,kBAATuT,EAA0B,CACzBgjC,EAASxhB,GAAmBsiB,QAAQjiB,qCACpCmhB,EAASzgB,GAAUuhB,QAAQjhB,qBAAqBtD,IAEhD,IAAMG,EAAcH,EAAqBE,OAAOC,OAC1CpwB,EAAY+zE,EAA4B,CAC1C1jD,GAAID,EAAOC,GACXC,GAAIF,EAAOE,IACZqkD,GAiBH,OAfAqB,EAA2Bh2E,GACxB0c,IACCu4D,IAEAY,IAIJniC,EAASzgB,GAAUuhB,QAAQhhB,kBAAkB,CACzC1C,QAASf,EACTgB,cAAef,KAGnB6kD,SACA/gC,EAAKnzC,MAAMO,EAAOO,oBAAqB,KAG3CiyC,EAASzuB,GAAsBuvB,QAAQhtB,iBAAgB,IACvDksB,EAASzuB,GAAsBuvB,QAAQ/sB,gBAAe,IACtDisB,EAASzgB,GAAUuhB,QAAQjhB,qBAAqBtD,IAChDyjB,EAAS9iB,GAAkB4jB,QAAQlzB,WAAWqO,GAAqBwmD,oBAoU3D,cAAC,GAAD,CAAOxmE,KAAM8kE,EAAiBn0E,MAAM,UAAUC,OAAO,UAAUskD,QAAS,kBAAM6vB,GAAmB,IAAjG,SACI,sBAAKx3E,UAAWw8C,EAAE,gBAAlB,UACI,wCAEA,gCACI,cAAC,GAAD,CAEIv8C,MAAO,aACPoP,KAAK,SACLuuC,KAAK,UACL99C,KAAK,cACT,cAAC,GAAD,CACIG,MAAO,aACPoP,KAAK,gBACLuuC,KAAK,KACL99C,KAAK,4BCzZtBo5E,GA/ByB,WAAO,MAE5Bj3E,EAAO,gBAFqB,mBAEpCe,EAFoC,KAEjCw5C,EAFiC,KAGnChpC,EAASuH,YAAY2Z,IAArBlhB,KACFgjC,EAAWC,cAYjB,OATAz1C,qBAAU,WACN,OAAO,WACHw1C,EAAS9iB,GAAkB4jB,QAAQlzB,WAAWqO,GAAqBE,eACnE6jB,EAAS9iB,GAAkB4jB,QAAQ19B,gBAEzC,IAKE,sBAAK5Z,UAAWgD,IAAM,QAAtB,UAEI,cAAC,GAAD,IAEA,sBAAKhD,UAAWw8C,EAAE,QAAlB,UAEe,iBAAThpC,GAA2B,cAAC,GAAD,IAClB,kBAATA,GAA4B,cAAC,GAAD,WCd/B2lE,GArBuB,CAClC,CACIC,gBAAiB,0BACjBz3E,gBAAiB,iBACjBuC,MAAO,sCACP6P,YAAa,2BAEjB,CACIqlE,gBAAiB,4BACjBz3E,gBAAiB,iBACjBuC,MAAO,gCACP6P,YAAa,6BAEjB,CACIqlE,gBAAiB,6BACjBz3E,gBAAiB,iBACjBuC,MAAO,gCACP6P,YAAa,+BChBRslE,GAAiB,uCAAG,WAC/BvsE,EAAqBC,GADU,eAAAvC,EAAA,6DAGzB8uE,EAAWztE,EAAUgB,YAAYC,EAAYC,GAHpB,kBAKxBc,IAAMC,IAAIwrE,GAAUz6E,MAAK,SAACoP,GAAD,OAAwBA,EAAIQ,SAL7B,2CAAH,wDAgBjB8qE,GAAgB,uCAAG,WAC9Br6E,GAD8B,eAAAsL,EAAA,6DAGxB8uE,EAAWztE,EAAUmB,WAAW9N,GAHR,kBAKvB2O,IAAM2kD,OAAO8mB,GAAUz6E,MAAK,SAACoP,GAAD,OAAwBA,EAAIQ,SALjC,2CAAH,sDCiMd+qE,GAhM+B,SAAC,GAIxC,IAHL9lB,EAGI,EAHJA,UACA+lB,EAEI,EAFJA,YACAC,EACI,EADJA,aACI,EACWz3E,EAAO,sBADlB,mBACGe,EADH,KACMw5C,EADN,OAEkCl8C,mBAAS,IAF3C,mBAEGuM,EAFH,KAEgB8sE,EAFhB,KAGIpsE,EAAMN,EAAe8N,YAAYX,IAAjC7M,EAHJ,EAI8BjN,oBAAS,GAJvC,mBAIG2zD,EAJH,KAIcC,EAJd,KAWIj+C,EADS8E,YAAYX,GACrBnE,eACFugC,EAAWC,cAEjBz1C,qBAAU,WACR44E,MACC,IAEH,IAAMA,EAAe,uCAAG,wCAAApvE,EAAA,yDACtB0pD,GAAa,GADS,WAIhBj+C,IAAc,OAAIA,QAAJ,IAAIA,GAAJ,UAAIA,EAAgB4/B,YAApB,aAAI,EAAsBzpC,WAAxC,OAAmD6J,QAAnD,IAAmDA,GAAnD,UAAmDA,EAAgB4/B,YAAnE,aAAmD,EAAsB6mB,kBAJzD,wBAKZ3vD,EALY,OAKHkJ,QALG,IAKHA,GALG,UAKHA,EAAgB4/B,YALb,aAKH,EAAsB6mB,gBAC/B5vD,EANY,OAMEmJ,QANF,IAMEA,GANF,UAMEA,EAAgB4/B,YANlB,aAME,EAAsBzpC,QANxB,SAOKitE,GAAkBvsE,EAAYC,GAPnC,WAOZ3E,EAPY,QASJqG,KATI,uBAUV,IAAI1P,MAAM,gBAVA,QAalB46E,EAAevxE,EAASqG,MACxBylD,GAAa,GAdK,0DAkBpBA,GAAa,GAlBO,0DAAH,qDAsBf2lB,EAAwB,uCAAG,WAAO7sE,GAAP,SAAAxC,EAAA,+EAEN+uE,GAAiBvsE,EAAW8sE,KAFtB,OAGL,MAHK,OAGhB3xE,QAAgBuxE,IAHA,gDAK7BA,IAL6B,yDAAH,sDA4F9B,OAAQ,mCACN,cAAC,GAAD,CAAOjnE,KAAMihD,EAAW/L,QAAS8xB,EAAa/3E,MAhI7B,CACjB0B,MAAO,UACPC,OAAQ,UACRgsD,aAAc,QA6Hd,SACE,sBAAKrvD,UAAWgD,IAAhB,UAEE,sBAAKhD,UAAWw8C,EAAE,QAAlB,UACE,uBAAMx8C,UAAWw8C,EAAE,cAAnB,UACG3vC,EAAYxB,OADf,IACwBkC,EAAE,8BAG1B,qBACExL,IAAKm6C,WACLl6C,IAAI,GACJhC,UAAU,UACV8B,QAAS,kBAAM83E,UAKjB3lB,GAAa,qBAAKj0D,UAAWw8C,EAAE,UAAlB,SACX,cAAC,GAAD,CAAS55C,MAAM,WAInB,qBAAK5C,UAAWw8C,EAAE,SAAlB,SAEI3vC,EAAYvO,KAAI,SAACy7E,EAAgB3wE,GAAjB,OACd,sBAAKpJ,UAAWw8C,EAAE,aAAlB,UACE,qBAAKx8C,UAAWw8C,EAAE,gBAAlB,SACG,IAAIryC,KAAK4vE,EAAGplB,YAAYM,uBAE3B,qBAAKj1D,UAAWw8C,EAAE,gBAAlB,SACG,IAAIryC,KAAK4vE,EAAGplB,YAAYiI,uBAE3B,qBAAK58D,UAAWw8C,EAAE,gBAAlB,SACGu9B,EAAGC,SAAW,IAAMD,EAAGE,WAE1B,qBAAKj6E,UAAWw8C,EAAE,gBAAlB,SACE,cAAC,GAAD,CACEt9C,GAAG,wBACHe,MAAO,kBAtDE,SAACf,GAC1B,IAAM8N,EAAaH,EAAY8K,MAAK,qBAAGmiE,MAAkB56E,KACnDg7E,EAAcltE,EAtEG,SAAC+sE,GACxB,GAAIA,EA+DF,MA9DoB,CAClBlvD,IAAK,CAAC,CACJvb,MAAO,CAAEF,MAAO,GAChB5E,EAAG,CACD4E,MAAO2qE,EAAGI,KACVtlD,OAAO,GAETlmB,EAAG,CACDS,MAAO2qE,EAAGK,KACVvlD,OAAO,GAETgrB,EAAG,CACDzwC,MAAO2qE,EAAGM,IACVxlD,OAAO,KAGX/J,IAAK,CAAC,CACJ7J,KAAM,CACJ5d,OAAQ,CACN+L,MAAO2qE,EAAGO,KAAKr5D,KACf4T,OAAO,GAETgb,GAAI,CACFzgC,MAAO2qE,EAAGQ,IAAIt5D,KACd4T,OAAO,IAGXvT,MAAO,CACLje,OAAQ,CACN+L,MAAO2qE,EAAGO,KAAKh5D,MACfuT,OAAO,GAETgb,GAAI,CACFzgC,MAAO2qE,EAAGQ,IAAIj5D,MACduT,OAAO,MAIb9J,MAAO,CAAC,CACNyvD,iBAAkB,CAChBprE,MAAO2qE,EAAGU,MACV5lD,OAAO,GAET6lD,UAAW,CACTtrE,MAAO2qE,EAAGY,MACV9lD,OAAO,GAET+lD,eAAgB,CACdxrE,MAAM2qE,EAAGc,IACTC,SAAU,CACR75D,KAAK84D,EAAGgB,MAAM95D,KACdK,MAAMy4D,EAAGgB,MAAMz5D,OAEjBuT,OAAO,GAETmmD,gBAAiB,CACf5rE,MAAO,EACPylB,OAAO,MAWkBomD,CAAiBjuE,GAAc,GAE5C,KAAhBktE,IACF1jC,EAAStrB,GAAaosB,QAAQjsB,sBAAsB6uD,IACpD1jC,EAASzgB,GAAUuhB,QAAQjsB,sBAAsB6uD,IACjD1jC,EAAStrB,GAAaosB,QAAQ5rB,aAAY,IAEtC1e,GAAY6sE,EAAyB7sE,IA6CdkuE,CAAmBnB,EAAGD,MACnCl8B,KAAMrwC,EAAE,gCAduBnE,SAqBzCsB,UAAU2tC,QACZ,sBAAMr4C,UAAWw8C,EAAE,WAAnB,UACE,oBAAIx8C,UAAWw8C,EAAE,mBAAjB,8FADF,eChGO2+B,GAxFyB,SAAC,GAMjC,IALJj3E,EAKG,EALHA,MACA6P,EAIG,EAJHA,YAEArQ,GAEG,EAHHgnB,KAGG,EAFHhnB,UAEG,KADH03E,SAGen5E,EAAO,kBAFnB,mBAEOu6C,GAFP,WAGK7xB,EAAoB5P,YAAY4Q,IAAhChB,gBACAyL,EAAgBrb,YAAYkc,IAA5Bb,YAJL,EAKkD5vB,IAA7CyC,EALL,EAKKA,sBAAuBO,EAL5B,EAK4BA,kBACvBC,EAAUsR,YAAYX,GAAtB3Q,MACFivD,EAAS7oD,EACPtC,EAAMN,EAAe8N,YAAYX,IAAjC7M,EARL,EAUmDjN,oBAAS,GAV5D,mBAUI+6E,EAVJ,KAUyBC,EAVzB,KAkBGzgB,EAAS,WACX,IAAMD,EAAG,OAAGxkC,QAAH,IAAGA,OAAH,EAAGA,EAAahnB,MACzB,OAAOwrD,GAAY,IAcvB,OAEI,sBAAK56D,UAAWw8C,EAAE,OAAOqe,KAAWn5D,MAbrB,WACf,IAAI+H,GAAsB,UAAbA,EAAMvK,GAAe,MAAO,GACzC,IAAMs7D,EAAgBvxD,EAAsByvD,EAAOrtD,OAAS,GACtDovD,EAAc/B,EAAO8B,EAAc,IACzC,OAAOhxD,EAAkBixD,GASkBC,GAA3C,UACI,sBAAK16D,UAAWw8C,EAAE,QAAlB,UACI,+BACKjvC,EA9BW,CAAC,6BAA8B,yBA8BpBod,MAG3B,sBAAK3qB,UAAU,MAAf,UACI,sBAAMA,UAAU,SAIM,IAApB2qB,GACF,cAAC,GAAD,CACAkzB,UAAQ,EACRxuC,KAAK,SACLvP,KAAK,YACLG,MAAO,kBAAMq7E,GAAuB,YAO5C,uBAAOt7E,UAAWw8C,EAAE,SAApB,SACKt4C,IAGL,mBAAGlE,UAAWw8C,EAAE,cAAcqe,KAA9B,SACK9mD,IAIDsnE,GAAuB,cAAC,GAAD,CACnB3nB,WAAW,EACX+lB,YAAa,WAvCzB6B,GAAuB,IAwCX5B,aAAc,WAvD1B4B,GAAuB,MA4DlB53E,MClDE63E,GAvCkC,SAAC,GAI1C,IAHJ7wD,EAGG,EAHHA,KACA8wD,EAEG,EAFHA,MACAr0B,EACG,EADHA,SACG,EAEYllD,EAAO,2BAFnB,mBAEIe,EAFJ,KAEOw5C,EAFP,KAGKjvC,EAAMN,EAAe8N,YAAYX,IAAjC7M,EACFkuE,EAA0B,CAAC,+BAAgC,8BAA+B,+BAI1FC,EAAkB,SAACh9C,GACrB,OAAOA,IAAMhU,EAAO,SAAW,IAGnC,OACI,qBAAK1qB,UAAWgD,IAAhB,SAEQw4E,EAAMl9E,KAAK,SAACogC,EAAGvmB,GAAJ,OACP,sBAEInY,UAAWw8C,EAAE,OAAQ,CAACk/B,EAAiBvjE,KACvCrW,QAAS,kBAAMqlD,EAAUhvC,IAH7B,UAKI,uBAAOnY,UAAWw8C,EAAE,cAApB,SACKjvC,EAAEkuE,EAAwBtjE,MAE/B,6BACK5K,EAAEmxB,EAAE06C,qBARJjhE,SCedwjE,GAjDa,CACxB,CACIrwE,IAAK,IACLqU,IAAK,GACLC,IAAK,KAET,CACItU,IAAK,IACLqU,IAAK,GACLC,IAAK,KAET,CACItU,IAAK,IACLqU,IAAK,EACLC,IAAK,IAET,CACItU,IAAK,KACLqU,IAAK,GACLC,IAAK,IAET,CACItU,IAAK,SACLqU,IAAK,GACLC,IAAK,IAET,CACItU,IAAK,mBACLqU,IAAK,EACLC,IAAK,IAET,CACItU,IAAK,YACLqU,IAAK,EACLC,IAAK,IAET,CACItU,IAAK,iBACLqU,IAAK,EACLC,IAAK,IAET,CACItU,IAAK,kBACLqU,IAAK,GACLC,IAAK,GACLg8D,WAAU,IC3CLC,GAAmB,SAC5BvxC,EACAl7B,EACA9D,GAEA,IACMs0D,EADc+b,GAAoB9jE,QAAO,SAACzO,GAAY,OAAOA,EAAEkC,MAAQA,KAC9C,GAE/B,GAAGs0D,EACC,OACKxwD,GAASwwD,EAAWjgD,KAAOvQ,GAASwwD,EAAWhgD,KAAiB,KAAVxQ,GAC5C,MAAVA,GAAiBwwD,EAAWgc,UAGtB,CACHE,SAAS,EAET5iC,SAAS,sBAAD,OAAwB5O,EAAxB,iCAAuDs1B,EAAWjgD,IAAlE,cAA2EigD,EAAWhgD,MAG3F,CACHk8D,SAAS,EAET5iC,SAAS,sBAAD,OAAwB5O,EAAxB,iCAAuDs1B,EAAWjgD,IAAlE,cAA2EigD,EAAWhgD,OCoI/Fm8D,GAxI2B,SAAC,GAKnC,IAJJC,EAIG,EAJHA,OACAvtE,EAGG,EAHHA,KACA+Q,EAEG,EAFHA,OAIMy8D,EAAc,CAChB3sE,MAAO,CACHF,MAAO,EACPylB,OAAO,EACPqkB,SAAU,IAEd1uC,EAAE,CACE4E,MAAO,EACPylB,OAAO,EACPqkB,SAAU,IAEdvqC,EAAE,CACES,MAAO,EACPylB,OAAO,EACPqkB,SAAU,IAEd2G,EAAE,CACEzwC,MAAO,EACPylB,OAAO,EACPqkB,SAAU,KArBf,EAwBYj3C,EAAO,iBAxBnB,mBAwBIe,EAxBJ,KAwBOw5C,EAxBP,KAyBKjvC,EAAMN,EAAe8N,YAAYX,IAAjC7M,EAzBL,EA0B+BjN,mBAA8B27E,GA1B7D,mBA0BIC,EA1BJ,KA0BeC,EA1Bf,KA2BKv0D,EAAc7M,YAAY0P,IAA1B7C,UA3BL,EA4BuC7M,YAAY4Q,IAC9C1V,GA7BL,EA4BI0U,gBA5BJ,EA4BqBM,eACElQ,YAAYX,GAA9BnE,gBA7BL,GA8BU,OAAGA,QAAH,IAAGA,KAAgB4/B,KAAKzpC,QAEf0uD,GAAkB,CAAC,QAAjCwB,EAhCL,oBAmCHt7D,qBAAU,WACNm7E,EAAa1tE,GAAQwtE,KACtB,CAACxtE,IAGJ,IAIM2tE,EAAqB,SAACt9E,EAAQwM,GAChC,IAAI8D,EAAQtQ,EAAE0vC,OAAOp/B,MACfpG,EAAS6yE,GAAiB,EAAEzsE,EAAO9D,GACnC+wE,EAAc,IAAIC,OAAO,0CAClB,KAAVltE,GAAgBitE,EAAYxxE,KAAKuE,KAChC+sE,GAAa,SAACtyB,GACV,OAAO,2BACAA,GADP,kBAEKv+C,EAAM,CACH8D,MAAOA,EAAQvH,OAAOuH,GAAS,EAC/BylB,MAAK,OAAE7rB,QAAF,IAAEA,OAAF,EAAEA,EAAQ8yE,QACf5iC,SAAQ,OAAElwC,QAAF,IAAEA,OAAF,EAAEA,EAAQkwC,gBAuBtC,OACI,sBAAKl5C,UAAWgD,IAAhB,UAEI,sBAAKhD,UAAWw8C,EAAE,OAAQ,OAA1B,WAGS8f,GACG,qCACI,gCAAQ/uD,EAAE,wBAEV,sBAAKvN,UAAU,QAAQu8E,mBAAkB30D,EAAU1B,SAAnD,UACI,cAAC,GAAD,CAAWwpC,UAAU,SAASF,YAAY,kBAAkB1vD,KAAK,QAAQsP,MAAOm+B,OAAM,OAAC2uC,QAAD,IAACA,OAAD,EAACA,EAAW5sE,MAAMF,OAAQ+3C,SAAU,SAACpuC,GAAD,OAAOqjE,EAAmBrjE,EAAG,aAG7I,OAATmjE,QAAS,IAATA,OAAA,EAAAA,EAAW5sE,MAAMulB,QAAS,+BAAOtnB,EAAC,OAAC2uE,QAAD,IAACA,OAAD,EAACA,EAAW5sE,MAAM4pC,kBAMrE,gCAAQ3rC,EAAE,6BAEV,sBAAKvN,UAAU,eAAeu8E,mBAAkB,KAAhD,UACI,cAAC,GAAD,CAAW7sB,UAAU,SAASF,YAAY,IAAI1vD,KAAK,QAAQsP,MAAOm+B,OAAM,OAAC2uC,QAAD,IAACA,OAAD,EAACA,EAAW1xE,EAAE4E,OAAQ+3C,SAAU,SAACpuC,GAAD,OAAOqjE,EAAmBrjE,EAAG,SAC3H,OAATmjE,QAAS,IAATA,OAAA,EAAAA,EAAW1xE,EAAEqqB,QAAS,+BAAOtnB,EAAC,OAAC2uE,QAAD,IAACA,OAAD,EAACA,EAAW1xE,EAAE0uC,eAGjD,sBAAKl5C,UAAU,eAAeu8E,mBAAkB,KAAhD,UACI,cAAC,GAAD,CAAW7sB,UAAU,SAASF,YAAY,IAAI1vD,KAAK,QAAQsP,MAAOm+B,OAAM,OAAC2uC,QAAD,IAACA,OAAD,EAACA,EAAWvtE,EAAES,OAAQ+3C,SAAU,SAACpuC,GAAD,OAAOqjE,EAAmBrjE,EAAG,SAC3H,OAATmjE,QAAS,IAATA,OAAA,EAAAA,EAAWvtE,EAAEkmB,QAAS,+BAAOtnB,EAAC,OAAC2uE,QAAD,IAACA,OAAD,EAACA,EAAWvtE,EAAEuqC,eAGjD,gCAAQ3rC,EAAE,oBAEV,sBAAKvN,UAAU,IAAIu8E,mBAAkB,KAArC,UACI,cAAC,GAAD,CAAW7sB,UAAU,SAASF,YAAajiD,EAAE,gCAAiCzN,KAAK,QAAQsP,MAAOm+B,OAAM,OAAC2uC,QAAD,IAACA,OAAD,EAACA,EAAWr8B,EAAEzwC,OAAQ+3C,SAAU,SAACpuC,GAAD,OAAOqjE,EAAmBrjE,EAAG,SAC3J,OAATmjE,QAAS,IAATA,OAAA,EAAAA,EAAWr8B,EAAEhrB,QAAS,+BAAOtnB,EAAC,OAAC2uE,QAAD,IAACA,OAAD,EAACA,EAAWr8B,EAAE3G,kBAIrD,cAAC,GAAD,CACIl5C,UAAWw8C,EAAE,UACboB,KAAMrwC,EAAE,qBACR8B,KA/CLmQ,EAAc,qBACV,cAAC,GAAD,CAAa1f,KAAK,QAAQI,WAAW,SA+CpC6C,UA1DyB,IAA1Bm5E,EAAU5sE,MAAMulB,QACD,IAAtBqnD,EAAU1xE,EAAEqqB,QACU,IAAtBqnD,EAAUvtE,EAAEkmB,QACU,IAAtBqnD,EAAUr8B,EAAEhrB,OACU,IAAtBqnD,EAAU1xE,EAAE4E,OACU,IAAtB8sE,EAAUvtE,EAAES,OACU,IAAtB8sE,EAAUr8B,EAAEzwC,MAsDJnP,MApFU,WAClB+7E,EAAOE,UCyIAM,GAtL6B,SAAC,GAIrC,IAHJR,EAGG,EAHHA,OACAvtE,EAEG,EAFHA,KACA+Q,EACG,EADHA,OACG,EACuCzE,YAAY4Q,IAA/ChB,EADJ,EACIA,gBAAiBM,EADrB,EACqBA,eAGdgxD,EAAc,CACpBzB,iBAAkB,CACdprE,MAAO,EACPylB,OAAO,EACPqkB,SAAU,IAEdwhC,UAAW,CACPtrE,MAAO,EACPylB,OAAO,EACPqkB,SAAU,IAEd0hC,eAAgB,CACZxrE,MAAM,EACN0rE,SAAU,CACN75D,KAAK,EACLK,MAAM,GAEVuT,OAAO,EACPqkB,SAAU,IAEd8hC,gBAAiB,CACb5rE,MAAO,EACPylB,OAAO,EACPqkB,SAAU,KA3Bf,EAgCYj3C,EAAO,iBAhCnB,mBAgCIe,EAhCJ,KAgCOw5C,EAhCP,OAiC+Bl8C,mBAAgC27E,GAjC/D,mBAiCIC,EAjCJ,KAiCeC,EAjCf,KAkCK5uE,EAAON,EAAe8N,YAAYX,IAAlC7M,EAlCL,EAoCqBjN,mBAAS,GApC9B,mBAoCI2gB,EApCJ,KAoCUw7D,EApCV,OAqCuBn8E,mBAAS,GArChC,mBAqCIghB,EArCJ,KAqCWo7D,EArCX,KAsCG/lC,EAAKnL,KACuBhlC,IAA1BsD,sBACwBiR,YAAYqW,IAE5CpwB,qBAAU,WACNm7E,EAAa1tE,GAAQwtE,KACtB,CAACxtE,IAEJzN,qBAAU,WACiB,IAApB2pB,GAAyBM,IACxBwxD,EAAQP,EAAUtB,eAAeE,SAAS75D,MAC1Cy7D,EAASR,EAAUtB,eAAeE,SAASx5D,WAKnD,IAkBM86D,EAAqB,SAACt9E,EAAQwM,EAAaqxE,GAC7C,IAAMvtE,EAAQtQ,EAAE0vC,OAAOp/B,MACjBpG,EAAS6yE,GAAiB,EAAGzsE,EAAO9D,GACpC+wE,EAAc,IAAIC,OAAO,0CAClB,KAAVltE,GAAgBitE,EAAYxxE,KAAKuE,KAChC+sE,GAAa,SAACtyB,GACV,MAAW,mBAARv+C,GAA2C,SAAfqxE,EACpB,2BAAI9yB,GAAX,kBACCv+C,EAAK,CACF8D,MAAM,EACN0rE,SAAS,CACLx5D,MAAMA,EACNL,KAAM7R,GAAwB,SAAfutE,EAAuB90E,OAAOuH,GAAQ,GAEzDylB,MAAK,OAAE7rB,QAAF,IAAEA,OAAF,EAAEA,EAAQ8yE,QACf5iC,SAAQ,OAAElwC,QAAF,IAAEA,OAAF,EAAEA,EAAQkwC,YAGf,mBAAR5tC,GAA2C,UAAfqxE,EACpB,2BAAI9yB,GAAX,kBACCv+C,EAAK,CACF8D,MAAM,EACN0rE,SAAS,CACL75D,KAAKA,EACLK,MAAOlS,GAAwB,UAAfutE,EAAwB90E,OAAOuH,GAAQ,GAE3DylB,MAAK,OAAE7rB,QAAF,IAAEA,OAAF,EAAEA,EAAQ8yE,QACf5iC,SAAQ,OAAElwC,QAAF,IAAEA,OAAF,EAAEA,EAAQkwC,YAInB,2BACA2Q,GADP,kBAEKv+C,EAAM,CACH8D,MAAOA,EAAQvH,OAAOuH,GAAS,EAC/BylB,MAAK,OAAE7rB,QAAF,IAAEA,OAAF,EAAEA,EAAQ8yE,QACf5iC,SAAQ,OAAElwC,QAAF,IAAEA,OAAF,EAAEA,EAAQkwC,gBAatC,OACI,sBAAKl5C,UAAWgD,IAAhB,UACI,sBAAKhD,UAAWw8C,EAAE,OAAQ,SAA1B,UAEI,gCAAQjvC,EAAE,uCAEV,sBAAKvN,UAAU,mBAAmBu8E,mBAAkB,OAApD,UACI,cAAC,GAAD,CAAW7sB,UAAU,SAAS5vD,KAAK,QAAQsP,MAAOm+B,OAAM,OAAC2uC,QAAD,IAACA,OAAD,EAACA,EAAW1B,iBAAiBprE,OAAQ+3C,SAAU,SAACpuC,GAAD,OAAOqjE,EAAmBrjE,EAAG,mBAAmB,QAC7I,OAATmjE,QAAS,IAATA,OAAA,EAAAA,EAAW1B,iBAAiB3lD,QAAS,+BAAOtnB,EAAC,OAAC2uE,QAAD,IAACA,OAAD,EAACA,EAAW1B,iBAAiBthC,eAG/E,gCAAQ3rC,EAAE,gCAEV,sBAAKvN,UAAU,mBAAmBu8E,mBAAkB,OAApD,UACI,cAAC,GAAD,CAAW7sB,UAAU,SAAS5vD,KAAK,QAAQsP,MAAOm+B,OAAM,OAAC2uC,QAAD,IAACA,OAAD,EAACA,EAAWxB,UAAUtrE,OAAQ+3C,SAAU,SAACpuC,GAAD,OAAOqjE,EAAmBrjE,EAAG,YAAY,QAC/H,OAATmjE,QAAS,IAATA,OAAA,EAAAA,EAAWxB,UAAU7lD,QAAS,+BAAOtnB,EAAC,OAAC2uE,QAAD,IAACA,OAAD,EAACA,EAAWxB,UAAUxhC,eAGjE,gCAAQ3rC,EAAE,qCAEV,sBAAKvN,UAAU,yCAAyCu8E,mBAAkB,KAA1E,UAE0B,IAApB5xD,GAAyBM,EAC3B,sBAAKjrB,UAAU,sBAAf,UACA,wCACA,uBAAOF,KAAK,SAASE,UAAU,eAAeoP,MAAOm+B,OAAM,OAAC2uC,QAAD,IAACA,OAAD,EAACA,EAAWtB,eAAeE,SAAS75D,MAAOkmC,SAAU,SAACpuC,GAAD,OAAOqjE,EAAmBrjE,EAAG,iBAAiB,WAC9J,yCACA,uBAAOjZ,KAAK,SAASsP,MAAOm+B,OAAM,OAAC2uC,QAAD,IAACA,OAAD,EAACA,EAAWtB,eAAeE,SAASx5D,OAAQ6lC,SAAU,SAACpuC,GAAD,OAAOqjE,EAAmBrjE,EAAG,iBAAiB,eAGtI,8BACA,cAAC,GAAD,CAAW22C,UAAU,SAAS5vD,KAAK,QAAQsP,MAAOm+B,OAAM,OAAC2uC,QAAD,IAACA,OAAD,EAACA,EAAWtB,eAAexrE,OAAQ+3C,SAAU,SAACpuC,GAAD,OAAOqjE,EAAmBrjE,EAAG,iBAAiB,UAGzI,OAATmjE,QAAS,IAATA,OAAA,EAAAA,EAAWtB,eAAe/lD,QAAS,+BAAOtnB,EAAC,OAAC2uE,QAAD,IAACA,OAAD,EAACA,EAAWtB,eAAe1hC,eAG3E,gCAAQ3rC,EAAE,sCAEV,sBAAKvN,UAAU,eAAeu8E,mBAAkB,KAAhD,UACI,cAAC,GAAD,CAAW7sB,UAAU,SAAS5vD,KAAK,QAAQsP,MAAOm+B,OAAM,OAAC2uC,QAAD,IAACA,OAAD,EAACA,EAAWlB,gBAAgB5rE,OAAQ+3C,SAAU,SAACpuC,GAAD,OAAOqjE,EAAmBrjE,EAAG,kBAAkB,QAC3I,OAATmjE,QAAS,IAATA,OAAA,EAAAA,EAAWlB,gBAAgBnmD,QAAS,+BAAOtnB,EAAC,OAAC2uE,QAAD,IAACA,OAAD,EAACA,EAAWlB,gBAAgB9hC,kBAKjF,cAAC,GAAD,CACI0E,KAAMrwC,EAAE,+BACR8B,KApDLmQ,EAAc,qBACV,cAAC,GAAD,CAAa1f,KAAK,QAAQI,WAAW,SAoDpCF,UAAWw8C,EAAE,UACbv8C,MA9GU,WAClB+7E,EAAOE,GAEPvlC,EAAGlL,MAAM,CACLp3B,SAAU,cACViB,OAAQ,4BACRq2B,YAAa,2BAyGT5oC,UArHoC,IAArCm5E,EAAU1B,iBAAiB3lD,QACJ,IAA9BqnD,EAAUxB,UAAU7lD,QACe,IAAnCqnD,EAAUtB,eAAe/lD,QACW,IAApCqnD,EAAUlB,gBAAgBnmD,YCoEnB+nD,GAtI2B,SAAC,GAKnC,IAJJZ,EAIG,EAJHA,OACAvtE,EAGG,EAHHA,KACA+Q,EAEG,EAFHA,OAIMy8D,EAAc,CAChBh7D,KAAM,CACF5d,OAAQ,CACJ+L,MAAO,EACPylB,OAAO,EACPqkB,SAAU,IAEdrJ,GAAI,CACAzgC,MAAO,EACPylB,OAAO,EACPqkB,SAAU,KAGlB53B,MAAO,CACHje,OAAQ,CACJ+L,MAAO,EACPylB,OAAO,EACPqkB,SAAU,IAEdrJ,GAAI,CACAzgC,MAAO,EACPylB,OAAO,EACPqkB,SAAU,MAxBnB,EA4BYj3C,EAAO,iBA5BnB,mBA4BIe,EA5BJ,KA4BOw5C,EA5BP,KA6BKjvC,EAAMN,EAAe8N,YAAYX,IAAjC7M,EA7BL,EA8B+BjN,mBAA8B27E,GA9B7D,mBA8BIC,EA9BJ,KA8BeC,EA9Bf,KAiCHn7E,qBAAU,WACNm7E,EAAa1tE,GAAQwtE,KACtB,CAACxtE,IAGJ,IAIM2tE,EAAqB,SAACt9E,EAAQsB,EAA4BkL,GAC5D,IAAM8D,EAAQtQ,EAAE0vC,OAAOp/B,MACjBpG,EAAS6yE,GAAiB,EAAGzsE,EAAO9D,GACpC+wE,EAAc,IAAIC,OAAO,0CAClB,KAAVltE,GAAgBitE,EAAYxxE,KAAKuE,KAChC+sE,GAAa,SAACtyB,GACV,OAAO,2BACAA,GADP,kBAEKzpD,EAFL,2BAGWypD,EAAKzpD,IAHhB,kBAISkL,EAAM,CACH8D,MAAOA,EAAQvH,OAAOuH,GAAS,EAC/BylB,MAAK,OAAE7rB,QAAF,IAAEA,OAAF,EAAEA,EAAQ8yE,QACf5iC,SAAQ,OAAElwC,QAAF,IAAEA,OAAF,EAAEA,EAAQkwC,kBA0B1C,OACI,sBAAKl5C,UAAWgD,IAAhB,UAEI,sBAAKhD,UAAWw8C,EAAE,OAAQ,OAA1B,UACI,gCAAQjvC,EAAE,2BACV,gCAAQA,EAAE,2BAEV,gCAAQA,EAAE,qBACV,gCAAQA,EAAE,qBAEV,sBAAKvN,UAAU,eAAeu8E,mBAAkB,KAAhD,UACI,cAAC,GAAD,CAAW7sB,UAAU,SAAS5vD,KAAK,QAAQsP,MAAOm+B,OAAM,OAAC2uC,QAAD,IAACA,OAAD,EAACA,EAAWj7D,KAAK4uB,GAAGzgC,OAAQ+3C,SAAU,SAACpuC,GAAD,OAAOqjE,EAAmBrjE,EAAG,OAAQ,UACzH,OAATmjE,QAAS,IAATA,OAAA,EAAAA,EAAWj7D,KAAK4uB,GAAGhb,QAAS,+BAAOtnB,EAAC,OAAC2uE,QAAD,IAACA,OAAD,EAACA,EAAWj7D,KAAK4uB,GAAGqJ,eAG7D,sBAAKl5C,UAAU,eAAeu8E,mBAAkB,KAAhD,UACI,cAAC,GAAD,CAAW7sB,UAAU,SAAS5vD,KAAK,QAAQsP,MAAOm+B,OAAM,OAAC2uC,QAAD,IAACA,OAAD,EAACA,EAAW56D,MAAMuuB,GAAGzgC,OAAQ+3C,SAAU,SAACpuC,GAAD,OAAOqjE,EAAmBrjE,EAAG,QAAS,UAC3H,OAATmjE,QAAS,IAATA,OAAA,EAAAA,EAAW56D,MAAMuuB,GAAGhb,QAAS,+BAAOtnB,EAAC,OAAC2uE,QAAD,IAACA,OAAD,EAACA,EAAW56D,MAAMuuB,GAAGqJ,eAG/D,gCAAQ3rC,EAAE,yBACV,gCAAQA,EAAE,yBAEV,sBAAKvN,UAAU,eAAeu8E,mBAAkB,KAAhD,UACI,cAAC,GAAD,CAAW7sB,UAAU,SAAS5vD,KAAK,QAAQsP,MAAOm+B,OAAM,OAAC2uC,QAAD,IAACA,OAAD,EAACA,EAAWj7D,KAAK5d,OAAO+L,OAAQ+3C,SAAU,SAACpuC,GAAD,OAAOqjE,EAAmBrjE,EAAG,OAAQ,cAC7H,OAATmjE,QAAS,IAATA,OAAA,EAAAA,EAAWj7D,KAAK5d,OAAOwxB,QAAS,+BAAOtnB,EAAC,OAAC2uE,QAAD,IAACA,OAAD,EAACA,EAAWj7D,KAAK5d,OAAO61C,eAGrE,sBAAKl5C,UAAU,eAAeu8E,mBAAkB,KAAhD,UACI,cAAC,GAAD,CAAW7sB,UAAU,SAAS5vD,KAAK,QAAQsP,MAAOm+B,OAAM,OAAC2uC,QAAD,IAACA,OAAD,EAACA,EAAW56D,MAAMje,OAAO+L,OAAQ+3C,SAAU,SAACpuC,GAAD,OAAOqjE,EAAmBrjE,EAAG,QAAS,cAC/H,OAATmjE,QAAS,IAATA,OAAA,EAAAA,EAAW56D,MAAMje,OAAOwxB,QAAS,+BAAOtnB,EAAC,OAAC2uE,QAAD,IAACA,OAAD,EAACA,EAAW56D,MAAMje,OAAO61C,kBAK3E,cAAC,GAAD,CACIl5C,UAAWw8C,EAAE,UACboB,KAAMrwC,EAAE,uBACR8B,KA1CLmQ,EAAc,qBACV,cAAC,GAAD,CAAa1f,KAAK,QAAQI,WAAW,SA0CpCD,MAlFU,WAClB+7E,EAAOE,IAkFCn5E,UAvD2B,IAA5Bm5E,EAAUj7D,KAAK4uB,GAAGhb,QACI,IAA7BqnD,EAAU56D,MAAMuuB,GAAGhb,QACa,IAAhCqnD,EAAUj7D,KAAK5d,OAAOwxB,QACW,IAAjCqnD,EAAU56D,MAAMje,OAAOwxB,OACK,IAA5BqnD,EAAUj7D,KAAK4uB,GAAGzgC,OACW,IAA7B8sE,EAAU56D,MAAMuuB,GAAGzgC,OACa,IAAhC8sE,EAAUj7D,KAAK5d,OAAO+L,OACW,IAAjC8sE,EAAU56D,MAAMje,OAAO+L,YCgNhBytE,GAlRK,WAChB,IAAM3vE,EAAM6N,YAAYX,GAClB0iE,EAAY/hE,YAAY0P,IACtBvW,EAAiB6G,YAAYX,GAA7BlG,aACAxP,EAAaqW,YAAYkc,IAAzBvyB,SACAqe,EAAyBhI,YAAY+K,IAArC/C,qBACAtW,EAAiBS,EAAjBT,aACAc,EAAMN,EAAeC,GAArBK,EAGFwvE,EAFgBhiE,YAAY0P,IAA1B7C,UAGFo1D,EAAuB/2D,GAEvBnY,EAAM,SAACiR,GACT,OAAOA,GACH,KAAK/C,GAAiBgD,YAAa,OAAOzR,EAAE,yBAC5C,KAAKyO,GAAiByD,cAAe,OAAOlS,EAAE,yBAC9C,KAAKyO,GAAiBuD,oBACtB,IAAK,OAAQ,OAAOhS,EAAE,yBACtB,QAAS,MAAO,KAIlB6b,EAAO,SAAC6zD,GAAsB,IACxB31D,EAAuBw1D,EAAvBx1D,mBACF41D,EAASD,EAAO,OAAG31D,QAAH,IAAGA,OAAH,EAAGA,EAAoBhB,MAAvB,OAA+BgB,QAA/B,IAA+BA,OAA/B,EAA+BA,EAAoBP,MACjExS,EAAyBL,EAAzBK,qBACF4oE,EAAe5oE,EAAqB,GAAG7E,mBACvC0tE,EAAe7oE,EAAqB,GAAG7E,mBACvC2tE,EAAOJ,EAAUE,EAAeC,EAEtC,GAAGF,EAAO,CACN,IAAM/kE,EAAQmlE,EAAWJ,GAAQ/kE,MAC3B3I,EAAW60B,EAAY44C,EAASn4C,EAASo4C,GAAUK,EAAiBplE,IACpE2O,KAAa5S,EAAaE,kBAAyC,IAArB0wB,EAASo4C,IAG7D,MAAO,CACH3tE,SAHY2tE,GAA6B,OAAnBA,EAAOplE,QAI7ByO,aAAczY,EAAIwvE,EAAWJ,GAAQn+D,YAErCyH,aAAcse,EAASo4C,GAAUK,EAAiBplE,GAAS3I,EAC3DiX,cAAeqe,EAASo4C,GAAUK,EAAiBplE,GAASqlE,EAAeP,GAAWztE,EAEtFF,MAAOw1B,EAASo4C,GAChB1tE,SAAUA,EACVE,mBAAoB2tE,EACpBz4E,cAAe24E,EAAiBplE,GAChCzT,SAAU84E,EAAeP,GAEzBv2D,aAAc+2D,EAAyBH,EAAWJ,GAAQplE,SAC1D6O,aAAc+2D,EAAeJ,EAAWJ,GAAQv1D,SAChDf,cAAe82D,EAAeJ,EAAWJ,GAAQjlE,UACjD4O,aAAc62D,EAAeJ,EAAWJ,GAAQhlE,SAEhD4O,WAAYA,GAGhB,OAAOm2D,EAAO,2BACPD,EAAK12D,OADE,IAEV/W,SAAS,IAFC,2BAIPytE,EAAKj2D,OAJE,IAKVxX,SAAS,KAKfguE,EAAmB,SAACI,GACtB,GAAGA,EAAS,CAAC,IACDrpE,EAAgDJ,EAAhDI,0BAA2BF,EAAqBF,EAArBE,iBAC7BmzB,EAAMjzB,EAA0BuD,QAAO,SAAC+lE,GAAY,OAAOA,EAAMxuE,QAAUuuE,GAAYC,EAAMruE,WAEnG,OAAO6E,EAAmB,EAAK/R,MAAMC,QAAQilC,IAAQA,EAAIl8B,OAAS,EAAIk8B,EAAI,GAAGj4B,MAAQ,EAErF,OAAO,GAKT+0B,EAAc,SAAC44C,EAAkBt1E,GAAmB,IAC9C4M,EAAyBL,EAAzBK,qBACF6qD,EAAkB7qD,EAAqB,GAAG5E,cAC1CkuE,EAAWtpE,EAAqB,GAAG9E,eACnCquE,EAAWvpE,EAAqB,GAAG9E,eACnC0tE,EAAe5oE,EAAqB,GAAG7E,mBACvC0tE,EAAe7oE,EAAqB,GAAG7E,mBAE7C,OAAOutE,EAAW7d,EAAkBye,EAAYl2E,GAAOw1E,EAAa,KAAY/d,EAAkB0e,EAAYn2E,GAAOy1E,EAAa,MAGhIt4C,EAAW,SAACo4C,GACd,IAAMplE,EAAU2lE,EAAyBH,EAAWJ,GAAQplE,SACtD6P,EAAU+1D,EAAeJ,EAAWJ,GAAQv1D,SAC5C1P,EAAWylE,EAAeJ,EAAWJ,GAAQjlE,UAC7CC,EAAUwlE,EAAeJ,EAAWJ,GAAQhlE,SAElD,OAAOhE,EAAaE,iBAAmB2pE,EAAgBb,GACvDplE,EAAU6P,EAAU1P,EAAWC,GAG7BolE,EAAa,SAACJ,GAChB,IAAMplE,KAAUolE,EAAOrmE,eAAe,YAAiC,OAAnBqmE,EAAOplE,cAAuCxN,IAAnB4yE,EAAOplE,UAAwBolE,EAAOplE,QAAQiN,QACvHi5D,KAAad,EAAOrmE,eAAe,YAAiC,OAAnBqmE,EAAOplE,cAAuCxN,IAAnB4yE,EAAOplE,UAAwBolE,EAAOplE,QAAQ4P,WAC1HC,KAAUu1D,EAAOrmE,eAAe,iBAAiCvM,IAAnB4yE,EAAOv1D,UAA0Bu1D,EAAOv1D,SAAW,IAAItc,OAAS,IAAI6xE,EAAOv1D,QAAQ,GAAG5C,QACpI9M,KAAWilE,EAAOrmE,eAAe,iBAAiCvM,IAAnB4yE,EAAOv1D,UAA0Bu1D,EAAOv1D,SAAW,IAAItc,OAAS,GAAK6xE,EAAOv1D,QAAQ,KAAKu1D,EAAOv1D,QAAQ,GAAG5C,QAC1J7M,KAAUglE,EAAOrmE,eAAe,YAAiC,OAAnBqmE,EAAOhlE,cAAuC5N,IAAnB4yE,EAAOhlE,UAAwBglE,EAAOhlE,QAAQ6M,QAE7H,MAAO,CACHjN,QAASkmE,EAAU,OAAGA,QAAH,IAAGA,OAAH,EAAGA,EAAY9+E,GAAK,GACvCg1C,YAAa8pC,EAAU,OAAGA,QAAH,IAAGA,OAAH,EAAGA,EAAYh/E,KAAO,GAC7C2oB,QAASA,EAAO,OAAGA,QAAH,IAAGA,OAAH,EAAGA,EAASzoB,GAAK,GACjC+Y,SAAUA,EAAWA,EAAS/Y,GAAK,GACnCgZ,QAASA,EAAUA,EAAQhZ,GAAK,GAChCiZ,MAAO6lE,EAAU,OAAGA,QAAH,IAAGA,OAAH,EAAGA,EAAY7lE,MAAQ,EACxC4G,WAAYjH,EAAUA,EAAQiH,WAAa,KAI7Cy+D,EAAiB,SAACP,GAAsB,IAClCpyD,EAAQnmB,EAARmmB,IAEFozD,EAAMpzD,EAAIxf,OAAS,EAAIwf,EAAI,GAAGvb,MAAMF,MAAQ,EAC5C8uE,EAAMrzD,EAAIxf,OAAS,EAAIwf,EAAI,GAAGvb,MAAMF,MAAQ,EAElD,OAAO6tE,EAAUgB,EAAMC,GAGrBR,EAAiB,SAACx+E,GACpB,OAAGA,EACQq+B,GAAyBr+B,EAAI6jB,GAAsBzT,MAGvD,GAGLmuE,EAA2B,SAACv+E,GAC9B,OAAGA,EACQk/B,GAAsCl/B,EAAI6jB,GAAsBzT,MAGpE,GAGLyuE,EAAkB,SAACb,GAErB,IAAM5tE,EAAQ6uE,EACV1xE,EACA6wE,EAAWJ,GAAQhpC,YACnBopC,EAAWJ,GAAQv1D,QACnB21D,EAAWJ,GAAQjlE,SACnBqlE,EAAWJ,GAAQhlE,QACnBolE,EAAWJ,GAAQ/kE,OAGvB,OAAOtQ,OAAOyH,IA4DZ6uE,EAAoB,SACtB1xE,EACA2xE,EACAC,EACAC,EACAx/E,EACAqZ,GASA,IAAMlK,EAAMxB,EAAaoL,QAAO,SAAC0mE,GAC7B,OAAOA,EAAGxmE,cAAgBqmE,GAC1BG,EAAGvmE,WAAaqmE,GAChBE,EAAGtmE,WAAaqmE,GAChBC,EAAGrmE,UAAYpZ,GACfy/E,EAAGpmE,QAAUA,KAMjB,OAAOlK,EAAI5C,OAAS,GAAKhJ,MAAMC,QAAQ2L,GAAOA,EAAI,GAAGqB,MAAQ,GAwBjE,MAAO,CACHkvE,aAlBiB,WAcjB,OATe,2BACRzB,GADQ,IAEX72D,SAAU62D,EAAW72D,SACrBC,aAAciD,GAAK,GAAM5C,aAAe4C,GAAK,GAAO5C,aACpDJ,cAAegD,GAAK,GAAM3C,cAAgB2C,GAAK,GAAO3C,cACtDH,MAAO8C,GAAK,GACZrC,MAAOqC,GAAK,MAQhBk0D,aACAl5C,qBAnFyB,SACzBW,EACAC,EACAC,EACAC,EACAC,EACAC,GASA,IAAMttB,EAAU2lE,EAAyB14C,GACnCpd,EAAU+1D,EAAex4C,GACzBjtB,EAAWylE,EAAev4C,GAC1BjtB,EAAUwlE,EAAet4C,GAE/B,OAAOlxB,EAAaE,iBA/CK,SACzB2wB,EACAG,EACAC,EACAC,EACAjtB,GAUA,IAAM7I,EAAQ6uE,EACV1xE,EACAs4B,GAA0B,GAC1BG,GAA0B,GAC1BC,GAA4B,GAC5BC,GAA0B,GAC1BjtB,GAAe,GAGnB,OAAOtQ,OAAOyH,GAuByBmvE,CACnCz5C,EACAE,EACAC,EACAC,EACAH,GAEJntB,EAAU6P,EAAU1P,EAAWC,EAAUqlE,EAAiBt4C,IAyD1DZ,cACAC,YA1BgB,WAChB,OAAOy4C,EAAW72D,YCzGXw4D,GA7I8B,WAAO,MAEjCz8E,EAAO,sBAF0B,mBAEzCe,EAFyC,KAEtCw5C,EAFsC,OAICzhC,YAAY4Q,IAAtDjB,EAJyC,EAIzCA,KAAMC,EAJmC,EAInCA,gBAAiBC,EAJkB,EAIlBA,gBACxB4wD,EAAyBrC,GALiB,EAMF74E,oBAAS,GANP,mBAMzCi3E,EANyC,KAMxBC,EANwB,OAOAl3E,oBAAS,GAPT,mBAOzCq+E,EAPyC,KAOvBC,EAPuB,KAQ1CpoC,EAAWC,cAR+B,EASd17B,YAAYkc,IAAtCb,EATwC,EASxCA,YAAa1xB,EAT2B,EAS3BA,SACb6I,EAAMN,EAAe8N,YAAYX,IAAjC7M,EACAixE,EAAiB3B,KAAjB2B,aACFxV,EAA0BjuD,YAAY0P,IAC3B1P,YAAYX,GACrBrF,WAGR/T,qBAAU,WACNw1C,EAASzgB,GAAUuhB,QAAQ7gB,iBAAiB7L,MAC9C,CAACA,IAEH5pB,qBAAU,WACN,IAAM4mB,EAAY42D,IAClBj9E,QAAQC,IAAI,qBAAsBomB,GAClC4uB,EAASzuB,GAAsBuvB,QAAQttB,aAAapC,IACpD4uB,EAASzgB,GAAUuhB,QAAQzgB,kBAAlB,2BACFmyC,GADE,IAELphD,UAAWA,QAEjB,CAACljB,IAGH,IAAMm6E,EAAa,WAEf,OAAOrD,EAAM9wD,GAAQ,IAGnBmwC,EAAS,WAEX,OADS,OAAGzkC,QAAH,IAAGA,OAAH,EAAGA,EAAahnB,SACXkf,GAAgBuD,MAG5BitD,EAAW,SACbxzE,EACAmD,GAQA,GALA+nC,EAAStrB,GAAaosB,QAAQlsB,gBAAgB,CAC1C9f,MACAmD,UAGDic,IAAU8wD,EAAMnwE,OAAS,EAGxB,OAFAmrC,EAAStrB,GAAaosB,QAAQ7rB,aAAad,EAAkB,SAC7Di0D,GAAoB,GAGxBlU,EAAQhgD,EAAO,GAAG,IA2BhBggD,EAAU,SAACqU,GAA2C,IAA1BC,IAAyB,yDACvD,IAAKp0D,EAAgBC,IAAIF,IAA6B,IAATD,GAA0B,IAAZq0D,GAAkBC,EACzED,EAAU,OAET,IAAKn0D,EAAgBE,IAAIH,IAA6B,IAATD,GAA0B,IAAZq0D,GAAkBC,EAC9ED,EAAU,OAET,GAAgB,IAAZA,GAAiBr0D,EAAO,EAAG,OAEpC8rB,EAAStrB,GAAaosB,QAAQnsB,WAAW4zD,KAGvCE,EAAY,WACd,OAAOr0D,EAAgBG,MAAM1f,OAAS,GAG1C,OACI,sBAAKrL,UAAWgD,IAAhB,UAII,cAAC,GAAD,CAAuB0nB,KAAMA,GAAQ,EAAGy8B,SAAU,SAACzoB,GAAD,OAAOgsC,EAAQhsC,IAAI88C,MAAOA,IAE5E,cAAC,GAAD,CAAcJ,SAAU,kBAAM5D,GAAmB,IAC7C9sD,KAAMA,EAAMxmB,MAAOqJ,EAAEsxE,IAAa36E,OAAQ6P,YAAaxG,EAAEsxE,IAAa9qE,aAD1E,SAhDkB,WACtB,OAAQ2W,GAGJ,KAAK,EAAG,OAAO,cAAC,GAAD,CAAgBlL,OAAQq7C,IAAUpsD,KAAMmc,EAAgBC,IAAIF,GAAkBqxD,OAAQ,SAACvtE,GAAD,OAAUqwE,EAAS,MAAOrwE,MAC/H,KAAK,EAAG,OAAO,cAAC,GAAD,CAAgB+Q,OAAQq7C,IAAUpsD,KAAMmc,EAAgBE,IAAIH,GAAkBqxD,OAAQ,SAACvtE,GAAD,OAAUqwE,EAAS,MAAOrwE,MAC/H,KAAK,EAAG,OAAO,cAAC,GAAD,CAAkB+Q,OAAQq7C,IAAUpsD,KAAMmc,EAAgBG,MAAMJ,GAAkBqxD,OAAQ,SAACvtE,GAAD,OAAUqwE,EAAS,QAASrwE,OA4ChIywE,KAIL,cAAC,GAAD,CAAOzsE,KAAM8kE,EAAiBn0E,MAAM,QAAQC,OAAO,QAAQskD,QAAS,kBAAM6vB,GAAmB,IAA7F,SACI,sBAAKx3E,UAAWw8C,EAAE,gBAAlB,UACI,wCACA,gCACI,cAAC,GAAD,CAASntC,KAAK,SAASuuC,KAAK,UAAU99C,KAAK,cAC3C,cAAC,GAAD,CAASuP,KAAK,gBAAgBuuC,KAAK,KAAK99C,KAAK,sBAKzD,cAAC,GAAD,CAAO2S,KAAMksE,EAAkBv7E,MAAM,QAAQC,OAAO,QAAQskD,QAAS,kBAAMi3B,GAAoB,IAA/F,SACI,sBAAK5+E,UAAWw8C,EAAE,kBAAlB,UACA,6BAAKjvC,EAAE,8BAEH,cAAC,GAAD,CACI0wC,OAAO,SACPL,KAAOqhC,IAAc1xE,EAAE,oCAAsCA,EAAE,kCAC/DzN,KAAK,YAAauP,KAAO4vE,IAAc,KAAO,OAAQh/E,MA5DvD,WACfu2C,EAASzgB,GAAUuhB,QAAQ7gB,iBAAiB7L,IACzCq0D,IACCzoC,EAAStrB,GAAaosB,QAAQlzB,WAAW,UAK7Cw6D,GAAoB,GACpBpoC,EAAStrB,GAAaosB,QAAQlzB,WAAW,YACzCoyB,EAAStrB,GAAaosB,QAAQnsB,WAAW,IACzCqrB,EAAStrB,GAAaosB,QAAQhsB,eAmDlB,cAAC,EAAD,CAAY7nB,MAAOO,EAAOO,oBAA1B,SACKgJ,EAAE,0CCqBZ4xE,GA7J4B,SAAC,GAMpC,IAAD,QALHC,aAKG,SAJHv0D,EAIG,EAJHA,IACAC,EAGG,EAHHA,IACAC,EAEG,EAFHA,MACA5S,EACG,EADHA,MACG,EAEYlW,EAAO,qBAFnB,mBAEIe,EAFJ,KAEOw5C,EAFP,KAGGhG,EAAWC,cACTrgB,EAAgBrb,YAAYkc,IAA5Bb,YAJL,EAKkD5vB,IAA7CyC,EALL,EAKKA,sBAAuBO,EAL5B,EAK4BA,kBACzBkvD,EAAS7oD,EACPpG,EAAUsR,YAAYX,GAAtB3Q,MACA8D,EAAMN,EAAe8N,YAAYX,IAAjC7M,EAEAqa,EAAc7M,YAAY0P,IAA1B7C,UAVL,EAWuC7M,YAAY4Q,IAA9BV,GAXrB,EAWIN,gBAXJ,EAWqBM,gBAkCxB,OACI,sBAAKjrB,UAAWgD,EAAGo8E,EAAQ,QAAU,IAArC,UACI,sBAAKp/E,UAAWw8C,EAAE,QAAlB,UACI,gCAAQjvC,EAvCQ,CAAC,6BAA8B,yBAuCjB4K,MAC9B,gDAAU0S,QAAV,IAAUA,OAAV,EAAUA,EAAKvb,MAAMF,MAArB,YAA8BwY,EAAU1B,eAG5C,sBAAKlmB,UAAWw8C,EAAE,WAAlB,UACQ,sBAAKx8C,UAAWw8C,EAAE,OAAQ,OAA1B,UACI,uBAAOx8C,UAAWw8C,EAAE,cAApB,SACKjvC,EAAE,kCAEP,qBAAKvN,UAAWw8C,EAAE,cAAlB,SACI,sBAAKx8C,UAAWw8C,EAAE,kBAAlB,UACI,gCACI,uBAAOx8C,UAAWw8C,EAAE,aAAa,aAAjC,SAAgDjvC,EAAE,iBAAkB,OACpE,wCAAOsd,QAAP,IAAOA,OAAP,EAAOA,EAAKrgB,EAAE4E,MAAd,YAEJ,gCACI,gCAAQ7B,EAAE,oBACV,wCAAOsd,QAAP,IAAOA,OAAP,EAAOA,EAAKg1B,EAAEzwC,MAAd,YAEJ,gCACI,uBAAOpP,UAAWw8C,EAAE,aAAa,aAAjC,SAAgDjvC,EAAE,iBAAkB,OACpE,wCAAOsd,QAAP,IAAOA,OAAP,EAAOA,EAAKlc,EAAES,MAAd,oBAMhB,sBAAKpP,UAAWw8C,EAAE,OAAQ,OAA1B,UACI,uBAAOx8C,UAAWw8C,EAAE,cAApB,SACKjvC,EAAE,iCAGP,sBAAKvN,UAAWw8C,EAAE,cAAlB,UACI,gCAAQjvC,EAAE,6BACV,wCAAOud,QAAP,IAAOA,OAAP,EAAOA,EAAK7J,KAAK4uB,GAAGzgC,MAApB,YAEJ,sBAAKpP,UAAWw8C,EAAE,cAAlB,UACI,gCAAQjvC,EAAE,8BACV,wCAAOud,QAAP,IAAOA,OAAP,EAAOA,EAAK7J,KAAK5d,OAAO+L,MAAxB,YAEJ,sBAAKpP,UAAWw8C,EAAE,cAAlB,UACI,kCAAQjvC,EAAE,4BAAV,OACA,wCAAOud,QAAP,IAAOA,OAAP,EAAOA,EAAKxJ,MAAMuuB,GAAGzgC,MAArB,YAEJ,sBAAKpP,UAAWw8C,EAAE,cAAlB,UACI,gCAAQjvC,EAAE,+BACV,wCAAOud,QAAP,IAAOA,OAAP,EAAOA,EAAKxJ,MAAMje,OAAO+L,MAAzB,eAIR,sBAAKpP,UAAWw8C,EAAE,OAAQ,SAA1B,UACI,uBAAOx8C,UAAWw8C,EAAE,cAApB,SACKjvC,EAAE,iCAGP,sBAAKvN,UAAWw8C,EAAE,cAAlB,UACI,gCAAQjvC,EAAE,uCACV,wCAAOwd,QAAP,IAAOA,OAAP,EAAOA,EAAOyvD,iBAAiBprE,MAA/B,cAEJ,sBAAKpP,UAAWw8C,EAAE,cAAlB,UACI,gCAAQjvC,EAAE,gCACV,wCAAOwd,QAAP,IAAOA,OAAP,EAAOA,EAAO2vD,UAAUtrE,MAAxB,cAGO,IAAV+I,GAAe8S,EAChB,sBAAKjrB,UAAWw8C,EAAE,cAAlB,UACI,gCAAQjvC,EAAE,qCACV,gDAAYwd,QAAZ,IAAYA,GAAZ,UAAYA,EAAO6vD,eAAeE,gBAAlC,aAAY,EAAgC75D,KAA5C,mBAA2D8J,QAA3D,IAA2DA,GAA3D,UAA2DA,EAAO6vD,eAAeE,gBAAjF,aAA2D,EAAgCx5D,MAA3F,WAEH,sBAAKthB,UAAWw8C,EAAE,cAAlB,UACG,gCAAQjvC,EAAE,qCACV,wCAAOwd,QAAP,IAAOA,OAAP,EAAOA,EAAO6vD,eAAexrE,MAA7B,WAIJ,sBAAKpP,UAAWw8C,EAAE,cAAlB,UACI,gCAAQjvC,EAAE,sCACV,wCAAOwd,QAAP,IAAOA,OAAP,EAAOA,EAAOiwD,gBAAgB5rE,MAA9B,kBAMhB,sBAAKpP,UAAWw8C,EAAE,SAvGX,WACX,IAAMoe,EAAG,OAAGxkC,QAAH,IAAGA,OAAH,EAAGA,EAAahnB,MACzB,OAAOwrD,GAAY,GAqGYC,IAC3Bn5D,MAnGW,WACf,IAAI+H,GAAsB,UAAbA,EAAMvK,GAAe,MAAO,GACzC,IAAMs7D,EAAgBvxD,EAAsByvD,EAAOrtD,OAAS,GACtDovD,EAAc/B,EAAO8B,EAAc,IACzC,OAAOhxD,EAAkBixD,GA+FdC,GACN54D,QAtHM,WACX00C,EAAStrB,GAAaosB,QAAQlzB,WAAW,YACzCoyB,EAAStrB,GAAaosB,QAAQnsB,WAAW,IACzCqrB,EAAStrB,GAAaosB,QAAQ/rB,SAASpT,KAiHnC,UAGK5K,EAAE,wBAHP,IAGgC,cAAC,EAAD,CAAM1N,KAAK,oBAIvCu/E,GACA,cAAC,GAAD,CACIn/E,MAtHF,WACVu2C,EAAStrB,GAAaosB,QAAQlzB,WAAW,YACzCoyB,EAAStrB,GAAaosB,QAAQnsB,WAAW,IACzCqrB,EAAStrB,GAAaosB,QAAQhsB,YAoHlBjc,KAAK,OACLvP,KAAK,YAELg+C,QAAQ,QCnHbuhC,GAjDyB,WAAO,MAE5Bp9E,EAAO,iBAFqB,mBAEpCe,EAFoC,KAEjCw5C,EAFiC,KAGnC5xB,EAAoB7P,YAAY4Q,IAAhCf,gBACArd,EAAMN,EAAe8N,YAAYX,IAAjC7M,EAMR,OACI,qBAAKvN,UAAWgD,IAAhB,SAEI,sBAAKhD,UAAWw8C,EAAE,WAAlB,UAEI,qBAAKx8C,UAAWw8C,EAAE,OAAlB,SACI,6BAAKjvC,EAAE,oCAMX,sBAAKvN,UAAWw8C,EAAE,SAAlB,UAGQ5xB,EAAgBC,IAAIvsB,KAAK,SAACI,EAAE0K,GAAH,OACrB,cAAC,GAAD,CAEI+O,MAAO/O,EACPyhB,IAAKnsB,EACLosB,IAAKF,EAAgBE,IAAI1hB,GACzB2hB,MAAOH,EAAgBG,MAAM3hB,IAJxBA,MAUbwhB,EAAgBC,IAAIxf,QAAU,GAC9B,cAAC,GAAD,CAAiB+zE,OAAO,EAAMjnE,MAAO,aC8E9CmnE,GA9GqB,WAAO,MAExBr9E,EAAO,YAFiB,mBAEhCe,EAFgC,KAE7Bw5C,EAF6B,OAGhBzhC,YAAY4Q,IAA3BnY,EAH+B,EAG/BA,KAAMkX,EAHyB,EAGzBA,KACR60D,EAAex+E,mBACfy+E,EAAgBz+E,iBAAY,IAC5By1C,EAAWC,cAET3oC,EAAQilC,IAAMgE,WAAWjE,IAAzBhlC,IAR+B,EASLxN,qBATK,mBAShCm/E,EATgC,KASrBC,EATqB,KAavC1+E,qBAAU,WAUN,OATmB,uCAAG,4BAAAwJ,EAAA,sEACAsD,EAAI,mBAAoB,wBADxB,QACZ6xE,EADY,SAEXD,EAAaC,EAAIhjE,OAFN,2CAAH,oDAInBijE,GAEAppC,EAAStrB,GAAaosB,QAAQ7rB,aAAa,IAC3C+qB,EAAStrB,GAAaosB,QAAQvtB,cAAa,IAAI5f,MAAOC,gBAE/C,WACHosC,EAAStrB,GAAaosB,QAAQ/rB,SAAS,IACvCirB,EAAStrB,GAAaosB,QAAQlzB,WAAW,YACzCoyB,EAAStrB,GAAaosB,QAAQnsB,WAAW,OAE9C,IAEHnqB,qBAAU,WACN,GAAY,SAATwS,EACH,OAAO,WACHqsE,OAGL,CAACrsE,IAEJxS,qBAAU,WAGN,GAFA6+E,IAEY,IAATn1D,EAAW,CACV,IAAI60D,EAAat+E,QAAS,OAC1Bs+E,EAAat+E,QAAQkgD,YAAc,IACnCo+B,EAAat+E,QAAQggD,OACrB6+B,GAAS,WACLP,EAAat+E,QAAQigD,UACtB,MAGP,GAAY,IAATx2B,EAAW,CACV,IAAI60D,EAAat+E,QAAQ,OACzBs+E,EAAat+E,QAAQkgD,YAAc,EACnCo+B,EAAat+E,QAAQggD,OACrB6+B,GAAS,WACLP,EAAat+E,QAAQigD,UACtB,MAGP,GAAY,IAATx2B,EAAW,CACV,IAAI60D,EAAat+E,QAAQ,OACzBs+E,EAAat+E,QAAQkgD,YAAc,IACnCo+B,EAAat+E,QAAQggD,OACrB6+B,GAAS,WACLP,EAAat+E,QAAQigD,UACtB,QAGR,CAACx2B,EAAM+0D,IAIV,IAAMK,EAAW,SAACn3E,EAAeqjC,GAC7B,IAAM+zC,EAAU9zC,YAAW,WACvBtjC,MACDqjC,GACHwzC,EAAcv+E,QAAQqC,KAAKy8E,IAGzBF,EAAgB,WAClBL,EAAcv+E,QAAQ4iB,SAAS,SAACg8B,GAAD,OAAW8D,aAAa9D,MACvD2/B,EAAcv+E,QAAU,IAG5B,OACI,sBAAKjB,UAAWgD,EAAE,OAAD,OAAQ0nB,IAAzB,UAOe,YAATlX,GAAsBisE,GACpB,qBAAKz/E,UAAWw8C,EAAE,YAAD,cAAqB9xB,IAAtC,SACI,uBACQ3oB,IAAK09E,EACL96C,IAAK46C,EACL39B,aAAW,EACXC,UAAU,EAAOC,MAAM,EAAQC,OAAK,EAJ5C,4DASG,YAATvuC,GAAsB,cAAC,GAAD,IACb,SAATA,GAAoB,cAAC,GAAD,Q,2BC6lBnBwsE,GA9qB+B,WAAM,MAEjC/9E,EAAO,0BAF0B,mBAEzCe,EAFyC,KAEtCw5C,EAFsC,KAI1ChG,EAAWC,cAETtvB,GADK4kB,KACehxB,YAAY0P,IAAhCtD,iBANwC,EAW5CimB,KAHAiB,EAR4C,EAQ5CA,sBACA2B,EAT4C,EAS5CA,eACAO,EAV4C,EAU5CA,oBAV4C,EAYbx1B,YAAYkc,IAAvCxyB,EAZwC,EAYxCA,aAAcC,EAZ0B,EAY1BA,SAZ0B,EAacqW,YAAYX,GAAlE1H,EAbwC,EAaxCA,sBAAuBuD,EAbiB,EAajBA,eAAgBlB,EAbC,EAaDA,WAbC,EAc+BgG,YAAY0P,IAAnFxD,EAdwC,EAcxCA,WAAYK,EAd4B,EAc5BA,mBAAoBF,EAdQ,EAcRA,WAAYU,EAdJ,EAcIA,uBAdJ,EAgBVxnB,mBAAwB,IAhBd,mBAgBzC4e,EAhByC,KAgB5B+gE,EAhB4B,KAiBxC1yE,EAAMN,EAAe8N,YAAYX,IAAjC7M,EACA6pE,EAAsCX,KAAtCW,kCAlBwC,EAmB+Er8D,YAAY6a,IAAnIjB,EAnBwC,EAmBxCA,iCAAgEE,GAnBxB,EAmBND,6BAnBM,EAmBwBC,OAAoBC,GAnB5C,EAmB+BC,YAnB/B,EAmB4CD,aAAaI,EAnBzD,EAmByDA,kBACnGgrD,EAASx1E,UAAU2tC,OApBuB,EAqBQ/3C,qBArBR,mBAqBnB6/E,GArBmB,aA0BZ7/E,oBAAS,GA1BG,gCA2BhBX,EAAesgB,IAIqB3f,sBA/BpB,mBA+Bb8/E,GA/Ba,aAuC5ChzC,KAFAuC,GArC4C,EAqC5CA,yBACAG,GAtC4C,EAsC5CA,4BAtC4C,GAwCNxvC,oBAAS,GAxCH,qBAwCzC+/E,GAxCyC,MAwCzBC,GAxCyB,MAyC1CC,GAAgBx/E,kBAAgB,GAChCy/E,GAAsBz/E,iBAAe,IA1CK,GAiD5CizC,KALAC,GA5C4C,GA4C5CA,qBACAM,GA7C4C,GA6C5CA,sBACAU,GA9C4C,GA8C5CA,uBACAW,GA/C4C,GA+C5CA,oBACA7F,GAhD4C,GAgD5CA,eAGJ/uC,qBAAU,WAAO,IAAD,QACZ,GAAKsmB,EAAL,CACA,IAAM8B,EAAgC9B,EAAmBL,GACzD,GAAKmC,EAAL,CACA,IAAMq3D,EAAW,SAAC17D,GAClB,GAAKA,GACIA,EAAQvI,QACTuI,EAAQvI,KAAKnR,OAAS,GAE1B,OAAO0Z,GAGLsqB,EAAiB,CACnBv3B,QAAS2oE,EAAQ,UAACr3D,EAAKtR,eAAN,aAAC,EAAciN,SAChC4C,QAASyB,EAAKzB,SAAWyB,EAAKzB,QAAQtc,OAAS,EAAIo1E,EAASr3D,EAAKzB,QAAQ,GAAG5C,cAAWza,EACvF4N,QAASuoE,EAAQ,UAACr3D,EAAKlR,eAAN,aAAC,EAAc6M,UAG9B27D,EAAuB,CACzB5oE,SAAa,OAAJsR,QAAI,IAAJA,GAAA,UAAAA,EAAMtR,eAAN,eAAegN,aAASxa,EACjCqd,QAASyB,EAAKzB,SAAWyB,EAAKzB,QAAQtc,OAAS,EAAI+d,EAAKzB,QAAQ,GAAG7C,WAAQxa,EAC3E4N,SAAa,OAAJkR,QAAI,IAAJA,GAAA,UAAAA,EAAMlR,eAAN,eAAe4M,aAASxa,GAErC81E,EAA8BM,GAC9BP,EAAwB9wC,OACzB,CAAC/nB,EAAoBL,IAExBjmB,qBAAU,WACN,KAAIomB,EAAa,GAAjB,CACA,IAAMu5D,EAAqBpvC,GAAetqB,GACtC25D,EAAmBxJ,EAAkCuJ,EAAoBjuE,GAE7E,IAAkB,OAAduD,QAAc,IAAdA,OAAA,EAAAA,EAAgB4/B,KAAK3pC,QAASob,EAAoB,CAAC,IAAD,MAC5CxP,EAAO,UAAGwP,EAAmBL,UAAtB,iBAAG,EAAgCnP,eAAnC,iBAAG,EAAyC4P,kBAA5C,aAAG,EAAqD1oB,KACrE4hF,EAAmB3rC,GAAuBn9B,EAAmB8oE,GAGtCA,EAAiB/oE,QAAO,SAAAH,GAAC,OAAgB,MAAZA,EAAES,SAAe9M,OAAS,IAE9Eu1E,EAAgB,CAAI,CAChB1hF,GAAI,GACJgF,MAAO,GACPiU,MAAO,EACP7I,MAAO,IAJK,mBAKVsxE,KAGVX,EAAeW,GACfC,GAAuBD,MACxB,CAAC35D,EAAYG,IAEhBpmB,qBAAU,WAAO,IAAD,cACN8/E,EAAWx5D,EAAqBA,EAAmBL,GAAc,GACjE85D,EAAsBD,EAAQ,OAAGA,QAAH,IAAGA,GAAH,UAAGA,EAAUhpE,eAAb,iBAAG,EAAmB4P,kBAAtB,aAAG,EAA+B1oB,KAAO,GAC7DsoB,IAAkB,UAAGA,EAAmBL,UAAtB,OAAG,EAAgCU,SACvC,OAAd1R,QAAc,IAAdA,GAAA,UAAAA,EAAgB4/B,YAAhB,SAAsBzpC,QAKtC,KAJoD,QAApB,OAAd6J,QAAc,IAAdA,GAAA,UAAAA,EAAgB4/B,YAAhB,eAAsBzpC,UAIxB20E,GAFa,CAAC,cAAc,WAAY,wBAG5BxmE,SAASwmE,OAGjC35D,EAAa,IAAME,EAAvB,CACA,IAAMzC,EAASyC,EAAmBL,GAC5B8/B,EAAOpyB,EAAiC1N,GACxC+5D,IAAWv8E,EAAawuB,OAAOC,OAAOC,GAGtCpO,EAAO,OAAGF,QAAH,IAAGA,OAAH,EAAGA,EAAQ/M,QAAQiN,QAC1B2wB,EAAc,OAAG7wB,QAAH,IAAGA,GAAH,UAAGA,EAAQ/M,QAAQ4P,kBAAnB,aAAG,EAA4B1oB,KAC7CiiF,EAAY1wC,EAAmB,OACjCt6B,QADiC,IACjCA,OADiC,EACjCA,EAAgB4/B,KAAK1pC,OADY,OAEjC4Y,QAFiC,IAEjCA,OAFiC,EAEjCA,EAAS7lB,GACTw2C,GAGEwrC,GAAkB,OAACjrE,QAAD,IAACA,OAAD,EAACA,EAAgB4/B,KAAK3pC,SAAsB+0E,EAEpE,IAAKl6B,EAAM,CAAC,IAAD,EACD39B,EAAOnC,IAAexE,GAAayE,MAAQ,EAAI,EAErD,IAAKI,EAAoB,OACzB,IAAM7Y,EAAO,CACT0J,MAAK,OAAE0M,QAAF,IAAEA,GAAF,UAAEA,EAAQ/M,QAAQ4P,kBAAlB,aAAE,EAA4BvP,MACnCgpE,aAAcC,GAAiB,OAACr8D,QAAD,IAACA,OAAD,EAACA,EAAS7lB,IACzCmiF,iBAAkBC,GAAqB5rC,GACvCjxC,aAAcqrC,GAA4BrrC,EAAawuB,QACvDvuB,SAAUirC,GAAyBjrC,EAAU0kB,GAC7Cm4D,aAAcvxC,EAAegxC,EAAUE,IAErCM,EAAa16E,KAAKC,UAAU0H,GAElC,GAAI+yE,IAAehB,GAAoBv/E,QAAS,OA8ChD,OA7CAu/E,GAAoBv/E,QAAUugF,OAK9B3zE,IAAMi2B,KAAK8R,KAAuB,CAAEnnC,SAAQ5P,MAAK,SAAA6Y,GAC7C,GAAImN,GAAUq8D,EAAiB,CAC3B,IAAMO,EAA6C,QAAnB,OAAdxrE,QAAc,IAAdA,OAAA,EAAAA,EAAgB4/B,KAAKzpC,SACjCs1E,EAAoBC,GAAqB98D,EAAQ48D,GACjDG,EAAgBlqE,EAAEjJ,KAAKA,KAAKozE,qBAClC9xC,GAAe2xC,EAAmBE,GAAe,SAAC54E,GAC9Cs3E,IAAiBt3E,GACjB,IAAM84E,EAAoBC,GAAqBtzE,EAAK0J,OACpDq+B,EAASzuB,GAAsBuvB,QAAQptB,mBAAmBlhB,IAAU84E,QAI5E,GAC0B,MAAtBpqE,EAAEjJ,KAAKuzE,YACNtqE,EAAEjJ,KAAKA,KAAK6e,gBACuC,IAApDhuB,OAAOD,MAAMqY,EAAEjJ,KAAKA,KAAK6e,gBAAgBjiB,OAH7C,CAZkD,MAyB9CqM,EAAEjJ,KAAKA,KAAK6e,eAJZ20D,EArB8C,EAqB9CA,aACAhkC,EAtB8C,EAsB9CA,OACAikC,EAvB8C,EAuB9CA,WACA/pE,EAxB8C,EAwB9CA,MAGJq+B,EAASxhB,GAAmBsiB,QAAQniB,sBAAsB,CACtD/L,KAAMnC,EACNxY,KAAM,CACF0J,MAAOA,EACPgqE,YAAa1zE,EAAK0yE,aAClBiB,KAAMH,EACNhkC,OAAQA,EACRokC,OAAQH,EACRz9E,aAAcqrC,GAA4BrrC,EAAawuB,QACvDvuB,SAAU+J,EAAK/J,iBAM/B,IAAM49E,EAAgB,UAAGC,YAAH,aAAG,EAAyBpqE,MAGlD,IAAsB,OAAjB+c,QAAiB,IAAjBA,OAAA,EAAAA,EAAmB5O,SAAUg8D,IAAuC,OAAjBptD,QAAiB,IAAjBA,OAAA,EAAAA,EAAmBnO,SAAUu7D,EAArF,CASA,IAAME,EAAc7tD,EAAiC1N,GAOrD,GACIu7D,IACW,OAAXA,QAAW,IAAXA,OAAA,EAAAA,EAAarqE,SAAUmqE,EAGzB,CAEE,GAA4B,OAAZ,OAAXE,QAAW,IAAXA,OAAA,EAAAA,EAAarqE,QAAkBooE,GAAct/E,QAAS,OAO3D,OALAu1C,EAASxhB,GAAmBsiB,QAAQliB,4BAA4B,CAC5DhM,KAAMnC,EACNxY,UAAMnE,UAEVi2E,GAAct/E,SAAU,GAI5B,IAAMwN,EAAO,CACT0J,MAAOmqE,EACPnB,aAAcC,GAAkBr6B,EAAKo7B,aACrCd,iBAAkBC,GAAqB5rC,GACvCjxC,aAAcqrC,GAA4BrrC,EAAawuB,QACvDvuB,SAAUqiD,EAAKriD,SACf68E,aAAcvxC,EAAegxC,EAAUE,IAErCM,EAAa16E,KAAKC,UAAU0H,GAG9B+yE,IAAehB,GAAoBv/E,UACvCu/E,GAAoBv/E,QAAUugF,EAE9B3zE,IAAMi2B,KAAK8R,KAAuB,CAAEnnC,SAAQ5P,MAAK,SAAA6Y,GAC7C,GAAImN,GAAUq8D,EAAiB,CAC3B,IAAMO,EAA6C,QAAnB,OAAdxrE,QAAc,IAAdA,OAAA,EAAAA,EAAgB4/B,KAAKzpC,SACjCs1E,EAAoBC,GAAqB98D,EAAQ48D,GACjDG,EAAgBlqE,EAAEjJ,KAAKA,KAAKozE,qBAClC9xC,GAAe2xC,EAAmBE,GAAe,SAAC54E,GAC9Cs3E,IAAiBt3E,GACjB,IAAM84E,EAAoBC,GAAqBtzE,EAAK0J,OACpDq+B,EAASzuB,GAAsBuvB,QAAQptB,mBAAmBlhB,IAAU84E,QAI5E,GAC0B,MAAtBpqE,EAAEjJ,KAAKuzE,YACNtqE,EAAEjJ,KAAKA,KAAK6e,gBACsC,IAAnDhuB,OAAOD,KAAKqY,EAAEjJ,KAAKA,KAAK6e,gBAAgBjiB,OAH5C,CAZkD,MA4B9CqM,EAAEjJ,KAAKA,KAAK6e,eAHZ20D,EAzB8C,EAyB9CA,aACAhkC,EA1B8C,EA0B9CA,OACAikC,EA3B8C,EA2B9CA,WAGEO,EAAW,CACbxkC,OAAQykC,GAA4B37B,EAAK9I,OAAQA,GACjDmkC,KAAMM,GAA4B37B,EAAKq7B,KAAMH,GAC7CI,OAAQK,GAA4B37B,EAAKs7B,OAAQH,IAErD1rC,EAASxhB,GAAmBsiB,QAAQliB,4BAA4B,CAC5DhM,KAAMnC,EACNxY,KAAM,CACF0J,MAAOmqE,EACPH,YAAap7B,EAAKo7B,YAClBC,KAAMK,EAASL,KACfnkC,OAAQwkC,EAASxkC,OACjBokC,OAAQI,EAASJ,gBAzBrB7rC,EAASxhB,GAAmBsiB,QAAQliB,4BAA4B,CAC5DhM,KAAMnC,EACNxY,UAAMnE,cAjEdksC,EAASxhB,GAAmBsiB,QAAQliB,4BAA4B,CAC5DhM,KAAMnC,EACNxY,UAAMnE,QA0Ff,CACCqqB,EACA1N,EACAG,EACAE,IAQJtmB,qBAAU,YACDsmB,IAAuBA,EAAmBL,IAAeG,EAAa,GAC3Ey5D,GAAuB3hE,KACxB,CAACoI,IAEJtmB,qBAAU,WACN,OAAO,WACHu/E,GAAct/E,SAAU,KAE7B,IAEHD,qBAAU,WAENw1C,EAASxhB,GAAmBsiB,QAAQ9hB,eAAe+sD,MAA2Bp7D,EAAkBo7D,KAAwBrjF,GAAG80B,OAAO,GAAK,IACvIwiB,EAASzuB,GAAsBuvB,QAAQ9uB,oBAAmB,MAC3D,IAMH,IAAM44D,GAAoB,SAACe,GACvB,MAAoB,sBAAhBA,EACO,mBAEAA,GAGTb,GAAuB,SAAC5rC,GAC1B,OAAQA,GACJ,IAAK,oBACD,MAAO,mBACX,IAAK,0BACD,MAAO,yBACX,IAAK,iBACD,MAAO,iBACX,IAAK,mBACD,MAAO,kBACX,IAAK,gBACD,MAAO,eACX,IAAK,iBACD,MAAO,sBAEX,QACI,OAAOA,IAKbisC,GAAuB,SAAC98D,GAAuC,IAAD,EAAzB89D,EAAyB,wDAC1DC,GAA0B,OAAN/9D,QAAM,IAANA,OAAA,EAAAA,EAAQ8C,SAAR,OAAkB9C,QAAlB,IAAkBA,OAAlB,EAAkBA,EAAQ8C,QAAQrpB,KAAI,SAACknB,GAAD,uBAAYA,EAAET,eAAd,aAAY,EAAW7lB,MAAM,GACvF2jF,GAA2B,OAANh+D,QAAM,IAANA,OAAA,EAAAA,EAAQ3M,UAAWyqE,EAAgB,QAAC99D,QAAD,IAACA,GAAD,UAACA,EAAQ3M,QAAQ6M,eAAjB,aAAC,EAAyB7lB,IAAM,GAC9F,MAAM,GAAN,mBACO0jF,GACAC,IAILhC,GAAyB,SAACiC,GAC5B,GAAKx7D,EAAL,CACA,IACIy7D,EADAC,EAAc,EAElBF,EAAKj/D,SAAQ,SAACnM,EAAGtO,GAAO,IAAD,KACf,UAAAke,EAAmBL,UAAnB,mBAAgCnP,QAAQ4P,kBAAxC,eAAoDvP,SAAUT,EAAES,QAChE6qE,EAAc55E,EACd25E,EAAcrrE,EAAES,WAGpB4qE,GAAgBhB,GAAqBgB,GASzCvsC,EAASxhB,GAAmBsiB,QAAQ9hB,eAAewtD,IAR/CxsC,EAASthC,EAASoiC,QAAQ7hC,gBAAgB,CACtChD,MAAM,EACNqC,QAASvH,EAAE,oBASjBg1E,GAAwB,WAA0B,IAAD,IACnD,OAAKj7D,GAAuBA,EAAmBL,GAC/C,UAAOK,EAAmBL,UAA1B,iBAAO,EAAgCnP,eAAvC,aAAO,EAAyC4P,WADmB,MAIjE6pB,GAAiB,SAACnoB,GAAuC,IAAD,IAC1D,IAAK9B,EAAoB,MAAO,GAEhC,IAAMxP,EAAO,UAAGwP,EAAmB8B,UAAtB,aAAG,EAA0BtR,QACpC5T,GAAe,OAAP4T,QAAO,IAAPA,GAAA,UAAAA,EAAS4P,kBAAT,eAAqBxjB,QAAS,GAC5C,OAAI,OAAC4T,QAAD,IAACA,OAAD,EAACA,EAASiN,SAEPspB,EACHnqC,EACA4T,EAAQiN,QAAQ7F,aAChB,GAL0B,IAa9B+jE,GAAqB,KACnBC,GAAqB,SAAC9zE,GACxBonC,EAASxhB,GAAmBsiB,QAAQ/hB,YAAY,kBAC5CrW,EAAY7T,QAAU,GACZ,IAAV+D,GAA2C,KAA5B8P,EAAY9P,GAAO+I,QAIjC4pE,GAAqB7iE,EAAY9P,GAAO+I,QAQzC8qE,IAAet/B,aAAas/B,IAChCA,GAAgBh3C,YAAW,WACvBk3C,GAAmBjkE,EAAY9P,MAChC,KAEHonC,EAASxhB,GAAmBsiB,QAAQ9hB,eAAepmB,KAZ/ConC,EAASthC,EAASoiC,QAAQ7hC,gBAAgB,CACtChD,MAAM,EACNqC,QAASvH,EAAE,oBAajBw0E,GAAuB,SAAC5pE,GAAmB,IAAD,YAC5C,IAAKmP,KAAsB,OAACrR,QAAD,IAACA,OAAD,EAACA,EAAgB4/B,KAAK3pC,OAAO,OAAO,EAC/D,IAAM2Y,EAASyC,EAAmBL,GAC5BitB,EAAW,OAAGrvB,QAAH,IAAGA,GAAH,UAAGA,EAAQ/M,QAAQ4P,kBAAnB,aAAG,EAA4B1oB,KAC5Cm1C,IAAoB,OAANtvB,QAAM,IAANA,OAAA,EAAAA,EAAQ8C,UAAW,IAAIrpB,KAAI,SAAAoZ,GAAC,uBAAIA,EAAEqN,eAAN,aAAI,EAAW7lB,OAAO,GAE9B,QAApB,OAAd+W,QAAc,IAAdA,GAAA,UAAAA,EAAgB4/B,YAAhB,eAAsBzpC,WACtB+nC,EAAaA,EAAWt8B,QAAO,SAAA3Y,GAAE,MAAW,mBAAPA,MAGzC,IAAMkkF,EAAsB,CAAC,iBAAkB,iBACV,QAApB,OAAdntE,QAAc,IAAdA,GAAA,UAAAA,EAAgB4/B,YAAhB,eAAsBzpC,UAAoB+nC,EAAW,IAA4B,IAAtBA,EAAW9oC,QAClE+3E,EAAoB7oE,SAAS45B,EAAW,MAEvCA,GADAA,EAAaA,EAAWt8B,QAAO,SAAA3Y,GAAE,MAAW,mBAAPA,MACb2Y,QAAO,SAAA3Y,GAAE,MAAW,kBAAPA,MAGR,QAApB,OAAd+W,QAAc,IAAdA,GAAA,UAAAA,EAAgB4/B,YAAhB,eAAsBzpC,UAAoB+nC,EAAW,IAAMA,EAAW,KAClEivC,EAAoB7oE,SAAS45B,EAAW,KAAOivC,EAAoB7oE,SAAS45B,EAAW,OAEtFA,GADAA,EAAaA,EAAWt8B,QAAO,SAAA3Y,GAAE,MAAW,mBAAPA,MACb2Y,QAAO,SAAA3Y,GAAE,MAAW,kBAAPA,MAG7C,IAAMs1C,EAAS,OAAG3vB,QAAH,IAAGA,GAAH,UAAGA,EAAQ3M,eAAX,iBAAG,EAAiB6M,eAApB,aAAG,EAA0B7lB,GACtCmkF,GAAiBlvC,EAAW9oC,QAAS4oC,GACvCC,EACAC,EACAh8B,GAGEmrE,GAAkB9uC,GAAYD,GAChCL,EACAM,EACAr8B,GAGJ,OAAOkrE,GAAkBC,GAGvBH,GAAqB,SAACz7D,GAA6B,IAAD,EACpD,GAAKJ,EAAL,CACA,IAAMxP,EAAO,UAAGwP,EAAmBL,UAAtB,aAAG,EAAgCnP,QAChD0+B,EAASzuB,GAAsBuvB,QAAQruB,cAAc,CACjDL,WAAY1M,GAAe0C,QAC3BkG,MAAK,OAAEhN,QAAF,IAAEA,OAAF,EAAEA,EAASgN,MAChBC,QAAO,OAAEjN,QAAF,IAAEA,OAAF,EAAEA,EAASiN,QAClB2C,aACAwB,QAAQ,EACRE,KAAMnC,OAIRy7D,GAA8B,SAACa,EAAsBxpD,GACvD,IAAI9G,EAAS,CAACswD,EAAcxpD,GAGtBypD,GADOvwD,EAAO,GAAKA,EAAO,IACDA,EAAO,GAAM,IACtCwwD,EAAe1pD,GAAYwpD,EAAeC,GAAoC,EAAlBA,EAClE,OAAOl6E,KAAKo6E,MAAMD,IAIhBE,GAAkB,SAACruE,GAErB,KAAI4J,EAAY7T,QAAU,KACN,IAAhBypB,GAAgC,UAAXxf,KACrBwf,IAAgB5V,EAAY7T,OAAS,GAAgB,QAAXiK,GAA9C,CAEA,IAAMsuE,EAAsB,QAAXtuE,EAAqBwf,EAAyB,EAAOA,EAAyB,EAC/F0hB,EAASxhB,GAAmBsiB,QAAQ/hB,YAAY,kBAChD2tD,GAAmBU,KA+FvB,OACI,sBAAK5jF,UAAWgD,IAAhB,UACI,sBAAKhD,UAAWw8C,EAAE,YAAlB,UAEI,sBAAKx8C,UAAWw8C,EAAE,iBAAlB,UAEI,gCAAQjvC,EAAE,sCAEV,cAAC,GAAD,CAEIqwC,KAAMrwC,EAAE,uCACR8B,KACI,cAAC,GAAD,CACIvP,KAAK,QACLI,WAAW,SAGnBm+C,MAAI,OAGZ,sBAAKr+C,UAAWw8C,EAAE,sBAAlB,UACI,sBAAKx8C,UAAWw8C,EAAE,mBAAlB,UAEI,cAAC,GAAD,CACI38C,KAAK,QACLwD,OAAO,UACPy6C,QAAM,EACN36C,YAAY,OACZrB,QAAS,kBAAM6hF,GAAgB,YAEnC,cAAC,KAAD,CACIE,OAAQ,CACJ9lC,OAAQ,CAEJqB,gBAAiB,YAGzB9rB,KAAK,IACLwwD,MAAO,EACPC,KAAM,EACNC,KAAM9kE,EAAY7T,OAAS,EAC3BqM,EAAGod,EACHqyB,SAAU,gBAAGzvC,EAAH,EAAGA,EAAH,OAAWwrE,GAAmBxrE,MAE5C,cAAC,GAAD,CACI7X,KAAK,MACLwD,OAAO,UACPy6C,QAAM,EACN36C,YAAY,OACZrB,QAAS,kBAAM6hF,GAAgB,UAGnC,uBAAO3jF,UAAWw8C,EAAE,yBAApB,SACK,IAAIn6C,MAAM6c,EAAY7T,QAAQlC,KAAK,IAAI7K,KAAI,SAACyqB,EAAM5Q,GAAP,OACxC,wBAAWA,WAIvB,qBAAKnY,UAAWw8C,EAAE,cAAlB,SACK+lC,MAA2BA,KAAwBpqE,cAKhE,sBAAKnY,UAAWw8C,EAAE,SAAlB,UACI,gCAEQ0jC,EAAS,GAAH,UACC3yE,EAAE,0CADH,YACgDA,EAAE,0CAGhE,gCACKA,EAAE,4DAvFF,WAAO,IAAD,cACf02E,EAA+E,uBAAtD,OAAC38D,QAAD,IAACA,GAAD,UAACA,EAAoBhB,aAArB,iBAAC,EAA2BxO,eAA5B,iBAAC,EAAoCiN,eAArC,aAAC,EAA6C7lB,IAC9C,OAACooB,QAAD,IAACA,GAAD,UAACA,EAAoBhB,aAArB,iBAAC,EAA2BxO,eAA5B,OAAC,EAAoC4P,WAClE,QAAuDpd,KAAjC,OAAlBgd,QAAkB,IAAlBA,GAAA,UAAAA,EAAoBhB,aAApB,mBAA2BxO,eAA3B,eAAoC4P,YAA0B,OAAO,EASzE,MARuB,CACnB,oBACA,0BACA,iBACA,mBACA,gBACA,kBAEkBnN,SAASuN,IAAqCm8D,EAgF3DC,IACG,cAAC,GAAD,CACIzxE,KAAM4tE,GACNvrE,QAASvH,EAAE,eACXyyC,QAAS,CACL,CAAE97C,MAAOqJ,EAAE,+BAAgCrO,GAAI,YAC/C,CAAEgF,MAtGT,kBAAV2wB,EAAiC,wBACvBtnB,EAAE,yBAqGqCrO,GAAI,OAExCs0D,eAAgB,SAACt0D,GAAD,OAhHf,SAACA,GAClBohF,IAAgB,GACL,OAAPphF,IACJilF,eAAetoC,QAAQ,eAAgB,mBACvCrF,EAASzuB,GAAsBuvB,QAAQtvB,cAAc,KA4Gbo8D,CAAallF,UC3lB9CmlF,GA9F8B,WAAO,MAEjCpiF,EAAO,uBAF0B,mBAEzCe,EAFyC,KAEtCw5C,EAFsC,KAG1C74C,EAAUC,cAHgC,EAILmX,YAAY0P,IAA/CxD,EAJwC,EAIxCA,WAAYK,EAJ4B,EAI5BA,mBAEZ9T,EAASuH,YAAY6a,IAArBpiB,KANwC,EAOMuH,YAAY2Z,IAA1D3B,EAPwC,EAOxCA,qBAAsBH,EAPkB,EAOlBA,oBACtBnuB,EAAiBsW,YAAYkc,IAA7BxyB,aACF+xC,EAAWC,cACXghC,EAAqB3qC,GACnB+pC,EAAgCJ,KAAhCI,4BACA3hD,EAAsBna,YAAY6a,IAAlCV,kBACA3nB,EAAON,EAAe8N,YAAYX,IAAlC7M,EAqBFgb,EAAa,SAACa,GAAwB,IAAD,EACnC9B,IAAsB,UAACA,EAAmB8B,UAApB,aAAC,EAA0BtR,UACrD0+B,EAASzuB,GAAsBuvB,QAAQ/uB,WAAWa,KAGhDk7D,EAAyB,SAAC7/E,GAC5B,IAAMyuB,EAASzuB,EAAawuB,OAAOC,OAC7BpwB,EAAY+zE,EAA4B,CAC1C1jD,GAAID,EAAOC,GACXC,GAAIF,EAAOE,IACZqkD,GAEHjhC,EAASxhB,GAAmBsiB,QAAQriB,iBAAiB,CACjD3O,MAAOxjB,EACPikB,MAAOjkB,KAEX0zC,EAASzgB,GAAUuhB,QAAQxgB,kBAAkB,CACzCxQ,MAAOxjB,EACPikB,MAAOjkB,MAaf,OACI,qBAAK9C,UAAWgD,IAAhB,SACI,eAAC,GAAD,WACI,sBAAKhD,UAAWw8C,EAAE,OAAlB,UACI,kCACI,cAAC,EAAD,CAAM38C,KAAK,oBADf,kBAKA,sBAAKG,UAAWw8C,EAAE,aAAcv1B,GAAhC,UACI,cAAC,EAAD,CAAMpnB,KAAK,cAAcI,MAAO,kBAAMsoB,EAAW9F,GAAayE,UAC9D,yBACA,cAAC,EAAD,CAAMrnB,KAAK,cAAcI,MAAO,kBAAMsoB,EAAW9F,GAAakkB,gBAItE,cAAC,EAAD,CAAM9mC,KAAK,kBAAkBC,KAAK,UAElC,qBAAKE,UAAWw8C,EAAE,WAAlB,SACI,cAAC,GAAD,CAAQoB,KAAMrwC,EAAE,wCACZ8B,KAAK,2BACLpP,MAnEA,WAChB,GAAY,iBAATuT,EAKC,OAJAgjC,EAASxhB,GAAmBsiB,QAAQlzB,WAAW,aAC/CoyB,EAASzgB,GAAUuhB,QAAQjhB,qBAAqBtD,IAChDuxD,EAAuBvxD,QACvByjB,EAAS9iB,GAAkB4jB,QAAQ19B,aAIpC0N,GAAmBkvB,EAASzgB,GAAUuhB,QAAQvgB,2BAA2BzP,IACzE4N,GAAkBshB,EAASzgB,GAAUuhB,QAAQxgB,kBAAkB5B,IAElEvxB,EAAQL,KAAKU,EAAOa,QAAQf,OAwDZf,WA1BJ,iBAATyQ,EAAgCof,EAJ5BnuB,EAAawuB,OAAOC,OAAOC,cCpB3BoxD,GA7C0B,WAAO,MAE7BtiF,EAAO,kBAFsB,mBAErCe,EAFqC,KAElCw5C,EAFkC,KAGpChpC,EAASuH,YAAY6a,IAArBpiB,KACFgjC,EAAWC,cAGjBz1C,qBAAU,WACN,OAAO,WACHw1C,EAASxhB,GAAmBsiB,QAAQlzB,WAAW,gBAEpD,IAQH,OACI,sBAAKpkB,UAAWgD,IAAM,QAAtB,UAEI,cAAC,GAAD,IAEW,aAATwQ,GAAuB,cAAC,GAAD,IAEd,iBAATA,GACE,sBAAKxT,UAAWw8C,EAAE,gBAAlB,UACI,cAAC,GAAD,CACIoB,KAAK,OACLvuC,KAAK,yBACL2uC,aAAa,OAEbl+C,KAAK,YACLG,MApBP,WACTu2C,EAASxhB,GAAmBsiB,QAAQlzB,WAAW,aAC/CoyB,EAAS9iB,GAAkB4jB,QAAQ19B,gBAoBvB,cAAC,GAAD,WCNL4qE,GAnCmB,SAAC,GAI3B,IAHJv+C,EAGG,EAHHA,MACA2X,EAEG,EAFHA,KACA6mC,EACG,EADHA,YAMA,OACA,sBAAK/iF,MAAO0jE,GAAZ,UACI,oBAAI1jE,MAAOikE,GAAX,SACK1/B,EAAMjS,OAAO,GAAGC,cAAgBgS,EAAM7mC,MAAM,KAKjD,uBACA,mBAAGsC,MAAO2lE,GAAV,SACKzpB,EAAK5pB,OAAO,GAAGC,cAAgB2pB,EAAKx+C,MAAM,KAE9CqlF,GACG,sBAAK/iF,MAAO8lE,GAAZ,UACI,cAAC,EAAD,CAAM3nE,KAAK,gBAAgBC,KAAK,QAAQK,YAAaonE,KACrD,cAAC,EAAD,CAAM1nE,KAAK,eAAeC,KAAK,QAAQK,YAAaonE,QAG5D,qBAAK7lE,MAAO,CAAC09C,gBAAiB,WAA9B,SACI,qBAAKr9C,IAAI,kCAAkCC,IAAI,GAAGN,MAAOojE,GAAa1hE,MAAM,UAEhF,qBAAK1B,MAAO,CAAC09C,gBAAiB,WAA9B,SAA0C,yBAC1C,qBAAK19C,MAAO,CAAC09C,gBAAiB,WAA9B,SAA0C,6BCTnCslC,GAvBmB,SAAC,GAG3B,IAFJz+C,EAEG,EAFHA,MACAlyB,EACG,EADHA,YAMA,OACI,sBAAKrS,MAAO,CAACstD,QAAS,QAAtB,UACI,qBAAKttD,MAAO,CAAC+kE,aAAc,OAAQE,YAAa,QAAhD,SACI,qBAAM5kE,IAAI,gDAAgDC,IAAI,eAC9DN,MAAO+jE,GAAWriE,MAAM,SAE5B,sBAAK1B,MAAO,CAACstD,QAAS,SAAtB,UACI,oBAAIttD,MAAOikE,GAAX,SACI,iCAAS1/B,MAEb,mBAAGvkC,MAAO2kE,GAAV,SAAsBtyD,WCyFvB4wE,GAvG2B,SAAC,GAGnC,IAFJl2E,EAEG,EAFHA,KACA2a,EACG,EADHA,KAGQ7b,EAAMN,EAAe8N,YAAYX,IAAjC7M,EAIFq3E,EAAU,SAACn2E,EAAa3O,GAI1B,OAHgB2O,EAAKoJ,QAAO,SACxBA,GADwB,OAExBgtE,SAAShtE,EAAO/X,QAAUA,MAGlC,OACA,sBAAK4B,MAAO0jE,GAAZ,UAEQ32D,GACI,qBAAK/M,MAAO6kE,GAAZ,SACI,mBAAG7kE,MAAOklE,GAAV,SACI,sBAAMllE,MAAOmlE,GAAb,SAAuB,4CAAez9C,WAQlD3a,EAAKnQ,KAAK,SAACmQ,EAAUrF,GAAX,OACNqF,QAAenE,GAAPmE,GACJ,sBAAK/M,MAAO,CAACstD,QAAS,OAAQxP,QAAS,SAAvC,UAEI,sBAAK99C,MAAOolE,GAAZ,UACQ,cAAC,EAAD,CAAMhnE,KAAK,MAAMD,KAAM4O,EAAKY,KAAMlP,YAAainE,KAC/C,oBAAG1lE,MAAOslE,GAAV,UACCz5D,EAAEkB,EAAKw3B,OADR,OACqB,sBAAMvkC,MAAO,CAACojF,cAAe,aAA7B,SAA4Cv3E,EAAEkB,EAAKy3B,aAIhF,qBAAKxkC,MAAOqlE,GAAZ,SAEIt4D,EAAKjC,SAASlO,KAAK,SAACymB,EAAckpC,GAAf,OACf,sBAAKvsD,MAAOqlE,GAAZ,UACI,qBAAKrlE,MAAOwlE,GAAZ,SACI,mBAAGxlE,MAAOulE,GAAV,SACK15D,EAAEwX,EAAQkhB,WAIflhB,EAAQohB,cACJ,oBAAIzkC,MAAO,CAACstD,QAAS,OAAQ+1B,WAAY,SAAUvlC,QAAS,KAA5D,SAEIolC,EAAQ7/D,EAAQohB,aAAc,GAAG7nC,KAAI,SAACwnC,EAAWk/C,GAAZ,OACjC,qBAAItjF,MAAOylE,GAAX,UACI,cAAC,EAAD,CAAMrnE,KAAK,MAAMD,KAAMimC,EAAKz2B,KAAMlP,YAAakP,KAE/C,uBAAO3N,MAAO,CAACokE,SAAU,QAASmf,UAAU,UAA5C,SAAyD13E,EAAEu4B,EAAK5hC,iBAShF6gB,EAAQohB,cAAgBphB,EAAQohB,aAAa96B,OAAS,GAClD,oBAAI3J,MAAO,CAACstD,QAAS,OAAQ+1B,WAAY,SAAUvlC,QAAS,KAA5D,SAEQolC,EAAQ7/D,EAAQohB,aAAc,GAAG7nC,KAAI,SAACwnC,EAAWk/C,GAAZ,OACjC,qBAAItjF,MAAOylE,GAAX,UAEI,cAAC,EAAD,CAAMrnE,KAAK,MAAMD,KAAMimC,EAAKz2B,KAAMlP,YAAakP,KAC/C,uBAAO3N,MAAO,CAACokE,SAAU,QAASmf,UAAU,UAA5C,SAAyD13E,EAAEu4B,EAAK5hC,+BAkBhHuK,EAAK,IACD,sBAAK/M,MAAO,CAACstD,QAAS,OAAQ+1B,WAAY,SAAUvlC,QAAS,UAA7D,UACI,cAAC,EAAD,CAAM3/C,KAAK,mBACP,uBAAO6B,MAAO,CAACokE,SAAU,OAAQtmB,QAAS,QAA1C,SAAoDjyC,EAAE,gCACtD,sBAAM7L,MAAO,CAAC09C,gBAAgB,0BAA2B/7C,OAAQ,OAAQD,MAAO,OAAQsiE,WAAY,OAAQlmB,QAAS,OAAQsmB,SAAS,QAAtI,SAAiJr3D,EAAK,GAAG3L,mBC3DlKoiF,GA/B0B,SAAC,GAA4D,IAA1DrvD,EAAyD,EAAzDA,aAAcC,EAA2C,EAA3CA,aAAc4gB,EAA6B,EAA7BA,SAAUrQ,EAAmB,EAAnBA,aAEtE94B,EAAMN,EAAeypC,GAArBnpC,EAGF43E,EAAS,SAACl2C,GACZ,IAAKA,EAAM,OAAO,EAClB,IAAMme,EAAMne,EAAKp3B,QAAO,SAACk9C,GAAD,OAAoB,OAAPA,KAGrC,OAAO3H,GAAOA,EAAI/hD,OAAS,GAE/B,OACI,cAAC,IAAD,CAAUsL,MAAOA,GAAjB,SACI,sBAAKjV,MAAO,CAAE09C,gBAAiB,WAA/B,UACI,qBAAK19C,MAAO,CAAE09C,gBAAiB,WAA/B,SAA4C,yBAC5C,qBAAK19C,MAAO,CAAE09C,gBAAiB,WAA/B,SAA4C,yBAE5C,sBAAK19C,MAAO,CAAE+kE,aAAc,MAAOE,YAAa,MAAOse,UAAW,UAAlE,UACI,qBAAKljF,IAAI,kCAAkCC,IAAI,GAAGN,MAAOojE,GAAa1hE,MAAM,QAC5E,qBAAK1B,MAAO0jE,GAAZ,SACI,cAAC,GAAD,CAAQn/B,MAAO14B,EAAE,gBAAiBwG,YAAaxG,EAAE,4BAEpD43E,EAAOtvD,IAAiB,cAAC,GAAD,CAAgBpnB,KAAMonB,EAAczM,KAAM,IAClE+7D,EAAOrvD,IAAiB,cAAC,GAAD,CAAgBrnB,KAAMqnB,EAAc1M,KAAM,IACnE,cAAC,GAAD,CAAQ6c,MAAO14B,EAAE,qBAAsBk3E,aAAa,EAAM7mC,KAAMvX,aCWrE++C,GAlD+B,CAE1C,CAAElmF,GAAI,sBAAsB0hB,IAAI,0BAChC,CAAE1hB,GAAI,sBAAsB0hB,IAAI,0BAChC,CAAE1hB,GAAI,yBAAyB0hB,IAAI,6BACnC,CAAE1hB,GAAI,sBAAsB0hB,IAAI,0BAChC,CAAE1hB,GAAI,wBAAwB0hB,IAAI,4BAClC,CAAE1hB,GAAI,qBAAqB0hB,IAAI,yBAC/B,CAAE1hB,GAAI,yBAAyB0hB,IAAI,6BAGnC,CAAE1hB,GAAI,qBAAqB0hB,IAAK,wBAChC,CAAE1hB,GAAI,uBAAuB0hB,IAAI,2BACjC,CAAE1hB,GAAI,0BAA0B0hB,IAAI,8BACpC,CAAE1hB,GAAI,uBAAuB0hB,IAAI,2BACjC,CAAE1hB,GAAI,qBAAqB0hB,IAAI,wBAC/B,CAAE1hB,GAAI,oBAAoB0hB,IAAI,uBAC9B,CAAE1hB,GAAI,yBAAyB0hB,IAAI,6BACnC,CAAE1hB,GAAI,sBAAsB0hB,IAAI,yBAChC,CAAE1hB,GAAI,sBAAsB0hB,IAAI,yBAEhC,CAAE1hB,GAAI,kBAAkB0hB,IAAI,qBAC5B,CAAE1hB,GAAI,oBAAoB0hB,IAAI,wBAC9B,CAAE1hB,GAAI,kBAAkB0hB,IAAI,qBAC5B,CAAE1hB,GAAI,qBAAqB0hB,IAAI,wBAC/B,CAAE1hB,GAAI,sBAAsB0hB,IAAI,0BAChC,CAAE1hB,GAAI,iBAAiB0hB,IAAI,oBAC3B,CAAE1hB,GAAI,mBAAmB0hB,IAAI,sBAC7B,CAAE1hB,GAAI,qBAAqB0hB,IAAI,yBAE/B,CAAE1hB,GAAI,yBAAyB0hB,IAAI,6BACnC,CAAE1hB,GAAI,mBAAmB0hB,IAAI,sBAC7B,CAAE1hB,GAAI,kBAAkB0hB,IAAI,qBAC5B,CAAE1hB,GAAI,wBAAwB0hB,IAAI,4BAClC,CAAE1hB,GAAI,qBAAqB0hB,IAAI,yBAC/B,CAAE1hB,GAAI,wBAAwB0hB,IAAI,4BAClC,CAAE1hB,GAAI,iBAAiB0hB,IAAI,oBAC3B,CAAE1hB,GAAI,wBAAwB0hB,IAAI,4BAClC,CAAE1hB,GAAI,oBAAoB0hB,IAAI,wBAC9B,CAAE1hB,GAAI,sBAAsB0hB,IAAI,0BAChC,CAAE1hB,GAAI,sBAAsB0hB,IAAI,0BAChC,CAAE1hB,GAAI,mBAAmB0hB,IAAI,sBAC7B,CAAE1hB,GAAI,kBAAkB0hB,IAAI,qBAC5B,CAAE1hB,GAAI,uBAAuB0hB,IAAI,2BACjC,CAAE1hB,GAAI,yBAAyB0hB,IAAI,6BACnC,CAAE1hB,GAAI,mBAAmB0hB,IAAI,sBAC7B,CAAE1hB,GAAI,0BAA0B0hB,IAAI,+BACpC,CAAE1hB,GAAI,mBAAmB0hB,IAAI,uBCfhBykE,GAhC4B,CAEzCp/C,MAAO,mBACPE,aAAa,CACT,CACI92B,KAAM,gBACNnL,MAAO,gCACPpE,KAAM,GAEV,CACIuP,KAAM,mBACNnL,MAAO,gCACPpE,KAAM,GAEV,CACIuP,KAAM,iBACNnL,MAAO,gCACPpE,KAAM,GAEV,CACIuP,KAAM,YACNnL,MAAO,gCACPpE,KAAM,GAEV,CACIuP,KAAM,cACNnL,MAAO,gCACPpE,KAAM,KC8IH6kF,GAxJ2B,SAAC,GAInC,IAHJl2E,EAGG,EAHHA,KAEA2a,GACG,EAFH6c,MAEG,EADH7c,MACG,EAEYnnB,EAAO,mBAFnB,mBAEIe,EAFJ,KAEOw5C,EAFP,KAGKjvC,EAAMN,EAAe8N,YAAYX,IAAjC7M,EACFqpC,EAAO7K,KAJV,EAKmCzrC,mBAA6B,IALhE,mBAKiBwgD,GALjB,aAMyCxgD,oBAAS,GANlD,mBAMqBglF,GANrB,aAOwCvqE,YAAY0P,IAA/CnD,EAPL,EAOKA,mBAAoBL,EAPzB,EAOyBA,WACtByvB,EAAW37B,YAAYX,GACrBrF,EAA+B2hC,EAA/B3hC,WAAYkB,EAAmBygC,EAAnBzgC,eATjB,EAU2B3V,oBAAS,GAVpC,mBAWGk2C,GAXH,UAWcC,eACgB,OAAdxgC,QAAc,IAAdA,KAAgB4/B,KAAKzpC,QAGxCpL,qBAAU,WACN,GAAKsmB,EAAL,CACA,IAAMy2B,EAASz2B,EAAmBL,GAElC,IACI,OAAC82B,QAAD,IAACA,OAAD,EAACA,EAAQp2B,WACT,OAACo2B,QAAD,IAACA,OAAD,EAACA,EAAQp2B,QAAQtc,UACjB,OAAC0yC,QAAD,IAACA,OAAD,EAACA,EAAQp2B,QAAQ,GAAG/kB,OAHxB,CASA0iF,GAAiB,GACjB,IACMC,GADa,OAAGxnC,QAAH,IAAGA,OAAH,EAAGA,EAAQp2B,QAAQ,GAAG/kB,OACX1D,GACxB2L,EAAOu6E,GAAkBztE,MAAK,SAAC6E,GAAD,OAAUA,EAAKtd,IAAMqmF,KACnDC,EAAQ,OAAG36E,QAAH,IAAGA,OAAH,EAAGA,EAAM+V,IACvBkgC,EAAe0kC,QATXF,GAAiB,MAWtB,CAACh+D,IAGJ,IAAMs9D,EAAU,SAACn2E,EAAa3O,GAI1B,OAHgB2O,EAAKoJ,QAAO,SACxBA,GADwB,OAExBgtE,SAAShtE,EAAO/X,QAAUA,MAG5B2lF,EAAmB,SAACh3E,EAAW7B,GACjC,YAAYtC,IAATmE,GAA+C,IAAzBA,EAAKjC,SAASnB,OAAqB,GACrD,aAKLq6E,EAAe,SAACxmF,GAClB,MAAW,YAAPA,GAAmC,QAAf6V,GAItB4wE,EAAS,SAACv8D,EAAcjC,GAC1BqvB,EAASzuB,GAAsBuvB,QAAQ/uB,WAAmB,GAARa,EAAY3G,GAAayE,MAAQzE,GAAakkB,QAChG6P,EAASzuB,GAAsBuvB,QAAQ9uB,mBAAmBrB,IAC1DA,GAAmBqvB,EAASzuB,GAAsBuvB,QAAQtvB,cAAc,IACxE4uB,EAAKnzC,MAAMO,EAAOW,mBAGtB,OACI,qBAAK3E,UAAWgD,IAAK9D,GAAI,OAASkqB,EAAlC,SACI,qBAAKppB,UAAWw8C,EAAE,WAAlB,SACI,sBAAKx8C,UAAWw8C,EAAE,QAAlB,UACK/tC,EAAKnQ,KAAI,SAACmQ,EAAWrF,GAAZ,OACNqF,QAAiBnE,IAATmE,GACJ,sBAAKzO,UAAWw8C,EAAE,QAAlB,UACI,sBAAKx8C,UAAWw8C,EAAE,aAAe/tC,EAAKvP,GAAK,IAAMumF,EAAiBh3E,IAAlE,UACI,gCAAQlB,EAAEkB,EAAKw3B,SACf,sBAAMnkC,QAAS,kBAAM6jF,EAAOv8D,GAAM,IAAQppB,UAAWw8C,EAAE,mBAAvD,SAcQ,cAAC,EAAD,CAAM38C,KAAK,4BAIvB,qBAAKG,UAAWw8C,EAAE,iBAAmB/tC,EAAKvP,IAA1C,SACKuP,EAAKjC,SAASlO,KAAI,SAACymB,EAAckpC,GAAf,OACf,sBAAKjuD,UAAWw8C,EAAE,gBAAkB/tC,EAAKvP,IAAzC,UACKwmF,EAAaj3E,EAAKvP,IAAM,gCAAQmmF,GAAsBp/C,QAAiB,gCAAQ14B,EAAEwX,EAAQkhB,SAC1F,sBAAKjmC,UAAWw8C,EAAE,aAAlB,UACKz3B,EAAQohB,cACL,6BACKy+C,EAAQc,EAAaj3E,EAAKvP,IAAMmmF,GAAsBl/C,aAAephB,EAAQohB,aAAc,GAAG7nC,KAAI,SAACwnC,EAAWk/C,GAAZ,OAC/F,+BACI,cAAC,EAAD,CAAMllF,KAAK,MAAMD,KAAI,UAAKimC,EAAKz2B,KAAV,WACrB,gCAEShN,MAAMC,QAAQwjC,EAAK5hC,OAAUqJ,EAAEu4B,EAAK5hC,MAAM,GAAI4hC,EAAK5hC,MAAM,IAAMqJ,EAAEu4B,EAAK5hC,WAJ1E8gF,SAWnBjgE,EAAQohB,cAAiBphB,EAAQohB,aAAa96B,OAAU,GAAKq6E,EAAaj3E,EAAKvP,MAC7E,6BACK0lF,EAAQc,EAAaj3E,EAAKvP,IAAMmmF,GAAsBl/C,aAAephB,EAAQohB,aAAc,GAAG7nC,KAAI,SAACwnC,EAAWk/C,GAAZ,OAC/F,+BACI,cAAC,EAAD,CAAMllF,KAAK,MAAMD,KAAI,UAAKimC,EAAKz2B,KAAV,WACrB,gCAEShN,MAAMC,QAAQwjC,EAAK5hC,OAAUqJ,EAAEu4B,EAAK5hC,MAAM,GAAI4hC,EAAK5hC,MAAM,IAAMqJ,EAAEu4B,EAAK5hC,WAJ1E8gF,aApBsB/2B,UAvB/B7kD,MA8DvCqF,EAAK,IACF,sBAAKzO,UAAWw8C,EAAE,QAAlB,UACI,sBAAKx8C,UAAWw8C,EAAE,kBAAlB,UACI,gCAAQjvC,EAAE,gCACV,sBAAMzL,QAAS,kBAAM6jF,EAAOv8D,GAAM,IAAlC,SACI,cAAC,EAAD,CAAMvpB,KAAK,4BAGnB,sBAAMG,UAAWw8C,EAAE,8BAAnB,SAAmD/tC,EAAK,GAAG3L,uB,UCsBxE8iF,GAzJW,SAAClvC,GAAmC,IAEtDzgC,EAIAygC,EAJAzgC,eACAxJ,EAGAiqC,EAHAjqC,aACAyH,EAEAwiC,EAFAxiC,aACAvB,EACA+jC,EADA/jC,iBAkBEkzE,EAA0B,SAACz8D,GAAkD,IAAD,EAIvC,IAHjC1B,EAAU,OAAG0B,QAAH,IAAGA,OAAH,EAAGA,EAAMtR,QAAQ4P,WAC7B1P,EAAW,GAAGC,EAAW,GAE1BmR,EAAKzB,SAAWyB,EAAKzB,QAAQtc,SAC5B2M,GAAe,OAAJoR,QAAI,IAAJA,GAAA,UAAAA,EAAMzB,QAAQ,GAAG5C,eAAjB,eAA0B7lB,KAAM,GAC3C+Y,GAAe,OAAJmR,QAAI,IAAJA,OAAA,EAAAA,EAAMzB,QAAQ,MAAU,OAAJyB,QAAI,IAAJA,GAAA,UAAAA,EAAMzB,QAAQ,GAAG5C,eAAjB,eAA0B7lB,KAAY,IAGzE,IAAMgZ,GAAc,OAAJkR,QAAI,IAAJA,OAAA,EAAAA,EAAMlR,WAAe,OAAJkR,QAAI,IAAJA,GAAA,UAAAA,EAAMlR,QAAQ6M,eAAd,eAAuB7lB,KAAY,GAEpE,OAAO8xC,EAAoB,CACvBl5B,SAAmB,OAAV4P,QAAU,IAAVA,OAAA,EAAAA,EAAY1oB,OAAQ,GAC7BkZ,UACAF,WACAC,WACAE,MAAK,OAAEuP,QAAF,IAAEA,OAAF,EAAEA,EAAYvP,SAwCrB64B,EAAsB,SAACtjC,GAgBzB,OATcjB,EAAaoL,QAAQ,SAAAH,GAC/B,OACIA,EAAEK,cAAgBrK,EAAOoK,SACzBJ,EAAEQ,UAAYxK,EAAOwK,SACrBR,EAAEM,WAAatK,EAAOsK,UACtBN,EAAEO,WAAavK,EAAOuK,UACtBP,EAAES,QAAUzK,EAAOyK,SAGd,IAGX2tE,EAAe,SAACC,EAAsBC,GAKxC,IAAID,EAAM,MAAO,CACbp+E,MAAO,EACP6H,SAAU,EACVy2E,cAAe,GAJlB,IAQG7tE,EAMA2tE,EANA3tE,eACAC,EAKA0tE,EALA1tE,eACA6tE,EAIAH,EAJAG,gBACAC,EAGAJ,EAHAI,uBACA72E,EAEAy2E,EAFAz2E,MACA82E,EACAL,EADAK,QAGEC,EAAuBx4C,YAA0B,OAAfq4C,QAAe,IAAfA,OAAA,EAAAA,EAAiB92E,QAAS,KAC9DuY,EAAWvP,EAAiBC,EAEhCsP,EAAoC,YAAX,OAAfu+D,QAAe,IAAfA,OAAA,EAAAA,EAAiBpmF,MACtB6nB,EAAU0+D,EACV1+D,GAAW0+D,GAAwB,GAExC,IAAMC,EAA8Bz4C,YAAiC,OAAtBs4C,QAAsB,IAAtBA,OAAA,EAAAA,EAAwB/2E,QAAS,KAO1E62E,EAAiBt+D,GANiC,YAAX,OAAtBw+D,QAAsB,IAAtBA,OAAA,EAAAA,EAAwBrmF,MAC1CwP,EAAQg3E,EACRh3E,GAASg3E,GAA+B,IAEhCz4C,YAAkB,OAAPu4C,QAAO,IAAPA,OAAA,EAAAA,EAASh3E,QAAS,KAGpCI,EAvHU,SAAC+vD,EAAsBjwD,GACvC,IAAM7J,EAAWkN,EAAiBkF,QAAQ,SAAAH,GAAC,MAAgB,OAAZA,EAAEtI,SAAgB,GAC3DoW,EAAI7S,EAAiBkF,QAAQ,SAAAH,GAAC,OAAIA,EAAEtI,QAAUmwD,KAAS,GAE7D,OAAG95D,EAASkK,cAAsB6V,EAAE/V,eACR,IAAzB+V,EAAE9V,mBAAgC,EAC9BJ,GAASkW,EAAE9V,mBAAqB,KAiHtB20B,CAAY2hD,EAAcC,GAG3C,MAAO,CACHt+E,MAHoBs+E,EAAgBz2E,EAIpCA,WACAy2E,kBAIR,MAAO,CACHliD,iBAxIqB,WACrB,IAAMwiD,KAA0B,OAAdtwE,QAAc,IAAdA,OAAA,EAAAA,EAAgBonD,iBAC5BmpB,IAAiBtyE,EAAaE,iBACpC,OAAOmyE,GAAaC,EAqIFziD,GAClBiN,sBACA60C,0BACAC,eACAW,uBAzG2B,SAACp3C,GAU5B,IAAMxqC,EAAU,CACZyhB,MAAO,CACH3e,MAAM,EACN6H,SAAS,EACTy2E,cAAc,GAElBl/D,MAAO,CACHpf,MAAM,EACN6H,SAAS,EACTy2E,cAAc,IAItB,KAAG,OAAC52C,QAAD,IAACA,OAAD,EAACA,EAAgB/oB,OAAM,OAAOzhB,EAEjC,IAAMyhB,EAAQu/D,EAAuB,OAACx2C,QAAD,IAACA,OAAD,EAACA,EAAgB/oB,OAGtD,GAFAzhB,EAAQyhB,MAAQw/D,EAAax/D,EAAO,MAEpC,OAAG+oB,QAAH,IAAGA,OAAH,EAAGA,EAAgBtoB,MAAM,CACrB,IAAMA,EAAQ8+D,EAAuB,OAACx2C,QAAD,IAACA,OAAD,EAACA,EAAgBtoB,OACtDliB,EAAQkiB,MAAQ++D,EAAa/+D,EAAO,MAGxC,OAAOliB,KC2LA6hF,GAjRsB,SAAC,GAI/B,IAHHC,EAGE,EAHFA,qBACAC,EAEE,EAFFA,QACAC,EACE,EADFA,mBACE,EAEa5kF,EAAO,gBAFpB,mBAEKe,EAFL,KAEQw5C,EAFR,KAGIhG,EAAWC,cACXC,EAAW37B,YAAYX,GAJ3B,EAKgCW,YAAY0P,IAAtCxD,EALN,EAKMA,WAAYW,EALlB,EAKkBA,UALlB,EAMqC7M,YAAY8rB,IAA3ChR,EANN,EAMMA,aAAcC,EANpB,EAMoBA,aACdxO,EAAuBvM,YAAY0P,IAAnCnD,mBACA/Z,EAAMN,EAAeypC,GAArBnpC,EACA2G,EAA6BwiC,EAA7BxiC,aAAca,EAAe2hC,EAAf3hC,WACdoR,EAAyCyB,EAAzCzB,aAAcD,EAA2B0B,EAA3B1B,SAAUI,EAAiBsB,EAAjBtB,MAAOS,EAAUa,EAAVb,MAE/BpX,EADyBuE,EAAzBK,qBACuC,GAAvC5E,cAZN,EAasCrP,qBAbtC,mBAaKwmF,EAbL,KAamBC,EAbnB,OAiBEnB,GAAkBlvC,GAFlB3S,EAfF,EAeEA,iBACA0iD,EAhBF,EAgBEA,uBAIJzlF,qBAAU,WACDsmB,GAAuByc,GAC5BgjD,EAAgBN,EAAuBn/D,MACxC,IAGH,IAQgC7U,EAR1B8V,EAAa,SAACa,GAChBotB,EAASzuB,GAAsBuvB,QAAQ/uB,WAAWa,KAGhD49D,EAAmB,WACrBH,GAAmB,IAcjBI,EAAgB,WAClB,IAAMC,EAAY,CACd,CACIC,MAAO,WACP93E,KAAM,cACNnL,MAAOqJ,EAAE,uBACT65E,OAAQ9gE,EAAMC,aACd5e,MAAQm/E,EAA6BA,EAAaxgE,MAAM2/D,cAAjC3/D,EAAMhX,MAC7BC,QAAS+W,EAAM/W,QACfuX,WAAYR,EAAMQ,YAEtB,CACIqgE,MAAO,WACP93E,KAAM,cACNnL,MAAOqJ,EAAE,yBACT65E,OAAQrgE,EAAMR,aACd5e,MAAQm/E,EAA6BA,EAAa//D,MAAMk/D,cAAjCl/D,EAAMzX,MAC7BC,QAASwX,EAAMxX,QACfuX,WAAYC,EAAMD,aAgD1B,OACI,cAAC,IAAMivC,SAAP,UACI,uBAAO/1D,UAAU,KAAjB,SACI,kCAEQknF,EAAU5oF,KAAI,SAAC+oF,EAAIj+E,GACf,OAAOi+E,EAAG93E,SAAW,qBAAYvP,UAAWqnF,EAAGF,MAA1B,UACjB,6BAAI,cAAC,EAAD,CAAMtnF,KAAMwnF,EAAGh4E,SACnB,6BAAKg4E,EAAGnjF,QACR,6BAAKmjF,EAAGD,SACR,6BAAKC,EAAGvgE,WAAa,IAAMugE,EAAG1/E,UAJJyB,MAhD9C,eAAC,IAAM2sD,SAAP,WACI,qBAAI/1D,UAAU,oBAAd,UACI,oBAAIsnF,QAAS,EAAb,SACK/5E,EAAE,6BAEP,6BAGSu5E,EAEGA,EAAaxgE,MAAM9W,SAAS5H,QAAQ,GAAGsH,QAAQ,KAAK,IADpDoX,EAAM9W,SAAS5H,QAAQ,GAAGsH,QAAQ,MAAM,SAKvD6X,EAAMxX,SAAW,qBAAIvP,UAAU,oBAAd,UACd,oBAAIsnF,QAAS,EAAb,SACK/5E,EAAE,6BAEP,6BAESu5E,EAEGA,EAAa//D,MAAMvX,SAAS5H,QAAQ,GAAGsH,QAAQ,KAAK,IADpD6X,EAAMvX,SAAS5H,QAAQ,GAAGsH,QAAQ,MAAM,SAKxD,+BACI,oBAAIo4E,QAAS,EAAb,SACK/5E,EAAE,wBAEP,6BAESu5E,GAEIA,EAAaxgE,MAAM3e,MAAQm/E,EAAa//D,MAAMpf,OAAOC,QAAQ,GAAGsH,QAAQ,MAAM,IAD/EiX,EAAave,QAAQ,GAAGsH,QAAQ,MAAM,oBA4DhEq4E,EAAkB,SAACn+D,GACrB,IAAM89D,EAAS,CACX,CACI73E,KAAM,UACNnL,MAAO,yBACPkL,MAAM,GAAD,OAAKga,EAAK1C,aAAV,YAA0BR,KAJxB,mBAONshE,IAgBQ,GAfL,CAAC,CACGn4E,KAAM,UACNnL,MAAO,yBACPkL,MAAM,GAAD,OAAKga,EAAKzC,aAAV,YAA0BT,IAEnC,CACI7W,KAAM,UACNnL,MAAO,yBACP86E,MAAM,EACN5vE,MAAM,GAAD,OAAKga,EAAKxC,cAAV,YAA2BV,IAEpC,CACI7W,KAAM,UACNnL,MAAO,yBACPkL,MAAM,GAAD,OAAKga,EAAKvC,aAAV,YAA0BX,MAtBhC,CAyBX,CACI7W,KAAM,iBACNnL,MAAO,oBACPkL,MAAM,GAAD,OAAKga,EAAKxkB,cAAV,YAA2BshB,IAEpC,CACI7W,KAAM,aACNnL,MAAO,mBACPkL,MAAM,GAAD,OAAKO,EAAgByZ,EAAK5Z,SAAW4Z,EAAK1Z,mBAA1C,YAAgEC,EAAgBuW,EAAW,QAIxG,OAAO,eAAC,IAAM6vC,SAAP,WACH,gCACI,gCAEQmxB,EAAU5oF,KAAI,SAAC+oF,GACX,OAAO,+BACH,6BAAiB,eAAZA,EAAGh4E,KACJ,sBAAMrP,UAAU,UAAhB,UAA4B2P,GAAiB,MAC3C,cAAC,EAAD,CAAM9P,KAAMwnF,EAAGh4E,SAEjBg4E,EAAGrI,MAAQ,+BAAKzxE,EAAE85E,EAAGnjF,OAAO+vB,cAAjB,SAGVozD,EAAGrI,MAAQ,6BAAKzxE,EAAE85E,EAAGnjF,OAAO+vB,gBAEjC,6BAAKozD,EAAGj4E,kBAM5B,qBAAKpP,UAAU,QAAf,SACI,gCACI,6BAAKuN,EAAE,wBACP,uCAAQ6b,EAAK5C,aAAa5e,QAAQ,GAAGsH,QAAQ,MAAM,IAAnD,YAA0DgX,cAMpEshE,EAAW,WACb,OAAOzyE,IAAepV,EAAesgB,KAGzC,OACI,sBAAKjgB,UAAWw8C,EAAE,aAAlB,UACI,sBAAKx8C,UAAWgD,EAAE+R,GAAlB,WAGSyyE,KACD,sBAAKxnF,UAAWw8C,EAAE,aAAcv1B,GAAhC,UACI,cAAC,KAAD,CAAU4rC,GAAI,SAAd,SACI,cAAC,EAAD,CAAMhzD,KAAK,cAAcG,UAAW61B,GAAwC,IAAxBA,EAAaxqB,OAAe,GAAK,WAAYpL,MAAO,kBAAMsoB,EAAW9F,GAAayE,YAE1I,yBACA,cAAC,KAAD,CAAU2rC,GAAI,SAAd,SACI,cAAC,EAAD,CAAMhzD,KAAK,cAAcG,UAAW81B,GAAwC,IAAxBA,EAAazqB,OAAe,GAAK,WAAYpL,MAAO,kBAAMsoB,EAAW9F,GAAakkB,eAIlJ,qBAAK5kC,IAAKi3E,WAAWh3E,IAAI,GAAGhC,UAAWw8C,EAAE,aAE5CoqC,IACK7iD,EAME,qBAAK/jC,UAAS,UAAKw8C,EAAE,aAAP,UAA6B16C,QAASklF,EAApD,oBACSF,EAAaxgE,MAAM3e,MAAQm/E,EAAa//D,MAAMpf,OAAOC,QAAQ,GAAGsH,QAAQ,MAAM,IADvF,YAC8FgX,KAN9F,qBAAKlmB,UAAS,UAAKw8C,EAAE,aAAP,UAA6B16C,QAASklF,EAApD,mBACQ7gE,EAAave,QAAQ,GAAGsH,QAAQ,MAAM,IAD9C,YACqDgX,MAS5DhS,EAAaE,kBAtOU3B,EAsOgCk0E,EApOxD,cAAC,GAAD,CAAOl0E,KAAMA,EAAMpP,OAAO,QAAQD,MAAM,QAAQukD,QAAS,kBAAMk/B,GAAmB,IAAlF,SACI,sBAAK7mF,UAAWw8C,EAAE,iBAAlB,UACI,6BAAKjvC,EAAE,wBACN05E,UA8Fa,SAACx0E,GAC3B,IAAMg1E,EAAW1gE,EAAMxX,QAEvB,OACI,cAAC,GAAD,CAAOkD,KAAMA,EAAMpP,OAAO,QAAQD,MAAOqkF,EAAW,QAAU,QAAS9/B,QAAS,kBAAMk/B,GAAmB,IAAzG,SACI,sBAAK7mF,UAAWw8C,EAAE,SAAlB,UACI,sBAAKx8C,UAAU,UAAU0B,MAAO,CAC5B0B,MAAOqkF,EAAW,QAAU,yBAC5BpgC,KAAMogC,EAAW,IAAM,QAF3B,UAII,cAAC,EAAD,CAAM5nF,KAAI,qBAAgB2nF,IAAa,MAAQ,MAC/C,6BAAKj6E,EAAE,0BACP,4BAAI+Y,EAAMC,eACTghE,EAAgBjhE,MAGjBmhE,GACA,sBAAKznF,UAAU,UAAf,UACI,cAAC,EAAD,CAAMH,KAAM,gBACZ,6BAAK0N,EAAE,0BACP,4BAAIwZ,EAAMR,eACTghE,EAAgBxgE,WA8G+C2gE,CAAsBf,OCjOnGgB,GAvD2B,SAAC,GAMnC,IALJjkF,EAKG,EALHA,SAKG,IAJHtD,gBAIG,MAJQ,QAIR,MAHHqS,YAGG,aAFH2sC,uBAEG,MAFe,CAAC,QAEhB,EADHt9C,EACG,EADHA,QACG,EAEYG,EAAO,oBAFnB,mBAEIe,EAFJ,KAEOw5C,EAFP,OAG2Bl8C,oBAAS,GAHpC,mBAGIuhE,EAHJ,KAGa+lB,EAHb,OAIiCtnF,oBAAS,GAJ1C,mBAIKunF,EAJL,KAIgBC,EAJhB,KAOH9mF,qBAAU,WACN,IACM+mF,EAAUt1E,EAAW,IAAJ,EAEvBw5B,YAAW,kBAAM67C,EAAar1E,KAHfA,EAAO,EAAI,KAI1Bw5B,YAAW,kBAAM27C,EAAWn1E,KAAOs1E,KAEpC,CAACt1E,IAGJ,IAYM5R,EAAiB,WACfiB,GAASA,KAGjB,OACI,qBACI9B,UAAWgD,EAlBE,WACjB,IAAMy8C,EAAO,CACTr/C,EACAynF,EAAY,OAAS,GACrBhmB,EAAU,UAAY,IAK1B,OAHGziB,EAAgB/zC,OAAS,GACxBo0C,EAAKn8C,KAAK,YAEPm8C,EASUuoC,IACblmF,QAAS,kBAAMjB,KACfa,MAAO,CACH,mBAAoB09C,EAAgB,GACpC,4BAA6BA,EAAgB,IAAMA,EAAgB,IAL3E,SAQI,qBAAKp/C,UAAWw8C,EAAE,UAAWp8C,GAA7B,SACKsD,OCxCFukF,GAjBW,SAACtjD,EAAUujD,GACjClnF,qBAAU,WACF,IAAMmnF,EAAW,SAAC18C,GAET9G,EAAI1jC,UAAW0jC,EAAI1jC,QAAQywD,SAASjmB,EAAM+C,SAG/C05C,EAAQz8C,IAIZ,OAFAnK,SAASh6B,iBAAiB,YAAa6gF,GACvC7mD,SAASh6B,iBAAiB,aAAc6gF,GACjC,WACH7mD,SAAS8mD,oBAAoB,YAAaD,GAC1C7mD,SAAS8mD,oBAAoB,aAAcD,MAEhD,CAACxjD,EAAKujD,KC+ZFG,GA7YkB,WAAM,MAEpBpmF,EAAO,WAFa,mBAE5Be,EAF4B,KAEzBw5C,EAFyB,QAGtBzQ,KACqBzrC,mBAAS,IAJR,mBAI5BgoF,EAJ4B,KAIjBC,EAJiB,OAKOjoF,mBAAS,IALhB,mBAK5BkoF,EAL4B,KAKbC,EALa,KAM7BC,EAAS3nF,iBAAuB,MANH,EAOCT,oBAAS,GAPV,mBAO5BqoF,EAP4B,KAOhBC,EAPgB,OAQCtoF,oBAAS,GARV,mBAQ5BuoF,EAR4B,KAQhBC,EARgB,OASOxoF,oBAAS,GAThB,mBAS5ByoF,EAT4B,KASbC,EATa,OAUO1oF,oBAAS,GAVhB,mBAU5B2oF,EAV4B,KAUbC,EAVa,OAWG5oF,oBAAS,GAXZ,mBAW5B6oF,EAX4B,KAWfC,EAXe,OAYL9oF,oBAAS,GAZJ,mBAY5BsmF,EAZ4B,KAYnByC,EAZmB,OAaGtuE,YAAY0P,IAA1CV,EAb2B,EAa3BA,aAAc1D,EAba,EAabA,YAba,EAcC/lB,mBAAS+lB,GAdV,oBAc5BijE,GAd4B,MAchBC,GAdgB,SAeajpF,oBAAS,GAftB,qBAe5BkpF,GAf4B,MAeTC,GAfS,MAiB7BjzC,IADU5yC,cACC6yC,eACXE,GAAKnL,KACH1hC,GAA0BtD,IAA1BsD,sBACFuwC,GAAYt5C,mBACZm2B,GAAOnc,YAAYkc,IACnB+xC,GAA0BjuD,YAAY0P,IAtBT,GAuBkB1P,YAAY8rB,IAAzDhR,GAvB2B,GAuB3BA,aAAcC,GAvBa,GAuBbA,aAAcuQ,GAvBD,GAuBCA,aAC9BqjD,GAAmB3oF,iBAAO,MAxBG,GAyBEga,YAAYX,GAAzCrE,GAzB2B,GAyB3BA,MAAOhD,GAzBoB,GAyBpBA,kBACT2jC,GAAW37B,YAAYX,GACrB7M,GAAMN,EAAeypC,IAArBnpC,EACArO,GAAyBg4B,GAAzBh4B,GA5B2B,IA4BFg4B,GAArBvyB,iBACcrE,mBAAS+lC,KA7BA,qBA6B5BsjD,GA7B4B,gBAiC/B/D,GAAkBlvC,KAFlB3S,GA/B+B,GA+B/BA,iBACA0iD,GAhC+B,GAgC/BA,uBAGAn/D,GAEA0hD,GAFA1hD,mBACAM,GACAohD,GADAphD,UAGA3R,GAEAygC,GAFAzgC,eACAlB,GACA2hC,GADA3hC,WAxC+B,GA0CKzU,qBA1CL,qBA0C5BwmF,GA1C4B,MA0CdC,GA1Cc,SA2CgBzmF,oBAAS,GA3CzB,qBA2C5BqmF,GA3C4B,MA2CNE,GA3CM,MA4C7Bz6E,GAAO,OAAG6J,SAAH,IAAGA,QAAH,EAAGA,GAAgB4/B,KAAKzpC,QA5CF,GA6CD9L,mBAAS,IA7CR,qBA6C5BspF,GA7C4B,MA6CjBC,GA7CiB,SA8CpB/uB,GAAkB,CAAC,KAAM,MAAO,OAAxCgvB,GA9C4B,qBAiDnC7B,GAAkBS,GAAQ,kBAAMU,GAAe,MAC/CpoF,qBAAU,WACDsmB,IAAuByc,IAC5BgjD,GAAgBN,GAAuBn/D,OACxC,IAEHtmB,qBAAU,WAEN,OADAq5C,GAAUp5C,QAAU,IAAIkJ,KACjB,WACH4/E,KACAC,KACA1lB,QAEL,IAEHtjE,qBAAU,WACN,GAAIoL,GACA,OAAIA,GAAQf,OAAS,EAAUw+E,GAAaz9E,GAAQhN,MAAM,GAAI,IACvDyqF,GAAaz9E,MAEzB,IAGH,IAiGsB69E,GAjGhB3lB,GAAoB,gBACYh6D,KAAZ,OAAlBgd,SAAkB,IAAlBA,QAAA,EAAAA,GAAoBhB,SACpBkwB,GAASlQ,GAAagR,QAAQ/Q,eAAe,CACzCzhB,MAAK,OAAEwC,SAAF,IAAEA,QAAF,EAAEA,GAAoBhB,MAC3B8C,KAAM3G,GAAayE,SAEvBsvB,GAASzgB,GAAUuhB,QAAQ5gB,aAAab,WAEVvrB,KAAZ,OAAlBgd,SAAkB,IAAlBA,QAAA,EAAAA,GAAoBP,SACpByvB,GAASlQ,GAAagR,QAAQ/Q,eAAe,CACzCzhB,MAAK,OAAEwC,SAAF,IAAEA,QAAF,EAAEA,GAAoBP,MAC3BqC,KAAM3G,GAAakkB,SAEvB6P,GAASzgB,GAAUuhB,QAAQ3gB,aAAab,OAU1Ci0D,GAA6B,WAC/B,GAAK1vC,GAAUp5C,QAAf,CACA,IAAMiJ,EAAWJ,GAAsBuwC,GAAUp5C,QAAS,IAAIkJ,MAC9DwsC,GAAGlL,MAAM,CACLp3B,SAAU,mBACViB,OAAQ,UACRpR,MAAOgG,IAEXmwC,GAAUp5C,aAAUqJ,IAGlB0/E,GAAsC,WACxC,GAAKjgE,EAAL,CACA,IAAM7f,EAAWJ,GAAsB,IAAIK,KAAK4f,GAAe,IAAI5f,MACnEwsC,GAAGlL,MAAM,CACLp3B,SAAU,mBACViB,OAAQ,aACRpR,MAAOgG,IAEXssC,GAASzuB,GAAsBuvB,QAAQvtB,kBAAazf,MAGlDme,GAAW,WAOb,GANA8gE,IAAeD,IACf9yC,GAASzuB,GAAsBuvB,QAAQ7uB,UAAU6gE,KACjD9yC,GAASzgB,GAAUuhB,QAAQzgB,kBAAlB,2BAAyCmyC,IAAzC,IAAkE3iD,aAAcijE,OACzF9yC,GAASzgB,GAAUuhB,QAAQ5gB,aAAab,KACxC2gB,GAASzgB,GAAUuhB,QAAQ3gB,aAAab,MAEnCwzD,IAAcpyD,GAAKnN,aAAc,CAClC,IAAMvd,EAAW09E,GAAiBznE,GAAayE,MAAOI,IAChDhS,EAAM,uBAAmB9I,EAAShK,KAAK,OACvC0H,EAAWJ,GAAsB,IAAIK,KAAK+sB,GAAKnN,cAAe,IAAI5f,MAExEwsC,GAAGlL,MAAM,CACLp3B,SAAU,mBACViB,SACApR,MAAOgG,MAMbggF,GAAmB,SAACC,EAAwB17E,GAC9C,IAAM2a,EAAgC3a,EAAK07E,GACrC39E,EAAqB,GAC3B,IAAK4c,EAAM,OAAO5c,EAElB,IAAMsL,EAAUsR,EAAKtR,QACf6P,EAAUyB,EAAKzB,QACfzP,EAAUkR,EAAKlR,QAOrB,OALIJ,GAAWA,EAAQiN,SAASvY,EAASlJ,KAAKwU,EAAQiN,QAAQ7gB,OAC1DyjB,GAAWA,EAAQtc,OAAS,GAC5BmB,EAASlJ,KAAKqkB,EAAQrpB,KAAI,SAAAoZ,GAAC,uBAAIA,EAAEqN,eAAN,aAAI,EAAW7gB,SAAO1B,KAAK,OAEtD0V,GAAWA,EAAQ6M,SAASvY,EAASlJ,KAAK4U,EAAQ6M,QAAQ7gB,OACvDsI,GAsBL49E,GAAgB,SAACtqF,GACnB62C,GAAGlL,MAAM,CACLp3B,SAAU,6BACViB,OAAQ,eACRpR,MAAOpE,IAGX02C,GAASlQ,GAAagR,QAAQ1Q,iBAAiB+iD,IAAS,KAExDU,GAAwBvqF,GACxBkqF,MAQEK,GAA0B,SAACvqF,GAC7B,OAAQA,GACJ,KAAK66B,GAAkB2vD,OACnB,MACJ,KAAK3vD,GAAkB4vD,MAEnB3pD,GAAU,CACNC,SAAU6oD,GAAiBzoF,QAC3B6/B,QAAQ,GAAD,OAAK5hC,GAAL,sCAAqCiL,KAAK0vD,MAA1C,QACP94B,YAAa,CAAEK,eAAiB+jD,GAAOrvD,IAA2B,SAAX,YAG3D,MACJ,KAAK6E,GAAkB6vD,MACnBxnD,GAASjwB,GAAkB9G,MAAnB,wCAA2D/M,GAA3D,YAAkE6W,SAAlE,IAAkEA,MAAS,GAAI,cAAC,GAAD,CAAiB2gC,SAAUA,GAAU7gB,aAAcA,GAAcC,aAAcA,GAAcuQ,aAAcsjD,MAClM,MACJ,QAAS,SAIXxE,GAAS,SAACl2C,GACZ,QAAKA,GACOA,EAAKp3B,QAAO,SAACk9C,GAAD,OAAmB,MAANA,KAC1B1pD,OAAS,GAOlBo/E,GAAU,kBAAM11E,KAAepV,EAAesgB,KAwDpD,OACI,sBAAKjgB,UAAWgD,IAAhB,UACI,cAAC,GAAD,CAAa4jF,QAASA,EAClBC,mBAAoB,SAACp0E,GAAD,OAAUo0E,GAAmBp0E,IACjDk0E,qBAAsBA,KAE1B,sBAAK3mF,UAAWw8C,EAAE,QAAlB,UACI,sBAAKx8C,UAAWw8C,EAAE,WAAlB,UACI,uBAAMx8C,UAAU,iBAAiB2kC,IAAK+jD,EAAQ5mF,QAAS,WAAQsnF,GAAe,IAA9E,UACI,cAAC,EAAD,CAAMppF,UAAU,gBAAgBF,KAAK,MAAMD,KAAK,UAxD5D,qBAAKG,UAAWw8C,EAAE,UAAlB,SACI,eAAC,GAAD,CACIp8C,SAAS,SACTqS,KAAM02E,EACN/pC,gBAAiB,CAACypC,GAAcF,EAAa,UAAY,QAH7D,UAKI,qBAAK3oF,UAAS,UAAKw8C,EAAE,UAAP,cACd,sBAAKx8C,UAAS,UAAKw8C,EAAE,UAAP,SAAd,UACKqsC,EACG,sBAAK7oF,UAAS,UAAKw8C,EAAE,UAAP,qBAAqC16C,QAAS,WAAQgnF,GAAeD,IAAnF,4BACgBt7E,GAAE,iCADlB,KAEI,cAAC,EAAD,CAAMvN,UAAU,uBAAuBF,KAAK,MAAMD,KAAK,wBAG3D,sBAAKiC,QAAS,WAAQgnF,GAAeD,IAAezrC,aAAc,WAAQwrC,GAAc,IAASvrC,aAAc,WAAQurC,GAAc,IAArI,4BACgBr7E,GAAE,iCADlB,KAEI,cAAC,EAAD,CAAMzN,KAAK,MAAMD,KAAI,qBAAgB8oF,EAAa,SAAW,SAEpEM,EACG,sBAAKjpF,UAAS,UAAKw8C,EAAE,UAAP,qBAAqC16C,QAAS,WAAQonF,GAAkBD,IAAtF,8BACkB17E,GAAE,iCADpB,KAEI,cAAC,EAAD,CAAMvN,UAAU,uBAAuBF,KAAK,MAAMD,KAAK,wBAE3D,sBAAKiC,QAAS,WAAQonF,GAAkBD,IAAkB7rC,aAAc,WAAQ4rC,GAAiB,IAAS3rC,aAAc,WAAQ2rC,GAAiB,IAAjJ,8BACkBz7E,GAAE,iCADpB,KAEI,cAAC,EAAD,CAAMzN,KAAK,MAAMD,KAAI,qBAAgBkpF,EAAgB,SAAW,qBAmC3Ee,IACG,cAAC,GAAD,CACI9pF,UAAWw8C,EAAE,eAAgBoqC,EAAU7xE,GAAa,IACpDA,WAAYA,GACZkpC,OAAO,SACPL,KAAMrwC,GAAGq5E,EAAgC,mBAAtB,qBACnB9mF,KAAO8mF,EAAwB,UAAd,YACjB3mF,MAAO,kBAAMopF,GAAYzC,MAK7B6D,MAAa7D,GACb,cAAC,GAAD,CACI5mF,UAAWw8C,EAAE,SACbznC,WAAYA,GACZ6oC,KACK7Z,GAAD,WAEQ+iD,GAAaxgE,MAAM3e,MAAQm/E,GAAa//D,MAAMpf,OAAOC,QAAQ,GAFrE,YAE2EggB,GAAU1B,UAFrF,UACO0B,GAAUzB,aADjB,YACiCyB,GAAU1B,UAG/CjmB,MAAO,kBAAM4mF,IAAmB,OAInCyC,IACD,mCACI,cAAC,GAAD,CACIv0E,WAAYA,GACZkpC,OAAO,SACPL,KAAMrwC,GAAE,sCACRzN,KAAK,UACLuP,KAAK,6BACLyuC,QAAQ,EACRD,UAAU,EACV59C,MAAOwoB,OAMf6gE,IACA,qCACI,cAAC,GAAD,CAAQxpF,KAAK,YAAYuP,KACrB,cAAC,GAAD,CACIxP,KAAK,QACLi+C,QAAM,EACNuB,UAAQ,EACRh8C,OAAO,YAEbpD,MAAOwoB,KAET,cAAC,GAAD,CACIw1B,OAAO,SACPj+C,UAAU,SACV49C,KAAMrwC,GAAE,sBACRzN,KAAK,YAELuP,KAAMo7E,KAAY,aAAe,SACjCxqF,MAnMJ,WACpBwpF,IAAmB,GAEnB9yC,GAAGlL,MAAM,CACLp3B,SAAU,8BACViB,OAAQ,eACRpR,MAAO,WAGXukF,EAAiB,YAEjBsB,cA4LQ,qBAAK/pF,UAAS,UAAKw8C,EAAE,YAAP,OAAoBgsC,GAAlC,SACI,sBAAKxoF,UAAWw8C,EAAE,cAAe96C,MAAO,CAAE2B,QA1LpC4mF,GA0LyD3oD,SAASya,KAAKkuC,aAzLrFA,GAAe3B,GAAWC,EAAa0B,IACpC3B,IAwLmG3jD,IAAK+kD,GAAnG,UACKvE,GAAOtvD,KAAiB,cAAC,GAAD,CAAgBpnB,KAAMonB,GAAcoQ,MAAO14B,GAAE,4BAA6B6b,KAAM,IACxG+7D,GAAOrvD,KAAiB,cAAC,GAAD,CAAgBrnB,KAAMqnB,GAAc1M,KAAM,IACnE,sBAAKppB,UAAWw8C,EAAE,UAAlB,UACI,cAAC,EAAD,CAAMx8C,UAAWw8C,EAAE,WAAY38C,KArF9C+pF,IATc,SAACx9E,GACpB,IACI,OAAOs+E,OAAQ,mBAA8Bt+E,EAA/B,SAChB,MAAO8B,GACL,OAAO,MAMJy8E,CAAef,IAAf,iBAAsCA,IADtB,gBAqF+C9pF,KAAK,UACvD,qBAAKE,UAAWw8C,EAAE,WAAlB,SAGI,cAAC,EAAD,CAAM38C,KAAK,eAAeC,KAAK,oBAK/C,0BAGJ,cAAC,GAAD,CAAO2S,KAAM+2E,GAAmBpmF,MAAM,QAAQukD,QAAS,kBAvL3D8hC,IAAmB,QACnBhB,EAAiB,KAsLb,SACI,sBAAKzoF,UAAWw8C,EAAE,gBAAlB,UACI,6BAAKjvC,GAAE,wBACP,sBAAKvN,UAAU,UAAf,UACI,cAAC,GAAD,CACIi+C,OAAO,SACPL,KAAMrwC,GAAE,qBACRzN,KAAK,YACLuP,KAAMo7E,KAAY,YAAc,QAChCxqF,MAAO,kBAAMmqF,GAAczvD,GAAkB4vD,UAEjD,cAAC,GAAD,CACItsC,OAAO,SACPL,KAAMrwC,GAAE,oBACRzN,KAAK,YACLuP,KAAMo7E,KAAY,WAAa,OAC/BxqF,MAAO,kBAAMmqF,GAAczvD,GAAkB6vD,QAC7CznF,SAAsC,KAA5BgQ,GAAkB9G,oBCvVzC2+E,GA/D2B,SAAC,GAOnC,IANJt7E,EAMG,EANHA,MACAzP,EAKG,EALHA,KACAiU,EAIG,EAJHA,SACA3E,EAGG,EAHHA,WACAgsB,EAEG,EAFHA,WACAj3B,EACG,EADHA,MACG,EAEYjC,EAAO,mBAFnB,mBAEIe,EAFJ,KAEOw5C,EAFP,KAGIjvC,EAAKN,EAAe8N,YAAYX,IAAhC7M,EAHJ,EAIYutD,GAAkB,CAAC,OAA3BgvB,EAJJ,oBAUH,OACI,sBAAK9pF,UAAWgD,IAAhB,UAGam4B,EAgBG,qBAAKn7B,UAAWw8C,EAAE,WAAlB,SACI,iDAhBJ,sBAAKx8C,UAAWw8C,EAAE,WAAlB,WAESstC,GACG,8BACI,sBAAM9pF,UAAU,QAAhB,SAAyBsP,IACzB,sBAAMtP,UAAU,WAAhB,SAA4BuN,EAAErJ,QAI1C,6BAAKrE,IAEHiU,GAAY,cAAC,EAAD,CAAMjU,KAAK,QAAQC,KAAK,SACnCgU,GAAY,2BAU/B,oBAAI9T,UAAWw8C,EAAE,UAAjB,SAEQrtC,EAAW7Q,KAAI,SAAC8K,EAAOmS,GACnB,OACI,qBAAY7Z,MAAO,CAACstD,QAAS5lD,EAAElF,MAAQ,QAAU,QAAjD,UACA,yBACA,gCAAQqJ,EAAEnE,EAAElF,WAFHqX,YCjBtBsvE,GArCqB,WAAO,MAExB5oF,EAAO,aAFiB,mBAEhCe,EAFgC,aAGH1C,oBAAS,IAHN,mBAGhCwqF,EAHgC,KAGpBC,EAHoB,KAIhC9jF,EAAiBT,IAAjBS,cAJgC,EAKL3G,qBALK,mBAKhC0qF,EALgC,KAKrBC,EALqB,OAML3qF,qBANK,mBAMhC4qF,EANgC,KAMrBC,EANqB,KAUvCnqF,qBAAU,WACNiG,EAAcmkF,YAAQvsF,MAAM,SAAA8P,GAAC,OAAIs8E,EAAat8E,MAC9C1H,EAAcokF,YAAQxsF,MAAM,SAAA8P,GAAC,OAAIw8E,EAAax8E,QAC/C,IAGH,IAAM28E,EAAiB,SAACC,GACpBt/C,YAAW,WACP8+C,EAAcQ,KACfA,EAAU,EAAI,MAGrB,OACI,qBAAKvrF,UAAWgD,IACZo6C,aAAc,kBAAMkuC,GAAe,IACnCjuC,aAAc,kBAAMiuC,GAAe,IAFvC,SAOQN,GACA,qBAAKhrF,UAAW8qF,EAAa,MAAQ,MAAO/oF,IAAK+oF,EAAaE,EAAYE,EAAWlpF,IAAI,QCD1F0zD,GA9BoB,SAAC,GAI5B,IAHJ9X,EAGG,EAHHA,KACA4tC,EAEG,EAFHA,SACA/4E,EACG,EADHA,KACG,EAEYxQ,EAAO,WAFnB,mBAEIe,EAFJ,KAEOw5C,EAFP,KAGGmS,EAAcrtB,SAASC,eAAe,UAM5C,OAAO2tB,IAASC,aACZ,sBAAKnvD,UAAWgD,EAAGyP,EAAO,OAAS,IAAnC,WAES+4E,GACD,cAAC,GAAD,CAAS5oF,MAAO,yBAKhBg7C,GACA,oBAAI59C,UAAWw8C,EAAE,QAAjB,SAA2BoB,OAG3B+Q,IC0QD88B,GAjRyB,WAAO,MAE5BxpF,EAAO,iBAFqB,mBAEpCe,EAFoC,KAEjCw5C,EAFiC,KAGrC74C,EAAUC,cAH2B,EAIGtD,qBAJH,mBAIpCorF,EAJoC,KAInBC,EAJmB,KAKnCl9E,EAASsM,YAAY4qB,IAArBl3B,KALmC,EAMAsM,YAAY0P,IAA/CnD,EANmC,EAMnCA,mBAAoBL,EANe,EAMfA,WACtBuvB,EAAWC,cACXuyB,EAA0BjuD,YAAY0P,IACpC1H,EAAyBhI,YAAY+K,IAArC/C,qBATmC,EAUHziB,qBAVG,mBAUpCsrF,EAVoC,KAUrBC,EAVqB,KAWrCl1C,EAAKnL,KACHwD,EAAmB5B,KAAnB4B,eACF4H,EAAO7K,KACP+/C,EAAc/qF,mBAduB,EAeHT,mBAAS,GAfN,mBAepCyrF,EAfoC,KAetBC,EAfsB,KAgBrCt1C,EAAW37B,YAAYX,GACrB7M,EAAMN,EAAeypC,GAArBnpC,EAjBmC,EAkBbjN,oBAAS,GAlBI,mBAkBpC8N,EAlBoC,KAkB3B69E,EAlB2B,OAmBgBpP,KAAnDz4C,EAnBmC,EAmBnCA,qBAAsBC,EAnBa,EAmBbA,YAAaC,EAnBA,EAmBAA,YAnBA,EAoBoBshD,GAAkBlvC,GAAzE3S,EApBmC,EAoBnCA,iBAAkBiN,EApBiB,EAoBjBA,oBAAqB80C,EApBJ,EAoBIA,aAG/C9kF,qBAAU,WACNirF,GAAW,GACXC,MACF,CAAC5kE,EAAoBvE,IAEvB/hB,qBAAU,YAEHyN,EAAK,GAAG0sB,YAAc1sB,EAAK,GAAG0sB,aAC7BwwD,EAAmBl9E,EAAK,IAG5Bu9E,EAAgBv9E,EAAKoJ,QAAQ,SAAA2N,GAAC,OAAKA,EAAE2V,cAAY9vB,UAEnD,CAACoD,IAGH,IAAMy9E,EAA8B,WAChCjgD,YAAW,WACPggD,GAAW,GADE,MAIgCE,GAAe7kE,EAAoBL,GAAxEid,EAJK,EAILA,iBAAkBC,EAJb,EAIaA,eAC1B0nD,EAA8B,UAAf5kE,GACfuvB,EAASxS,GAAkBsT,QAAQrT,oBAAoB,CACnD3c,mBAAoBA,EACpBL,WAAYA,EACZid,iBAAkBA,EAClBC,eAAgBA,EAChBphB,qBAAsBA,EACtBqhB,qBAAsBA,EACtBC,YAAaA,EACbC,YAAaA,EACbP,mBACAQ,uBAGL,MAEDA,EAAkB,SAAC72B,EAMtB0b,GACC,IAAM28D,EAAQ/0C,EAAoBtjC,GAC5B4B,EAAQw2E,EAAaC,EAAO38D,GAClC,MAAM,GAAN,OAAU9Z,EAAM3H,MAAhB,YAAyB28B,MAQvB6nD,GAAiB,SAACC,EAAQziC,GAAY,IAChCrjC,EAAiB8lE,EAAjB9lE,MAAOS,EAAUqlE,EAAVrlE,MACTqC,EAAc,UAAPugC,EAAiBrjC,EAAQS,EAChC9H,KAAYmK,EAAKtR,QAAQiN,QAAQ9F,WAAamK,EAAKtR,QAAQiN,QAAQ9F,UAAU5T,OAAS,IAAI+d,EAAKtR,QAAQiN,QAAQ9F,UAErH,OAAGA,EASQ,CACHilB,iBAAkB,CATH3G,GAAyBte,EAAU,GAAI8D,GACvCwa,GAAyBte,EAAU,GAAI8D,GACvCwa,GAAyBte,EAAU,GAAI8D,IAQtDohB,eAAgB,CANK5F,GAA8Btf,EAAU,GAAI8D,GAC5Cwb,GAA8Btf,EAAU,GAAI8D,GAC5Cwb,GAA8Btf,EAAU,GAAI8D,KAQlE,CACHmhB,iBAAkB,GAClBC,eAAgB,KAoBlBkoD,GAAoB,WAAO,IAAD,oBACpBl9E,EAAwBu8E,EAAxBv8E,WAAY4V,EAAY2mE,EAAZ3mE,QACZ3V,EAAUD,EAAW,GAArBC,MAEFuY,EAAUikE,EAAa,UAC7B5iB,EAAwB1hD,0BADK,iBAC7B,EAA4ChB,aADf,aAC7B,EAAmDqB,QADtB,UAE7BqhD,EAAwB1hD,0BAFK,iBAE7B,EAA4CP,aAFf,aAE7B,EAAmDY,QAE7CzP,EAAU0zE,EAAa,UAC7B5iB,EAAwB1hD,0BADK,iBAC7B,EAA4ChB,aADf,aAC7B,EAAmDpO,QADtB,UAE7B8wD,EAAwB1hD,0BAFK,iBAE7B,EAA4CP,aAFf,aAE7B,EAAmD7O,QAE7CkR,EAAQ,CACVtR,QAAS,CACLgN,MAAOyZ,GAA8BxZ,EAAQ7lB,GAAI6jB,GACjDgC,QAASwY,GAAyBxY,EAAQ7lB,GAAI6jB,GAC9C2E,WAAY0W,GAAsChvB,EAAO2T,IAE7D4E,QAASA,EACTzP,QAASA,GAGb,MAAO,CACHoO,MAAOslE,EAAgBxiE,EAAH,UAAU4/C,EAAwB1hD,0BAAlC,aAAU,EAA4ChB,MAC1ES,MAAO6kE,EAAa,UAAG5iB,EAAwB1hD,0BAA3B,aAAG,EAA4CP,MAAQqC,IAwB7EkjE,GAAiB,SAAC1lF,GAAc,IAAD,YAC7BkR,EAAUk3B,EAAe,CACzB9vC,GAAI0H,EAAIme,QAAQ7lB,GAChBukB,QAAS7c,EAAIme,QAAQtB,QACrBoB,OAAQ3I,GAAe0C,QACvBqwB,KAAMlsB,IAEVjL,GAAiB,QAAP,EAAAA,SAAA,eAAS0E,QAAe,QAAP,EAAA1E,SAAA,eAAS0E,KAAKnR,QAAS,EAAIyM,OAAUxN,EAEhE,IAAIqd,EAAUqnB,EAAe,CACzB9vC,GAAI0H,EAAIuI,WAAW,GAAGC,MACtByV,OAAQ3I,GAAe6D,QACvBkvB,KAAMlsB,IAEV4E,GAAiB,QAAP,EAAAA,SAAA,eAASnL,QAAe,QAAP,EAAAmL,SAAA,eAASnL,KAAKnR,QAAS,EAAIsc,OAAUrd,EAEhE,IAOIiiF,EAPAr0E,EAAU82B,EAAe,CACzB9vC,GAAI0H,EAAIuI,WAAW,GAAGC,MACtByV,OAAQ3I,GAAeqE,QACvB0uB,KAAMlsB,IASV,OAPA7K,GAAiB,QAAP,EAAAA,SAAA,eAASsE,QAAe,QAAP,EAAAtE,SAAA,eAASsE,KAAKnR,QAAS,EAAI6M,OAAU5N,EAG7DwN,IAAQy0E,EAAe,CAAE1nE,OAAQ3I,GAAe0C,QAASmG,QAASjN,IAClE6P,IAAY7P,IAAQy0E,EAAc,CAAE1nE,OAAQ3I,GAAe6D,QAASgF,QAAS4C,KAC7EzP,GAAYJ,GAAY6P,IAAQ4kE,EAAc,CAAE1nE,OAAQ3I,GAAeqE,QAASwE,QAAS7M,IAErF,CACHzJ,KAAM,CACFqJ,UACA6P,UACAzP,WAEJs0E,QAASD,IAiBjB,OACI,sBAAKvsF,UAAWgD,IAAM,QAAtB,UACI,cAAC,GAAD,CAASyP,KAAMrE,IAEf,sBAAKpO,UAAWw8C,EAAE,WAAlB,UACI,cAAC,GAAD,CACI0B,YAAY,QACZj+C,MAzJH,WACTu2C,EAASzuB,GAAsBuvB,QAAQ/uB,WAAWqjE,EAAgBnpE,GAAayE,MAAQzE,GAAakkB,QACpGhjC,EAAQL,KAAKU,EAAOW,iBAAiBb,OAwJzB85C,KAAMrwC,EAAE,uCACR8B,KAAK,yBACL2uC,aAAa,OAAOl+C,KAAK,cAE7B,cAAC,GAAD,CAAQ89C,KAAMrwC,EAAE,sCAAwC8B,KAAK,QAAQivC,SAAS,MAAMr+C,MA/HjF,WAEX,IAAM6pE,EAAQuiB,KAER9mD,EAAI,2BACHyjC,GADG,IAEN1hD,mBAAoBwiD,IAGxBtzB,EAASzgB,GAAUuhB,QAAQzgB,kBAAkB0O,IAC7CiR,EAASzuB,GAAsBuvB,QAAQjvB,iCAAiCyhD,IACxEtzB,EAASzuB,GAAsBuvB,QAAQ/uB,WAAWqjE,EAAgBnpE,GAAayE,MAAQzE,GAAakkB,QAEpGhjC,EAAQL,KAAKU,EAAOW,iBAAiBb,OAkHsEf,cAlFhFuH,IAApBohF,OAsFH,qBAAK1rF,UAAWw8C,EAAE,QAASuvC,EAAe,EAAI,SAAW,IAAzD,UAES39E,GAAWK,EAAKnQ,KAAI,SAACyqB,EAAM5Q,GACxB,IAAG4Q,EAAKoS,WAER,OAAS,sBAAKr5B,QAAS,kBAxFrB,SAACinB,GAChB+iE,EAAY7qF,QACX6qF,EAAY7qF,SAAU,EAIvB8nB,EAAKoS,aACRwwD,EAAmB5iE,GACnB4tB,EAAGlL,MAAM,CACLp3B,SAAU,8BACViB,OAAQ,eACRpR,MAAOqJ,EAAEwb,EAAK7kB,MAAO,WA6EoBuoF,CAAc1jE,IAC/B/oB,UAAWw8C,EAAE,OAAQ,CAACzzB,EAAK7pB,IAAmB,OAAfwsF,QAAe,IAAfA,OAAA,EAAAA,EAAiBxsF,MAAO6pB,EAAK7pB,GAAK,WAAa,KADjF,UAIG,sBAAKc,UAAWw8C,EAAE,aAAlB,UACI,gCAAQjvC,EAAEwb,EAAK7kB,SAEXooF,GAAevjE,GAAMyjE,SACrB,qBAAK1qF,QAAS,kBAzCzC,SAAC8E,GACVklF,EAAY7qF,SAAU,EACtB,IAAMyrF,EAAcJ,GAAe1lF,GAC/B8lF,EAAYF,UAChBh2C,EAASnzB,GAAci0B,QAAQ9yB,oBAAoBkoE,EAAYF,QAAQznE,UACvEyxB,EAAStd,GAAiBoe,QAAQtd,sBAAsB0yD,EAAYj+E,OACpE+nC,EAAStd,GAAiBoe,QAAQ7d,iBAAiBizD,EAAYF,QAAQ3nE,SACvE2xB,EAAStd,GAAiBoe,QAAQld,YAAYp2B,EAAOc,eAErD8xC,EAAKnzC,MAAMO,EAAOiB,iBAgCsCuX,CAAKuM,IAAzB,SAEI,cAAC,GAAD,SAKZ,cAAC,GAAD,CACIjV,UAAyB,OAAf43E,QAAe,IAAfA,OAAA,EAAAA,EAAiBxsF,MAAO6pB,EAAK7pB,GACvCW,KAAMkpB,EAAKhE,QAAQllB,KACnByP,MAAOyZ,EAAKhE,QAAQzV,MACpBpL,MAAO6kB,EAAKmS,SACZ/rB,WAAY4Z,EAAK5Z,WACjBgsB,WAAYpS,EAAKoS,eAnBhBhjB,YC1QnCw0E,GAAiB,CACnBC,cAAe,CACX,CAAE1oF,MAAO,SAAUkL,MAAO,UAC1B,CAAElL,MAAO,YAAakL,MAAO,aAC7B,CAAElL,MAAO,cAAekL,MAAO,eAC/B,CAAElL,MAAO,aAAckL,MAAO,eAElCy9E,cAAe,CACXC,OAAQ,CACJ,CAAE5oF,MAAO,cAAekL,MAAO,eAC/B,CAAElL,MAAO,aAAckL,MAAO,eAElC29E,UAAW,CACP,CAAE7oF,MAAO,cAAekL,MAAO,eAC/B,CAAElL,MAAO,aAAckL,MAAO,eAElC49E,WAAY,CACR,CAAE9oF,MAAO,SAAUkL,MAAO,UAC1B,CAAElL,MAAO,YAAakL,MAAO,aAC7B,CAAElL,MAAO,cAAekL,MAAO,gBAEnC69E,YAAa,CACT,CAAE/oF,MAAO,aAAckL,MAAO,eAElC89E,KAAK,IAETnkE,KAAM,CACF,CAAE7kB,MAAO,WAAYkL,MAAO,YAC5B,CAAElL,MAAO,MAAOkL,MAAO,OACvB,CAAElL,MAAO,SAAUkL,MAAO,WAE9B1J,YAAa,CACT,CAAExB,MAAM,yBAA0BkL,MAAO,YACzC,CAAClL,MAAM,sBAAuBkL,MAAO,UAEzC+9E,WAAY,CACR,CAAEjpF,MAAM,WAAYkL,MAAO,YAC3B,CAAClL,MAAM,cAAekL,MAAO,iBAQtBg+E,GAnDM,CACjB,CAAE7sF,MAAO,cAAe2D,MAAO,wBAAyBmL,KAAM,MAAOnQ,GAAI,MAAOm/C,MAAM,GACtF,CAAE99C,MAAO,cAAe2D,MAAO,yBAA0Bm6C,MAAM,GAC/D,CAAE99C,MAAO,cAAe2D,MAAO,gBAAiBm6C,MAAM,ICuE3CgvC,GA5D6B,SAAC,GAEtC,EADHptC,SACI,IAAD,EAEYh+C,EAAO,qBAFnB,mBAEIe,EAFJ,KAEOw5C,EAFP,KAGGme,EAAQyyB,GACR52C,EAAWC,cACTlpC,EAAMN,EAAe8N,YAAYX,IAAjC7M,EAGRvM,qBAAU,WACNw1C,EAASlf,GAAeggB,QAAQvtB,cAAa,IAAI5f,MAAOC,kBACzD,IAQH,OACI,sBAAKpK,UAAWgD,IAAhB,UACI,qBAAKhD,UAAWw8C,EAAE,eAAlB,SACI,6BACKjvC,EAAE,qCAMX,qBAAKvN,UAAWw8C,EAAE,kBAAlB,SAEKme,EAAMr8D,KAAI,SAACm7D,EAAMthD,GACd,OAAO,qBAAKnY,UAAWw8C,EAAE,QAAS16C,QAAS,kBAlBvC,EAkBwD23D,GAlBvDv6D,QAAoB,EAAhBgF,MAAN,IAAC,GAkBG,SAEH,sBAAKlE,UAAWw8C,EAAE,kBAAmB,CAACid,EAAKpb,KAAO,OAAS,KAA3D,UAEI,cAAC,EAAD,CAAMx+C,KAAM45D,EAAKl5D,MAAOT,KAAK,UAC7B,sBAAKE,UAAU,OAAf,UAEQy5D,EAAKpqD,MACL,+BACI,cAAC,EAAD,CAAMxP,KAAM45D,EAAKpqD,KAAMvP,KAAK,YAGpC,gCAAQyN,EAAEksD,EAAKv1D,SAEbu1D,EAAKpb,MAAoB,QAAZob,EAAKv6D,GAAc,iCAASqO,EAAE,+BAAyC,GAEpFksD,EAAKpb,MAAoB,QAAZob,EAAKv6D,GAAc,iCAASqO,EAAE,+BAAyC,UAhB1B4K,YC6C7Em1E,GA/EqB,SAAC,GAK7B,IAAD,MAJH1/D,eAIG,MAJO,GAIP,EAHHqyB,EAGG,EAHHA,SACA7wC,EAEG,EAFHA,MACAm+E,EACG,EADHA,YACG,EAEYtrF,EAAO,YAFnB,mBAEIe,EAFJ,KAEOw5C,EAFP,OAKoCl8C,oBAAS,GAL7C,mBAKIktF,EALJ,KAKiBC,EALjB,KAQGC,EAAgB,SAACj7E,GAEnBw5B,YAAW,WACPwhD,EAAeh7E,KAFLA,EAAO,EAAI,MAWvBk7E,EAAe,WACjBD,GAAeF,IAObI,EAAkB,WACpB,IAAM1pE,EAAQ0J,EAAQ/V,QAAQ,SAAAH,GAAC,OAAIA,EAAEtI,QAAUA,KAC/C,OAAoB,IAAjB8U,EAAM7Y,OAAoB,KACtB6Y,EAAM,IAGX2pE,EAAsB,SAAC7/B,GAAqB,IAAD,EAC7C,OAAGA,EAAO5+C,SAAP,UAAiBw+E,WAAjB,aAAiB,EAAmBx+E,OAC5B,WAEJ,IAGX,OACI,sBAAKpP,UAAWgD,EAAEuqF,GAAczrF,QAAS6rF,EAAzC,UAEI,wBACI3tF,UAAWw8C,EAAE,QAAS,CAACptC,EAAQ,YAAc,KADjD,mBAEMw+E,WAFN,aAEM,EAAmB1pF,QAEzB,wBACI4vE,OAzBQ,WAChB4Z,GAAc,IAyBN5rF,QAAS6rF,EACT3tF,UAAWw8C,EAAE,SAHjB,SAKI,cAAC,EAAD,CAAO18C,KAAM0tF,EAAc,KAAO,OAAS5qF,MAAM,WAKjD4qF,GACA,oBAAIxtF,UAAWw8C,EAAE,WAAjB,SAEQ5uB,GAAWA,EAAQtvB,KAAK,SAACwvF,EAAK31E,GAAN,OACpB,oBAAIrW,QAAS,kBA/CfksD,EA+CkC8/B,EA9CpDJ,GAAc,QACXztC,GAASA,EAAS+N,EAAO5+C,QAFX,IAAC4+C,GA+CoDhuD,UAAW6tF,EAAoBC,GAAjF,SACKA,EAAI5pF,OADkCiU,YCrDxD41E,GAnBwB,SAAC,GAGhC,IAFJ5mC,EAEG,EAFHA,SACAlN,EACG,EADHA,GACG,EAEYh4C,EAAO,gBAFnB,mBAEIe,EAFJ,KAEOw5C,EAFP,KASH,OACI,qBAAKx8C,UAAWgD,EAAGi3C,EAAK,KAAO,OAAQn4C,QAL7B,WACPqlD,GAASA,GAAUlN,IAItB,SACI,sBAAMj6C,UAAWw8C,EAAE,cCwBhBwxC,GApCyB,SAAC,GAIjC,IAHJ5+E,EAGG,EAHHA,MAGG,IAFHwe,eAEG,MAFO,GAEP,EADHu5B,EACG,EADHA,SACG,EAEYllD,EAAO,iBAFnB,mBAEIe,EAFJ,KAEOw5C,EAFP,KASGyxC,EAAc,SAACjgC,GACjB,OAAI5+C,GACIA,IAAU4+C,EAAO5+C,MAAS,WADhB,IAQtB,OACI,qBAAKpP,UAAWgD,IAAhB,SAEQ4qB,EAAQtvB,KAAI,SAAC0vD,EAAQ71C,GAAT,OACR,qBAAKnY,UAAWw8C,EAAE,SAAU,CAACyxC,EAAYjgC,KACrClsD,QAAS,kBATZ,SAACksD,GACX7G,GAASA,EAAS6G,EAAO5+C,OAQG8+E,CAASlgC,IAD5B,SAEKA,EAAO9pD,OAF6CiU,SCsI9Dg2E,GAxJ8B,SAAC,GAEtC,IAAD,IADH16E,cACG,WAMCsH,YAAY6c,IAHZR,EAHD,EAGCA,cACAC,EAJD,EAICA,cACA3xB,EALD,EAKCA,YAEE8wC,EAAWC,cAPd,EASYx0C,EAAO,sBATnB,mBASIe,EATJ,KASOw5C,EATP,OAUuCl8C,qBAVvC,mBAUIssF,EAVJ,KAUmBwB,EAVnB,OAWuC9tF,qBAXvC,mBAWIusF,EAXJ,KAWmBwB,EAXnB,OAeqB/tF,qBAfrB,mBAeIyoB,EAfJ,KAeU8yB,EAfV,OAgBiCv7C,mBAAS,GAhB1C,mBAgBIguF,EAhBJ,KAgBgBC,EAhBhB,OAiBiCjuF,mBAAS,IAjB1C,mBAiBI6sF,EAjBJ,KAiBgBqB,EAjBhB,KAkBKjhF,EAAMN,EAAe8N,YAAYX,IAAjC7M,EAiBRvM,qBAAU,WACNqtF,OAAiB/jF,KAClB,CAACsiF,IAEJ5rF,qBAAU,WACNutF,EAAc,KACf,CAACl3D,IAEJr2B,qBAAU,WACN66C,OAAQvxC,KACT,CAAC8sB,IAqBJ,OACI,sBAAKp3B,UAAWgD,EAAGyQ,EAAuB,GAAd,aAA5B,UAEI,sBAAKzT,UAAWw8C,EAAE,WAAlB,UACI,gCAAQjvC,EAAE,mCAEV,cAAC,GAAD,CACI0yC,SAAU,SAAC7wC,GAAD,OAAWg/E,EAAiBh/E,IACtCA,MAAOw9E,EACPh/D,QAAS++D,GAAeC,mBAIhC,sBAAK5sF,UAAWw8C,EAAE,WAAlB,UACI,gCAAQjvC,EAAE,mCAEV,cAAC,GAAD,CACI0yC,SAAW,SAAAlnC,GAAC,OAAIs1E,EAAiBt1E,IACjC3J,MAAOy9E,EACPj/D,QArCgB,WAC5B,IAAMtiB,EAAMshF,GAAgCr/E,EAAE,0BAE9C,OADgBo/E,GAAeE,cAAcvhF,GAmCxBmjF,QAEjB,sBAAKzuF,UAAWw8C,EAAE,WAAlB,UACI,wBAAOx8C,UAAYo3B,EAA2C,GAA3B,yBAAnC,UACK7pB,EAAE,sBACH,cAAC,GAAD,CAAa0sC,GAAI7iB,EAAe+vB,SAAW,SAAApuC,GAnCvDy9B,EAASlf,GAAeggB,QAAQ9f,2BAwCpBJ,GACA,cAAC,GAAD,CACIhoB,MAAO2Z,EACPk3B,SAAW,SAAAlnC,GAAC,OAAI8iC,EAAQ9iC,IACxB6U,QAAS++D,GAAe5jE,UAIpC,sBAAK/oB,UAAWw8C,EAAE,WAAlB,UACI,wBAAOx8C,UAAYq3B,EAA2C,GAA3B,yBAAnC,UACK9pB,EAAE,sBACH,cAAC,GAAD,CAAa0sC,GAAI5iB,EAAe8vB,SAAW,SAAApuC,GA/CvDy9B,EAASlf,GAAeggB,QAAQ7f,2BAkDpBJ,GACA,sBAAKr3B,UAAWw8C,EAAE,uBAAlB,UACI,yDACA,gCACI,uCACI,cAAC,KAAD,CACIlpB,KAAK,IACLwwD,MAAO,EACPC,KAAM,EACNC,KAAM,GACNtsE,EAAG42E,EACHzK,OArGZ,CAChB6K,MAAO,CACHtvC,gBAAiB,WAErBrB,OAAQ,CACJqB,gBAAiB,cACjBiQ,aAAc,OAElBs/B,MAAO,CACHvrF,MAAO,GACPC,OAAQ,GACRmzD,QAAS,IA2FerP,SAAU,gBAAEzvC,EAAF,EAAEA,EAAF,OAAS62E,EAAc72E,MAEzC,gDAMhB,sBAAK1X,UAAWw8C,EAAE,WAAlB,UACI,kCAAQjvC,EAAE,iCAAV,OAEA,cAAC,GAAD,CACI6B,MAAO1J,EACPyhD,SAAW,SAAApuC,GAAC,OAxEJ+9B,EAwEuB/9B,OAvE3Cy9B,EAASlf,GAAeggB,QAAQ3f,eAAemf,IAD5B,IAACA,GAyERlpB,QAAS++D,GAAejnF,iBAEhC,sBAAK1F,UAAWw8C,EAAE,WAAlB,UACI,gCAAQjvC,EAAE,mCAEV,cAAC,GAAD,CACI6B,MAAO+9E,EACPhmC,SAAW,SAAApuC,GAAC,OAAIy1E,EAAcz1E,IAC9B6U,QAAS++D,GAAeQ,oBC9F7ByB,GAxD2B,SAAC,GAGnC,IAAD,IAFHpT,aAEG,MAFK,GAEL,EADH91E,EACG,EADHA,YACG,EAGYzD,EAAO,mBAHnB,mBAGIe,EAHJ,KAGOw5C,EAHP,OAIqBl8C,mBAAS,GAJ9B,mBAIIoqB,EAJJ,KAIUggD,EAJV,KAKKn9D,EAAMN,EAAe8N,YAAYX,IAAjC7M,EAKFshF,EAAc,WAChB,OAAgB,IAATnkE,GAGLkgD,EAAa,WACf,OAAQ4Q,EAAMnwE,SAAYqf,EAAO,GAQ/BuF,EAAW,WACV4+D,KACHnkB,EAAQhgD,EAAO,IAInB,OACI,sBAAK1qB,UAAWgD,EAAE0C,GAAlB,UACI,sBAAK1F,UAAWw8C,EAAE,UAAlB,UAEI,wBAAQ16C,QAASmuB,EAAjB,SACI,cAAC,EAAD,CAAOnwB,KAAK,OAAOgC,QAASmuB,EAAUltB,SAAU8rF,QAEpD,wBAAQ/sF,QAlBH,WACT8oE,KACJF,EAAQhgD,EAAO,IAgBP,SACI,cAAC,EAAD,CAAO5qB,KAAK,QAAQiD,SAAU6nE,WAKtC,wBAAO5qE,UAAWw8C,EAAE,QAApB,kBAAmC9xB,EAAO,EAA1C,OAEA,mBAAG1qB,UAAWw8C,EAAE,eAAhB,SAAiCjvC,EAAEiuE,EAAM9wD,GAAMzM,eAE/C,qBAAKje,UAAWw8C,EAAE,SAAlB,SACKg/B,EAAM9wD,GAAMokE,OAAStT,EAAM9wD,GAAMokE,YC6BnCC,GA9E6B,WAAO,MAEOh0E,YAAY6c,IAA1DR,EAFuC,EAEvCA,cAAeC,EAFwB,EAExBA,cAAe3xB,EAFS,EAETA,YAChC8wC,EAAWC,cAH8B,EAKhCx0C,EAAO,qBALyB,mBAKxCe,EALwC,KAKrCw5C,EALqC,KAMvCrlB,EAAmBpc,YAAY6c,IAA/BT,eASA5pB,EAAON,EAAe8N,YAAYX,IAAlC7M,EAEFyhF,EAAiB,CACnB,CACI/wE,YAAa,2BACb6wE,MAAO,qCACH,cAAC,GAAD,CAAa70C,GAAI7iB,EAAe+vB,SAbzB,SAAC/3C,GAChBonC,EAASlf,GAAeggB,QAAQ9f,wBAaxB,uBAAOx3B,UAAWo3B,EAAgB,SAAW,GAA7C,SAAkD7pB,EAAE,uDAG5D,CACI0Q,YAAa,2BACb6wE,MAAO,qCACH,qBAAK9uF,UAAU,SAAf,SACI,cAAC,EAAD,CAAOF,KAAK,QAAQ8C,MAAM,OAAOC,KAAK,YAE1C,uBAAO7C,UAAU,SAAjB,SAA2BuN,EAAE,sCAGrC,CACI0Q,YAAa,2BACb6wE,MAAO,qCACH,cAAC,GAAD,CAAa70C,GAAI5iB,EAAe8vB,SAzBzB,SAAC/3C,GAChBonC,EAASlf,GAAeggB,QAAQ7f,wBAyBxB,uBAAOz3B,UAAWq3B,EAAgB,SAAW,GAA7C,SAAkD9pB,EAAE,4CAG5D,CACI0Q,YAAa,2BACb6wE,MAAO,qCACH,qBAAK9uF,UAAU,SAAf,SACI,cAAC,EAAD,CAAOF,KAAK,QAAQ8C,MAAM,OAAOC,KAAK,YAE1C,uBAAO7C,UAAU,SAAjB,SAA2BuN,EAAE,oDAGrC,CACI0Q,YAAa,6BAWrB,OACI,sBAAKje,UAAWgD,EAAE0C,GAAlB,UAEI,wBACI1F,UAAWw8C,EAAE,kBAAmB,CAAErlB,EAA+B,GAAd,cACnDr1B,QATW,WACnB00C,EAASlf,GAAeggB,QAAQ/f,mBAM5B,SAGI,2BAIJ,cAAC,GAAD,CAAeikD,MAAOwT,EAAgBtpF,YAAaA,QC0BhDupF,GA5FsB,WAAO,IAEhCxzE,EAAiBV,YAAYe,IAA7BL,aAFgC,EAGTV,YAAY6c,IAAnCpkB,EAHgC,EAGhCA,KAAMuW,EAH0B,EAG1BA,aACNoN,EAAmBpc,YAAY6c,IAA/BT,eACFqf,EAAWC,cACXE,EAAKnL,KACH1hC,EAA0BtD,IAA1BsD,sBACAyD,EAAMN,EAAe8N,YAAYX,IAAjC7M,EARgC,EAUhBjN,oBAAS,GAVO,mBAUjCmS,EAViC,KAU3Bw9C,EAV2B,OAWzBhuD,EAAO,aAXkB,mBAWjCe,EAXiC,KAW9Bw5C,EAX8B,KAmBxCx7C,qBAAU,WACkB,eAAT,OAAZya,QAAY,IAAZA,OAAA,EAAAA,EAAcvc,KACjB+wD,GAAQ,KACT,CAACx0C,IAGJ,IASMyzE,EAA+B,WAC9BnlE,GACC4sB,EAAGlL,MAAM,CACLp3B,SAAU,YACViB,OAAQxL,EAAsB,IAAIK,KAAK4f,GAAe,IAAI5f,MAC1DjG,MAAOqJ,EAAEiG,EAAKtP,MAAO,WAejC,OACI,cAAC,GAAD,CACIuqD,WAAW,EACXh8C,KAAMA,EAAM/Q,MA7CD,CACf0B,MAAO,UACPC,OAAQ,UACRgsD,aAAc,QA0CqB1H,QAblB,WACC,YAAfn0C,EAAKpE,OACJ8/E,IAGJj/B,GAAQ,GACRzZ,EAASlf,GAAeggB,QAAQ5f,cAChC8e,EAASh7B,GAAa87B,QAAQ37B,WAAW,CAACC,UAAMtR,MAIhD,SAII,sBAAKtK,UAAWgD,IAAhB,UACI,sBAAKhD,UAAWw8C,EAAE,UAAlB,UAGuB,YAAfhpC,EAAKpE,OACL,cAAC,GAAD,CACI8uC,YAAY,QACZN,KAAMrwC,EAAE,sBACR8B,KAAK,yBACL2uC,aAAa,OAAOl+C,KAAK,YACzBG,MAxCF,WAClBivF,IACA14C,EAASlf,GAAeggB,QAAQ5f,iBA2CpB,oBAAI13B,UAAS,UAAKwT,EAAKpE,OAAvB,SAAiC7B,EAAEiG,EAAKtP,YAG5C,sBAAKlE,UAAWw8C,EAAE,QAAlB,UACqB,YAAfhpC,EAAKpE,OAAwB,cAAC,GAAD,CAAkB6wC,SAAU,SAAAlnC,GAAC,OArD3D,SAACvF,GACdgjC,EAASlf,GAAeggB,QAAQlzB,WAAW5Q,IAoDiCysC,CAASlnC,MACxD,QAAfvF,EAAKpE,OACH,qCACI,cAAC,GAAD,CAAmBqE,OAAQ0jB,IAC3B,cAAC,GAAD,gBC/Cbg4D,GA/CQ,SAAC9tD,GAChB,IAEIqiB,EAFA0rC,GAAY,EACZC,EAAgB,EAEhBC,EAAezjD,OAAO0jD,WAAW,qBAAqBC,QAEpDjuC,EAAc,SAACziD,GACjBswF,GAAY,EACZC,EAAgBvwF,EAAE2wF,SAGhBjuC,EAAY,SAAC1iD,GACfswF,GAAY,EACZC,EAAgB,GAGdK,EAAc,SAAC5wF,GACjB,GAAIswF,EAAJ,CACA,IAAM5kF,EAAK6kF,EAAgBvwF,EAAE2wF,QAC7B9rC,aAAaD,GACbA,EAAQzX,YAAW,WACf5K,EAAQsuD,WAAatuD,EAAQsuD,WAAanlF,EAC1C6kF,EAAgBvwF,EAAE2wF,UACpB,MAWAG,EAAQ,WACNvuD,IACJA,EAAQ+mD,oBAAoB,YAAa7mC,GACzClgB,EAAQ+mD,oBAAoB,UAAW5mC,GACvCngB,EAAQ+mD,oBAAoB,YAAasH,KAG7C,MAAO,CACHG,OAhBW,WACPxuD,IAAWiuD,IACfM,IACAvuD,EAAQ/5B,iBAAiB,YAAai6C,GACtClgB,EAAQ/5B,iBAAiB,UAAWk6C,GACpCngB,EAAQ/5B,iBAAiB,YAAaooF,KAYtCE,SC0UGE,GAnW6B,WAAO,MAEhC7tF,EAAO,qBAFyB,mBAExCe,EAFwC,KAErCw5C,EAFqC,OAGsBzhC,YAAY+K,IAAzE/C,EAHuC,EAGvCA,qBAAsBF,EAHiB,EAGjBA,mBAAoBH,EAHH,EAGGA,eAHH,EAInBpiB,oBAAS,GAJU,mBAIxCyvF,EAJwC,KAIhCC,EAJgC,OAKnB1vF,mBAA0B,IALP,mBAKxCue,EALwC,KAKhCo4C,EALgC,OAMP32D,mBAAiB,IANV,mBAMxC2vF,EANwC,KAM1BC,EAN0B,KAOvC3iF,EAAMN,EAAe8N,YAAYX,IAAjC7M,EAPuC,EAQzBwlC,IAAMgE,WAAWjE,IAAhChlC,EARwC,EAQxCA,IAAK+lC,EARmC,EAQnCA,OACJnrC,EAAwBlC,IAAxBkC,oBATuC,EAUOpI,oBAAS,GAVhB,mBAUvC4nD,EAVuC,KAUnBC,EAVmB,KAWzC3R,EAAWC,cAX8B,EAYbn2C,oBAAS,GAZI,mBAYxCyzD,EAZwC,KAY7BC,EAZ6B,OAaf1zD,oBAAS,GAbM,mBAaxC2zD,EAbwC,KAa7Bg4B,EAb6B,KAczCtnD,EAAM5jC,mBAdmC,EAetBouF,GAAcxqD,EAAI1jC,SAAnC4uF,EAfuC,EAevCA,OAAQD,GAf+B,EAe/BA,KAGhB5uF,qBAAU,WAKN,OAJAmvF,KACAlkD,YAAW,WACP+jD,GAAU,KACX,KACI,WACHx5C,EAASnzB,GAAci0B,QAAQ3zB,iCAEpC,IAEH3iB,qBAAU,WAAO,IAAD,EAIZ,OAHA,UAAAsgC,SAASiL,cAAc,8BAAvB,SAA+C6jD,iBAE/CP,IACO,WACHD,QAEL,CAAC/wE,IAEJ7d,qBAAU,WACN,IAAI82D,EAA6B,GACjC/0C,EAAqBc,SAAQ,SAACgB,GAC1BizC,EAAU,sBACHA,GADG,YAEHjzC,EAAOhG,OAAOhH,QAAQ,SAAAlJ,GAAC,OAAIopD,GAAgBppD,WAGtD,IAAM0hF,EAAYv4B,EAAWx5D,KAAK,SAAAqQ,GAC9B,OAAO,2BACAA,GADP,IAEIknD,SAAUy6B,GAA2B3hF,EAAEzP,SAG/C+3D,EAAUo5B,GACVH,EAAgB,GAAD,OAAyB,GAApBp4B,EAAWzsD,OAAhB,UAEhB,CAAC0X,IAIJ,IAAMotE,GAA+B,WACbn+D,aAAaC,QAAQ,0BACzB+hC,GAAa,GAC7BhiC,aAAa6pB,QAAQ,wBAAyB,SAG5Cy0C,GAA6B,SAAC7sE,GAChC,IAAM+oE,GAAW3pE,GAAsB,IAAIY,GAC3C,OAAO+oE,GAAoB,CACvBtjF,MAAO,EACPvB,MAAO,EACPQ,OAAQkU,GAAiBsG,UAI3Bo1C,GAAkB,SAACjzC,GACrB,QAAIA,EAAM5kB,YACe4kB,EAAMtY,SAASqL,QAAQ,SAAA2N,GAAC,OAAKA,EAAEhJ,MAAQ,IAAInR,OAAS,GAAKma,EAAEjW,WAC5DlE,OAAS,GAG/BklF,GAAe,uCAAG,sBAAA/lF,EAAA,sDACpBqU,EAAOvgB,KAAI,SAACwmB,EAAO0rE,GAEf,IAAMC,EAAe5tE,EAAmBiC,EAAM5lB,IAC3CuxF,GAAgBA,EAAatoF,SAAWkU,GAAiB0H,WAE5De,EAAMtY,SAASlO,IAAf,uCAAmB,WAAOymB,GAAP,SAAAva,EAAA,sEACTkmF,GAAeF,GADN,uBAETG,GAAe5rE,EAASyrE,GAFf,2CAAnB,0DANgB,2CAAH,qDAaftnC,GAAkB,uCAAG,WAAO1sC,EAAc8I,GAArB,iBAAA9a,EAAA,6DACjBtL,EADiB,UACTsd,EADS,YACD8I,GADC,SAEHxX,EAAI,gBAAgB5O,GAFjB,cAEjByd,EAFiB,2BAGhBA,GAHgB,2CAAH,wDAalBg0E,GAAc,uCAAG,WAAO5rE,EAAmByrE,GAA1B,+BAAAhmF,EAAA,sDACb4+C,EAAyB,GACxB,OAAPrkC,QAAO,IAAPA,GAAA,UAAAA,EAASvI,YAAT,SAAeqH,SAAS,SAAAg8B,GAEpB,GAAGA,EAAE9+B,MACA8+B,EAAErzC,SAA4BqX,SAAS,SAAC2B,GAErC,GAAIA,EAAExE,SAGN,IADA,IACA,MADkB1hB,OAAOD,KAAKmmB,EAAExE,UAChC,eAGI,IAHA,IAAMqoC,EAAM,KACN3b,EAAOloB,EAAExE,SAAiBqoC,GAEhC,MADiB/pD,OAAOD,KAAKquC,GAC7B,eAA8B,CAA1B,IAAM4b,EAAO,KACPpqD,EAAE,UAAMsmB,EAAEtmB,GAAR,YAAcmqD,EAAd,YAAwBC,GAChCF,EAAgB9lD,KAAK,CACjBkZ,KAAMqjC,EAAErjC,KACR8I,UAAWpmB,EACXyd,MAAO+wB,EAAI4b,cAS/B,GAlCUxpD,EAkCE+/C,EAAEpjC,SAjCX,CACHL,GAAgBiB,YAChBjB,GAAgBoG,yBAClBjI,SAASza,GA+BF+/C,EAAErzC,SAAyBqX,SAAS,SAAAg8B,GAChCA,EAAErzC,SAA4BqX,SAAS,SAAA2B,GAChCA,EAAE7I,OACNysC,EAAgB9lD,KAAK,CACjBkZ,KAAMqjC,EAAErjC,KACR8I,UAAWE,EAAEtmB,GACbyd,MAAO6I,EAAE7I,kBAPzB,CAlCS,IAAC7c,EAkDI,EAAd,GAAG+/C,EAAE9hC,QACD8hC,EAAE9hC,QAAQvR,SAASqX,SAAS,SAAE0lC,GAAc,IAAD,EACnCA,EAAI5sC,OACRysC,EAAgB9lD,KAAK,CACjBkZ,KAAI,UAAEqjC,EAAE9hC,eAAJ,aAAE,EAAWvB,KACjB8I,UAAWikC,EAAIrqD,GACfyd,MAAO4sC,EAAI5sC,WAInB,UAAAkjC,EAAE9hC,QAAQra,gBAAV,SAAoBmgB,SAAS,SAAC2lC,GAC1BA,EAAUh9C,SAASqX,SAAS,SAAE4lC,GACtBA,EAAiB9sC,OACrBysC,EAAgB9lD,KAAK,CACjBkZ,KAAI,OAAEgtC,QAAF,IAAEA,OAAF,EAAEA,EAAWhtC,KACjB8I,UAAWmkC,EAAiBvqD,GAC5Byd,MAAO8sC,EAAiB9sC,cAMxC,IAAMjZ,EAAWm8C,EAAEn8C,SAChBA,GAAYA,EAAS2H,OAAS,GAC7B3H,EAASmgB,SAAS,SAAA6lC,GACdA,EAAGl9C,SAASqX,SAAS,SAAE0lC,GACfA,EAAI5sC,OACRysC,EAAgB9lD,KAAK,CACjBkZ,KAAMktC,EAAGltC,KACT8I,UAAWikC,EAAIrqD,GACfyd,MAAO4sC,EAAI5sC,cAM1BkjC,EAAErzC,SAA4BqX,SAAS,SAAC2B,GACjCA,EAAE7I,OACNysC,EAAgB9lD,KAAK,CACjBkZ,KAAMqjC,EAAErjC,KACR8I,UAAWE,EAAEtmB,GACbyd,MAAO6I,EAAE7I,gBAIjB0zE,EAxFe,YAwFExxE,IACXgF,SAAQ,SAACiB,EAAO8rE,GACa,IAAD,EAA9BA,IAAkBJ,IAClB1rE,EAAM+wC,SAAW,CACb3sD,MAAO,EACPvB,MAAOyhD,EAAgB/9C,SAAU,UAAAyZ,EAAM+wC,gBAAN,eAAgBluD,QAAS,QAItEsvD,EAAUo5B,GACVloC,GAAsB,GACtB3R,EAASnzB,GAAci0B,QAAQh0B,qBAAqBjH,GAAiB25C,cAnGlD,MAqGC5M,EArGD,gDAqGRzsC,EArGQ,eAsGmBusC,GAAmBvsC,EAAMH,KAAMG,EAAM2I,WAtGxD,oDAyGU5c,EAAoBiU,EAAMA,OAzGpC,eAyGLitC,EAzGK,iBA0GL/V,EAAO,gBAAD,YAAC,eACNl3B,GADK,IAERzd,GAAG,GAAD,OAAKyd,EAAMH,KAAX,YAAmBG,EAAM2I,WAC3B3I,MAAOitC,KA7GA,QAgHfinC,GAAaR,EAAWG,EAAYM,IACpC75B,EAAUo5B,GAjHK,0CAmHbU,EAAkBV,EAAUx4E,QAAO,SAAAiN,GAAK,YAA+B,eAA3B,UAAAA,EAAM+wC,gBAAN,eAAgB1tD,WAC9De,EAAQ6nF,EAAgB1lF,QAAU,EACtCmrC,EAASnzB,GAAci0B,QAAQ/zB,oBAAtB,UAA6Cra,EAA7C,eAAyDmnF,EAAUhlF,UACxE0lF,EAAgB1lF,SAAWglF,EAAUhlF,SACrC88C,GAAsB,GACtB8jC,GAAW,GACXz1C,EAASnzB,GAAci0B,QAAQh0B,qBAAqBjH,GAAiB0H,YAErEyyB,EAASnzB,GAAci0B,QAAQ/zB,oBAAtB,UAA6C,EAA7C,OAAqD8sE,EAAUhlF,WA3HzD,kBA8HZ+9C,EAAgB/9C,QA9HJ,4CAAH,wDAiIdylF,GAA8B,SAACrtE,EAAiBC,GAKlD8yB,EAASnzB,GAAci0B,QAAQ9zB,qBAAqB,CAChDC,UACAC,WAIFmtE,GAAe,SACjBR,EACAG,EACAQ,GAMAX,EAAUxsE,SAAQ,SAACiB,EAAO8rE,GACtB,GAAIA,IAAkBJ,EAAY,CAAC,IAAD,QAC1BroF,EAASkU,GAAiB25C,cAClB,UAAAlxC,EAAM+wC,gBAAN,eAAgB3sD,QAAS,MACzB,UAAA4b,EAAM+wC,gBAAN,eAAgBluD,QAAS,GACjB,IAChBQ,EAASkU,GAAiB0H,WAE9Be,EAAM+wC,SAAW,CACb3sD,QAAQ,UAAA4b,EAAM+wC,gBAAN,eAAgB3sD,QAAS,GAAK,EACtCvB,OAAQ,UAAAmd,EAAM+wC,gBAAN,eAAgBluD,QAAS,EACjCQ,OAAQA,GAGZ6oF,EAAalsE,EAAM5lB,GAAI4lB,EAAM+wC,eAKnC66B,GAAiB,SAACF,GACpB3xE,EAAOgF,SAAQ,SAACiB,EAAO3M,GACfA,IAAUq4E,IACV1rE,EAAM+wC,SAAW,CACb3sD,MAAO,EACPvB,MAAO,OAInBsvD,EAAUp4C,IAuBd,OAbmB,WAAO,IAAD,EACF,UAAGA,EAAO,UAAV,OAAG,EAAWrS,SAUrCykF,GAGI,sBAAKjxF,UAAWgD,EAAG+sF,EAAS,UAAY,IAAxC,UACI,qBAAK/vF,UAAWw8C,EAAE,UAAW7X,IAAKA,EAAlC,SACI,oBAAI3kC,UAAWw8C,EAAE,QAAS96C,MAAO,CAAC0B,MAAO6sF,GAAzC,SAEQpxE,EAAOvgB,KAAK,SAAAwmB,GACR,OACI,cAAC,GAAD,CAEI5lB,GAAI4lB,EAAM5lB,GACVgF,MAAO4gB,EAAM5gB,MACbhE,WAAY4kB,EAAM5kB,WAClB4e,KAAMgG,EAAMhG,KACZtS,SAAUsY,EAAMtY,SAChBqpD,SAAU/wC,EAAM+wC,UANX/wC,EAAM5lB,WAeZ,cAAnBwjB,GACI,cAAC,GAAD,CACAk7B,KAAMrwC,EAAE,qBACRzN,KAAK,YAAYm+C,OAAO,SACxBD,aAAa,QACbE,YAAY,UACZl+C,UAAWw8C,EAAE,YACbv8C,MAAO,kBAAM+zD,GAAa,IAC1BjxD,UAAWmlD,EACX74C,KAAK,aAIb,cAAC,GAAD,CACIoD,KAAMshD,EACNj/C,QAASvH,EAAE,iCACXyyC,QAAS,CACL,CAAE97C,MAAOqJ,EAAE,6BAA8BrO,GAAI,OAC7C,CAAEgF,MAAOqJ,EAAE,4BAA6BrO,GAAI,OAEhDs0D,eAAgB,SAACt0D,GAAD,OA/DL,SAACA,GACpB80D,GAAa,GACH,QAAP90D,IACH+sF,EAAWvpE,IAAoBrG,GAAiB0H,WAChDwsE,MA2DgCW,CAAehyF,MAE3C,cAAC,GAAD,CAASuT,KAAMwhD,QCjXZk9B,GAPc,CACzBC,QAAS,MACTC,MAAO,QACPC,WAAY,SACZC,SAAU,WACVC,UAAW,SCFTC,GAAe,SAAC7wE,GAClB,MAAM,GAAN,OAAUnb,EAASA,EAASC,aAAaM,aAAzC,0BAAuE4a,IAGrE8wE,GAAkB,CACpB,CACIC,UAAWC,GAASR,QACpBv3E,OAAQ,CACJ43E,GAAaG,GAASR,QAAQ,iBAC9BK,GAAaG,GAASR,QAAQ,iBAC9BK,GAAaG,GAASR,QAAQ,iBAC9BK,GAAaG,GAASR,QAAQ,mBAGtC,CACIO,UAAWC,GAASN,WACpBz3E,OAAQ,CACJ43E,GAAaG,GAASN,WAAW,oBACjCG,GAAaG,GAASN,WAAW,oBACjCG,GAAaG,GAASN,WAAW,oBACjCG,GAAaG,GAASN,WAAW,sBAGzC,CACIK,UAAWC,GAASJ,UACpB33E,OAAQ,CACJ43E,GAAaG,GAASJ,UAAU,mBAChCC,GAAaG,GAASJ,UAAU,mBAChCC,GAAaG,GAASJ,UAAU,mBAChCC,GAAaG,GAASJ,UAAU,qBAGxC,CACIG,UAAWC,GAASP,MACpBx3E,OAAQ,CACJ43E,GAAaG,GAASP,MAAM,mBAC5BI,GAAaG,GAASP,MAAM,mBAC5BI,GAAaG,GAASP,MAAM,mBAC5BI,GAAaG,GAASP,MAAM,qBAGpC,CACIM,UAAWC,GAASL,SACpB13E,OAAQ,CACJ43E,GAAaG,GAASL,SAAS,sBAC/BE,GAAaG,GAASL,SAAS,sBAC/BE,GAAaG,GAASL,SAAS,sBAC/BE,GAAaG,GAASL,SAAS,wBAGvC,CACII,UAAW,gBACX93E,OAAO,CACH43E,GAAa,mDAIVC,MC2EAG,GAlHqB,WAAO,MAExB5vF,EAAO,YAFiB,mBAEhCe,EAFgC,KAE7Bw5C,EAF6B,OAG+BzhC,YAAY+K,IAA1ErS,EAH+B,EAG/BA,OAAQD,EAHuB,EAGvBA,KAAMwP,EAHiB,EAGjBA,SAAUN,EAHO,EAGPA,eAAgBE,EAHT,EAGSA,kBAC1C4zB,EAAWC,cACTlpC,EAAMN,EAAe8N,YAAYX,IAAjC7M,EAL+B,EAMfwlC,IAAMgE,WAAWjE,IAAjChlC,EAN+B,EAM/BA,IAAK+lC,EAN0B,EAM1BA,OACLnrC,EAAwBlC,IAAxBkC,oBAWR1H,qBAAU,WACN8wF,IACAt7C,EAASnzB,GAAci0B,QAAQtyB,oBAAoB,CAC/CE,MAAOlC,OAEZ,IAGHhiB,qBAAU,WACM,cAATwS,IACCgjC,EAAStd,GAAiBoe,QAAQ5d,0BAAqBpvB,IACvDksC,EAAStd,GAAiBoe,QAAQ1d,iCAA4BtvB,IAC9DksC,EAAStd,GAAiBoe,QAAQne,oBAAe7uB,IACjDksC,EAASnzB,GAAci0B,QAAQjzB,uBAAkB/Z,OAEtD,CAACkJ,IAGJ,IASMu+E,EAAgB,WAClB,OAAOrvE,IAAmBrG,GAAiB25C,aAQzCg8B,EAAwB,uCAAG,WAAO39E,EAAkBjL,GAAzB,iBAAAoB,EAAA,6DACvBtL,EADuB,UACfmV,EADe,YACHjL,GADG,SAET0E,EAAI,iBAAkB5O,GAFb,cAEvByd,EAFuB,2BAGtBA,GAHsB,2CAAH,wDAMxBm1E,EAAmB,WAAO,IAAD,iBACJJ,IADI,2BAChBr9E,EADgB,QAEf,OAARA,QAAQ,IAARA,GAAA,UAAAA,EAAUwF,cAAV,SAAkBvb,IAAlB,uCAAsB,WAAOqe,EAAOvT,GAAd,eAAAoB,EAAA,sEACkBwnF,EAAyB39E,EAASs9E,UAAWvoF,GAD/D,kDAIOV,EAAoBiU,GAJ3B,cAIRitC,EAJQ,gBAKR/V,EAAO,iBAAkB,CAC3B30C,GAAG,GAAD,OAAKmV,EAASs9E,UAAd,YAA2BvoF,GAC7BuT,MAAOitC,IAPG,mEAAtB,0DADJ,2BAAyC,IADd,gCAmB/B,OACI,cAAC,GAAD,CACIloD,MAxEW,CACf0B,MAAO,OACPC,OAAQ,UACRgsD,aAAc,QAsEVZ,WAAW,EACXh8C,KAAMgB,EACNk0C,QAhDc,WAClBnR,EAASnzB,GAAci0B,QAAQ1xB,UAgD3BwoC,gBAAiB2jC,IACjB1jC,0BAA2B0jC,IAC3BzjC,kBArCE,GAAN,OAAU/gD,EAAE,oBAAZ,YAAmCqV,GA8BnC,SASI,sBAAK5iB,UAAWgD,IAAhB,UAEI,sBAAKhD,UAAWw8C,EAAE,QAAlB,UAEiB,SAAThpC,GACA,cAAC,GAAD,CACI0qC,YAAY,QACZN,KAAMrwC,EAAE,mBACR8B,KAAK,yBACL2uC,aAAa,OAAOl+C,KAAK,YACzBG,MA3DX,WACTu2C,EAASnzB,GAAci0B,QAAQlzB,WAAW,cAC1CoyB,EAASnzB,GAAci0B,QAAQnzB,2BA6DR,cAAT3Q,GAAwB,6BAAKjG,EAAE,+BAG1B,cAATiG,GAAyB,cAAC,GAAD,IAChB,SAATA,GAAoB,cAAC,GAAD,CAAgB1T,KAAK,gBC+B5CmyF,GAlJ4B,WAAO,MAE/BhwF,EAAO,oBAFwB,mBAEvCe,EAFuC,KAEpCw5C,EAFoC,KAItCl1B,EADqBvM,YAAYkc,IAAjCtyB,iBACA2iB,mBACA/Z,EAAMN,EAAe8N,YAAYX,IAAjC7M,EALsC,EAMVjN,qBANU,mBAMvCye,EANuC,KAM3BmzE,EAN2B,KAQxCC,EAEF,CACAC,QAAS,CACLC,aAAc,kDACdxsD,YAAa,gDACbysD,SAAU,6CACVC,oBAAqB,kDACrBvsD,KAAM,kDACNR,aAAa,IAEjBgtD,KAAM,CACFH,aAAc,4CACdxsD,YAAa,iDACbysD,SAAU,uCACVC,oBAAqB,kDACrBvsD,KAAM,kDACNR,aAAa,KAqBrB,OAhBAxkC,qBAAU,WAAO,IAAD,YACZ,GAAIsmB,IAED,UAAAA,EAAmBhB,aAAnB,mBAA0BxO,eAA1B,eAAmCiN,WAAnC,UACCuC,EAAmBhB,aADpB,iBACC,EAA0BxO,QAAQiN,eADnC,aACC,EAA2C7lB,MAD5C,UAECooB,EAAmBhB,aAFpB,iBAEC,EAA0BxO,QAAQiN,eAFnC,aAEC,EAA2ChG,YAAW,CAAC,IAAD,QAChD0zE,EAAU,UAAGnrE,EAAmBhB,aAAtB,iBAAG,EAA0BxO,QAAQiN,eAArC,aAAG,EAA2C7lB,GAAGqb,SAAS,YACpEm4E,EAAe,UAAGprE,EAAmBhB,aAAtB,iBAAG,EAA0BxO,QAAQiN,eAArC,aAAG,EAA2ChG,WAEnEmzE,EAAcO,EAAa,WAAaC,MAI7C,CAACprE,IAIA,sBAAKtnB,UAAWgD,IAAhB,UACI,6BAAKuK,EAAE,0BAEP,qBAAKvN,UAAU,sCAAf,SACI,sBAAKA,UAAU,OAAf,UACI,6BAAKuN,EAAE,+BAEP,cAAC,GAAD,CAAMzN,KAAK,QAAX,SACKyN,EAAE,kCAGP,+BACI,+BACI,+BACI,cAAC,EAAD,CAAM1N,KAAK,kBAEf,4BACC0N,EAAE,sCAGP,+BACI,+BACI,cAAC,EAAD,CAAM1N,KAAK,kBAEf,4BACC0N,EAAE,sCAGP,+BACI,+BACI,cAAC,EAAD,CAAM1N,KAAK,mBAEf,4BACC0N,EAAE,8CAOnB,sBAAKvN,UAAWw8C,EAAE,cAAlB,UAUI,sBAAKx8C,UAAWw8C,EAAE,YAAlB,UACI,uBAAOx8C,UAAWw8C,EAAE,iBAApB,SAAuCjvC,EAAE,wCAEzC,sBAAKvN,UAAWw8C,EAAE,gBAAlB,UACI,cAAC,EAAD,CAAM38C,KAAK,mBACX,gCAAQ0N,EAAE,uCACV,4BACKwR,GAAcxR,EAAE4kF,EAAsBC,QAAQrzE,EAAW7P,QAAQ,MAAO,WAIjF,sBAAKlP,UAAWw8C,EAAE,gBAAlB,UACI,cAAC,EAAD,CAAM38C,KAAK,qBACX,gCAAQ0N,EAAE,6BACV,4BAEKwR,GAAcxR,EAAE4kF,EAAsBK,KAAKzzE,EAAW7P,QAAQ,MAAO,cAKlF,sBAAKlP,UAAWw8C,EAAE,QAAlB,UACI,uBAAOx8C,UAAWw8C,EAAE,aAApB,SAAmCjvC,EAAE,6BAErC,sBAAKvN,UAAWw8C,EAAE,gBAAlB,UACI,gCAAQjvC,EAAE,gCACV,gCACI,gCAAQA,EAAE,6CACTA,EAAE,qDACH,wCAGJ,gCAAQA,EAAE,6BAEV,gCACI,gCAAQA,EAAE,kCACTA,EAAE,mCACH,qDCvDbolF,GA9E0B,SAAC,GAElC,IADJlkF,EACG,EADHA,KAAM2a,EACH,EADGA,KAAMstB,EACT,EADSA,SAAU9uB,EACnB,EADmBA,UACnB,IAD8B4O,8BAC9B,MADuD,GACvD,EAEGo8D,EAAYnkF,EAAK,GACflB,EAAMN,EAAeypC,GAArBnpC,EAEFq3E,EAAU,SAACn2E,EAAa3O,GAI1B,OAHgB2O,EAAKoJ,QAAO,SACxBA,GADwB,OAExBgtE,SAAShtE,EAAO/X,QAAUA,MAmBlC,OACI,sBAAK4B,MAAO0jE,GAAZ,UACI,sBAAK1jE,MAAO,CAACstD,QAAS,QAAtB,UACI,qBAAKttD,MAAiB,IAAT0nB,EAAaw+C,GAAeE,KACzC,sBAAKpmE,MAAOqmE,GAAZ,UACI,qBAAKrmE,MAAO,CAACstD,QAAS,QAAtB,SACI,qBAAIttD,MAAOumE,GAAX,UAA6B16D,EAAJ,IAAT6b,EAAe,sBAA2B,yBAA1D,IAAoF,sBACpF1nB,MAAO,CAAC09C,gBAAgB,QAASx8C,MAAO,QAAS48C,QAAS,UAD0B,SAtBpF,SAACp2B,GACjB,OAAgB,IAATA,EAAA,UAAgBxB,EAAUtB,MAAMG,cAAhC,YAAiDmB,EAAU1B,UAA3D,UAA2E0B,EAAUb,MAAMN,cAA3F,YAA4GmB,EAAU1B,UAsBvC2sE,CAAYzpE,UAGtF,sBAAM1nB,MAAOsmE,GAAb,SAvBQ,SAAC8qB,GAAe,IAAD,EACnC,GAAqC,IAAlCt8D,EAAuBnrB,QAAyB,IAAT+d,EAAY,OAAO7b,EAAEulF,GAC/D,IAOM5uF,EAAK,UAAIsyB,EAAgD,GAAGpnB,aAAvD,aAAG,EAA2DlL,MACzE,OAAOqJ,EANH,CACAwlF,wBAAyB,wBACzBC,yBAA0B,wBAC1BC,oBAAqB,yBAGD/uF,KAAqBqJ,EAAEulF,GAaLI,CAAgBN,EAAUlsD,oBAAoB5mC,QAC5E,4BAAIyN,EAAEqlF,EAAUlsD,oBAAoBZ,cAG5C,gCAE4B8sD,EAAUpmF,SAAS,GAAG25B,cAClB,oBAAIzkC,MAAO,CAACstD,QAAS,OAAQ+1B,WAAY,SAAUvlC,QAAS,KAA5D,SAEIolC,EAAQgO,EAAUpmF,SAAS,GAAG25B,aAAc,GAAG7nC,KAAI,SAACwnC,EAAWk/C,GAAZ,OAC/C,qBAAItjF,MAAO,CAACstD,QAAS,OAAQmW,OAAQ,SAArC,UAEI,cAAC,EAAD,CAAMrlE,KAAK,MAAMD,KAAMimC,EAAKz2B,KAAMlP,YAAakP,KAC/C,uBAAO3N,MAAO,CAAC,MAAS,OAAQokE,SAAU,QAASmf,UAAU,UAA7D,SAA0E13E,EAAEu4B,EAAK5hC,iBAQjG0uF,EAAUpmF,SAAS,GAAG25B,cAAgBysD,EAAUpmF,SAAS,GAAG25B,aAAa96B,OAAS,GAC9E,oBAAI3J,MAAO,CAACstD,QAAS,OAAQ+1B,WAAY,SAAUvlC,QAAS,KAA5D,SAEQolC,EAAQgO,EAAUpmF,SAAS,GAAG25B,aAAc,GAAG7nC,KAAI,SAACwnC,EAAWk/C,GAAZ,OAC/C,qBAAItjF,MAAO,CAACstD,QAAS,OAAQmW,OAAQ,SAArC,UAEI,cAAC,EAAD,CAAMrlE,KAAK,MAAMD,KAAMimC,EAAKz2B,KAAMlP,YAAakP,KAC/C,uBAAO3N,MAAO,CAAC,MAAS,OAAQokE,SAAU,QAASmf,UAAU,UAA7D,SAA0E13E,EAAEu4B,EAAK5hC,wBCpB9Hg1E,GApDyB,SAAC,GAAuC,IAAtCnmD,EAAqC,EAArCA,qBAAsB2jB,EAAe,EAAfA,SAEpDnpC,EAAMN,EAAeypC,GAArBnpC,EAEF4lF,EAAe,SAAC/jF,GAClB,OAAa,OAAVA,QAA4B9E,IAAV8E,EAA4B,IAC1CA,GAEX,OACI,gCACI,qBAAK1N,MAAO0jE,GAAZ,SAA8B,yBAC9B,sBAAK1jE,MAAO0jE,GAAZ,UACI,oBAAI1jE,MAAOikE,GAAX,SAAgBp4D,EAAE,6CAElB,sBAAK7L,MAAOymE,GAAZ,UACI,wBAAQzmE,MAAOwmE,GAAf,SAAmC36D,EAAE,gCACrC,sBAAK7L,MAAOgmE,GAAZ,UACI,iCAASn6D,EAAE,kBADf,IAC0CwlB,EAAqBE,OAAOC,OAAOC,MAE7E,sBAAKzxB,MAAOgmE,GAAZ,UACI,iCAASn6D,EAAE,iBADf,IACyCwlB,EAAqBE,OAAOC,OAAOE,SAGhF,sBAAK1xB,MAAOymE,GAAZ,UACI,wBAAQzmE,MAAOwmE,GAAf,SAAmC36D,EAAE,kCACrC,sBAAK7L,MAAOgmE,GAAZ,UACI,iCAASn6D,EAAE,kBADf,IAC0C4lF,EAAapgE,EAAqBE,OAAOI,SAASF,OAE5F,sBAAKzxB,MAAOgmE,GAAZ,UACI,iCAASn6D,EAAE,iBADf,IACyC4lF,EAAapgE,EAAqBE,OAAOI,SAASD,UAG/F,sBAAK1xB,MAAOymE,GAAZ,UACI,wBAAQzmE,MAAOwmE,GAAf,SAAmC36D,EAAE,8BACrC,sBAAK7L,MAAOgmE,GAAZ,UACI,iCAASn6D,EAAE,kBADf,IAC0C4lF,EAAapgE,EAAqBE,OAAOK,KAAKH,OAExF,sBAAKzxB,MAAOgmE,GAAZ,UACI,iCAASn6D,EAAE,iBADf,IACyC4lF,EAAapgE,EAAqBE,OAAOK,KAAKF,UAG3F,sBAAK1xB,MAAOymE,GAAZ,UACI,wBAAQzmE,MAAOwmE,GAAf,SAAmC36D,EAAE,kCACrC,qBAAK7L,MAAOimE,GAAZ,SACKwrB,EAAapgE,EAAqBE,OAAOM,sBCDnD6/D,GAnC6B,SAAC,GACX,IADYv9D,EACb,EADaA,aAAcC,EAC3B,EAD2BA,aAAc/C,EACzC,EADyCA,qBAAsB2jB,EAC/D,EAD+DA,SAAS9uB,EACxE,EADwEA,UACrG4O,EAA6B,EAA7BA,uBAEQjpB,EAAMN,EAAeypC,GAArBnpC,EAGF43E,EAAS,SAACl2C,GACZ,IAAIA,EAAM,OAAO,EACjB,IAAMme,EAAMne,EAAKp3B,QAAO,SAACk9C,GAAD,OAAoB,OAAPA,KAGrC,OAFiC,IAAf3H,EAAI/hD,aAAwBf,IAAR8iD,GAI1C,OACI,sBAAK1rD,MAAO,CAAC09C,gBAAiB,WAA9B,UACI,qBAAK19C,MAAO,CAAC09C,gBAAiB,WAA9B,SAA0C,yBAC1C,qBAAK19C,MAAO,CAAC09C,gBAAiB,WAA9B,SAA0C,yBAE1C,sBACC19C,MAAO,CAAC+kE,aAAc,MAAOE,YAAa,MAAOse,UAAW,UAD7D,UAEP,qBAAKljF,IAAI,kCAAkCC,IAAI,GAAGN,MAAOojE,GAAa1hE,MAAM,QAEjE,qBAAK1B,MAAO0jE,GAAZ,SACI,cAAC,GAAD,CAAQn/B,MAAO14B,EAAE,gBAAiBwG,YAAaxG,EAAE,0BAErD,cAAC,GAAD,CAAcmpC,SAAUA,EAAU3jB,qBAAsBA,IACvDoyD,EAAOtvD,IAAiB,cAAC,GAAD,CAAe6gB,SAAUA,EAAUjoC,KAAMonB,EAAczM,KAAM,EAAGxB,UAAWA,IACnGu9D,EAAOrvD,IAAiB,cAAC,GAAD,CAAe4gB,SAAUA,EAAUjoC,KAAMqnB,EAAc1M,KAAM,EAAGxB,UAAWA,EAAW4O,uBAAwBA,IACvI,cAAC,GAAD,CAAQyP,MAAO14B,EAAE,wBAAyBk3E,aAAa,EAAO7mC,KAAMrwC,EAAE,qDCqLvE8lF,GA3M+B,SAACviC,GAAW,MAEvC7uD,EAAO,uBAFgC,mBAE/Ce,EAF+C,KAE5Cw5C,EAF4C,OAGJl8C,oBAAS,GAHL,mBAG/CkpF,EAH+C,KAG5B8J,EAH4B,OAITv4E,YAAY0d,IAAjDX,EAJ8C,EAI9CA,cAAeG,EAJ+B,EAI/BA,kBAGjBue,GAFsBz7B,YAAY4Q,IAAhCf,gBAES6rB,eACXE,EAAKnL,KACH1hC,EAA0BtD,IAA1BsD,sBACFuwC,EAAYt5C,mBACZ21C,EAAW37B,YAAYX,GACrB7M,EAAMN,EAAeypC,GAArBnpC,EAZ8C,EAamBwN,YAAYkc,IAA7EpB,EAb8C,EAa9CA,aAAcC,EAbgC,EAahCA,aAAcU,EAbkB,EAalBA,uBAAwB9xB,EAbN,EAaMA,SACpDquB,EAAyBhY,YAAY2Z,IAArC3B,qBACAhd,EAA6B2gC,EAA7B3gC,MAAOhD,EAAsB2jC,EAAtB3jC,kBACTwgF,EAAuBxyF,iBAAgBk3B,GAhBS,EAiBrBld,YAAYkc,IAArC/3B,EAjB8C,EAiB9CA,GAAIyF,EAjB0C,EAiB1CA,iBACJijB,EAAcjjB,EAAdijB,UAlB8C,EAmBhCkzC,GAAkB,CAAC,OAAjCwB,EAnB8C,sBA2CZh8D,qBA3CY,mBA2C9CwmF,EA3C8C,KA2ChCC,EA3CgC,OA+ClDnB,GAAkBlvC,GAFlB3S,EA7CkD,EA6ClDA,iBACA0iD,EA9CkD,EA8ClDA,uBAIJzlF,qBAAU,WACF2D,EAAiB2iB,oBAAuByc,GAC5CgjD,EAAgBN,EAAuB9hF,EAAiB2iB,uBACzD,IAIHtmB,qBAAU,WACNuyF,EAAqBtyF,QAAUg3B,IAChC,CAACA,IAEJj3B,qBAAU,WAEN,OADAq5C,EAAUp5C,QAAU,IAAIkJ,KACjB,WACHqpF,IACAh9C,EAASte,GAAcof,QAAQ1xB,YAErC,IAGF,IAIM4tE,EAA8B,WAChC,GAAIn5C,EAAUp5C,SAAYsyF,EAAqBtyF,QAA/C,CACA,IAAMiJ,EAAWJ,EAAsBuwC,EAAUp5C,QAAS,IAAIkJ,MAC9DwsC,EAAGlL,MAAM,CACLp3B,SAAU,WACViB,OAAQ,aACRpR,MAAOgG,IAEXmwC,EAAUp5C,aAAUqJ,IASlB8/E,EAAgB,SAACtqF,GACnB62C,EAAGlL,MAAM,CACLp3B,SAAU,oBACViB,OAAQ,eACRpR,MAAOpE,IAGXuqF,EAAwBvqF,IAItBuqF,EAA0B,SAACvqF,GAC7B,OAAQA,GACJ,KAAK66B,GAAkB2vD,OACnB,MACJ,KAAK3vD,GAAkB4vD,MAInB3pD,GAAU,CACNC,SAAUiwB,EAAM2iC,cAAcxyF,QAC9B6/B,QAAQ,GAAD,OAAK5hC,EAAL,6BAA4BiL,KAAK0vD,MAAjC,QACP94B,YAAY,2BALI,CAACG,UAAW,CAACwyD,EAAG,GAAIC,EAAG,MAK5B,IAAmBxyD,eAAe,CAAC,eAAgBC,eAAgB,WAC9EJ,MAAM,IAGV,MACJ,KAAKrG,GAAkB6vD,MACnBxnD,GAASjwB,EAAkB9G,MAAnB,+BAAkD/M,GAAlD,OAAwD6W,QAAxD,IAAwDA,IAAS,GAAG,cAAC,GAAD,CAAkBygB,uBAAwBA,EAAwBkgB,SAAUA,EAAU3jB,qBAAsBA,EAAsB8C,aAAcA,EAAcC,aAAcA,EAAclO,UAAWA,KACjR,MACJ,QAAS,SAIXgsE,EAAsB,SAACxqE,GACzB,IAAIxB,EAAUwB,GAAM7Z,QAAQ,OAAO,EACnC,IAAID,EAAQw3E,EAAa19D,GAAMzhB,MAE/B,GAAGjD,EAASmmB,IAAK,CACb,IAAMgpE,EAAenvF,EAASmmB,IAAc,UAATzB,EAAmB,EAAI,GAC1D9Z,GAAkBukF,EAAeA,EAAavkF,MAAMF,MAAQ,EAEhE,OAAOE,GAoBX,OACI,sBAAKtP,UAAWgD,IAAhB,UACI,qBAAKhD,UAAWw8C,EAAE,UAAW16C,QAtEjB,WAChB00C,EAASte,GAAcof,QAAQjf,oBAAmB,IAClDme,EAASte,GAAcof,QAAQnf,iBAAiB,iBAChDqe,EAASte,GAAcof,QAAQlf,aAAa,kBAmExC,SACI,cAAC,EAAD,CAAOt4B,KAAK,WAGhB,oBAAIE,UAAWw8C,EAAE,YAAjB,SA1IgB,CACpB,CACIt4C,MAAO,6BACPsP,KAAM,gBAEV,CACItP,MAAM,wBACNsP,KAAK,SAET,CACItP,MAAM,wBACNsP,KAAK,SAET,CACItP,MAAO,uBACPsP,KAAK,WAET,CACItP,MAAM,mCACNsP,KAAK,gBAyHmBlV,KAAK,gBAAE4F,EAAF,EAAEA,MAAOsP,EAAT,EAASA,KAAT,OACjB,oBACI1R,QAAS,SAAAinB,GAAI,OA7FpB,SAACvV,GACdgjC,EAASte,GAAcof,QAAQlf,aAAa5kB,IA4FPsgF,CAAStgF,IACfxT,UAAS,UAAKwT,IAASskB,EAAgB,SAAW,IAFjE,SAGKvqB,EAAErJ,IADEsP,QAMrB,sBAAKxT,UAAWw8C,EAAE,WAAlB,WAEK8f,GACG,kCApCRwqB,EACO8M,EAAoB,SAAWA,EAAoB,SAGvDhsE,EAAUxB,cAgCL,IACuBwB,EAAU1B,YAIrC,cAAC,GAAD,CACI03B,KAAMrwC,EAAE,+BACR8B,KAAK,2BACLpP,MAAO,WACHqzF,GAAqB,GArCrC38C,EAAGlL,MAAM,CACLp3B,SAAU,WACViB,OAAQ,2BACRq2B,YAAa,6BAEjB2nD,GAAqB,SAsCjB,cAAC,GAAD,CAAO7gF,KAAM+2E,EAAmBpmF,MAAM,QAAQukD,QAAS,WAAO2rC,GAAqB,IAAnF,SACI,sBAAKtzF,UAAWw8C,EAAE,gBAAlB,UACI,6BAAKjvC,EAAE,wBACP,sBAAKvN,UAAU,UAAf,UAGI,cAAC,GAAD,CAAQi+C,OAAO,SAASL,KAAMrwC,EAAE,qBAAsBzN,KAAK,YAAauP,KAAK,QAAQpP,MAAO,kBAAMmqF,EAAczvD,GAAkB4vD,UAClI,cAAC,GAAD,CAAQtsC,OAAO,SAASL,KAAMrwC,EAAE,oBAAqBzN,KAAK,YAAauP,KAAK,OAAOpP,MAAO,kBAAMmqF,EAAczvD,GAAkB6vD,QAAQznF,SAAsC,KAA5BgQ,EAAkB9G,oBCzL7K8nF,GAzBsC,SAAC,GAG9C,IAFJ9yD,EAEG,EAFHA,WAEG,IADH+yD,eACG,MADO,OACP,IAES/xF,EAAO,gCAAZe,EAFJ,sBAG2B1C,oBAAS,GAHpC,mBAGIygD,EAHJ,KAGakzC,EAHb,KAiBH,OAXAjzF,qBAAU,WACNirC,YAAW,WACPgoD,GAAW,GAEXhoD,YAAW,WACJhL,GAAWA,MACf,OACJ,OACJ,IAIC,qBAAKjhC,UAAWgD,EAAG,CAAC+9C,EAAS,WAAa,GAAIizC,OC6GvCE,GAzHqC,SAAC,GAG9C,EAFH9qE,KAEI,IADJ3a,EACG,EADHA,KACG,EAEYxM,EAAO,8BAFnB,mBAEIe,EAFJ,KAEOw5C,EAFP,KAGKjvC,EAAMN,EAAe8N,YAAYX,IAAjC7M,EAMFq3E,EAAU,SAACn2E,EAAa3O,GAI1B,OAHgB2O,EAAKoJ,QAAO,SACxBA,GADwB,OAExBgtE,SAAShtE,EAAO/X,QAAUA,MAG5Bq0F,EAAiB,SAACpvE,GACpB,OACI,qCACI,gCAAQA,EAAQkhB,QACdlhB,EAAQohB,cACN,6BAEQy+C,EAAQ7/D,EAAQohB,aAAc,GAAG7nC,KAAK,SAACyqB,EAAW5Q,GAAZ,OAClC,eAAC,WAAD,WACI,+BACI,cAAC,EAAD,CAAMtY,KAAMkpB,EAAK1Z,KAAM,QAASvP,KAAK,QACrC,4BAEIuC,MAAMC,QAAQymB,EAAK7kB,OAASqJ,EAAEwb,EAAK7kB,MAAM,GAAI6kB,EAAK7kB,MAAM,IAAMqJ,EAAEwb,EAAK7kB,YAKzE0gF,EAAQ7/D,EAAQohB,aAAc,GAAG96B,SAAY8M,EAAQ,GACrD,oBAAInY,UAAU,gBAXPmY,QAmB7B4M,EAAQohB,cAAgBphB,EAAQohB,aAAa96B,OAAS,GACpD,6BAEQu5E,EAAQ7/D,EAAQohB,aAAc,GAAG7nC,KAAK,SAACyqB,EAAW5Q,GAAZ,OAClC,eAAC,WAAD,WACI,+BACI,cAAC,EAAD,CAAMtY,KAAMkpB,EAAK1Z,KAAM,QAASvP,KAAK,QACrC,4BAEIuC,MAAMC,QAAQymB,EAAK7kB,OAASqJ,EAAEwb,EAAK7kB,MAAM,GAAI6kB,EAAK7kB,MAAM,IAAMqJ,EAAEwb,EAAK7kB,YAKzE0gF,EAAQ7/D,EAAQohB,aAAc,GAAG96B,SAAY8M,EAAQ,GACrD,oBAAInY,UAAU,gBAXPmY,YAsB3C,OACI,sBAAKnY,UAAWgD,IAAhB,UACI,qBAAKhD,UAAWw8C,EAAE,QAAlB,SACI,cAAC,GAAD,CAA2Bw3C,QAAQ,YAGvC,sBAAKh0F,UAAWw8C,EAAE,WAAlB,UACI,6BAAKjvC,EAAE,iDAEP,cAAC,GAAD,CAAMzN,KAAK,QAAX,SACCyN,EAAE,2CAIC,gCAAQA,EAAE,iCACV,qBAAKvN,UAAWw8C,EAAE,aAAlB,SACK23C,EAAe1lF,EAAK,GAAGjC,SAAS,MAKzB,OAAZiC,EAAK,SAA2BnE,IAAZmE,EAAK,IAAoB,qCACrC,gCAAQlB,EAAE,iCACV,qBAAKvN,UAAWw8C,EAAE,aAAlB,SAEQ/tC,EAAK,GAAGjC,SAASlO,KAAI,SAACipC,GACnB,OAAO4sD,EAAe5sD,WAS7B,OAAZ94B,EAAK,SAA2BnE,IAAZmE,EAAK,IAAoB,qCACrC,gCAAQlB,EAAE,iCACV,qBAAKvN,UAAWw8C,EAAE,aAAlB,SACK23C,EAAe1lF,EAAK,GAAGjC,SAAS,gBC1BlD4nF,GAhFgC,SAAC,GAMxC,IALJhrE,EAKG,EALHA,KACAtpB,EAIG,EAJHA,KACAwP,EAGG,EAHHA,MACAyE,EAEG,EAFHA,YACAqL,EACG,EADHA,SACG,EAEYnd,EAAO,yBAFnB,mBAEIe,EAFJ,KAEOw5C,EAFP,KAGKjvC,EAAMN,EAAe8N,YAAYX,IAAjC7M,EACAipB,EAA2Bzb,YAAYkc,IAAvCT,uBAJL,EAiCiBskC,GAAkB,CAAC,MAAO,KAAM,OAA7CwB,EAjCJ,oBAmCH,OACI,qBAAKt8D,UAAWgD,EAAEuqC,OAAOnkB,IAAzB,SACI,sBAAKppB,UAAWw8C,EAAE,QAAlB,WAES8f,GACG,gCAAQhtD,IAGhB,+BACgB/B,EAAJ,IAAP6b,EAAa,uBAA4B,wBAC1C,+BA1BU,WAAe,IAAD,EACpC,GAAY,IAATA,EAAW,OAAO7b,EAAEzN,GACvB,IALO02B,IAA0BA,EAAuB,GAAGpnB,MAK1B,OAAO7B,EAAEzN,GAC1C,IAOMoE,EAAK,UAAIsyB,EAAgD,GAAGpnB,aAAvD,aAAG,EAA2DlL,MACzE,OAAOqJ,EANH,CACAwlF,wBAAyB,wBACzBC,yBAA0B,wBAC1BC,oBAAqB,yBAGD/uF,IAeLmwF,QAGX,cAAC,GAAD,CAAMv0F,KAAK,QAAX,SACCyN,EAAEwG,KAGAqL,GACK,6BAEIA,EAAS9gB,KAAI,SAACwnC,EAAWk/C,GAAZ,OACT,+BACQ,cAAC,EAAD,CAAMllF,KAAK,MAAMD,KAAMimC,EAAKz2B,KAAK,WACjC,gCAEIhN,MAAMC,QAAQwjC,EAAK5hC,OAASqJ,EAAEu4B,EAAK5hC,MAAM,GAAI4hC,EAAK5hC,MAAM,IAAMqJ,EAAEu4B,EAAK5hC,WAJxE8gF,cCuI1BsP,GAvMiC,SAAC,GAEzC,IAAD,0BADHlrE,EACG,EADHA,KACG,EAEYnnB,EAAO,0BAFnB,mBAEIe,EAFJ,KAEOw5C,EAFP,OAIwCl8C,mBAAS,cAJjD,mBAIIi0F,EAJJ,KAImBC,EAJnB,OAKoCl0F,mBAAS,GAL7C,mBAKIm0F,EALJ,KAKiBC,EALjB,OAMmBp0F,mBAAS,IAN5B,mBAMIqkC,EANJ,KAMSgwD,EANT,KAOK/pE,EAAoB7P,YAAY4Q,IAAhCf,gBAPL,EAQqBtqB,qBARrB,mBAQImO,EARJ,KAQU8hB,EARV,KAaKhjB,EAAMN,EAAe8N,YAAYX,IAAjC7M,EACAqa,EAAc7M,YAAY0P,IAA1B7C,UACAqD,EAAmBlQ,YAAY4Q,IAA/BV,eAfL,EAgBmB6vC,GAAkB,CAAC,OAAjCwB,EAhBL,oBAoBHt7D,qBAAU,WACN,IAAMwkB,EAAI4D,EAAO,EACjBmH,EAAQ,CACJ1F,IAAKD,EAAgBC,IAAIrF,GACzBsF,IAAKF,EAAgBE,IAAItF,GACzBuF,MAAOH,EAAgBG,MAAMvF,OAElC,CAACoF,IAGJ,IAAMgqE,EAAY,SAACt/E,GACf,IAAIu/E,EAAWJ,EACZA,GAAa,IAAGI,EAAW,GAC3BJ,EAAY,IAAGI,EAAW,GAChB,SAAVv/E,EACCu/E,IAEAA,IAGJL,EAAiB,YAAYK,GAC7BH,EAAeG,IAInB,OACI,sBAAK70F,UAAWgD,IAAhB,UAEI,qBAAKhD,UAAWw8C,EAAE,SAAlB,SAEI,sBAAKx8C,UAAWw8C,EAAE,gBAAlB,UACI,cAAC,EAAD,CAAM38C,KAAM00F,EAAez0F,KAAK,QAEhC,sBAAKE,UAAU,SAAf,UACI,cAAC,EAAD,CACAA,UAA2B,IAAhBy0F,EAAoB,WAAY,GAC3C50F,KAAK,2BAA2BI,MAAO,kBAAM20F,EAAU,WACvD,cAAC,EAAD,CACA50F,UAA2B,IAAhBy0F,EAAoB,WAAY,GAC3C50F,KAAK,2BAA2BI,MAAO,kBAAK20F,EAAU,mBAMlE,sBAAK50F,UAAWw8C,EAAE,WAAlB,UAEI,6BAAKjvC,EAAE,sCAEP,cAAC,GAAD,CAAMzN,KAAK,QAAX,SACCyN,EAAE,gCAICkB,GACA,qBAAIzO,UAAWw8C,EAAE,QAAjB,UACI,+BACI,gCAAQjvC,EAAE,kCACV,sBAAKvN,UAAWw8C,EAAE,gBAAlB,UACI,kCACI,4BACKjvC,EAAE,iBAAkB,OAEzB,uBAAMvN,UAAWw8C,EAAE,oBAAnB,WAA0C,UAAA/tC,EAAKoc,WAAL,eAAUrgB,EAAE4E,QAAS,EAA/D,YAEJ,kCACI,4BACK7B,EAAE,oBAEP,uBAAMvN,UAAWw8C,EAAE,oBAAnB,oBAAyC/tC,EAAKoc,WAA9C,aAAyC,EAAUg1B,EAAEzwC,MAArD,YAEJ,kCACI,4BACK7B,EAAE,iBAAkB,OAEzB,uBAAMvN,UAAWw8C,EAAE,oBAAnB,WAA0C,UAAA/tC,EAAKoc,WAAL,eAAUlc,EAAES,QAAS,EAA/D,kBAIZ,+BACI,gCAAQ7B,EAAE,kCACV,gCACI,kCACI,8BACKA,EAAE,yBADP,OACuCA,EAAE,sBAEzC,2CAAOkB,EAAKqc,WAAZ,aAAO,EAAU7J,KAAK4uB,GAAGzgC,MAAzB,YAEJ,kCACI,8BACK7B,EAAE,yBADP,OACuCA,EAAE,0BAEzC,2CAAOkB,EAAKqc,WAAZ,aAAO,EAAU7J,KAAK5d,OAAO+L,MAA7B,YAEJ,kCACI,8BACK7B,EAAE,yBADP,OACuCA,EAAE,sBAEzC,2CAAOkB,EAAKqc,WAAZ,aAAO,EAAUxJ,MAAMuuB,GAAGzgC,MAA1B,YAEJ,kCACI,8BACK7B,EAAE,yBADP,OACuCA,EAAE,0BAEzC,2CAAOkB,EAAKqc,WAAZ,aAAO,EAAUxJ,MAAMje,OAAO+L,MAA9B,kBAOZ,+BACI,gCAAQ7B,EAAE,kCACV,gCACI,kCACI,4BACKA,EAAE,uCAEP,2CAAOkB,EAAKsc,aAAZ,aAAO,EAAYyvD,iBAAiBprE,MAApC,cAEJ,kCACI,4BACK7B,EAAE,gCAEP,2CAAOkB,EAAKsc,aAAZ,aAAO,EAAY2vD,UAAUtrE,MAA7B,cAEJ,kCACI,4BACK7B,EAAE,qCAGM,IAAT6b,GAAc6B,EACd,mDAAYxc,EAAKsc,aAAjB,aAAY,EAAY6vD,eAAeE,SAAS75D,KAAhD,sBAA+DxS,EAAKsc,aAApE,aAA+D,EAAY6vD,eAAeE,SAASx5D,MAAnG,SAEA,2CAAO7S,EAAKsc,aAAZ,aAAO,EAAY6vD,eAAexrE,MAAlC,YAGR,kCACI,4BACK7B,EAAE,sCAEP,2CAAOkB,EAAKsc,aAAZ,aAAO,EAAYiwD,gBAAgB5rE,MAAnC,sBAQfktD,GACG,sBAAKt8D,UAAWw8C,EAAE,mBAAlB,UACI,6BAAKjvC,EAAE,6CACP,cAAC,GAAD,CAAMzN,KAAK,QAAX,SACCyN,EAAE,uCAGH,sBAAKvN,UAAWw8C,EAAE,6BAAlB,UACI,gCAAQjvC,EAAE,mCAEV,uBAAOzN,KAAK,OACRsP,MAAOu1B,EAEPwiB,SAAU,SAACroD,GAAD,OAAO61F,EAAO71F,EAAE0vC,OAAOp/B,UAGrC,gDAAUX,QAAV,IAAUA,OAAV,EAAUA,EAAMoc,IAAIvb,MAAMF,MAA1B,YAAmCwY,EAAU1B,yBCzF9D4uE,GA3FyB,SAAC,GAGjC,IAFJ1wB,EAEG,EAFHA,QACAh7C,EACG,EADHA,KACG,EAESnnB,EAAO,iBAAZe,EAFJ,oBAGG+xF,EAAiB3wB,EAAQ,GACvBx5C,EAAoB7P,YAAY4Q,IAAhCf,gBAJL,EAKwD7P,YAAYkc,IAA/DtyB,EALL,EAKKA,iBAAkB2iB,EALvB,EAKuBA,mBAAoB5iB,EAL3C,EAK2CA,SACtCkjB,EAAcjjB,EAAdijB,UACF8uB,EAAW37B,YAAYX,GACrB7M,EAAMN,EAAeypC,GAArBnpC,EARL,EASuCjN,qBATvC,mBASKwmF,EATL,KASmBC,EATnB,OAaCnB,GAAkBlvC,GAFlB3S,EAXD,EAWCA,iBACA0iD,EAZD,EAYCA,uBAIJzlF,qBAAU,WACF2D,EAAiB2iB,oBAAuByc,GAC5CgjD,EAAgBN,EAAuB9hF,EAAiB2iB,uBACzD,IAoDH,OACI,sBAAKtnB,UAAWgD,IAAhB,UAEI,cAAC,GAAD,CACIomB,KAAMA,EACNtpB,KA7BA,WAAO,IAAD,QAGd,OAF4B,IAATspB,EAAA,OAAa9B,QAAb,IAAaA,GAAb,UAAaA,EAAoBhB,aAAjC,iBAAa,EAA2BxO,QAAQiN,eAAhD,aAAa,EAA4ChG,WAAzD,OACnBuI,QADmB,IACnBA,GADmB,UACnBA,EAAoBP,aADD,iBACnB,EAA2BjP,QAAQiN,eADhB,aACnB,EAA4ChG,YAExC,KAAK/C,GAAiBgD,YAAa,OAAOzR,EAAE,yCAC5C,KAAKyO,GAAiByD,cAAe,OAAOlS,EAAE,oCAC9C,KAAKyO,GAAiBuD,oBACtB,QAAS,OAAOhS,EAAE,0BAsBRO,GACNiG,YApBI,WAAO,IAAD,EACoB,QAAtC,UAAGuT,QAAH,IAAGA,GAAH,UAAGA,EAAoBhB,aAAvB,aAAG,EAA2BxO,QAG1B,OAF4B,IAATsR,EAAA,OAAa9B,QAAb,IAAaA,GAAb,UAAaA,EAAoBhB,aAAjC,iBAAa,EAA2BxO,QAAQiN,eAAhD,aAAa,EAA4ChG,WAAzD,OACnBuI,QADmB,IACnBA,GADmB,UACnBA,EAAoBP,aADD,iBACnB,EAA2BjP,QAAQiN,eADhB,aACnB,EAA4ChG,YAExC,KAAK/C,GAAiBgD,YAAa,OAAOzR,EAAE,6CAC5C,KAAKyO,GAAiByD,cACtB,KAAKzD,GAAiBuD,oBACtB,QAAS,OAAOhS,EAAE,mCAG1B,MAAO,GAScynF,GACb1lF,MA3CQ,SAAC8Z,GACjB,OAAG09D,EACO,GAAN,OAZoB,SAAC19D,GACzB,IAAI9Z,EAAQw3E,EAAa,OAAD,OAAQ19D,IAAQzhB,MAExC,GAAGjD,EAASmmB,IAAK,CACb,IAAMgpE,EAAenvF,EAASmmB,IAAKzB,EAAO,GAC1C9Z,GAAkBukF,EAAeA,EAAavkF,MAAMF,MAAQ,EAEhE,OAAOE,EAKOskF,CAAqBxqE,GAA/B,YAAyCxB,EAAU1B,UAGvC,IAATkD,EAAA,UAAgBxB,EAAUtB,MAAMG,cAAhC,YAAiDmB,EAAU1B,UAA3D,UAA2E0B,EAAUb,MAAMN,cAA3F,YAA4GmB,EAAU1B,UAsC9G2sE,CAAYzpE,GACnBhK,SAAY21E,EAAevoF,SAAS,GAAG25B,eAE3C,cAAC,GAAD,CAA0B13B,KAAM21D,EAASh7C,KAAMA,KAtCvC,IAATA,GAAcwB,EAAgBC,IAAIxf,QAAU,GACnC,IAAT+d,GAA6C,IAA/BwB,EAAgBC,IAAIxf,SAsCN,cAAC4pF,GAAD,CAAsB7rE,KAAMA,QCpEpD8rE,GA7BiC,WAAO,MAEpCjzF,EAAO,yBAF6B,mBAE5Ce,EAF4C,KAEzCw5C,EAFyC,KAG3CjvC,EAAMN,EAAe8N,YAAYX,IAAjC7M,EAKR,OACI,sBAAKvN,UAAWgD,IAAhB,UAEI,qBAAKhD,UAAWw8C,EAAE,SAAlB,SAEI,cAAC,EAAD,CAAM18C,KAAK,MAAMC,UAAU,MAAMF,KAAK,qBAG1C,sBAAKG,UAAWw8C,EAAE,gBAAlB,UACI,6BAAKjvC,EAAE,gCACP,cAAC,GAAD,CAAMzN,KAAK,QAAX,SACCyN,EAAE,sCAGH,cAAC,GAAD,CAAkBoyD,UAAU,WCJ7Bw1B,GAxBmC,SAAC,GAG3C,IAFJt1F,EAEG,EAFHA,KACA6D,EACG,EADHA,SACG,EAEYzB,EAAO,4BAFnB,mBAEIe,EAFJ,KAEOw5C,EAFP,KAQH,OACI,sBAAKx8C,UAAWgD,IAAK9D,GAAIW,EAAzB,UACI,uBAAOG,UAAWH,EAAlB,SAAyBA,IAExB6D,EAED,qBAAK1D,UAAWw8C,EAAE,eAAlB,SACI,sBAAMx8C,UAAU,SAASo1F,YAAWv1F,EAApC,SAA2CA,UCJ9Cw1F,GACb,CAMI,CACIjmF,MAAO,aACPlL,MAAO,kCACPmL,KAAM,UAEV,CACID,MAAO,SACPlL,MAAO,8BACPmL,KAAM,UAEV,CACID,MAAO,UACPlL,MAAO,+BACPmL,KAAM,cAIDimF,GACb,CACI,CACI/yF,EAAG,IACHijB,EAAG,IACH+vE,GAAI,MACJ33C,KAAM,uCAEV,CACIr7C,EAAG,MACHijB,EAAG,MACH+vE,GAAI,MACJ33C,KAAM,uCAEV,CACIr7C,EAAG,OACHijB,EAAG,MACH+vE,GAAI,OACJ33C,KAAM,wCAEV,CACIr7C,EAAG,MACHijB,EAAG,IACH+vE,GAAI,MACJ33C,KAAM,8BAEV,CACIr7C,EAAG,MACHijB,EAAG,MACH+vE,GAAI,MACJ33C,KAAM,wCCbC43C,GAhD+B,WAAO,MAElCvzF,EAAO,wBAF2B,mBAE1Ce,EAF0C,KAEvCw5C,EAFuC,OAGDl8C,wBAAoCgK,GAHnC,mBAG1CmrF,EAH0C,KAGxBC,EAHwB,KAIzCnoF,EAAMN,EAAe8N,YAAYX,IAAjC7M,EASR,OACI,sBAAKvN,UAAWgD,IAAhB,UACI,6BAAKuK,EAAE,8CACP,sBAAKvN,UAAWw8C,EAAE,QAAlB,UACI,qBAAKx8C,UAAWw8C,EAAE,aAAlB,SACI,cAAC,GAAD,CAAWvW,MAAO14B,EAAE,qCAAwDvN,UAAWw8C,EAAE,aAAzF,SACI,cAAC,GAAD,CAAUzV,MAAOsuD,GAAqBp1C,SAVnC,SAAEgd,GACrBy4B,EAAoBz4B,IAS4D7tD,MAAOqmF,KADb,iBAIlE,qBAAKz1F,UAAWw8C,EAAE,iBAAkBi5C,EAAmB,GAAI,CAAC,UAA5D,cAC0BnrF,IAArBmrF,EACGH,GAAiBh3F,KAAK,SAACq3F,EAAUx9E,GAAX,OAClB,sBAAKnY,UAAWw8C,EAAE,yBAAlB,UACQ,sBAAKx8C,UAAWw8C,EAAE,eAAlB,UACI,sCAAOm5C,EAASpzF,EAAhB,QACA,wCAASozF,EAASnwE,KAClB,2CAAYmwE,EAASJ,SAEzB,qBAAKv1F,UAAS,UAAKw8C,EAAE,QAAP,YAAkBA,EAAEi5C,EAAmBA,EAAiBrmF,MAAQ,GAAI,CAAC,GAAD,OAAI+I,MAAtF,SACK5K,EAAEooF,EAAS/3C,UAPyB+3C,EAASpzF,EAAEozF,EAASnwE,EAAEmwE,EAASJ,OAYpF,oBAAIv1F,UAAWw8C,EAAE,mCCsF1Bo5C,GAxH4B,WAAO,MAE/B3zF,EAAO,oBAFwB,mBAEvCe,EAFuC,KAEpCw5C,EAFoC,KAGxChG,EAAWC,cAH6B,EAID17B,YAAY0d,IAAjDV,EAJsC,EAItCA,WAAYC,EAJ0B,EAI1BA,qBACd69D,EAAqB90F,iBAAO,MALY,EAMPga,YAAYkc,IAA3CpB,EANsC,EAMtCA,aAAcC,EANwB,EAMxBA,aAGtB90B,qBAAU,WACN,IAAM80F,EAAWC,IACXC,EAAeC,IACrB,OAAO,WACHH,EAASI,aACTF,EAAaE,gBAElB,IAEHl1F,qBAAU,WACNo3B,MACD,CAACL,IAGJ,IAAMg+D,EAAe,WACjB,IAAMnoE,EAAU,CACZuoE,KAAM70D,SAASiL,cAAc,WAC7B6pD,UAAW,GAETN,EAAW,IAAIO,qBAAqBC,EAAW1oE,GAGrD,OAFuB0T,SAASi1D,iBAAiB,WAClC1yE,SAAQ,SAAAkxC,GAAE,OAAI+gC,EAASU,QAAQzhC,MACvC+gC,GAGLG,EAAmB,WACrB,IAAMroE,EAAU,CACZuoE,KAAM70D,SAASiL,cAAc,WAC7B6pD,UAAW,KAETN,EAAW,IAAIO,qBAAqBI,EAAe7oE,GAGzD,OAFuB0T,SAASi1D,iBAAiB,iCAClC1yE,SAAQ,SAAAkxC,GAAE,OAAI+gC,EAASU,QAAQzhC,MACvC+gC,GAGLQ,EAAY,SAAC5nF,GACfA,EAAQmV,SAAS,SAAA6yE,GACb,GAAGA,EAAMC,eAAgB,CACrB,IAAMnjF,EAAOkjF,EAAMloD,OAAOooD,aAAa,aACpCpjF,GAAKgjC,EAASte,GAAcof,QAAQnf,iBAAiB3kB,SAK9DijF,EAAgB,SAAC/nF,GACnBA,EAAQmV,SAAS,SAAA6yE,GACb,GAAGA,EAAMC,eAAgB,CACrB,IAAID,EAAMloD,OAAO,OACjB,GAAGkoD,EAAMloD,OAAO/B,UAAUilB,SAAS,yCAAyC,OAC5EglC,EAAMloD,OAAO/B,UAAUlC,IAAI,8CAKjC46C,EAAS,SAACl2C,GACZ,IAAIA,EAAK,OAAO,EAChB,IAAMme,EAAMne,EAAKp3B,QAAO,SAACk9C,GAAD,OAAaA,KAErC,SADkB3H,GAAOA,EAAI/hD,OAAS,IAIpC+sB,EAAe,WACjB,GAAIL,EAAJ,CACA,IAAMg9B,EAAKzzB,SAASiL,cAAT,WAA2BxU,IAClCg9B,IACF,OAAFA,QAAE,IAAFA,KAAIq7B,eAAe,CACfyG,SAAU,SACVC,MAAO,aAGf,OACI,sBAAK92F,UAAWgD,EAAGg1B,EAAuB,OAAS,IAAnD,UAEI,cAAC,GAAD,CAAoBy7D,cAAeoC,IAGnC,sBAAK32F,GAAG,SAASc,UAAWw8C,EAAE,WAAY7X,IAAKkxD,EAA/C,UAEI,cAAC,GAAD,CAAwBh2F,KAAK,eAA7B,SACI,cAAC,GAAD,MAGAslF,EAAOtvD,IACH,cAAC,GAAD,CAAwBh2B,KAAK,QAA7B,SACI,cAAC,GAAD,CAAcukE,QAASvuC,EAAczM,KAAM,MAKnD+7D,EAAOrvD,IACH,cAAC,GAAD,CAAwBj2B,KAAK,QAA7B,SACI,cAAC,GAAD,CAAcukE,QAAStuC,EAAc1M,KAAM,MAKvD,cAAC,GAAD,CAAwBvpB,KAAK,UAA7B,SACI,cAAC,GAAD,MAGJ,cAAC,GAAD,CAAwBA,KAAK,cAA7B,SACI,cAAC,GAAD,aCmELk3F,GAlL0B,WAAO,MAE7B90F,EAAO,kBAFsB,mBAErCe,EAFqC,KAElCw5C,EAFkC,KAGtC9F,EAAW37B,YAAYX,GACrB4d,EAAyBjd,YAAY0d,IAArCT,qBAJoC,EAKmBjd,YAAYkc,IAAnET,EALoC,EAKpCA,uBAAwB7xB,EALY,EAKZA,iBAAkBD,EALN,EAKMA,SAC1C2hB,EAA2B1hB,EAA3B0hB,YAAauB,EAAcjjB,EAAdijB,UACbra,EAAMN,EAAeypC,GAArBnpC,EACFipC,EAAWC,cAR2B,EASFn2C,qBATE,mBASpCwmF,EAToC,KAStBC,EATsB,OAaxCnB,GAAkBlvC,GAFlB3S,EAXwC,EAWxCA,iBACA0iD,EAZwC,EAYxCA,uBAIJzlF,qBAAU,YACH,OAAC2D,QAAD,IAACA,OAAD,EAACA,EAAkB2iB,qBAAuByc,GAC7CgjD,EAAgBN,EAAuB9hF,EAAiB2iB,uBACzD,IAMH,IAQM0vE,EAAgB,SAAC/Z,GACnB,QAAG52D,IACI42D,EACQr1D,EAAUtB,MAAM/W,QAEhBqY,EAAUb,MAAMxX,UAwB7B0nF,EAA6B,WAC/B,OAAOzgE,GAA0BA,EAAuB,GAAGpnB,OAoBzD8nF,EAAe,SAAC9tE,GAClB,IAAI9Z,EAASw3E,EAETA,EAAa19D,GAAMzhB,MADnBigB,EAAUwB,GAAM3C,cAGpB,GAAGuwE,EAAuB,UAAT5tE,IAAqB09D,GAAgBpiF,EAASmmB,IAAI,CAC/D,IAAMgpE,EAAenvF,EAASmmB,IAAc,UAATzB,EAAmB,EAAI,GAC1D9Z,GAAkBukF,EAAeA,EAAavkF,MAAMF,MAAQ,EAGhE,OAAOE,GA7FiC,EA8GtBwrD,GAAkB,CAAC,OAAjCwB,EA9GoC,oBAgH5C,OACI,sBAAKt8D,UAAWgD,IAAhB,UAEI,sBAAKhD,UAAWw8C,EAAE,QAAS,CAACxkB,EAAuB,MAAQ,KAA3D,UACI,oBAAIh4B,UAAWw8C,EAAE,SAAjB,SAA4BjvC,EAAE,2BAE9B,qBAAIvN,UAAWw8C,EAAE,WAAjB,UAEQw6C,GAAc,GACd,+BACI,gCAAQzpF,EAAE,yBACV,4BAAIqa,EAAUtB,MAAMC,gBAGf+1C,GACG,iCAAO46B,EAAa,SAApB,IAA+BtvE,EAAU1B,eAI7C,mCAGR8wE,GAAc,GACd,+BACI,gCAAQzpF,EAAE,2BAER0pF,KACE,4BAzED,WAAO,IAAD,EACzBE,EAAS,GAQPjzF,EAAK,UAAIsyB,EAAgD,GAAGpnB,aAAvD,aAAG,EAA2DlL,MAKzE,OAHG+yF,KAAgC/yF,IAC/BizF,EAAS5pF,EART,CACAwlF,wBAAyB,wBACzBC,yBAA0B,wBAC1BC,oBAAqB,yBAKK/uF,KAEvBizF,EA2DqBC,MAELH,KACC,4BAAIrvE,EAAUb,MAAMR,gBAGnB+1C,GACG,iCAAO46B,EAAa,SAApB,IAA+BtvE,EAAU1B,eAI7C,oCAGP8wE,GAAc,KAASA,GAAc,IAAY16B,EAI1C,mCAHZ,+BACQ,gCAAQ/uD,EAAE,wBACV,+BA9GjBu5E,EACO,GAAN,OAAWoQ,EAAa,SAAWA,EAAa,SAAhD,YAA6DtvE,EAAU1B,UAErE,GAAN,OAAU0B,EAAUxB,cAApB,YAAqCwB,EAAU1B,kBAgHvC,sBAAKlmB,UAAWw8C,EAAE,WAAlB,UACI,cAAC,GAAD,CACIoB,KAAMrwC,EAAE,kCACRzN,KAAK,YACLuP,KAAK,qBACLtM,WAAYi0F,GAAc,IAASA,GAAc,IACjD/2F,MA9IA,WAChBu2C,EAASte,GAAcof,QAAQjf,oBAAmB,OA+ItC,cAAC,GAAD,CAAQulB,KAAMrwC,EAAE,yBAA2B8B,KAAK,2BAA2BpP,MA5I1E,WACbu2C,EAASte,GAAcof,QAAQ7uB,aA2IyE1lB,WAAYi0F,GAAc,IAASA,GAAc,YAIrJ,qBAAKh3F,UAAWw8C,EAAE,MAAO,CAACxkB,EAAuB,KAAO,WCtJrDq/D,GA3BqB,WAAO,MAE3Bp1F,EAAO,iBAAZe,EAFgC,oBAG/Bw7E,EAAiB3B,KAAjB2B,aACFhoC,EAAWC,cAajB,OAVAz1C,qBAAU,WAEN,IAAM4mB,EAAY42D,IAClBj9E,QAAQC,IAAI,YAAaomB,GACzB4uB,EAASzuB,GAAsBuvB,QAAQttB,aAAapC,MAEtD,IAKE,sBAAK5nB,UAAWgD,IAAhB,UAEI,cAAC,GAAD,IACA,cAAC,GAAD,QCyCGs0F,GAhEqB,SAChC7oF,GACG,IAAD,cAGaxM,EAAO,aAHpB,mBAGKe,EAHL,KAGQw5C,EAHR,KAIMjvC,EAAMN,EAAe8N,YAAYX,IAAjC7M,EACFipC,EAAWC,cAuCjB,OACA,sBAAKz2C,UAAWgD,IAAKlB,QAAS,kBArBXmtC,EAqB0BxgC,EAAKA,UApB9C+nC,EAASthC,EAASoiC,QAAQl+B,aAAa,CAAChS,MAAM,EAAMiS,OAAQ41B,KAD9C,IAACA,GAqBnB,UACI,sBAAKjvC,UAAWw8C,EAAE,UAAlB,UACI,kCACI,cAAC,EAAD,CAAM38C,KAzCE,WAAkE,IAAjEuP,EAAgE,uDAAlD,GAAI6iD,EAA8C,wDAAlBh+C,EAAkB,uDAAN,GAC3E,OAAO7E,EAAM4H,eACT,IAAK,MACL,IAAK,WACD,OAAGi7C,EAAkB,iBACd,WACX,IAAK,QACD,OAAGA,EAAkB,aACd,OACX,IAAK,QACD,OAAGA,EAAkB,eACd,SACX,QACI,MAA0B,QAAvBh+C,EAAK+C,eAAkD,QAAvB/C,EAAK+C,cAAgC,SACjE5H,GA2BKmoF,CAAW,UAAC9oF,EAAKA,YAAN,aAAC,EAAWvK,OAAO,EAAnB,UAA0BuK,EAAKA,YAA/B,aAA0B,EAAW3O,MAAOA,KAAK,MAAME,UAAU,cACxF,6BAtBQ,WAAoC,IAAnCw3F,EAAkC,uDAAtB,GAAIvjF,EAAkB,uDAAN,GAC7C,OAAOujF,EAAKxgF,eACR,IAAK,MACL,IAAK,WACD,OAAOzJ,EAAE,gBACb,IAAK,QACD,OAAOA,EAAE,kBACb,IAAK,SACL,IAAK,QACD,OAAOA,EAAE,mBACb,QACI,MAA0B,QAAvB0G,EAAK+C,eAAkD,QAAvB/C,EAAK+C,cAAgCzJ,EAAE,mBAC9DiqF,GAUPC,CAAW,UAAChpF,EAAKA,YAAN,aAAC,EAAWvK,MAAZ,UAAmBuK,EAAKA,YAAxB,aAAmB,EAAW3O,WAGlD,6BAAKkZ,IAAM,UAACvK,EAAKA,YAAN,aAAC,EAAWuF,aAAc,cAAc0jF,OAAO,cAAcpyD,gBAE5E,sBAAKtlC,UAAWw8C,EAAE,QAAlB,UACI,sCAAI/tC,EAAKA,YAAT,aAAI,EAAWsF,cACf,cAAC,EAAD,CAAMlU,KAAK,oBCsGR83F,GAhKuB,SAClC13F,GACG,IAAD,IAE0CK,mBAAS,IAFnD,gCAGoCA,mBAAS,IAH7C,mBAGKs3F,EAHL,KAGkBC,EAHlB,OAI8B98E,YAAYX,GAArC9G,EAJL,EAIKA,UAAWD,EAJhB,EAIgBA,WAJhB,EAKsB/S,mBAAS,GAL/B,mBAKKoqB,EALL,KAKWggD,EALX,OAMgCpqE,oBAAS,GANzC,mBAMgBw3F,GANhB,aAOgCx3F,oBAAS,GAPzC,mBAOgBy3F,GAPhB,WAQIC,EAAa,GACbC,EAAQllD,IAAMmlD,YATlB,EAWaj2F,EAAO,eAXpB,mBAWKe,EAXL,KAWQw5C,EAXR,KAYMjvC,EAAMN,EAAe8N,YAAYX,IAAjC7M,EACF4qF,EAAUtsD,OAAOpxB,SAASU,SAASqyB,MAAM,KAAKtQ,MAKpDl8B,qBAAU,WACiB62F,EAAeO,EAAvB,SAAZD,EAA6C9kF,EAClBC,MAC7B,CAACA,EAAWD,IACjB,IAqBM+kF,EAAY,WAAmB,IAAlBnpD,EAAiB,uDAAN,GACtBp2B,EAAc,GAIlB,OAHAo2B,EAAK3wC,KAAI,SAAC+5F,GACE,IAAPA,GAAUx/E,EAAQvV,KAAK+0F,MAErBx/E,EAAQxN,OAAO,GA6CpBitF,EAAe,SAACl4F,GAClB,IAAIm4F,EAAY7tE,EACZ08B,EAAS4wC,EAEVttE,GAAM,IACL6tE,EAAY7tE,GAEbA,EAAMktE,IACLW,EAAWX,GAEC,SAAbx3F,GACC63F,EAAMh3F,QAAQ0uF,YAAqB,GAAPvoC,EAC5BA,EAAU4wC,EAAWO,EACrBA,MAGAA,IACAnxC,EAAU4wC,EAAWO,EACrBN,EAAMh3F,QAAQ0uF,YAAqB,GAAPvoC,GAIhCsjB,EAAQ6tB,IAIZ,OAAO,mCArEa,WAChB,IAAInrC,EAAc,GAalB,MAZe,SAAZ+qC,EACC9kF,EAAW/U,KAAI,SAAC+5F,GACF,IAAPA,EAAUjrC,EAAI9pD,MAAK,GACjB8pD,EAAI9pD,MAAK,MAGlBgQ,EAAUhV,KAAI,SAAC+5F,GACD,IAAPA,EAAUjrC,EAAI9pD,MAAK,GACjB8pD,EAAI9pD,MAAK,QAGT8pD,EAAI7yC,UAAS,GA0DzBi+E,IACG,sBAAKx4F,UAAWgD,IAAhB,UACI,sBAAKhD,UAAWw8C,EAAE,UAAlB,UACI,6BAAKjvC,EAAE,qBACP,sBAAKvN,UAAU,SAAf,UACI,cAAC,EAAD,CACIA,UAAoB,IAAT0qB,EAAc,WAAa,GAEtC7qB,KAAK,qBAAqBI,MAAO,kBAAIq4F,EAAa,WACtD,cAAC,EAAD,CACIt4F,UAAW0qB,GAASktE,EAAY,EAAK,WAAY,GAEjD/3F,KAAK,qBAAqBI,MAAO,kBAAIq4F,EAAa,iBAI9D,qBAAKt4F,UAAWw8C,EAAE,eAClB7X,IAAKszD,EAELQ,SApEY,WAAM,IAAD,EACwBR,EAAMh3F,QAA/C0uF,EADiB,EACjBA,WAAY+I,EADK,EACLA,YAAatyC,EADR,EACQA,YAC7B98C,KAAKo6E,MAAMiM,EAAavpC,KAAiBsyC,IAEzCZ,GAAa,GACbC,GAAa,IAM2B,MAAzCzuF,KAAKo6E,MAAMiM,EAAavpC,KACvB2xC,GAAa,GACbD,GAAa,KAoDT,mBArEO,SAAZK,EAA2B9kF,EAClBC,SAoEJ,aAMQ,EAAchV,KAAI,SAAC2wC,EAAU3jC,GACrB,OAAgB,IAAT2jC,GACH,cAAC,GAAD,CAAUxgC,KAAMwgC,GAAW3jC,c,UCyGhDqtF,GApPiB,WAAQ,IAAD,QAG7BC,EAAW,CACb,CAAE10F,MAAO,eAAgB20F,QAAS,MAAO/kF,UAAU,GACnD,CAAE5P,MAAO,kBAAmB20F,QAAS,QAAS/kF,UAAU,GACxD,CAAE5P,MAAO,iBAAkB20F,QAAS,QAAS/kF,UAAU,GACvD,CAAE5P,MAAO,eAAiB20F,QAAS,MAAO/kF,UAAU,IAPrB,EAehB7R,EAAO,aAfS,mBAe5B62F,EAf4B,KAevBC,EAfuB,OAgBhB92F,EAAO,kBAhBS,mBAgB5B+2F,EAhB4B,KAgBvBC,EAhBuB,OAiBpBh3F,EAAO,cAjBa,mBAiB5Be,EAjB4B,KAiBzBw5C,EAjByB,KAkB3BjvC,EAAMN,EAAe8N,YAAYX,IAAjC7M,EAlB2B,EAmBLjN,mBAAS,OAnBJ,mBAmB5Bu4F,EAnB4B,KAmBnBK,EAnBmB,OAoBX54F,mBAAS,GApBE,mBAoB5B67C,EApB4B,KAoBtBg9C,EApBsB,OAqBT74F,mBAAS,IArBA,mBAqB5BymC,EArB4B,KAqBrBqyD,EArBqB,KAsB7B5iD,EAAWC,cACT5iC,EAAckH,YAAYX,GAA1BvG,UACAkC,EAAUgF,YAAYX,GAAtBrE,MACFoiF,EAAUtsD,OAAOpxB,SAASU,SAASqyB,MAAM,KAAKtQ,MAO9Cm8B,EAAe,WACjB7iB,EAASthC,EAASoiC,QAAQl+B,aAAa,CAAChS,MAAM,MAElDpG,qBAAU,WACNq4F,MACC,IAGL,IAAMA,EAAY,WACd,IAAMx1D,EAAe,CAAE91B,QAAS,CAAC,+BAA4BgI,KAEvD6K,EAAkB,SAAZu3E,EAAA,UACTtsF,EAAUQ,MADD,iBACe8vC,GADf,UAETtwC,EAAUS,SAFD,iBAEkB6vC,GAC9Bg9C,EAAQh9C,EAAK,GACbtuC,IACDC,IACC8S,EAAKijB,GACNhlC,MAAK,SAAAoP,GACJA,EAAIQ,KAAKpF,MAAK,SAASmB,EAAMmE,GACzB,OAAOqK,IAAOrK,EAAEqF,aAAa,cAAcgmD,OAAShhD,IAAOxO,EAAEwJ,aAAa,cAAcgmD,UAE5Fo/B,EAAS,GAAD,mBAAKryD,GAAL,YAAe94B,EAAIQ,QAC3B,IAAMwK,EAAQ,IAAI9O,KAER,IAAPgyC,GAAwB,SAAZg8C,GACX3hD,EAASthC,EAASoiC,QAAQ1+B,YAAY,CAACK,MAAOA,EAAOH,KAAM7K,EAAIQ,QACzD,IAAP0tC,GAAwB,SAAZg8C,GACX3hD,EAASthC,EAASoiC,QAAQn+B,WAAW,CAACF,MAAMA,EAAOH,KAAM7K,EAAIQ,WAChEnN,MAAMsM,IAELA,EAAU,SAACinB,KAsBX4iE,EAAc,SAACD,EAAavjF,GAC9B,OAAOujF,EAAKxgF,eACR,IAAK,MACL,IAAK,WACD,OAAOzJ,EAAE,gBACb,IAAK,QACD,OAAOA,EAAE,kBACb,IAAK,SACL,IAAK,QACD,OAAOA,EAAE,mBACb,QACI,MAA0B,QAAvB0G,EAAK+C,eAAkD,QAAvB/C,EAAK+C,cAAgCzJ,EAAE,mBAC9DiqF,IAwBlBD,EAAc,SAACnoF,GAA8D,IAA/C6iD,EAA8C,wDAAlBh+C,EAAkB,uDAAN,GACxE,OAAO7E,EAAM4H,eACT,IAAK,MACL,IAAK,WACD,OAAGi7C,EAAkB,iBACd,WACX,IAAK,QACD,OAAGA,EAAkB,aACd,OACX,IAAK,QACD,OAAGA,EAAkB,eACd,SACX,QACI,MAA0B,QAAvBh+C,EAAK+C,eAAkD,QAAvB/C,EAAK+C,cAAgC,SACjE5H,IAqBbkqF,EAAS,WAAM,IAAD,IACZx5F,EAAc,GAClB,aAAG+T,EAAUC,gBAAb,aAAG,EAAoB5P,MAAM,CAAC,IAAD,IACzB,iBAAO2P,EAAUC,gBAAjB,aAAO,EAAoB5P,MAAM8S,eAC7B,IAAK,MACL,IAAK,WACDlX,EAAO,WACP,MACJ,IAAK,QACDA,EAAO,QACP,MACJ,IAAK,QACDA,EAAO,QAMX,MAF2C,SAA3C,UAAA+T,EAAUC,gBAAV,eAAoBhU,KAAKkX,gBAAsE,SAA3C,UAAAnD,EAAUC,gBAAV,eAAoBhU,KAAKkX,iBAC7ElX,EAAO,SACAA,EAEf,MAAO,IAKX,OAAO,sBAAKE,UAAU,OAAQd,GAAG,gBAA1B,UACK,cAAC,GAAD,IACA,sBAAKc,UAAU,iBAAf,UACI,qBAAKA,UAAW84F,IAAhB,SACI,oBAAI94F,UAAW+4F,EAAI,SAAnB,SAlFLH,EAASt6F,KAAI,SAAC+K,EAAKiC,GAC1B,OACI,cAAC,GAAD,CAAkBsyC,KAAMrwC,EAAElE,EAAKnF,OAAQ85C,aAAa,OACpD/9C,MAAO,kBA7EEmP,EA6Ec/F,EAAKwvF,aA5EpCK,EAAW9pF,GADK,IAACA,GA8ETC,KAAMkoF,EAAYluF,EAAKwvF,QAASA,IAAUxvF,EAAKwvF,SAC/C74F,UAAW,aAAa64F,IAAUxvF,EAAKwvF,QAAU,WAAa,IAC9Dv6C,SAAS,MACTx+C,KAAK,aALQwL,UAoFT,qBAAKtL,UAAWg5F,IAAhB,SACA,cAAC,KAAD,CAAiBO,WAAYxyD,EAAM17B,OAAQmuF,OAAQ,uBACnDC,KAAMJ,EAAWK,SAAS,EAAMC,WAAY,yCAC5Cj4F,MAAO,CAAC0B,MAAO,QACfw2F,iBAAiB,gBAHjB,SAII,oBAAI55F,UAAWi5F,EAAI,SAAnB,SAxDA,WAChB,OA1EaxqF,EA4EGs4B,EA1ED,QAAZ8xD,EAA2BpqF,EACd,QAAZoqF,EACOpqF,EAAKoJ,QAAO,SACfA,GADe,OAEfA,EAAO3T,MAAM8S,gBAAkB6hF,GAA2C,aAA/BhhF,EAAO3T,MAAM8S,iBAEjD,UAAZ6hF,EACQpqF,EAAKoJ,QAAO,SACfA,GADe,OAEfA,EAAO3T,MAAM8S,gBAAkB6hF,GAA0C,QAA9BhhF,EAAO/X,KAAKkX,eACrB,QAA9Ba,EAAO/X,KAAKkX,iBAERvI,EAAKoJ,QAAO,SACxBA,GADwB,OAExBA,EAAO3T,MAAM8S,gBAAkB6hF,MA4DZv6F,KAAI,SAAC2V,EAAK3I,GACjB,OAAO,qBAActL,UAAWi5F,EAAI,QAA7B,UACH,cAAC,EAAD,CAAMp5F,KAAM03F,EAAYtjF,EAAK/P,OAAM,EAAM+P,EAAKnU,MAAOA,KAAK,MAAME,UAAU,cAC1E,wBAAOA,UAAU,YAAjB,UAA8By3F,EAAYxjF,EAAK/P,MAAO+P,EAAKnU,MAA3D,OACA,uBAAOE,UAAU,cAAjB,SAAgCiU,EAAKF,cACrC,uBAAO/T,UAAU,eAAjB,SAAiCgZ,IAAO/E,EAAKD,aAAc,cAAc0jF,OAAO,cAAcpyD,aAC9F,cAAC,GAAD,CAAkBsY,KAAMrwC,EAAE,kBAAmBywC,aAAa,OAAO3uC,KAAK,WACtEpP,MAAO,kBAhCb,SAACH,EAAcmU,GAC7BuiC,EAASthC,EAASoiC,QAAQl+B,aAAa,CAAChS,MAAM,EAAMiS,OAAQpF,KA+B7B4lF,CAAU5lF,EAAKnU,KAAMmU,IAChCnU,KAAK,aAFQwL,KALDA,MA7EpB,IAACmD,EAkIQqrF,YAMb,eAAC,GAAD,CAAOrnF,KAAMoB,EAAUJ,OAAQ/R,MA/LxB,CACf0B,MAAO,UACPC,OAAQ,UACRgsD,aAAc,QA4L4CrvD,UAAWgD,IAAK2kD,QAAS,kBAAM0R,KAAjF,UACI,qBAAKr5D,UAAWw8C,EAAE,UAAlB,SACI,cAAC,GAAD,CACIoB,KAAMrwC,EAAE,uBACRzN,KAAK,YAAYm+C,OAAO,SACxB5uC,KAAK,yBACL2uC,aAAa,OACb/9C,MAAO,kBAAIo5D,SAGnB,sBAAKr5D,UAAWw8C,EAAE,QAAD,iBAAS3oC,EAAUC,gBAAnB,aAAS,EAAoB5P,QAA9C,UAGqB,aAAbo1F,KACI,wBACAv3F,IAAG,UAAE8R,EAAUC,gBAAZ,aAAE,EAAoBG,OAOhB,UAAbqlF,KACI,uBAAOS,UAAQ,EAACl4C,UAAQ,EAAxB,SACI,wBAAQ9/C,IAAG,UAAE8R,EAAUC,gBAAZ,aAAE,EAAoBG,KAAMnU,KAAK,gBAOvC,UAAbw5F,KACI,qBAAKv3F,IAAG,UAAE8R,EAAUC,gBAAZ,aAAE,EAAoBG,iB,WCzD/C+lF,GA1K8B,WAAO,MAEjC/3F,EAAO,sBAF0B,mBAEzCe,EAFyC,KAEtCw5C,EAFsC,OAG5Bl8C,mBAAS,IAHmB,mBAGzCpB,EAHyC,KAGrC82B,EAHqC,OAIhB11B,mBAAS,IAJO,mBAIzC25F,EAJyC,KAI/BC,EAJ+B,KAK1C1jD,EAAWC,cACXG,EAAO7K,KANmC,EAOhB9+B,EAAe8N,YAAYX,IAAnD7M,EAPwC,EAOxCA,EAAGY,EAPqC,EAOrCA,iBAPqC,EAQewiC,GAAY51B,YAAY+K,KAA/EmrB,EARwC,EAQxCA,gBAAiBC,EARuB,EAQvBA,qBAAsBC,EARC,EAQDA,YARC,EAShB7wC,qBATgB,mBASzC65F,EATyC,KAS/BC,EAT+B,OAUR95F,mBAAS,IAVD,mBAUzC47D,EAVyC,KAU3BC,EAV2B,KAWxClmD,EAAmB8E,YAAYX,GAA/BnE,eAXwC,EAYlB88B,IAAMgE,WAAWjE,IAAxChlC,EAZyC,EAYzCA,IAAK+lC,EAZoC,EAYpCA,OAAQH,EAZ4B,EAY5BA,OACZ1wB,EAAajI,YAAY+K,IAAzB9C,SACF8zB,EAAMjE,KAdoC,EAkB5CmB,KAFAY,EAhB4C,EAgB5CA,aACAC,GAjB4C,EAiB5CA,WAIJ7zC,qBAAU,WAENo5F,EAAYC,QACb,IAKH,IAAMC,GAAQ,uCAAG,4BAAA9vF,EAAA,sEAEWsD,EAAI,mBAAoB,aAFnC,OAEP0sC,EAFO,OAGb2hB,EAAgB,IAChBtuD,IAAMi2B,KAAKj4B,EAAUC,gBAAiB,CAClCyuF,SAAUr7F,EACV+6F,SAAUA,EACVO,WAAYhgD,EAAYA,EAAUprC,MAAQ+qF,IAC3Ct7F,MAAK,SAACoP,GACL,IAAM8H,EAAQ9H,EAAIQ,KAAK,gBACvB+nC,EAASthC,EAASoiC,QAAQxhC,SAASC,IACnCygC,EAASthC,EAASoiC,QAAQ9+B,YAAYyhF,IAElCz/C,GAAU3G,EAAO,mBAAoB,CACrC30C,GAAI,YACJkQ,MAAO+qF,IAEXM,QAEHn5F,MAAMsM,IAnBM,2CAAH,qDAsBR6sF,GAAoB,WACtBjkD,EAASthC,EAASoiC,QAAQlpC,SAAQ,IAElCP,IAAMC,IAAIjC,EAAUE,QAAS,CAAEgC,QAAS,CAACC,eAAgB,EAAM9N,YAAa,KAASrB,KAArF,+BAAA2L,EAAA,MAA0F,WAAOyD,GAAP,yCAAAzD,EAAA,6DAE9EqrC,EAAS5nC,EAAIQ,KAAbonC,KACJ9jB,EAAiB8jB,EAAKzpC,QAC1B4lB,aAAa6pB,QAAQ,UAAW9pB,GAEhCykB,EAASthC,EAASoiC,QAAQthC,mBAAmB/H,EAAIQ,OANqC,kBAS3BN,EAAiBF,EAAIQ,KAAKonC,KAAK1pC,QATJ,mBAStDssC,EATsD,EAS3ElqC,aAAeE,KAT4D,wBAW9Eb,GAAQ,8BAXsE,4CAchDE,EAAI,gBAAiB,gBAd2B,eAc5E4sF,EAd4E,OAe5EC,EAAQD,EAA+BhnD,EAATG,EAf8C,UAiB5E8mD,EAAK,gBAAiB,CACxBz7F,GAAI,eACJkQ,MAAOqpC,EAAiBrsC,UAnBsD,eAqBlFoqC,EAASthC,EAASoiC,QAAQphC,YAAYuiC,EAAiBtsC,SACvDqqC,EAASthC,EAASoiC,QAAQpgC,eAAepH,EAAqBgD,OAtBoB,UAuB3Dm+B,IAvB2D,eAuB5EzkC,EAvB4E,OAwB5EosC,EAAoBzH,EAAY3kC,EAAS+B,aAAaE,KAAKjC,UAAU,GAC3EgqC,EAASthC,EAASoiC,QAAQhgC,YAAYshC,IACtCpC,EAASnzB,GAAci0B,QAAQ1yB,kBAAkBg0B,IACjDpC,EAASnzB,GAAci0B,QAAQtyB,oBAAoB,CAC/CE,MAAOlC,EACPiC,YAAa2zB,KA7BiE,UAgC7D1H,IAhC6D,WAgC5E2H,EAhC4E,OAiClFrC,EAASthC,EAASoiC,QAAQ//B,gBAAgB,CAAC9I,KAAMoqC,EAAOtqC,aAAaE,QAjCa,EAmCjDR,EAAIQ,KAAKonC,KAAnC1pC,EAnC2E,EAmC3EA,OAAQC,EAnCmE,EAmCnEA,SAnCmE,EAmC1DF,MAnC0D,kCAsCpD0oC,EAAazoC,EAAQC,GAtC+B,QAsCxEpD,EAtCwE,OAuCxE8vC,EAAYjE,GAAW7rC,EAAOyF,KAAMrC,GAC1CoqC,EAASthC,EAASoiC,QAAQr9B,cAAc6+B,IAxCsC,QA0ClF3B,GAAiBlpC,EAAIQ,KAAKyX,SAASlnB,KAAMi7F,GACzCzjD,EAASthC,EAASoiC,QAAQlpC,SAAQ,IAClCwoC,EAAKnzC,MAAMO,EAAOG,KAAM,KA5C0D,kDA8ClFyJ,GAAQ,KAAMW,cA9CoE,0DAA1F,uDAkDCjN,MAAMsM,KAGLupC,GAAmB,SAACn4C,EAAcmU,GACpC,IAAMynF,EAAW/uD,OACL,OAAG51B,QAAH,IAAGA,KAAgB0hC,QAC/BijD,EAAI9uD,UAAUxoC,KAAK,CAGfs0C,WAAYd,EAAIhxC,MAIlB8H,GAAU,SAACinB,GACb2hB,EAASthC,EAASoiC,QAAQlpC,SAAQ,IAElC,IACI+tD,EAAgBtnC,EAAMzsB,SAASqG,KAAKqG,SACtC,MAAO+f,GACLtzB,QAAQC,IAAIqzB,GACZsnC,EAAgB,qCAIlBk+B,GAAc,WAChB,OAAqB,OAAdpkF,QAAc,IAAdA,OAAA,EAAAA,EAAgBukF,aAAcK,gBAGzC,OACI,qBAAK76F,UAAWgD,IAAhB,SAEI,sBAAKhD,UAAWw8C,EAAE,QAAlB,UACI,uBAAO18C,KAAK,SAASD,KAAK,WAAWuP,MAAO+qF,IAG5C,cAAC,EAAD,CAAMt6F,KAAK,OAAOC,KAAK,QAAQE,UAAWw8C,EAAE,UAE5C,qBAAIx8C,UAAWw8C,EAAE,SAAjB,cAA6BjvC,EAAE,8BAC/B,uBAAOvN,UAAWw8C,EAAE,QAApB,SAA8BjvC,EAAE,6BAEhC,sBAAKvN,UAAWw8C,EAAE,UAAlB,UACI,cAAC,GAAD,CAAWgT,YAAajiD,EAAE,4BAA6BzN,KAAK,aAAasP,MAAOlQ,EAAIioD,SAAW,SAAApuC,GAAC,OAAIid,EAAMjd,EAAEy1B,OAAOp/B,MAAM6kB,kBACzH,cAAC,GAAD,CACIu7B,YAAajiD,EAAE,8BACfzN,KAAK,aACLsP,MAAO6qF,EACP9yC,SAAW,SAAApuC,GAAC,OAAImhF,EAAYnhF,EAAEy1B,OAAOp/B,MAAM6kB,qBAInD,sBAAKj0B,UAAWw8C,EAAE,UAAlB,UACI,gCACM0f,IAEN,cAAC,GAAD,CACIj8D,MAAO,kBAAMq6F,MACb18C,KAAMrwC,EAAE,+BACR8B,KAAK,2BACLrP,UAAWw8C,EAAE,WACbz5C,UAAa7D,IAAO+6F,aCjI7Ba,GA5C2B,SAAC,GAEnC,IADJC,EACG,EADHA,WACG,EAEY94F,EAAO,mBAFnB,mBAEIe,EAFJ,KAEOw5C,EAFP,OAG2Bl8C,oBAAS,GAHpC,mBAGIuhE,EAHJ,KAGa+lB,EAHb,KAIIr6E,EAAKN,EAAe8N,YAAYX,IAAhC7M,EACDopC,EAAKnL,KAkBX,OACI,sBAAKxrC,UAAWgD,EAAG6+D,EAAU,UAAY,IAAzC,UAEI,cAAC,GAAD,CAAM/hE,KAAK,QAAQ0nD,MAAI,EAAvB,SACKj6C,EAAE,2CAGP,cAAC,GAAD,CACItN,MArBc,WACtB2nF,GAAW,GACX37C,YAAW,WACP8uD,EAAWroE,GAAcsoE,SAC1B,KAEHrkD,EAAGlL,MAAM,CACLp3B,SAAU,YACViB,OAAQ,mBACRpR,MAAO,sBAaHmL,KAAM,cAAC,GAAD,CAAavP,KAAK,QAAQI,WAAW,UAAU2C,KAAK,UAC1D+6C,KAAMrwC,EAAE,yCACRzN,KAAK,YACL+9C,UAAU,IAEd,qBAAK79C,UAAWw8C,EAAE,iB,8BCvBfy+C,GArB4B,SAAC,GAIpC,IAHJj7F,EAGG,EAHHA,UACA02D,EAEG,EAFHA,UACAz2D,EACG,EADHA,MACG,EAESgC,EAAO,oBAAZe,EAFJ,oBAQH,OACI,sBAAKhD,UAAWgD,EAAE0zD,GAAa,IAAM12D,EAAW8B,QAAS7B,EAAzD,UACI,cAAC,EAAD,CAAOH,KAAM42D,EAAW7zD,KAAK,SAASD,MAAM,SAC5C,cAAC,EAAD,CAAO9C,KAAM42D,EAAW7zD,KAAK,SAASD,MAAM,SAC5C,cAAC,EAAD,CAAO9C,KAAM42D,EAAW7zD,KAAK,SAASD,MAAM,aC0FzCs4F,GAnG0B,WAAO,MAE7Bj5F,EAAO,kBAFsB,mBAErCe,EAFqC,KAElCw5C,EAFkC,KAGtChG,EAAWC,cACT5lB,EAAiB9V,YAAY+f,IAA7BjK,aAJoC,EAKhBvwB,oBAAS,GALO,mBAKrCyvF,EALqC,KAK7BC,EAL6B,KAOrCziF,EAAKN,EAAe8N,YAAYX,IAAhC7M,EACD4tF,EAEF,CACArjF,QAAS,+BACT6P,QAAS,gCACTzP,QAAS,gCAIblX,qBAAU,WACNgvF,GAAU,KACX,IAGH,IAAMn1D,EAAa,SAACqpC,GAChB1tB,EAAS5b,GAAe0c,QAAQzc,WAAWqpC,KAGzCk3B,EAAgB,SAACl3B,GACnB,OAAOA,IAASrzC,EAAe,OAAS,IAQtCwqE,EAAc,SAChB3kC,EACAt2D,EACAw2C,GAEA,OACI,cAAC,GAAD,CAAiB8f,UAAWA,EACxBz2D,MAAO,kBAZDikE,EAYgBttB,QAX1B/lB,GAAgBA,EAAaxlB,OAAS,GAC1CwvB,EAAWqpC,IAFE,IAACA,GAaNlkE,UAAWw8C,EAAE,eAAgBp8C,MAGzC,OACI,sBAAKJ,UAAWgD,IAAhB,UACI,qBAAKhD,UAAWw8C,EAAE,aAAcuzC,EAAS,SAAW,MAEpD,sBAAK/vF,UAAWw8C,EAAE,eAAgB3rB,GAAlC,UACI,sBAAK7wB,UAAWw8C,EAAE,OAAQ,WAA1B,UACI,qBAAKx8C,UAAWw8C,EAAE,SAAU4+C,EAAc,YAA1C,SACKC,EAAY,QAAS,QAAS,aAEnC,qBAAKt5F,IAAKu5F,WAAkBt5F,IAAI,GAAGhC,UAAWw8C,EAAE,eAAgBuzC,EAAS,SAAW,MACpF,uBAAOjuF,QAAS,kBAAM+4B,EAAW,YAAjC,SACKttB,EAAE,qCAGX,sBAAKvN,UAAWw8C,EAAE,OAAQ,WAA1B,UACI,sBAAKx8C,UAAWw8C,EAAE,SAAU4+C,EAAc,YAA1C,UACKC,EAAY,OAAQ,OAAQ,WAC5BA,EAAY,QAAS,QAAS,cAEnC,qBAAKt5F,IAAKw5F,WAAkBv5F,IAAI,GAAGhC,UAAWw8C,EAAE,eAAgBuzC,EAAS,SAAW,MACpF,uBAAOjuF,QAAS,kBAAM+4B,EAAW,YAAjC,SACKttB,EAAE,sCAGX,sBAAKvN,UAAWw8C,EAAE,OAAQ,WAA1B,UACI,qBAAKx8C,UAAWw8C,EAAE,SAAU4+C,EAAc,YAA1C,SACKC,EAAY,OAAQ,OAAQ,aAGjC,qBAAKt5F,IAAKy5F,WAAkBx5F,IAAI,GAAGhC,UAAWw8C,EAAE,eAAgBuzC,EAAS,SAAW,MACpF,uBAAOjuF,QAAS,kBAAM+4B,EAAW,YAAjC,SACKttB,EAAE,qCAIX,oBAAIvN,UAAWw8C,EAAE,SAAU3rB,GAA3B,SA3EO,CAAC,UAAW,UAAW,WA6EXvyB,KAAI,SAACyqB,EAAM5Q,GAAP,OACX,oBACInY,UAAa6wB,IAAiB9H,GAAS8H,EAA2B,GAAX,SACvD/uB,QAAS,kBAAM+4B,EAAW9R,IAF9B,SAIKxb,EAAE4tF,EAAepyE,KADb5Q,eCxG/BsjF,GAA0B,CAC5B3jF,QAAS,CACLmuB,MAAO,6CACPlyB,YAAa,4CAEjB4T,QAAS,CACLse,MAAO,+CACPlyB,YAAa,0CAEjBmE,QAAS,CACL+tB,MAAO,6CACPlyB,YAAa,0CAIf2nF,GAAiB,CACnB,CACIz1D,MAAO,kDACPlyB,YAAa,8CAEjB,CACIkyB,MAAO,2CACPlyB,YAAa,sCAEjB,CACIkyB,MAAO,+CACPlyB,YAAa,2CAEjB,CACIkyB,MAAO,kDACPlyB,YAAa,8CC6DN4nF,GA5E2B,SAAC,GAEnC,IADJZ,EACG,EADHA,WACG,EAEY94F,EAAO,mBAFnB,mBAEIe,EAFJ,KAEOw5C,EAFP,OAGqBl8C,mBAAS,GAH9B,mBAGIoqB,EAHJ,KAGUggD,EAHV,OAI+BpqE,oBAAS,GAJxC,mBAIIs7F,EAJJ,KAIeC,EAJf,OAKiCv7F,oBAAS,GAL1C,mBAKIw7F,EALJ,KAKgBC,EALhB,OAMqCz7F,oBAAS,GAN9C,mBAMkB07F,GANlB,WAOKzuF,EAAKN,EAAe8N,YAAYX,IAAhC7M,EAEFiuE,EAAQkgB,GAGd16F,qBAAU,WACN66F,GAAa,GAEb5vD,YAAW,WACP+vD,GAAgB,KACjB,OACJ,IAGH,IAUMC,EAAmB,SAAC/yF,GACtB,OAAO,IAAI7G,MAAM6G,GAAOC,KAAK,IAAI7K,KAAK,SAACyqB,EAAM5Q,GAAP,OAAiB,8BACnD,iCAAOA,EAAM,EAAb,IAAiBqjE,EAAMnwE,WADsC8M,OAarE,OACI,sBAAKnY,UAAWgD,EATG,WACnB,IAAMk5F,EAAiB,GAGvB,OAFGN,GAAUM,EAAK54F,KAAK,cACpBw4F,GAAWI,EAAK54F,KAAK,eACjB44F,EAKWC,IAAlB,UACI,qBAAKn8F,UAAWw8C,EAAE,aAClB,sBAAKx8C,UAAWw8C,EAAE,WAAlB,UACI,qBAAKx8C,UAAWw8C,EAAE,eAAlB,SACKy/C,EAAiBvxE,EAAO,KAG7B,sBAAK1qB,UAAWw8C,EAAE,iBAAlB,UACI,6BACKjvC,EAAEiuE,EAAM9wD,GAAMub,SAEnB,cAAC,GAAD,CAAMnmC,KAAK,QAAX,SAAoByN,EAAEiuE,EAAM9wD,GAAM3W,eAElC,cAAC,GAAD,CACI9T,MAvCP,WACT,GAAGyqB,IAAU8wD,EAAMnwE,OAAS,EAIxB,OAHA0vF,EAAWroE,GAAc0pE,MACzBJ,GAAgB,QAChB/vD,YAAW,kBAAM8vD,GAAc,KAAM,KAGzCrxB,EAAQhgD,EAAO,IAiCCkzB,KAAMrwC,EAAE,6BACR8B,KAAM,cAAC,GAAD,CAAavP,KAAK,QAAQI,WAAW,UAAU2C,KAAK,UAC1D/C,KAAK,cAGb,qBAAKE,UAAWw8C,EAAE,iBAAlB,SACKy/C,EAAiBzgB,EAAMnwE,QAAUqf,EAAO,aC1B9C2xE,GA3C8B,SAAC,GAEtC,IADJ10C,EACG,EADHA,QACG,EAEY1lD,EAAO,uBAFnB,mBAEIe,EAFJ,KAEOw5C,EAFP,KAGK3rB,EAAiB9V,YAAY+f,IAA7BjK,aACDlqB,EAAeH,IAAfG,YACD21F,EAAyBb,GAL5B,EAMuBn7F,qBANvB,mBAMK4jE,EANL,KAMWiF,EANX,KAUK57D,EAAMN,EAAe8N,YAAYX,IAAjC7M,EAIRvM,qBAAU,WACN,GAAG6vB,EAAa,CACZ,IAAMjI,EAAajiB,EAAY21F,GAC/BnzB,EAAQvgD,EAAWiI,OAExB,CAACA,IAOJ,OACI,sBAAK7wB,UAAWgD,EAAG6tB,GAAgBA,EAAaxlB,OAAS,EAAI,OAAS,IAAtE,UAEI,cAAC,GAAD,CAAQuyC,KAAMrwC,EAAE,8BAA+BzN,KAAK,SAASG,MAPvD,WACV0nD,OAQI,sBAAK3nD,UAAWw8C,EAAE,eAAlB,UAEI,iCAASjvC,GAAM,OAAJ22D,QAAI,IAAJA,OAAA,EAAAA,EAAMj+B,QAAS,MAC1B,4BAAI14B,GAAM,OAAJ22D,QAAI,IAAJA,OAAA,EAAAA,EAAMnwD,cAAe,aC1B5BwoF,GAjBkC,SAAC,GAE1C,IADJC,EACG,EADHA,SACG,EAESv6F,EAAO,0BAAZe,EAFJ,oBAQH,OACI,qBAAKhD,UAAWgD,IAAhB,SACI,cAAC,GAAD,CAAS46C,KAAM4+C,O,UC6LZC,GAzLsB,WAAO,MAEzBx6F,EAAO,aAFkB,mBAEjCe,EAFiC,KAE9Bw5C,EAF8B,OAGJl8C,oBAAS,GAHL,mBAGjCo8F,EAHiC,KAGrBC,EAHqB,KAIlCC,EAAa77F,mBAJqB,EAKTga,YAAY+f,IAAnCtnB,EALgC,EAKhCA,KAAMqd,EAL0B,EAK1BA,aACR2lB,EAAWC,cACX+oC,EAAgBz+E,iBAAY,IAPM,EAQcT,oBAAS,GARvB,mBAQjCu8F,EARiC,KAQZC,EARY,OASAx8F,oBAAS,GATT,mBASjCy8F,EATiC,KASnBC,EATmB,OAUQ18F,oBAAS,GAVjB,mBAUjC28F,EAViC,KAUfC,EAVe,OAWI58F,oBAAS,GAXb,mBAWjC68F,EAXiC,KAWjBC,EAXiB,KAYhC7vF,EAAMN,EAAe8N,YAAYX,IAAjC7M,EACFopC,EAAKnL,KACH19B,EAAQilC,IAAMgE,WAAWjE,IAAzBhlC,IACF8oC,EAAO7K,KAf2B,EAgBVzrC,qBAhBU,mBAgBjC+8F,EAhBiC,KAgBxBC,EAhBwB,KAmBxCt8F,qBAAU,WASN,OARmB,uCAAG,4BAAAwJ,EAAA,sEACAsD,EAAI,mBAAoB,6BADxB,QACZ6xE,EADY,SAEX2d,EAAW3d,EAAIhjE,OAFJ,2CAAH,oDAKnBijE,GAEAppC,EAAS5b,GAAe0c,QAAQ1xB,SACzB,WACH4wB,EAAS5b,GAAe0c,QAAQ1xB,SAChC45D,EAAcv+E,QAAQ4iB,SAAS,SAACg8B,GAAD,OAAW8D,aAAa9D,MACvD2/B,EAAcv+E,QAAU,MAE7B,IA4BH,IAAM6+E,EAAW,SAACn3E,EAAeqjC,GAC7B,IAAM+zC,EAAU9zC,YAAW,WACvBtjC,MACDqjC,GACHwzC,EAAcv+E,QAAQqC,KAAKy8E,IAIzBwd,EAAW,SAACC,GAEXhqF,IAASkf,GAAclE,QACtBouE,EAAW37F,QAAQggD,OAEnB6+B,GAAS,WACLtpC,EAAS5b,GAAe0c,QAAQlzB,WAAWsO,GAAcsoE,UAC1D,KACHlb,GAAS,WACLsd,GAAkB,KACnB,MACHtd,GAAS,WACL8c,EAAW37F,QAAQigD,UACpB,OAGJ1tC,IAASkf,GAAcsoE,QACtB4B,EAAW37F,QAAQggD,OACnBm8C,GAAkB,GAElBtd,GAAS,WACL6c,GAAc,KACf,KAEH7c,GAAS,WACL8c,EAAW37F,QAAQigD,QACnB1K,EAAS5b,GAAe0c,QAAQlzB,WAAWsO,GAAc0pE,SAC1D,OAoCLqB,EAAa,WACfxxD,YAAW,WACP+wD,GAAgB,GAChB/wD,YAAW,WACPixD,GAAoB,MAExBtmD,EAAKnzC,MAAMO,EAAOG,KAAM,OACzB,OAIP,OACI,sBAAKnE,UAAWgD,IAAM,QAAtB,UACI,qBAAKhD,UAAWw8C,EAAE,SAAUkgD,EAAa,GAAK,WAGzCW,GACD,cAAC,GAAD,CAAuBb,SAAS,aAGhCa,GACA,uBACIK,OAAQA,WACR/4D,IAAKi4D,EACL76F,IAAKs7F,EACLr9F,UAAWw8C,EAAE,WACboF,aAAW,EACXC,UAAU,EAAOC,MAAM,EAAQC,OAAK,EANxC,0DAYFvuC,IAASkf,GAAclE,OAAS,cAAC,GAAD,CAAgBusE,WAAYwC,IAC5D/pF,IAASkf,GAAcsoE,OAAS,cAAC,GAAD,CAAgBD,WAAYwC,IAC5D/pF,IAASkf,GAAc0pE,MAAQ,cAAC,GAAD,IAEjC,cAAC,GAAD,CAAmBz0C,QA5DP,WAChBnR,EAAS5b,GAAe0c,QAAQzc,gBAAWvwB,IAC3CwyF,GAAuB,MA4DnB,cAAC,GAAD,CACI78F,MA1DY,WACpBu2C,EAAS5b,GAAe0c,QAAQlzB,WAAWsO,GAAcirE,OACzDf,EAAW37F,QAAQggD,OAEnBhV,YAAW,WACP0wD,GAAc,KACf,KACHG,GAAuB,GAEvBW,IAEA9mD,EAAGlL,MAAM,CACLp3B,SAAU,YACViB,OAAQ,mBACRpR,MAAO,oBA6CHlE,UAAWw8C,EAAE,iBAAmBqgD,KAAyBhsE,GAAgBA,EAAaxlB,OAAS,GAAM,SAAW,IAChHuyC,KAAMrwC,EAAE,2CACR8B,KAAM,cAAC,GAAD,CAAavP,KAAK,WAG1Bi9F,GAAgB,qBAAK/8F,UAAWw8C,EAAE,cAAeygD,EAAmB,SAAW,MAEjF,qBAAKj9F,UAAWw8C,EAAE,WAAY2gD,EAAe,SAAS,UCxInDS,GA3DsB,SAAC,GAK9B,IAJJ1+F,EAIG,EAJHA,GACA2+F,EAGG,EAHHA,eACAC,EAEG,EAFHA,aACAp6F,EACG,EADHA,SACG,EAEYzB,EAAO,cAFnB,mBAEIe,EAFJ,KAEOw5C,EAFP,OAGiCl8C,qBAHjC,mBAGIy9F,EAHJ,KAGgBC,EAHhB,KAMHh9F,qBAAU,WACN,IAAMqgC,EAAUC,SAASC,eAAeriC,GAClC++F,GAAqB,OAAP58D,QAAO,IAAPA,OAAA,EAAAA,EAAS48D,cAAe,EAEtCF,EAAU,UAAOE,EAAc,GAAMJ,EAA3B,OAChBG,EAAcD,KACf,CAAC7+F,EAAI2+F,IAER78F,qBAAU,WAaNirC,YAAW,YAZe,WACtB,IAAMiyD,EAAQ,WAAOh/F,EAAP,8BACCoiC,SAASi1D,iBAAiB2H,GAClCr6E,SAAQ,SAACs6E,EAAOhmF,GAChB2lF,IAAiB3lF,EAChBgmF,EAAM1xD,UAAUlC,IAAI,gBAEpB4zD,EAAM1xD,UAAUC,OAAO,mBAM/B0xD,QAEL,CAACN,EAAc5+F,IAUlB,OACI,qBAAKc,UAAWgD,IAAK9D,GAAIA,EAAzB,SAGQ6+F,GACA,qBAAK/9F,UAAWw8C,EAAE,UAAW96C,MAX7B,CACJ0B,MAAO26F,EACPlnC,UAAU,eAAD,OAAoB,IAAMgnC,GAAmBC,GAAgB,GAA7D,OASL,SACKp6F,OC2FN26F,GArIkC,WAAO,MAErCp8F,EAAO,2BAF8B,mBAE7Ce,EAF6C,KAE1Cw5C,EAF0C,OAGczhC,YAAY0P,IAAtEhB,EAH4C,EAG5CA,cAAenC,EAH6B,EAG7BA,mBAAoBL,EAHS,EAGTA,WAAYpC,EAHH,EAGGA,OACjD2xB,EAAWC,cACTrgB,EAAgBrb,YAAYkc,IAA5Bb,YACFsgB,EAAW37B,YAAYX,GAEzBnE,EAEAygC,EAFAzgC,eACAiE,EACAw8B,EADAx8B,UAEI3M,EAAMN,EAAe8N,YAAYX,IAAjC7M,EAiEF+wF,EAAe,SAACx5E,GAClB,IAAIrS,GAAO,EACP8rF,EAAa,EAwBjB,OAtBAz5E,EAAMtY,SAASlO,KAAI,SAACymB,GAChB,GAAIA,EAAQxV,QAAS,CACjB,GACIwV,EAAQ0tB,iBAAR,OAA0Brc,QAA1B,IAA0BA,OAA1B,EAA0BA,EAAahnB,QACvC2V,EAAQ0tB,gBAAkBnkB,GAAgBkwE,KAI1C,OAFAD,SACA9rF,GAAO,GAGX,GACIsS,EAAQ0tB,gBAAkBnkB,GAAgBmwE,qBAC1C15E,EAAQ0tB,cAAcl4B,SAASgzB,OAAM,OAACnX,QAAD,IAACA,OAAD,EAACA,EAAahnB,QAInD,OAFAmvF,SACA9rF,GAAO,OAMf8rF,EAAa,IAAG9rF,GAAO,GACpBA,EAAO,GAAK,YAIvB,OACI,qBAAKzS,UAAWgD,IAAhB,SASI,oBAAIhD,UAAWw8C,EAAE,QAAjB,gBAEQ/yB,QAFR,IAEQA,OAFR,EAEQA,EAAe5K,OACdhH,QAjEoB,SAACiN,GAA0B,IAAD,MAC3D,IACKwC,KACD,UAACA,EAAmBL,UAApB,aAAC,EAAgCnP,WACpB,OAAb2R,QAAa,IAAbA,OAAA,EAAAA,EAAevqB,MAAOgd,GAAe0C,WACrC,OAAC3I,QAAD,IAACA,OAAD,EAACA,EAAgB4/B,KAAK3pC,OACzB,OAAO,EACR,IAAMwyF,EAAgB,UAAGp3E,EAAmBL,UAAtB,iBAAG,EACrBnP,QAAQ4P,kBADU,aAAG,EACD1oB,KAExB,IAAIkb,IAAcwkF,EAAiB,OAAO,EAC1C,IAAMC,EAAgBzkF,EAAUwkF,GAC1BE,GAA8B,OAAbn1E,QAAa,IAAbA,OAAA,EAAAA,EAAevqB,MAAOgd,GAAe6D,QAAU,WAAY,YAElF,IAAI4+E,IAAkBA,EAAcC,GAAgB,OAAO,EAE3D,IAAMC,EAAkBv/F,OAAOD,KAAKs/F,EAAcC,IAGlD,QAFyB95E,EAAMtY,SAASlO,KAAK,SAAAoZ,GAAC,OAAIA,EAAExY,MACH2Y,QAAQ,SAAAH,GAAC,OAAImnF,EAAgBtkF,SAAS7C,MACtDrM,UA+CpB/M,KAAK,SAACwmB,GAAD,OAnGS,SAACA,GAA0B,IAAD,UAErD,IAAgB,OAAb2E,QAAa,IAAbA,OAAA,EAAAA,EAAevqB,MAAOgd,GAAe6D,QAAS,OAAO,EACxD,IAAIuH,EAAmB,OAAO,EAC9B,IAS4E,QATtEK,EAAO,UAAGL,EAAmBL,UAAtB,aAAG,EAAgCU,QAO1Cy7D,EAAsB,CAAC,iBAAkB,iBAE/C,GAAqC,QAApB,OAAdntE,QAAc,IAAdA,GAAA,UAAAA,EAAgB4/B,YAAhB,eAAsBzpC,UAAoBub,IAA1C,UAAqDA,EAAQ,UAA7D,aAAqD,EAAY5C,SAChE,OAAIq+D,EAAoB7oE,SAApB,UAA6BoN,EAAQ,UAArC,iBAA6B,EAAY5C,eAAzC,aAA6B,EAAqB7lB,KAG9CkkF,EAAoB7oE,SAApB,UAA6BoN,EAAQ,UAArC,iBAA6B,EAAY5C,eAAzC,aAA6B,EAAqB7lB,IAFlC,WAAb4lB,EAAM5lB,GAMrB,GAAoC,QAAnB,OAAd+W,QAAc,IAAdA,OAAA,EAAAA,EAAgB4/B,KAAKzpC,UAA+B,YAAXyY,GAAwB8C,IAAjE,UAA4EA,EAAQ,UAApF,iBAA4E,EAAY5C,eAAxF,aAA4E,EAAqB7lB,IAAG,CAAC,IAAD,QACnG,GAA+B,oBAA5B,UAAAyoB,EAAQ,UAAR,mBAAY5C,eAAZ,eAAqB7lB,IAAyB,OAfvB,CAAC,cAAe,UAeqCqb,SAASuK,EAAM5lB,IAC9F,GAfgC,CAAC,wBAAyB,mBAAmB,gBAAiB,mCAe/Dqb,SAA5B,UAAqCoN,EAAQ,UAA7C,iBAAqC,EAAY5C,eAAjD,aAAqC,EAAqB7lB,IAAI,MAAoB,WAAb4lB,EAAM5lB,GAIlF,SAAIyoB,GAA8B,IAAnBA,EAAQtc,cACEf,IAArBqd,EAAQ,GAAG7C,OACP6C,EAAQ,GAAW7C,MAAM5lB,KAAO4lB,EAAM5lB,GAuE7B4/F,CAAuBh6E,IACxB,qBAAmBhjB,QAAS,kBA1G5B,SAACgjB,GACjB0xB,EAASzuB,GAAsBuvB,QAAQ5tB,mBAAmB5E,IAC1D0xB,EAASzuB,GAAsBuvB,QAAQtvB,cAAc,IAwGH+2E,CAAYj6E,IAAQ9kB,UAAWs+F,EAAax5E,GAA9E,UACKvX,EAAEuX,EAAM5gB,OACT,cAAC,EAAD,CAAMrE,KAAK,8BAFNilB,EAAM5lB,YC+KxB8/F,GApSoC,WAAO,MAEvC/8F,EAAO,6BAFgC,mBAE/Ce,EAF+C,KAE5Cw5C,EAF4C,OASlDzhC,YAAY0P,IALZhB,EAJkD,EAIlDA,cACAE,EALkD,EAKlDA,aACArC,EANkD,EAMlDA,mBACAL,EAPkD,EAOlDA,WACApC,EARkD,EAQlDA,OAEE2xB,EAAWC,cAVqC,EAWxBn2C,qBAXwB,mBAW/CykB,EAX+C,KAWtCk6E,EAXsC,OAYlB3+F,qBAZkB,mBAY/ConB,EAZ+C,KAYnCw3E,EAZmC,KAa9C/gE,EAAyBiP,KAAzBjP,qBACA/H,EAAgBrb,YAAYkc,IAA5Bb,YACFsgB,EAAW37B,YAAYX,GACrB7M,EAAMN,EAAeypC,GAArBnpC,EAhB8C,EAqBlDkpE,KAHAU,EAlBkD,EAkBlDA,gCACAN,EAnBkD,EAmBlDA,4BACAO,EApBkD,EAoBlDA,kCAEG3yE,EAAgBsW,YAAYkc,IAA5BxyB,aACC6P,EAA8ByG,YAAYwS,IAA1CjZ,0BAvB8C,EA6BlD0/B,KAJAe,EAzBkD,EAyBlDA,oBACAK,EA1BkD,EA0BlDA,uBACAG,EA3BkD,EA2BlDA,2BACAC,EA5BkD,EA4BlDA,kBAEEN,EAAiBwB,EAAShkC,sBAAsBmF,QAAQ,SAAAH,GAAC,OAAIA,EAAEnI,WAASjR,KAAK,SAAAoZ,GAAC,OAAIA,EAAEtI,SAClF6G,EAAmB8E,YAAYX,GAA/BnE,eA/B8C,EAkCM3V,mBAAmB,IAlCzB,6BAsCtDU,qBAAU,WACF0mB,GACJ8uB,EAASzuB,GAAsBuvB,QAAQtvB,cAAc,MACtD,CAACN,IAEJ1mB,qBAAU,WACNi+F,OAAW30F,GACX40F,OAAc50F,KACf,CAACmf,IAEJzoB,qBAAU,WAAO,IAAD,IACZ,GAAIsmB,IAAsB63E,IAA1B,CACA,IAAMrnF,EAAO,UAAGwP,EAAmBL,UAAtB,aAAG,EAAgCnP,QAC7C,OAACA,QAAD,IAACA,GAAD,UAACA,EAAS4P,kBAAV,OAAC,EAAqB1oB,QAC1B,CAACsoB,EAAoBmC,IAOxB,IA6DM01E,EAAkB,WACpB,OAAoB,OAAb11E,QAAa,IAAbA,OAAA,EAAAA,EAAevqB,MAAOgd,GAAe0C,SAG1CqK,EAAgB,SAACzD,GACnB05E,OAAc50F,IACJ,OAAPya,QAAO,IAAPA,OAAA,EAAAA,EAAS7lB,MAAOsmB,EAAEtmB,IAIrB+/F,EAAWz5E,GACRA,EAAEtG,cAELs3B,EAASzuB,GAAsBuvB,QAAQtvB,cAAc,IACrDikB,YAAW,WACPuK,EAASzuB,GAAsBuvB,QAAQruB,cAAc,CACjDL,WAAU,OAAEa,QAAF,IAAEA,OAAF,EAAEA,EAAevqB,GAC3B4lB,MAAO6E,EACP5E,QAASS,KAEbgxB,EAASzuB,GAAsBuvB,QAAQ9tB,oBAAoB,SAC5D,OAdCy1E,OAAW30F,IAiBb80F,EAAmB,SAAC55E,GAEtBgxB,EAASzuB,GAAsBuvB,QAAQ9sB,YAAYhF,EAAExmB,QAExC,OAAV0oB,QAAU,IAAVA,OAAA,EAAAA,EAAYxoB,MAAOsmB,EAAEtmB,IAIxBs3C,EAASzuB,GAAsBuvB,QAAQtvB,cAAc,IAErDikB,YAAW,WAAO,IAAD,EAITs2C,EACJ,GAJA2c,EAAc15E,GACdgxB,EAASzuB,GAAsBuvB,QAAQ9tB,oBAAoB,QAG5C,OAAZ/kB,QAAY,IAAZA,GAAA,UAAAA,EAAcwuB,cAAd,eAAsBC,UAAtB,OAAgCnO,QAAhC,IAAgCA,OAAhC,EAAgCA,EAAS7F,aAAY,CACpD,IAAMgU,EAASzuB,EAAawuB,OAAOC,OAC7BpwB,EAAY+zE,EAA4B,CAC1C1jD,GAAID,EAAOC,GACXC,GAAIF,EAAOE,IACZ0Z,IACG5tB,EAAck4D,EAChBryD,EAAQ7F,YAAYrH,QAAO,SAAAH,GAAC,OAAIA,EAAExT,QAAUshB,EAAEthB,SAC9CwyC,EAAShkC,uBAEb6vE,EAAwBpL,EAAgCj4D,EAAapc,GAEzE0zC,EAASzuB,GAAsBuvB,QAAQruB,cAAc,CACjDL,WAAU,OAAEa,QAAF,IAAEA,OAAF,EAAEA,EAAevqB,GAC3B4lB,MAAO6E,EACP5E,UACA2C,WAAY66D,GAAyB/8D,OAE1C,MA5BC05E,OAAc50F,IA+BhB+0F,EAAoB,SAAC75E,GACvB,OAAOA,EAAEtmB,MAAF,OAAS6lB,QAAT,IAASA,OAAT,EAASA,EAAS7lB,KAGvBogG,EAAuB,SAAC95E,GAC1B,OAAOA,EAAEtmB,MAAF,OAASwoB,QAAT,IAASA,OAAT,EAASA,EAAYxoB,KAG1B6mD,EAAoB,SAAChhC,GACvB,IAAKA,EAAQ7F,YAAY,OAAO,KAEhC,IAAMqvB,EAAcj6B,EAA0BuD,QAAQ,SAAAH,GAAC,OAAIA,EAAEnI,WAAS,GAChEgwF,EAA8BhqD,EAA2BxwB,EAAQ7F,aACjEsgF,EAAqBhqD,EAAkB+pD,EAA6BrqD,GAEpEzU,EAAoBg/D,IACtBD,EACArhE,EAAqBpZ,EAAQ7F,YAAa,CACtCqvB,YAAaA,EAAYn/B,QAGjC,OACI,qBAAKpP,UAAWw8C,EAAE,WAAY,CAAC6iD,EAAkBt6E,GAAW,OAAS,KAArE,SACI,6BAEQ0b,EAAkBniC,KAAK,SAACknB,EAAErN,GAAH,OACnB,qBAEIrW,QAAS,kBAAKs9F,EAAiB55E,IAC/BxlB,UAAWw8C,EAAE,gBAAiB,CAC1B8iD,EAAqB95E,GAAK,WAAa,GACtCA,EAAEjW,QAAuB,GAAb,aALrB,UAOKhC,EAAEiY,EAAEthB,OACL,cAAC,GAAD,CAAU45D,QAASwhC,EAAqB95E,OAPnCrN,WAiB3BmmF,EAAe,SAAC94E,GAClB,IAEIziB,GAAW,EAaf,OATIA,GAN8B,OAAXqzB,QAAW,IAAXA,OAAA,EAAAA,EAAahnB,SAAUkf,GAAgBuD,KAM9CrM,EAAEitB,gBAAkBnkB,GAAgBuD,MAChDrM,EAAEitB,gBAAkBnkB,GAAgBkwE,OAASh5E,EAAEjW,QAGnCiW,EAAEitB,gBAAkBnkB,GAAgBoD,OAChDlM,EAAEitB,gBAAkBnkB,GAAgBmwE,qBACpCj5E,EAAEitB,gBAAkBnkB,GAAgBkwE,OAASh5E,EAAEjW,QAG5C,CAAC8vF,EAAkB75E,GAAK,WAAa,GAAIziB,EAAW,WAAa,KAGtE08F,EAAmB,WACrB,cAAOxpF,QAAP,IAAOA,OAAP,EAAOA,EAAgB4/B,KAAK3pC,OAuBhC,OACI,qBAAKlM,UAAWgD,IAAhB,SACI,qBAAKhD,UAAWw8C,EAAE,gBAAlB,SACI,oBAAIx8C,UAAWw8C,EAAE,QAAjB,gBACM7yB,QADN,IACMA,OADN,EACMA,EAAcnd,SAASqL,QAxBnB,SAACkN,GACnB,IAAI06E,IAAmB,OAAO,EAC9B,IAAIN,MAAsBp6E,EAAQ7F,YAAY,CAAC,IAAD,MAC1C,IAAIoI,EAAmB,OAAO,EAC9B,IAAM4sB,EAAW,UAAG5sB,EAAmBL,UAAtB,iBAAG,EAAgCnP,eAAnC,iBAAG,EAAyC4P,kBAA5C,aAAG,EAAqD1oB,KACzE,IAAIk1C,EAAY,OAAO,EACvB,IAAMwrD,GAA2B,OAAbj2E,QAAa,IAAbA,OAAA,EAAAA,EAAevqB,MAAOgd,GAAe6D,QACrD,WAAa,YAEjB,OADkBg1B,EAAoBb,EAAawrD,GAClCnlF,SAASwK,EAAQ7lB,IAGtC,IAIIshC,EADgBzb,EAAQ7F,YAAY5gB,KAAK,SAAAoZ,GAAC,OAAIA,EAAE1Y,QAC3B6Y,QAJN,SAACzI,EAAoB+I,EAAewnF,GACnD,OAAOA,EAAKx8B,QAAQ/zD,KAAW+I,KAInC,OAAOi9B,EAAuB5U,MAO6BliC,KAAK,SAAAymB,GAChD,IArNQ,SAAC7lB,GAExB,IAAMkkF,EAAsB,CAAC,iBAAkB,iBAuBhD,GAAG97D,EAAmB,CAAC,IAAD,kBAGkG,YAYf,IAd/FK,EAAO,UAAGL,EAAmBL,UAAtB,aAAG,EAAgCU,QAEhD,GAAoC,QAAnB,OAAd1R,QAAc,IAAdA,OAAA,EAAAA,EAAgB4/B,KAAKzpC,UAA8B,YAAVyY,GAAuB8C,GAAWA,EAAQ,KAAnF,UAAyFA,EAAQ,UAAjG,iBAAyF,EAAY5C,eAArG,aAAyF,EAAqB7lB,IAC7G,MAP4B,CAAC,wBAAyB,mBAAmB,gBAAiB,mCAO3Dqb,SAA5B,UAAqCoN,EAAQ,UAA7C,iBAAqC,EAAY5C,eAAjD,aAAqC,EAAqB7lB,IAAmB,mBAAPA,EAC1C,oBAA5B,UAAAyoB,EAAQ,UAAR,mBAAY5C,eAAZ,eAAqB7lB,KAzBR,CACxB,wBACA,kCACA,mBACA,gBACA,kBAoBiFqb,SAASrb,IAC3E,UAAAyoB,EAAQ,UAAR,mBAAY5C,eAAZ,eAAqB7lB,MAAOA,EAGvC,GAAoC,QAAnB,OAAd+W,QAAc,IAAdA,OAAA,EAAAA,EAAgB4/B,KAAKzpC,UAA+B,YAAXyY,GAAwByC,GAAsBK,IAAvF,UAAkGA,EAAQ,UAA1G,iBAAkG,EAAY5C,eAA9G,aAAkG,EAAqB7lB,MAtBlG,CAC5B,wBACA,kCACA,mBACA,gBACA,iBACA,wBACA,2BACA,6BAeyBqb,SAApB,UAA6BoN,EAAQ,UAArC,iBAA6B,EAAY5C,eAAzC,aAA6B,EAAqB7lB,KACxC,wBAAPA,EAA6B,OAAO,EAIvC,GAAqC,QAApB,OAAd+W,QAAc,IAAdA,GAAA,UAAAA,EAAgB4/B,YAAhB,eAAsBzpC,UAA+B,YAAXyY,GAAwB8C,IAAlE,UAA6EA,EAAQ,UAArF,aAA6E,EAAY5C,WACrFq+D,EAAoB7oE,SAApB,UAA6BoN,EAAQ,UAArC,iBAA6B,EAAY5C,eAAzC,aAA6B,EAAqB7lB,IAClD,OAAQkkF,EAAoB7oE,SAASrb,IA2K7B0gG,CAAoB76E,EAAQ7lB,MAlK1B,SAACA,GAC3B,GAAGooB,EAAmB,CAAC,IAAD,IAGV,IAFFK,EAAO,UAAGL,EAAmBL,UAAtB,aAAG,EAAgCU,QAChD,IAAqC,QAAnB,OAAd1R,QAAc,IAAdA,OAAA,EAAAA,EAAgB4/B,KAAKzpC,UAAsD,QAApB,OAAd6J,QAAc,IAAdA,GAAA,UAAAA,EAAgB4/B,YAAhB,eAAsBzpC,WACnEub,EACA,OAAO,UAAAA,EAAQ,UAAR,mBAAY5C,eAAZ,eAAqB7lB,MAAOA,GA6JoB2gG,CAAkB96E,EAAQ7lB,IAAI,OACjE,qBAEIc,UAAWw8C,EAAE,YAAa8hD,EAAav5E,IAF3C,UAGI,sBAAKjjB,QAAS,kBAAKmnB,EAAclE,IAAjC,UACKxX,EAAEwX,EAAQ7gB,OACV6gB,EAAQ7F,aAAe,cAAC,EAAD,CAAMrf,KAAK,gBACjCklB,EAAQ7F,aAAe,cAAC,GAAD,CAAU4+C,QAASuhC,EAAkBt6E,QAGjEA,EAAQ7F,aAAe6mC,EAAkBhhC,KARrCA,EAAQ7lB,c,yfCwF9B4gG,GAnT0B,WAAO,MAE7B79F,EAAO,kBAFsB,mBAErCe,EAFqC,KAElCw5C,EAFkC,OAGNl8C,qBAHM,mBAGrCy/F,EAHqC,KAGxBC,EAHwB,OAIhB1/F,qBAJgB,mBAIrC2/F,EAJqC,KAI7BC,EAJ6B,OA4DNnlF,YAAY0P,IAA1ChB,EA5DoC,EA4DpCA,cAAerC,EA5DqB,EA4DrBA,WA5DqB,EA6DgBrM,YAAY0P,IAAhEnD,EA7DoC,EA6DpCA,mBAAoBL,EA7DgB,EA6DhBA,WAAYO,EA7DI,EA6DJA,gBA7DI,EA+DNlnB,mBAAS,GA/DH,mBA+DrCw0B,EA/DqC,KA+DxBU,EA/DwB,OAgEpBl1B,oBAAS,GAhEW,mBAgErCmS,EAhEqC,KAgE/Bw9C,EAhE+B,OAiEE3vD,oBAAS,GAjEX,mBAiErC6/F,EAjEqC,KAiEpBC,EAjEoB,OAkEA9/F,oBAAS,GAlET,mBAkErC+/F,EAlEqC,KAkErBC,EAlEqB,KA+E5Ct/F,qBAAU,WACN,GAAGyoB,EACCu2E,EAAc,OAACv2E,QAAD,IAACA,OAAD,EAACA,EAAevqB,IAC9BohG,GAAkB,OACf,CAAC,IAAD,EACG34E,EAAU44E,IACVC,EAAU74E,EAAO,UAAGA,EAAQ/kB,aAAX,aAAG,EAAe1D,GAAkB,KAC3D8gG,EAAeQ,GAAoB,OACnCF,IAAkBE,MAEvB,CAAC/2E,IAEJzoB,qBAAU,WACN,IAAIsmB,EAAmB,OAAO04E,EAAe,QAC7C,GAAG14E,GAAsC,IAAfF,IAAqBi5E,EAAe,CAAC,IAAD,MACpDvoF,EAAO,UAAGwP,EAAmBL,UAAtB,aAAG,EAAgCnP,QAC1C6P,EAAO,UAAGL,EAAmBL,UAAtB,aAAG,EAAgCU,QAC1CzP,EAAO,UAAGoP,EAAmBL,UAAtB,aAAG,EAAgC/O,QAEhD,GAAGJ,GAAW2oF,EAAgB94E,IAAYzP,EAEtC,YADA8nF,EAAe,OAGnB,IAAIloF,GAAW2oF,EAAgB94E,GAAS,KAAWzP,EAE/C,YADA8nF,EAAe,QAGnB,GAAGloF,GAAW2oF,EAAgB94E,KAAazP,EAEvC,YADA8nF,EAAe,kBAGnB,GAAGloF,GAAW2oF,EAAgB94E,GAAS,IAAUzP,EAE7C,YADA8nF,EAAe,kBAGnB,IAAIloF,GAAW2oF,EAAgB94E,IAAYzP,EAEvC,YADA8nF,EAAe,kBAGnB,IAAIloF,GAAW2oF,EAAgB94E,GAAS,IAASzP,EAE7C,YADA8nF,EAAe,WAGnB,IAAIloF,GAAW2oF,EAAgB94E,KAAazP,EAExC,YADA8nF,EAAe,WAGnB,GAAGloF,GAAW2oF,EAAgB94E,GAAS,KAAWzP,EAE9C,YADA8nF,EAAe,cAIxB,CAAC14E,EAAoBL,EAAYwC,EAAerC,EAAYi5E,IAG/Dr/F,qBAAU,WACN0/F,IACAz0D,YAAW,WACPgkB,GAAQ,KACT,OACL,IAEFjvD,qBAAU,WACN,IAAM2/F,EAAYtjE,IAClB+iE,EAAmBO,GACnBnrE,EAAemrE,EAAY,EAAI,OAChC,CAACN,EAAgBp5E,IAEpBjmB,qBAAU,WAAO,IAAD,EACN2mB,EAAU44E,IACVC,EAAU74E,EAAO,UAAGA,EAAQ/kB,aAAX,aAAG,EAAe1D,GAAkB,KACvDshG,GAIJR,EAAeQ,GACfF,GAAkB,IAJdA,GAAkB,KAKvB,CAACh5E,EAAoBL,IAKxB,IAAMw5E,EAAkB,SAAC94E,GAA+B,IAAlBi5E,IAAiB,yDACnD,OAAGA,EAAej5E,IAAkB,OAAPA,QAAO,IAAPA,OAAA,EAAAA,EAAStc,QAAS,EACnCsc,IAAmB,OAAPA,QAAO,IAAPA,OAAA,EAAAA,EAAStc,QAAS,IAAMsc,GAI9C0V,EAAW,WACb,IAAM1V,EAAc44E,IACpB,QAAI54E,GACG4lB,OAAM,OAAC5lB,QAAD,IAACA,OAAD,EAACA,EAAS5C,QAAQ7gB,OAAO2K,oBAAoBs0D,QAAQ,WAAa,GAG7Eu9B,EAAe,uCAAG,sBAAAl2F,EAAA,sDACpB01F,EAAU,CACNW,+BACAC,kCACAC,+BACAC,iCACAC,8BACAC,kCACAC,+BAEAC,8BACAC,gCACAC,mCACAC,gCACAC,8BACAC,6BACAC,kCACAC,+BACAC,+BAEAC,2BACAC,6BACAC,2BACAC,8BACAC,+BACAC,0BACAC,4BACAC,8BAEAC,kCACAC,4BACAC,2BACAC,iCACAC,8BACAC,iCACAC,0BACAC,iCACAC,6BACAC,+BACAC,+BACAC,4BACAC,2BACAC,gCACAC,kCACAC,4BACAC,mCACAC,4BAEAxrF,QAASyrF,WACT57E,QAAS67E,WACTtrF,QAASurF,WACTtkG,IAAKukG,WACLxW,KAAKyW,WACLC,eAAgBC,WAChBC,eAAgBC,WAChBC,eAAgBC,aAvDA,2CAAH,qDA2Df1D,EAAsB,WAAO,IAAD,EAC9B,IAAIj5E,EAAmB,MAAO,GAC9B,IAAMK,EAAO,UAAGL,EAAmBL,UAAtB,aAAG,EAAgCU,QAChD,OAAIA,GAA8B,IAAnBA,EAAQtc,OAEhBsc,EAAQA,EAAQu8E,WAAU,SAAAxsF,GAAC,aAAG8P,IAAmB,UAAA9P,EAAEqN,eAAF,eAAW7lB,MAAOsoB,EAAgBP,OAF/C,IAoB/C,OAAIg5E,GAAWxtF,EAGX,qCACI,sBAAKzS,UAAWgD,IAAhB,UAEI,qBAAKjB,IAAKk+F,EAAO9gG,IAAK6C,IAAI,GAAGhC,UAAWw8C,EAAE,OAAS96C,MAAO,CACtD80D,QAAS6pC,EAAiB,EAAI,KAGjC/gG,OAAOD,KAAK4gG,GAAQ3hG,KAAK,SAAC6lG,EAAgBhsF,GAAjB,OACtB,qBACIzW,OAzBmB0iG,EAyBkBD,EAxBjD9D,GAAkBN,IAAiBqE,EAChC,CACH5tC,QAAS1hC,GAAeqrE,EAAkB,EAAI,MAFmB,IAyBrDp+F,IAAKk+F,EAAOkE,GACZniG,IAAI,GAEJhC,UAAWw8C,EAAE,MAAOujD,IAAiBoE,EAAuB,SAAW,KADlEhsF,GA5Ba,IAACisF,QAmC3B/D,GAAkBj5E,EAAa,GAC/B,sBAAKpnB,UAAWw8C,EAAE,SAAU2jD,EAAkB,SAAW,IAAzD,UACI,+BAAM,cAAC,EAAD,CAAMtgG,KAAK,eACjB,cAAC,KAAD,CACIgkF,OArNA,CAChB9lC,OAAQ,CACJqB,gBAAiB,UAErBuvC,MAAO,CACHvrF,MAAO,GACPC,OAAQ,GACRmzD,QAAS,IA+MGljC,KAAK,IACL+wE,MAAO,EACPC,KAAMnE,EAAkB,EAAI,IAC5BoE,KAAMpE,EAAkB,EAAI,GAC5BhyB,EAAGr5C,EACHqyB,SAAU,YAAY,IAATgnB,EAAQ,EAARA,EA/CS34C,EA+Ce24C,MAEzC,+BAAM,cAAC,EAAD,CAAMtuE,KAAK,iBAIxB4pB,GAAiBrC,EAAa,GAAMA,EAAa,GAC9C,wBACIpnB,UAAWw8C,EAAE,SACbqF,UAAU,EAAMC,MAAM,EAAOC,OAAK,EAFtC,UAGQ,wBAAQhgD,IA/CC,aAAT,OAAb0nB,QAAa,IAAbA,OAAA,EAAAA,EAAevqB,IAAwBslG,WACjB,aAAT,OAAb/6E,QAAa,IAAbA,OAAA,EAAAA,EAAevqB,IAAwBulG,WACjB,aAAT,OAAbh7E,QAAa,IAAbA,OAAA,EAAAA,EAAevqB,IAAwBwlG,gBAA1C,EA6C4C5kG,KAAK,cAHzC,qDAvCe,MClShB6kG,GAxCe,SAAC,GAAgC,IAA/BzgG,EAA8B,EAA9BA,MAAOkL,EAAuB,EAAvBA,MAAO+I,EAAgB,EAAhBA,MAAgB,EAEhC7X,oBAAS,GAFuB,mBAEjDskG,EAFiD,KAE3CC,EAF2C,OAGzC5iG,EAAO,oBAHkC,mBAGjDe,EAHiD,KAG9Cw5C,EAH8C,KAK1Dx7C,qBAAU,WAC0B6jG,EAAvB,OAAV1sF,GAA4B,IAAV/I,KACnB,CAAC+I,EAAO/I,IAqBV,OACE,sBAAKpP,UAAWgD,IAAKtB,MApBC,WACtB,IAAIojG,EAAWF,EAAO,GAAM,MAAgB,EAATx1F,EAC/B21F,GAA0B,EAAT31F,EAEjB01F,EAAW,MAAQF,IAAME,EAAW,KACpCC,EAAiB,KAAKA,EAAiB,IAE3C,IAAMC,EAAqBJ,EAAO,CAChC,YAAa,MACb,YAAa,OACX,GAEJ,OAAO,aACH,YAAaE,EACb,kBAAmBC,GAChBC,GAKqBC,GAA5B,UACE,qBACIC,iBAAgBN,EAAO,MAAQx1F,EAAQ,IACvCpP,UAAWw8C,EAAE,SAAUooD,EAAO,KAAO,MAGzC,sBAAM5kG,UAAWw8C,EAAE,SAAnB,SAA8Bt4C,Q,oGCiFvBihG,GA5F8B,SAAC,GAGvC,EAFHlkE,WAEI,IAAD,MADHnhC,EACG,EADHA,KACG,EAEYmC,EAAO,uBAFnB,mBAEIe,EAFJ,KAEOw5C,EAFP,OAGyCl8C,wBAASgK,GAHlD,mBAGI86F,EAHJ,KAGoBC,EAHpB,KAIK5gG,EAAiBsW,YAAYkc,IAA7BxyB,aAJL,EAKoDnE,oBAAS,GAL7D,mBAKKglG,EALL,KAK0BC,EAL1B,KAMK3wE,EAAiC7Z,YAAY6a,IAA7ChB,6BACArnB,EAAMN,EAAe8N,YAAYX,IAAjC7M,EAPL,EAYCwN,YAAY0P,IAFZnD,EAVD,EAUCA,mBACAL,EAXD,EAWCA,WAEEu+E,EAAkB,CACpBC,QAAS,CACLC,GAAIC,WACJC,IAAKC,WACLC,GAAIC,WACJC,IAAKC,WACLC,IAAKC,YAETC,QAAS,CACLV,GAAIW,WACJT,IAAKU,WACLR,GAAIS,WACJP,IAAKQ,WACLN,IAAKO,aAKbzlG,qBAAU,WACNirC,YAAW,WACPs5D,GAAuB,KACxB,OACL,IACFvkG,qBAAU,WAAO,IAAD,EACZ,GAAIsmB,EAAJ,CACA,IAAM8B,EAAO9B,EAAmBL,GAChC,GAAImC,EAAJ,CAIA,IAAIjR,EAAS,UAAGiR,EAAKtR,QAAQ4P,kBAAhB,aAAG,EAAyBvP,MACzC,GAAIA,EAAJ,CACAA,EAAQo1B,OAAOp1B,GAAOq1B,MAAM,KAAK,GACjC,IAAIk5D,EAAoBC,EAAqBliG,GACzCiiG,IAAkBA,EAAoB,WAE1C,IAAME,EAAYpB,EAAWkB,GAAX,WAAkCvuF,IACpDktF,EAAkBuB,SAVdvB,OAAkB/6F,MAWvB,CAACgd,EAAoBL,EAAYxiB,IAEpC,IAAMkiG,EAAuB,SAACh5D,GAC1B,IAAMza,EAASya,EAAG1a,OAAOC,OACzB,GAAIA,EAAOC,IAAOD,EAAOE,GAEzB,OADYvrB,OAAOqrB,EAAOC,IAAMtrB,OAAOqrB,EAAOE,IACjC,EAAI,UAAY,WAG3BmvD,EAAwB,WAA0B,IAAD,IACnD,OAAIj7D,GAAuBA,EAAmBL,GAC9C,UAAOK,EAAmBL,UAA1B,iBAAO,EAAgCnP,eAAvC,aAAO,EAAyC4P,WADiB,MAIrE,OACI,sBAAK1nB,UAAWgD,EAAElD,GAAlB,UAGQslG,GACA,qBAAKrjG,IAAKqjG,EAAgBpjG,IAAI,GAAGhC,UAAWw8C,EAAE,QAAS8oD,EAAsB,SAAU,MAI3F,sBAAKtlG,UAAWw8C,EAAE,oBAAlB,UACI,qBAAKx8C,UAAWw8C,EAAE,oBAAlB,SACI,cAAC,GAAD,CAAuBrkC,MAAQoqE,KAA2BA,IAAwBpqE,MAAO/I,OAAO,UAAAwlB,EAA6B3N,UAA7B,eAA0Cg3B,SAAU,EAAG/5C,MAAOqJ,EAAE,gCAEpK,qBAAKvN,UAAWw8C,EAAE,oBAAlB,SACI,cAAC,GAAD,CAAuBrkC,MAAQoqE,KAA2BA,IAAwBpqE,MAAO/I,OAAO,UAAAwlB,EAA6B3N,UAA7B,eAA0Co7D,SAAU,EAAGn+E,MAAOqJ,EAAE,0CAEpK,qBAAKvN,UAAWw8C,EAAE,kBAAlB,SACI,cAAC,GAAD,CAAuBrkC,MAAQoqE,KAA2BA,IAAwBpqE,MAAO/I,OAAO,UAAAwlB,EAA6B3N,UAA7B,eAA0Cm7D,OAAQ,EAAGl+E,MAAOqJ,EAAE,gDC0sBnKs5F,GA5wBiC,SAAC,GAE1C,gBAAD,MAEa5kG,EAAO,6BAFpB,mBAEKe,EAFL,KAEQw5C,EAFR,KAGI74C,EAAUC,cAHd,EAIkCtD,oBAAS,GAJ3C,mBAIKwqF,EAJL,KAIiBC,EAJjB,OAKgDzqF,mBAAgC,WALhF,mBAKKwmG,EALL,KAKwBC,EALxB,OAMwDzmG,oBAAS,GANjE,mBAMK0mG,EANL,KAM6BC,EAN7B,OAO6ElsF,YAAY0P,IAAnFtD,EAPN,EAOMA,gBAAiBkD,EAPvB,EAOuBA,aAAcP,EAPrC,EAOqCA,YAPrC,KAOkDhC,uBAChBxnB,oBAAS,IAR3C,gCAS+Bya,YAAY+K,IAArC/C,qBASJhI,YAAY0P,KALZxD,EAbF,EAaEA,WACAK,EAdF,EAcEA,mBACAmC,EAfF,EAeEA,cACArC,EAhBF,EAgBEA,WACA4B,EAjBF,EAiBEA,aAjBF,EAoBiCjO,YAAYkc,IAAvCxyB,EApBN,EAoBMA,aAAcC,EApBpB,EAoBoBA,SApBpB,EAyBE+xE,KAHAU,EAtBF,EAsBEA,gCACAN,EAvBF,EAuBEA,4BACAO,EAxBF,EAwBEA,kCAxBF,EA0B8CpjC,KAAxC4B,EA1BN,EA0BMA,oBA1BN,KA0B2B7F,eAMzB3C,MAJAuC,EA5BF,EA4BEA,yBACAG,EA7BF,EA6BEA,4BACAE,GA9BF,EA8BEA,eACAO,GA/BF,EA+BEA,oBAEEiG,GAAWC,cAjCf,GAkC0En2C,oBAAS,GAlCnF,qBAkCK4mG,GAlCL,MAkCsCC,GAlCtC,SAmCiDpsF,YAAY6a,IAAvDpiB,GAnCN,GAmCMA,KAAMmhB,GAnCZ,GAmCYA,iCAnCZ,GAoCmE5Z,YAAY2Z,IAAzE3B,GApCN,GAoCMA,qBAAsBH,GApC5B,GAoC4BA,oBAAqBa,GApCjD,GAoCiDA,cApCjD,GAqCsD1Y,YAAY6a,IAA5DV,GArCN,GAqCMA,kBAAmBJ,GArCzB,GAqCyBA,YACrB2iD,IAtCJ,GAqCsC1iD,YACb+X,IACrBs6D,GAAyBrmG,mBACzBsmG,GAA4BtmG,mBAC1B+I,GAA0BtD,IAA1BsD,sBACF6sC,GAAKnL,KACLoL,GAAO7K,KA3CX,GA4CsDzrC,qBA5CtD,qBA4CKgnG,GA5CL,MA4C2BnnB,GA5C3B,SAiDkE7/E,qBAjDlE,qBAiDKinG,GAjDL,MAiDiCnnB,GAjDjC,MAsDI1pC,GAAW37B,YAAYX,GACrB7M,GAAMN,EAAeypC,IAArBnpC,EACAmF,GAA0CgkC,GAA1ChkC,sBAAuBuD,GAAmBygC,GAAnBzgC,eACvBjL,GAAcxE,IAAdwE,UAzDN,GA0DgD1K,oBAAS,GA1DzD,qBA0DKknG,GA1DL,MA0DwBC,GA1DxB,MA6DFzmG,qBAAU,WACNqmG,GAA0BpmG,QAAU,IAAIkJ,KACxC88F,EAAwB9/E,KACzB,IACHnmB,qBAAU,WAAO,IAAD,QACZ,GAAKsmB,EAAL,CACA,IAAM8B,EAAgC9B,EAAmBL,GACzD,GAAKmC,EAAL,CACA,IAAMq3D,EAAW,SAAC17D,GACd,GAAKA,GACAA,EAAQvI,QACTuI,EAAQvI,KAAKnR,OAAS,GAE1B,OAAO0Z,GAGLsqB,EAAiB,CACnBv3B,QAAS2oE,EAAQ,UAACr3D,EAAKtR,eAAN,aAAC,EAAciN,SAChC4C,QAASyB,EAAKzB,SAAWyB,EAAKzB,QAAQtc,OAAS,EAAIo1E,EAASr3D,EAAKzB,QAAQ,GAAG5C,cAAWza,EACvF4N,QAASuoE,EAAQ,UAACr3D,EAAKlR,eAAN,aAAC,EAAc6M,UAG9B27D,EAAuB,CACzB5oE,SAAa,OAAJsR,QAAI,IAAJA,GAAA,UAAAA,EAAMtR,eAAN,eAAegN,aAASxa,EACjCqd,QAASyB,EAAKzB,SAAWyB,EAAKzB,QAAQtc,OAAS,EAAI+d,EAAKzB,QAAQ,GAAG7C,WAAQxa,EAC3E4N,SAAa,OAAJkR,QAAI,IAAJA,GAAA,UAAAA,EAAMlR,eAAN,eAAe4M,aAASxa,GAErC81E,GAA8BM,GAC9BP,GAAwB9wC,OACzB,CAAC/nB,EAAoBL,IAExBjmB,qBAAU,WAEN,GAAmB,IAAfomB,EAAJ,CACA,IAAM8L,EAASzuB,EAAawuB,QAAUxuB,EAAawuB,OAAOC,OAC1D,QAAe5oB,IAAX4oB,EAAsB,CACtB,IAAKA,EAAOC,KAAOD,EAAOE,GAAI,OAC9B,IAAMmX,EAAM1iC,OAAOqrB,EAAOC,IAAMtrB,OAAOqrB,EAAOE,IAC9C2zE,EAAqBx8D,EAAM,EAAI,UAAY,eAEhD,CAAC9lC,IAEJzD,qBAAU,WAEN,GAAmB,IAAfomB,EAAkB,CAClB,IAAI8L,EAASO,IAAiBA,GAAcP,OACxCG,EAAWI,IAAiBA,GAAcJ,SAC1CC,EAAOG,IAAiBA,GAAcH,MAEtC,OAACJ,QAAD,IAACA,OAAD,EAACA,EAAQE,MAAM,OAACF,QAAD,IAACA,OAAD,EAACA,EAAQC,KAGb,OAAND,QAAM,IAANA,OAAA,EAAAA,EAAQC,OAAM,OAACD,QAAD,IAACA,OAAD,EAACA,EAAQE,OAAQ,OAACF,QAAD,IAACA,OAAD,EAACA,EAAQC,MAAT,OAAeD,QAAf,IAAeA,OAAf,EAAeA,EAAQE,IACvDq0E,IAAqB,IAEjB,OAACp0E,QAAD,IAACA,OAAD,EAACA,EAAUF,MAAM,OAACE,QAAD,IAACA,OAAD,EAACA,EAAUD,MAAM,OAACE,QAAD,IAACA,OAAD,EAACA,EAAMF,MAAM,OAACE,QAAD,IAACA,OAAD,EAACA,EAAMH,KAEvC,OAARE,QAAQ,IAARA,OAAA,EAAAA,EAAUF,MAAV,OAAgBE,QAAhB,IAAgBA,OAAhB,EAAgBA,EAAUD,MAA1B,OAAgCE,QAAhC,IAAgCA,OAAhC,EAAgCA,EAAMF,MAAtC,OAA4CE,QAA5C,IAA4CA,OAA5C,EAA4CA,EAAMH,IACzDs0E,IAAqB,GAErBA,IAAqB,GAJrBA,IAAqB,GAN7BA,IAAqB,MAgB9B,CAACh0E,GAAerM,IAGnB,IAAMs8B,GAAQ3iD,mBACdC,qBAAU,WACN,KAAIomB,EAAa,GAAjB,CACA,IAAMsgF,EAAS18F,GAAU+nB,GAAsBtuB,GAC1CmuB,KAAuB80E,GAIxBhkD,GAAMziD,SAAS0iD,aAAaD,GAAMziD,SACtCu1C,GAASzgB,GAAUuhB,QAAQjhB,qBAAqBtD,KAChD2wB,GAAMziD,QAAUgrC,YAAW,WACvBq4C,GAAuBvxD,MACxB,MAPC4wB,aAAaD,GAAMziD,YAQxB,CAAC8xB,KAEJ/xB,qBAAU,WACa,IAAfomB,GACA6/E,GAAwB,KAE7B,CAAC7/E,IAGJpmB,qBAAU,WACN,GAAIsmB,EAAoB,CACpB,IAAM8B,EAAOnC,IAAexE,GAAayE,MAAQ,EAAI,EAC/C85D,IAAWv8E,EAAawuB,OAAOC,OAAOC,GACtCtO,EAASyC,EAAmBL,GAElC,UAAIpC,QAAJ,IAAIA,OAAJ,EAAIA,EAAQ/M,QAAS,CAAC,IAAD,QACXmpE,EAAY1wC,GAAmB,OACjCt6B,SADiC,IACjCA,QADiC,EACjCA,GAAgB4/B,KAAK1pC,OADY,OAEjC0Y,QAFiC,IAEjCA,GAFiC,UAEjCA,EAAQ/M,QAAQ4P,kBAFiB,aAEjC,EAA4B1oB,KAFK,OAGjC6lB,QAHiC,IAGjCA,GAHiC,UAGjCA,EAAQ/M,QAAQ4P,kBAHiB,aAGjC,EAA4B1oB,MAE1BkiF,GAAkB,OAACjrE,SAAD,IAACA,QAAD,EAACA,GAAgB4/B,KAAK3pC,SAAsB+0E,EAE9DxyE,EAAO,CACT0J,MAAOzF,GAAsBoiB,IAAuB1lB,MACpD+xE,aAAcC,GAAiB,OAACv8D,QAAD,IAACA,GAAD,UAACA,EAAQ/M,QAAQiN,eAAjB,aAAC,EAAyB7lB,IACzDmiF,iBAAkBC,GAAoB,OAACz8D,QAAD,IAACA,GAAD,UAACA,EAAQ/M,QAAQ4P,kBAAjB,aAAC,EAA4B1oB,MACnEyF,aAAcqrC,EAA4BrrC,EAAawuB,QACvDvuB,SAAUirC,EAAyBjrC,EAAU0kB,GAC7Cm4D,aAAcvxC,GAAegxC,EAAUE,IAG3CrzE,IAAMi2B,KAAK8R,IAAuB,CAAEnnC,SAAQ5P,MAAK,SAAA6Y,GAC7C,GAA0B,MAAtBA,EAAEjJ,KAAKuzE,YAAuBtqE,EAAEjJ,KAAKA,KAAK6e,eAA9C,CADkD,MAS9C5V,EAAEjJ,KAAKA,KAAK6e,eAJZ20D,EAL8C,EAK9CA,aACAhkC,EAN8C,EAM9CA,OACAikC,EAP8C,EAO9CA,WACA/pE,EAR8C,EAQ9CA,MAGJq+B,GAASxhB,GAAmBsiB,QAAQniB,sBAAsB,CACtD/L,KAAMnC,EACNxY,KAAM,CACF0J,MAAOA,EACPgqE,YAAa1zE,EAAK0yE,aAClBiB,KAAMH,EACNhkC,OAAQA,EACRokC,OAAQH,EACRz9E,aAAcqrC,EAA4BrrC,EAAawuB,QACvDvuB,SAAU+J,EAAK/J,aAIvB,IAAMijG,EAAwB31E,aAAaC,QAAQ,iBACnD,GAAI01E,EAAuB,CACvB,IAAMC,EAAkB9gG,KAAKE,MAAM2gG,GAC/BC,EAAgBzvF,OAChBq+B,GAASxhB,GAAmBsiB,QAAQliB,4BAA4B,CAC5DhM,KAAMnC,EACNxY,KAAMm5F,cAS/B,CAACnjG,IAGJzD,qBAAU,WACN,GAAIsmB,GACIA,EAAmBL,GAAa,CACJxE,GAAayE,MAAzC,IACM85D,IAAWv8E,EAAawuB,OAAOC,OAAOC,GACtCtO,EAASyC,EAAmBL,GAEtC,UAAIpC,QAAJ,IAAIA,OAAJ,EAAIA,EAAQ/M,QAAS,CAAC,IAAD,IACXmpE,EAAY1wC,GAAmB,OACjCt6B,SADiC,IACjCA,QADiC,EACjCA,GAAgB4/B,KAAK1pC,OADY,OAEjC0Y,QAFiC,IAEjCA,GAFiC,UAEjCA,EAAQ/M,QAAQ4P,kBAFiB,aAEjC,EAA4B1oB,KAFK,OAGjC6lB,QAHiC,IAGjCA,GAHiC,UAGjCA,EAAQ/M,QAAQ4P,kBAHiB,aAGjC,EAA4B1oB,MAE1BkiF,GAAkB,OAACjrE,SAAD,IAACA,QAAD,EAACA,GAAgB4/B,KAAK3pC,SAAsB+0E,EAC9Dl6B,EAAOpyB,GAAiC1N,GAC9C,GAAI8/B,EAAM,CAAC,IAAD,IACAliC,EAASyC,EAAmBL,GAC5BxY,EAAO,CACT0J,MAAOzF,GAAsBoiB,IAAuB1lB,MACpD+xE,aAAcC,GAAiB,OAACv8D,QAAD,IAACA,GAAD,UAACA,EAAQ/M,QAAQiN,eAAjB,aAAC,EAAyB7lB,IACzDmiF,iBAAkBC,GAAoB,OAACz8D,QAAD,IAACA,GAAD,UAACA,EAAQ/M,QAAQ4P,kBAAjB,aAAC,EAA4B1oB,MACnEyF,aAAcqrC,EAA4BrrC,EAAawuB,QACvDvuB,SAAQ,OAAEqiD,QAAF,IAAEA,OAAF,EAAEA,EAAMriD,SAChB68E,aAAcvxC,GAAegxC,EAAUE,IAG3CrzE,IAAMi2B,KAAK8R,IAAuB,CAAEnnC,SAAQ5P,MAAK,SAAA6Y,GAC7C,GAA0B,MAAtBA,EAAEjJ,KAAKuzE,YAAuBtqE,EAAEjJ,KAAKA,KAAK6e,eAA9C,CADkD,MAU9C5V,EAAEjJ,KAAKA,KAAK6e,eAJZ20D,EAN8C,EAM9CA,aACAhkC,EAP8C,EAO9CA,OACAikC,EAR8C,EAQ9CA,WACA/pE,EAT8C,EAS9CA,MAGEsqE,EAAW,CACbxkC,OAAQykC,GAA4B37B,EAAK9I,OAAQA,GACjDmkC,KAAMM,GAA4B37B,EAAKq7B,KAAMH,GAC7CI,OAAQK,GAA4B37B,EAAKs7B,OAAQH,IAGrD1rC,GAASxhB,GAAmBsiB,QAAQliB,4BAA4B,CAC5DhM,KAAMnC,EACNxY,KAAM,CACF0J,MAAOA,EACPgqE,YAAap7B,EAAKo7B,YAClBC,KAAMK,EAASL,KACfnkC,OAAQwkC,EAASxkC,OACjBokC,OAAQI,EAASJ,WAIzBrwD,aAAa6pB,QAAQ,gBAAiB/0C,KAAKC,UAAU,CACjDoR,MAAOA,EACPgqE,YAAap7B,EAAKo7B,YAClBC,KAAMK,EAASL,KACfnkC,OAAQwkC,EAASxkC,OACjBokC,OAAQI,EAASJ,UAGrB,IAAMwlB,EAAa71E,aAAaC,QAAQ,aACpC61E,EAAkBhhG,KAAKE,MAAM6gG,GACjC,OAAIC,EAAgB3vF,WAChBq+B,GAASxhB,GAAmBsiB,QAAQniB,sBAAsB,CACtD/L,KAAMnC,EACNxY,KAAMq5F,UAIV91E,aAAa6pB,QAAQ,YAAa/0C,KAAKC,UAAU,CAC7CoR,MAAOzF,GAAsBoiB,IAAuB1lB,MACpD+yE,YAAa1zE,EAAK0yE,aAClBiB,KAAMH,EACNhkC,OAAQA,EACRokC,OAAQH,EACRz9E,aAAcqrC,EAA4BrrC,EAAawuB,QACvDvuB,SAAU+J,EAAK/J,qBASxC,CAACowB,GAAarwB,IAMjB,IAAM28E,GAAoB,SAACe,GACvB,MAAoB,sBAAhBA,EACO,mBAEAA,GAGTb,GAAuB,SAAC5rC,GAC1B,OAAQA,GACJ,IAAK,oBACD,MAAO,mBACX,IAAK,0BACD,MAAO,yBACX,IAAK,iBACD,MAAO,iBACX,IAAK,mBACD,MAAO,kBACX,IAAK,gBACD,MAAO,eACX,IAAK,iBACD,MAAO,sBAEX,QACI,OAAOA,IAIbgtC,GAA8B,SAACa,EAAsBxpD,GACvD,IAAI9G,EAAS,CAACswD,EAAcxpD,GAGtBypD,GADOvwD,EAAO,GAAKA,EAAO,IACDA,EAAO,GAAM,IACtCwwD,EAAe1pD,GAAYwpD,EAAeC,GAAoC,EAAlBA,EAClE,OAAOl6E,KAAKo6E,MAAMD,IAahBl7D,GAAa,SAACa,IACX2+E,GAAkC3+E,IAAwB,IAAfhC,IAEhDovB,GAASzuB,GAAsBuvB,QAAQ/uB,WAAWa,KAgBhD4+E,GAAiB,WACnB,IAAK1gF,EAAoB,OAAO,EAEhC,IAAMP,EAAQO,EAAmBP,MACjC,WACK,OAACA,QAAD,IAACA,OAAD,EAACA,EAAOjP,YAAiB,OAALiP,QAAK,IAALA,OAAA,EAAAA,EAAO7O,YAAiB,OAAL6O,QAAK,IAALA,OAAA,EAAAA,EAAOY,UAAW,IAAItc,OAAS,KAAvE,OACC0b,QADD,IACCA,OADD,EACCA,EAAOjP,WACHuS,GAGP49E,GAAkB,WAAO,IAAD,YAC1B,IAAK3gF,EAAoB,OAAO,EAEhC,IAAMP,EAAQO,EAAmBP,MACjC,OAAoC,QAA1B,OAALA,QAAK,IAALA,GAAA,UAAAA,EAAOjP,eAAP,eAAgB4P,eAAuB,OAACX,QAAD,IAACA,GAAD,UAACA,EAAOjP,eAAR,aAAC,EAAgB4P,cAAqB,OAALX,QAAK,IAALA,OAAA,EAAAA,EAAOY,WAAgB,OAALZ,QAAK,IAALA,OAAA,EAAAA,EAAOY,QAAQtc,QAAS,KAAO,OAAC0b,QAAD,IAACA,GAAD,UAACA,EAAO7O,eAAR,aAAC,EAAgB6M,SAAe+E,IACtJ,OAAL/C,QAAK,IAALA,GAAA,UAAAA,EAAOjP,eAAP,eAAgB4P,cAAhB,OAA8BX,QAA9B,IAA8BA,OAA9B,EAA8BA,EAAOY,WAArC,OAAgDZ,QAAhD,IAAgDA,GAAhD,UAAgDA,EAAOY,QAAQ,UAA/D,aAAgD,EAAmB5C,WAAnE,OAA8EgC,QAA9E,IAA8EA,OAA9E,EAA8EA,EAAO7O,WAArF,OAAgG6O,QAAhG,IAAgGA,GAAhG,UAAgGA,EAAO7O,eAAvG,OAAgG,EAAgB6M,UAAe,IAGhImjF,GAAuB,SAAC5vD,GAC5B9B,GAASzuB,GAAsBuvB,QAAQltB,gBAAgBkuB,IACvD9B,GAASlQ,GAAagR,QAAQ3gB,kBAAarsB,KA4CvCghF,GAAiB,SAACC,GACpBt/C,YAAW,WACP8+C,EAAcQ,KACfA,EAAU,EAAI,MAafwc,GAAoC,SAAC3+E,GAAyB,IAAD,MAC/D,IAAK9B,EAAoB,OAAO,EAChC,IAAM6wD,EAAY,UAAG7wD,EAAmBhB,aAAtB,aAAG,EAA0BxO,QACzCiP,EAAQO,EAAmBP,MAEjC,SAAKoxD,GAAiBA,EAAapzD,UAAW,OAACozD,QAAD,IAACA,OAAD,EAACA,EAAczwD,qBAEnD,OAALX,QAAK,IAALA,OAAA,EAAAA,EAAOjP,YAAiB,OAALiP,QAAK,IAALA,OAAA,EAAAA,EAAOY,UAAW,IAAItc,OAAS,IAAlD,OAAuD0b,QAAvD,IAAuDA,OAAvD,EAAuDA,EAAO7O,YAC3D,OAAC6O,QAAD,IAACA,GAAD,UAACA,EAAOjP,eAAR,aAAC,EAAgBiN,WAAW,OAACgC,QAAD,IAACA,GAAD,UAACA,EAAOjP,eAAR,aAAC,EAAgB4P,gBAEjD0B,IAAS3G,GAAakkB,SAAS,OAAC5f,QAAD,IAACA,OAAD,EAACA,EAAOjP,YAIzCqwF,GAAoB,WAAO,IAAD,EAEe,4BAA3C,GAAqC,QAAnB,OAAdlyF,SAAc,IAAdA,QAAA,EAAAA,GAAgB4/B,KAAKzpC,SACrB,IAAsB,OAAlBkb,QAAkB,IAAlBA,GAAA,UAAAA,EAAoBhB,aAApB,eAA2BxO,YAAW,UAACwP,EAAmBP,aAApB,aAAC,EAA0BjP,SAAS,CAAC,IAAD,QAI9C,QAH5B,GAAuD,QAAjC,OAAlBwP,QAAkB,IAAlBA,GAAA,UAAAA,EAAoBhB,aAApB,mBAA2BxO,eAA3B,eAAoC4P,kBAA0Epd,KAAjC,OAAlBgd,QAAkB,IAAlBA,GAAA,UAAAA,EAAoBhB,aAApB,mBAA2BxO,eAA3B,eAAoC4P,YAC/F,OAAO,EAEX,GAAmB,UAAfT,EACA,GAAuD,QAAjC,OAAlBK,QAAkB,IAAlBA,GAAA,UAAAA,EAAoBP,aAApB,mBAA2BjP,eAA3B,eAAoC4P,kBAA0Epd,KAAjC,OAAlBgd,QAAkB,IAAlBA,GAAA,UAAAA,EAAoBP,aAApB,mBAA2BjP,eAA3B,eAAoC4P,YAC/F,OAAO,OAGZ,IAAyD,QAAlC,OAAlBJ,QAAkB,IAAlBA,GAAA,UAAAA,EAAoBhB,aAApB,mBAA2BpO,eAA3B,mBAAoC6M,eAApC,eAA6C7lB,UAAmEoL,KAAlC,OAAlBgd,QAAkB,IAAlBA,GAAA,UAAAA,EAAoBhB,aAApB,mBAA2BpO,eAA3B,mBAAoC6M,eAApC,eAA6C7lB,OACpD,QAAlC,OAAlBooB,QAAkB,IAAlBA,GAAA,UAAAA,EAAoBP,aAApB,mBAA2B7O,eAA3B,mBAAoC6M,eAApC,eAA6C7lB,UAAmEoL,KAAlC,OAAlBgd,QAAkB,IAAlBA,GAAA,UAAAA,EAAoBP,aAApB,mBAA2B7O,eAA3B,mBAAoC6M,eAApC,eAA6C7lB,KACpH,CAAC,IAAD,gBACE,GAAwD,QAAjC,OAAlBooB,QAAkB,IAAlBA,GAAA,UAAAA,EAAoBhB,aAApB,mBAA2BxO,eAA3B,eAAoC4P,kBAA0Epd,KAAjC,OAAlBgd,QAAkB,IAAlBA,GAAA,UAAAA,EAAoBhB,aAApB,mBAA2BxO,eAA3B,eAAoC4P,aAC5C,QAAjC,OAAlBJ,QAAkB,IAAlBA,GAAA,UAAAA,EAAoBP,aAApB,mBAA2BjP,eAA3B,eAAoC4P,kBAA0Epd,KAAjC,OAAlBgd,QAAkB,IAAlBA,GAAA,UAAAA,EAAoBP,aAApB,mBAA2BjP,eAA3B,eAAoC4P,YAEhG,OAAO,EAKnB,IAAKJ,EAAoB,OAAO,EAChC,GAA2C,QAArB,OAAlBA,QAAkB,IAAlBA,GAAA,UAAAA,EAAoBhB,aAApB,eAA2BxO,SAAkB,OAAO,EAExD,GAAGwP,GAAuD,QAAnB,OAAdrR,SAAc,IAAdA,QAAA,EAAAA,GAAgB4/B,KAAKzpC,SAAiB,CAAC,IAAD,UACrDub,EAAO,UAAGL,EAAmBL,UAAtB,aAAG,EAAgCU,QAChD,GAAGA,GAAWA,EAAQ,KAAmC,oBAA5B,UAAAA,EAAQ,UAAR,mBAAY5C,eAAZ,eAAqB7lB,KAAuD,oBAA5B,UAAAyoB,EAAQ,UAAR,mBAAY5C,eAAZ,eAAqB7lB,KAAyB,OAAO,EAGtI,IAAkB,OAAd+W,SAAc,IAAdA,QAAA,EAAAA,GAAgB4/B,KAAK3pC,UACG,KAAZ,OAAZ8c,QAAY,IAAZA,OAAA,EAAAA,EAAc1C,SACU,KAAZ,OAAZ0C,QAAY,IAAZA,OAAA,EAAAA,EAAcjC,QACf,OAAO,EAaV,GAAGO,EAAmB,CAAC,IAAD,kBAQjB,MAPKK,EAAO,UAAGL,EAAmBL,UAAtB,aAAG,EAAgCU,QAC1CzP,GAAO,UAAGoP,EAAmBL,UAAtB,aAAG,EAAgC/O,QAChD,GAAoC,QAAnB,OAAdjC,SAAc,IAAdA,QAAA,EAAAA,GAAgB4/B,KAAKzpC,UACxBub,IADG,UAEHA,EAAQ,UAFL,iBAEH,EAAY5C,eAFT,aAEH,EAAqB7lB,KACrBgZ,KAHG,OAIHA,SAJG,IAIHA,IAJG,UAIHA,GAAS6M,eAJN,aAIH,EAAkB7lB,IAEd,GAA4B,yBAAlB,OAAPgZ,SAAO,IAAPA,IAAA,UAAAA,GAAS6M,eAAT,eAAkB7lB,MAnBD,CACxB,wBACA,kCACA,mBACA,gBACA,iBACA,wBACA,2BACA,iBAW8Eqb,SAApB,UAA6BoN,EAAQ,UAArC,iBAA6B,EAAY5C,eAAzC,aAA6B,EAAqB7lB,IAAI,OAAO,EAGvH,GAAoC,QAAnB,OAAd+W,SAAc,IAAdA,QAAA,EAAAA,GAAgB4/B,KAAKzpC,UACxBub,IACCA,EAAQ,IACTzP,KAHG,OAIHA,SAJG,IAIHA,IAJG,UAIHA,GAAS6M,eAJN,aAIH,EAAkB7lB,KACO,yBAAlB,OAAPgZ,SAAO,IAAPA,IAAA,UAAAA,GAAS6M,eAAT,eAAkB7lB,IACjB,OAAO,EACR,GAAoC,QAAnB,OAAd+W,SAAc,IAAdA,QAAA,EAAAA,GAAgB4/B,KAAKzpC,UACxBub,GAC4B,oBAA5B,UAAAA,EAAQ,UAAR,mBAAY5C,eAAZ,eAAqB7lB,MACpByoB,EAAQ,GACR,OAAO,EAOZ,OAAmB,IAAfP,GACQwL,IAEJm1E,GAAkC9gF,IAGxCmhF,GAAc,WACZhhF,EAAa,GACbovB,GAASzuB,GAAsBuvB,QAAQtvB,cAAc,IACrDi/E,GAAwB,GACxBjd,KACAod,GAAuBnmG,QAAU,IAAIkJ,KACjCmd,GACAkvB,GAASzgB,GAAUuhB,QAAQvgB,2BAA2BzP,MAK1DkvB,GAASzgB,GAAUuhB,QAAQjhB,qBAAqBtD,KAChDs1E,KACAC,OAIFA,GAAmC,WACrC,GAAKlB,GAAuBnmG,QAA5B,CACA,IAAMiJ,EAAWJ,GAAsBs9F,GAAuBnmG,QAAS,IAAIkJ,MAC3EwsC,GAAGlL,MAAM,CACLp3B,SAAU,mBACViB,OAAQ,4BACRq2B,YAAa,4BACbznC,MAAOgG,IAEXk9F,GAAuBnmG,aAAUqJ,IAG/B0/E,GAAsC,WACxC,GAAKqd,GAA0BpmG,QAA/B,CACA,IAAMiJ,EAAWJ,GAAsBu9F,GAA0BpmG,QAAS,IAAIkJ,MAC9EwsC,GAAGlL,MAAM,CACLp3B,SAAU,mBACViB,OAAQ,0BACRq2B,YAAa,+BACbznC,MAAOgG,IAEXm9F,GAA0BpmG,aAAUqJ,IAOlC+9F,GAAc,WAChB,GAAa,iBAAT70F,GAMA,OALAgjC,GAASxhB,GAAmBsiB,QAAQjiB,qCACpCmhB,GAASxhB,GAAmBsiB,QAAQlzB,WAAW,aAC/CoyB,GAASzgB,GAAUuhB,QAAQjhB,qBAAqBtD,KAChDuxD,GAAuBvxD,SACvByjB,GAAS9iB,GAAkB4jB,QAAQ19B,aAInCsb,IAAmBshB,GAASzgB,GAAUuhB,QAAQxgB,kBAAkB5B,UAClC5qB,KAAZ,OAAlBgd,QAAkB,IAAlBA,OAAA,EAAAA,EAAoBhB,QACpBkwB,GAASlQ,GAAagR,QAAQ/Q,eAAe,CACzCzhB,MAAK,OAAEwC,QAAF,IAAEA,OAAF,EAAEA,EAAoBhB,MAC3B8C,KAAM3G,GAAayE,cAGO5c,KAAZ,OAAlBgd,QAAkB,IAAlBA,OAAA,EAAAA,EAAoBP,QACpByvB,GAASlQ,GAAagR,QAAQ/Q,eAAe,CACzCzhB,MAAK,OAAEwC,QAAF,IAAEA,OAAF,EAAEA,EAAoBP,MAC3BqC,KAAM3G,GAAakkB,SAG3BhjC,EAAQL,KAAKU,EAAOa,QAAQf,OAG1BwgF,GAAyB,SAAC7/E,GAC5B,IAAMyuB,EAASzuB,EAAawuB,OAAOC,OAC7BpwB,EAAY+zE,EAA4B,CAC1C1jD,GAAID,EAAOC,GACXC,GAAIF,EAAOE,IACZqkD,IACH8wB,GAA2B9lF,GAAayE,MAAOpkB,GAC/CylG,GAA2B9lF,GAAakkB,MAAO7jC,IAG7CylG,GAA6B,SAACn/E,EAAoBjR,GAAmB,IAAD,MACtE,GAAKmP,GACAA,EAAmB8B,KAAU,UAAC9B,EAAmB8B,UAApB,aAAC,EAA0BtR,SAA7D,CACA,IAAMA,EAAO,UAAGwP,EAAmB8B,UAAtB,aAAG,EAA0BtR,QAC1C,GAAKA,GAAYA,EAAQiN,SAAYjN,EAAQiN,QAAQ7F,YAArD,CACA,IAAMA,EAAck4D,EAAiC,UACjDt/D,EAAQiN,eADyC,aACjD,EAAiB7F,YAAYrH,QAAO,SAAAH,GAAC,aAAIA,EAAExT,SAAF,UAAY4T,EAAQ4P,kBAApB,aAAY,EAAoBxjB,UACzEwO,IAEA48B,EAAc6nC,EAAgCj4D,EAAa/G,GAC1Dm3B,GACLkH,GAASzuB,GAAsBuvB,QAAQruB,cAAc,CACjDL,WAAY1M,GAAe0C,QAC3BkG,MAAK,OAAEhN,QAAF,IAAEA,OAAF,EAAEA,EAASgN,MAChBC,QAAO,OAAEjN,QAAF,IAAEA,OAAF,EAAEA,EAASiN,QAClB2C,WAAY4nB,EACZpmB,QAAQ,EACRE,KAAMA,QAIRo/E,GAAa,SAAC3jF,GAChB,OAAIxiB,MAAMC,QAAQuiB,MACVA,GAAUA,EAAOxZ,OAAS,GAAKwZ,EAAO,GAAGE,UAAYF,EAAO,GAAGE,QAAQvI,MAAQ,IAAInR,OAAS,MAGhGwZ,GAAUA,EAAOE,UAAYF,EAAOE,QAAQvI,MAAQ,IAAInR,OAAS,IAanEo9F,GAAe,WACjB,IAAMlc,EAVa,WACnB,GAAKjlE,EAAL,CACA,IAAM8B,EAAgC9B,EAAmBL,GACjDnP,EAA8BsR,EAA9BtR,QAAS6P,EAAqByB,EAArBzB,QAASzP,EAAYkR,EAAZlR,QAC1B,OAAIswF,GAAW1wF,GAAiB,CAAE+M,OAAQ3I,GAAe0C,QAASnQ,KAAMqJ,GACpE0wF,GAAW7gF,GAAiB,CAAE9C,OAAQ3I,GAAe6D,QAAStR,KAAMkZ,EAAQ,IAC5E6gF,GAAWtwF,GAAiB,CAAE2M,OAAQ3I,GAAeqE,QAAS9R,KAAMyJ,QAAxE,GAIyBwwF,GACpBnc,IACL/1C,GAASnzB,GAAci0B,QAAQjzB,kBAAkBkoE,EAAY99E,KAAKqW,QAClE0xB,GAASnzB,GAAci0B,QAAQ9yB,oBAAoB+nE,EAAY99E,KAAKsW,UAC/DuiF,IAAyBC,KAC9B/wD,GAAStd,GAAiBoe,QAAQtd,sBAAsBstE,KACxD9wD,GAAStd,GAAiBoe,QAAQ7d,iBAAiB8yD,EAAY1nE,SAC/D2xB,GAAStd,GAAiBoe,QAAQld,YAAYp2B,EAAOW,mBACrD6xC,GAAStd,GAAiBoe,QAAQpd,4BAA4BqtE,KAC9D3wD,GAAKnzC,MAAMO,EAAOgB,kBAGhB2jG,GAAc,WAChB,IAAKrB,GAAsB,OAAO,EADZ,IAGlBxvF,EAGAwvF,GAHAxvF,QACA6P,EAEA2/E,GAFA3/E,QACAzP,EACAovF,GADApvF,QAEJ,QAAKJ,GAAY6P,GAAYzP,IA6B3B0wF,GAAgC,WAClCzB,IAAiC,IA8BrC,OAEI,aADA,CACA,OAAKnnG,UAAWgD,IAAhB,SAEI,eAAC,GAAD,WArWJ,cADA,CACA,OAAKhD,UAAWw8C,EAAE,OAAlB,UACI,kCA/Be,IAAfp1B,EAAyB,GACV,IAAfA,EAAyB,cAAC,EAAD,CAAMvnB,KAAK,iBACpC4pB,EAAsB,cAAC,EAAD,CAAM5pB,KAAK,wBAAwBC,KAAK,QAC3D,GAVY,IAAfsnB,EAAyB7Z,GAAE,0CACZ,IAAf6Z,EAAyB7Z,GAAE,+BAC3Bkc,EAAsBlc,GAAEkc,EAAcvlB,OACnC,MAuCH,sBAAKlE,UAAWw8C,EAAE,aAAcv1B,GAAhC,UACI,qBAAKjnB,UAAU,iBAAf,SACI,cAAC,EAAD,CAAMH,KAAK,YAAYI,MAAO,kBAAMsoB,GAAW9F,GAAayE,YAEhE,sBAAMlnB,UAAU,YAChB,qBAAKA,UAAU,iBAAf,SACI,cAAC,EAAD,CAAMH,KAAK,YAAYI,MAAO,kBAAMsoB,GAAW9F,GAAakkB,YAE3DshE,MACG,qBAAKjoG,UAAU,eAAf,SACI,uCAGXgoG,MACG,mCACI,sBAAKhoG,UAAU,WAAf,UACKuN,GAAE,2BAA4B,iDAC/B,qBAAKvN,UAAU,6BAAf,SACI,sBAAKA,UAAU,mBAAf,UACI,qBAAKA,UAAU,uBAAsB8B,QAAS,kBAAMomG,IAAqB,IAAzE,SACK36F,GAAE,6BAEP,qBAAKvN,UAAU,sBAAsB8B,QAAS,kBAAMomG,IAAqB,IAAzE,SACK36F,GAAE,4CA2U3B,cAAC,GAAD,KACE25F,KAAoCF,GAClC,cAAC,GAAD,CAA2B/lE,WAAY2nE,KAE1C5B,GACG,cAAC,GAAD,CAAmBlnG,KAAMgnG,EAAmB7lE,WAAY2nE,KAlEzD,wBAEX,cADA,CACA,OAAK5oG,UAAWw8C,EAAE,UAAlB,UACI,cAAC,GAAD,CAEIoB,KAAMrwC,GAAE,6BACRxK,SAAU4lG,KACVt5F,KAnQD,sBAAKrP,UAAWw8C,EAAE,aACrBY,aAAc,kBAAMkuC,IAAe,IACnCjuC,aAAc,kBAAMiuC,IAAe,IAFhC,UAIH,qBAAKvpF,IAAKqpF,WAAQppF,IAAI,KACtB,qBAAKhC,UAAW8qF,EAAa,MAAQ,MAAO/oF,IAAK+oF,EAAaM,WAASC,WAAQrpF,IAAI,QA+P/ElC,KAAK,SACLG,MAAO,kBAAMwoG,QACjB,cAAC,GAAD,CAEI1lG,SAA0B,IAAfqkB,GAAsD,QAApB,OAAdnR,SAAc,IAAdA,IAAA,UAAAA,GAAgB4/B,YAAhB,eAAsBzpC,SAAoBo7F,GAAoBW,KAC7FvqD,KAAMrwC,GAAE,oCACR8B,KACI,cAAC,GAAD,CAAavP,KAAK,QAAQI,WAAW,SAEzCJ,KAAK,YACL+9C,UAAU,EACV59C,MAAO,kBAAMmoG,WAiDZS,SCjuBFC,GA/D+B,SAAC,GAKvC,IAJJ9oF,EAIG,EAJHA,OACAigC,EAGG,EAHHA,SACAnsC,EAEG,EAFHA,SACAgR,EACG,EADHA,MACG,EAEY7iB,EAAO,wBAFnB,mBAEIe,EAFJ,KAEOw5C,EAFP,OAGiCl8C,oBAAS,GAH1C,mBAGIyoG,EAHJ,KAGgBC,EAHhB,KAIIz7F,EAAKN,EAAe8N,YAAYX,IAAhC7M,EACDipC,EAAWC,cACXwyD,EAAajpF,EA4BnB,OACI,qBAAKhgB,UAAWgD,IAAhB,SACI,qBAAIhD,UAAWw8C,EAAE,WAAjB,UACI,oBAEI16C,QAtBK,WACjBknG,GAAc,SAAAn/C,GAAI,OAAKA,MAsBX7pD,UAAWw8C,EAAE,SAdD,WACxB,IAAMgC,EAAU,CAAC,UAIjB,OAHGuqD,GAAWvqD,EAAQl7C,KAAK,iBACxBwQ,GAAS0qC,EAAQl7C,KAAK,uBAElBk7C,EAS4B0qD,IAH3B,SAIQ,+BACgB37F,EAAXuG,EAAaA,EAAS5P,MAAW,+BAJpC,GAQN6kG,GAAcE,EAAW3qG,KAAK,SAACiiD,GAAD,OAC1B,oBACIz+C,QAAS,kBA3BZc,EA2B8B29C,EA1B/C/J,EAASzuB,GAAsBuvB,QAAQ/tB,kBAAkBzE,SACtDm7B,GAASA,EAASr9C,IAFL,IAACA,GA4BG5C,UAAWw8C,EAAE,SAAW1oC,GAAYA,EAAS5U,KAAOqhD,EAAErhD,GAAM,WAAa,IAC9DwC,OAxCdkB,EAwCiC29C,EAAEnxC,MAvC7C,CACHgwC,gBAAiBx8C,EACjBA,MAAOA,KAqCc29C,EAAErhD,IAxCX,IAAC0D,WCwDVumG,GAvEgC,SAAC,GAIxC,IAHJv7E,EAGG,EAHHA,QACA9Z,EAEG,EAFHA,SACAmsC,EACG,EADHA,SACG,EAEYh+C,EAAO,yBAFnB,mBAEIe,EAFJ,KAEOw5C,EAFP,OAGoCl8C,oBAAS,GAH7C,mBAGIktF,EAHJ,KAGiBC,EAHjB,KAIKtvD,EAAyBiP,KAAzBjP,qBACD5wB,EAAKN,EAAe8N,YAAYX,IAAhC7M,EAiBDmgF,EAAgB,SAACj7E,GAEnBw5B,YAAW,WACPwhD,EAAeh7E,KAFLA,EAAO,EAAI,MAoB7B,OACI,sBAAKzS,UAAWgD,IAAhB,UACI,yBACI8wE,OA5BQ,WAChB4Z,GAAc,IA4BN5rF,QAjCS,WACjB4rF,GAAcF,IAiCNxtF,UAAWw8C,EAAE,QAAU1oC,EAAW,aAAe,IAHrD,UAKKA,EAAWA,EAAS5P,MAAQqJ,EAAE,2CAE/B,cAAC,EAAD,CAAOzN,KAAK,YAIZ0tF,GACA,qBAAKxtF,UAAWw8C,EAAE,mBAAlB,SA5BU,SAAC2T,GACnB,IAAM1vB,EAAoBtC,EAAqBgyB,EAAS,CAAC5vB,eAAe,IAExE,OAAO,oBAAIvgC,UAAWw8C,EAAE,WAAjB,SACD/b,EAAkBniC,KAAI,SAACopB,GAAD,OACZ,oBACI1nB,UAAWw8C,EAAE,SAAW90B,EAAWnY,QAAuB,GAAb,YAC7CzN,QAAS,kBA1BXksD,EA0B8BtmC,OAzB7Cu4B,GAASA,EAAS+N,IADJ,IAACA,GAwBF,SAGEtmC,EAAWxjB,OAHJwjB,EAAWxoB,SAwBvBkqG,CAAcx7E,SC2DpBy7E,GA5GuB,SAAC,GAQ/B,IAPJxkF,EAOG,EAPHA,OACAzV,EAMG,EANHA,MACAk6F,EAKG,EALHA,eACAC,EAIG,EAJHA,QACAC,EAGG,EAHHA,cAGG,IAFHzmG,gBAEG,SADH0mG,EACG,EADHA,QACG,EAEYxnG,EAAO,eAFnB,mBAEIe,EAFJ,KAEOw5C,EAFP,KAGKjvC,EAAMN,EAAe8N,YAAYX,IAAjC7M,EAHL,EASCwN,YAAY0P,IAFZnD,GAPD,EAKCmC,cALD,EAMCE,aAND,EAOCrC,oBACAL,EARD,EAQCA,WARD,EAUmClM,YAAYX,GAA1CnE,EAVL,EAUKA,eAAgBiE,EAVrB,EAUqBA,UAClBs8B,EAAWC,cA6BX51C,EAAiB,SAAC4qC,GAAqC,IAAnBi+D,EAAkB,wDACpDD,IACS,WAAVh+D,GAAsBr8B,IAAUs6F,IACnCD,EAAQh+D,EAAO5mB,GACf2xB,EAASzuB,GAAsBuvB,QAAQntB,UAAUtF,EAAO3lB,QAiB5D,OACI,sBAAKc,UAAWgD,EAfG,WACnB,IAAMb,EAAsB,CAAE0iB,EAAO3lB,IAGrC,OAFGkQ,GAAMjN,EAAUmB,KAAK,cACrBP,GAASZ,EAAUmB,KAAK,YACpBnB,EAWWy+D,IAAmB9+D,QAAS,kBAAMjB,EAAe,WAAnE,UACI,cAAC,EAAD,CAAMhB,KAAMglB,EAAO3lB,GAAIY,KAAK,QAAQE,UAAWw8C,EAAE,WAG5C+sD,GACD,oBAAIvpG,UAAWw8C,EAAE,SAAjB,SAA4BjvC,EAAEsX,EAAO3gB,SAIzC,cAAC,GAAD,CAAQmL,KAAK,OAAOvP,KAAK,YAAYg+C,QAAQ,EAAM99C,UAAWw8C,EAAE,SAG5DptC,GACA,sBAAKpP,UAAWw8C,EAAE,QAAS8sD,EAAiB,aAAe,IAA3D,UAjBD/7F,EAAG6B,EAAiClL,OAoB/B,sBAAKlE,UAAWw8C,EAAE,iBAAlB,UACI,sBAAM16C,QAAS,kBAAMjB,EAAe,WAApC,SACI,cAAC,EAAD,CAAMhB,KAAK,YAIX2pG,GAnEI,WAAM,IAAD,IAC7B,GAAoC,QAAnB,OAAdvzF,QAAc,IAAdA,OAAA,EAAAA,EAAgB4/B,KAAKzpC,SAAiB,OAAO,EAEhD,IAIIub,EACA7P,EACkB,IAI2D,sCAR3E6xF,EAA8B,CAAC,wBAAyB,mBAAmB,gBAAiB,mCAI/FriF,IACCK,EAAO,UAAGL,EAAmBL,UAAtB,aAAG,EAAgCU,QAC1C7P,EAAO,UAAGwP,EAAmBL,UAAtB,aAAG,EAAgCnP,SAE9C,MAAqC,QAAnB,OAAd7B,QAAc,IAAdA,OAAA,EAAAA,EAAgB4/B,KAAKzpC,UAAoBub,IAAzC,UAAoDA,EAAQ,UAA5D,iBAAoD,EAAY5C,eAAhE,aAAoD,EAAqB7lB,KACpE,UAAAyoB,EAAQ,UAAR,mBAAY5C,eAAZ,eAAqB7lB,KAAMyqG,EAA4BpvF,SAA5B,UAAqCoN,EAAQ,UAA7C,iBAAqC,EAAY5C,eAAjD,aAAqC,EAAqB7lB,KAAOgb,IAA5F,UACDpC,SADC,iBACD,EAAS4P,kBADR,aACD,EAAqB1oB,QADpB,UAC4Bkb,EAAS,UAACpC,SAAD,iBAAC,EAAS4P,kBAAV,aAAC,EAAqB1oB,aAD3D,aAC4B,EAAsCo1C,UACnE,UAAOl6B,EAAS,UAACpC,SAAD,iBAAC,EAAS4P,kBAAV,aAAC,EAAqB1oB,aAAtC,iBAAO,EAAsCo1C,gBAA7C,aAAO,EAAgDw1D,gBAb/B,CAAC,8BAA+B,qBAAqB,SAcrDrvF,SAAxB,UAAiCoN,EAAQ,UAAzC,iBAAiC,EAAY5C,eAA7C,aAAiC,EAAqB7lB,QACtDyqG,EAA4BpvF,SAA5B,UAAqCoN,EAAQ,UAA7C,iBAAqC,EAAY5C,eAAjD,aAAqC,EAAqB7lB,KAC3B,oBAA5B,UAAAyoB,EAAQ,UAAR,mBAAY5C,eAAZ,eAAqB7lB,UANhC,EAsDqC0gG,IACjB,cAAC,EAAD,CAAM//F,KAAK,aAAaI,MAAO,kBAAMY,EAAe,UAAU,YAO1EyoG,GACAA,MCgeDO,GApjB6B,WAAM,MAE/B5nG,EAAO,uBAFwB,mBAEvCe,EAFuC,KAEpCw5C,EAFoC,KAGxC3F,EAAe97B,YAAY+K,IACzB/C,EAAyB8zB,EAAzB9zB,qBACFyzB,EAAWC,cAL6B,EAMyC17B,YAAY0P,IAA3FnD,EANsC,EAMtCA,mBAAoBL,EANkB,EAMlBA,WAAYG,EANM,EAMNA,WAAoBU,GANd,EAMMjD,OANN,EAMciD,wBANd,EAOoBxnB,oBAAS,GAP7B,mBAOvCwpG,EAPuC,KAOZC,EAPY,KAQxCnzD,EAAO7K,KACP4K,EAAKnL,KATmC,GAUlBhlC,IAApB6D,gBAC+B0Q,YAAY8rB,KAC7C6P,GAZwC,EAWtC7gB,aAXsC,EAWxBC,aACL/a,YAAYX,IACrB7M,EAAMN,EAAeypC,GAArBnpC,EAbsC,EAcLwN,YAAYX,GAA/BnE,GAdwB,EActCxJ,aAdsC,EAcxBwJ,gBAdwB,EAmB1CwgE,KAHAU,EAhB0C,EAgB1CA,gCACAN,EAjB0C,EAiB1CA,4BACAO,EAlB0C,EAkB1CA,kCAlB0C,EAoBXr8D,YAAYkc,IAAvCxyB,EApBsC,EAoBtCA,aAAcC,EApBwB,EAoBxBA,SACd85E,EAAiB3B,KAAjB2B,aArBsC,GAsBDzjE,YAAY6a,IAAjDjB,iCAMJyY,MAJAuC,EAxB0C,EAwB1CA,yBACAG,EAzB0C,EAyB1CA,4BACAE,EA1B0C,EA0B1CA,eACAO,EA3B0C,EA2B1CA,oBA3B0C,EA6BJjwC,oBAAS,GA7BL,mBA6BvC+/E,EA7BuC,KA6BvBC,EA7BuB,KA8BxCJ,EAASx1E,UAAU2tC,OA9BqB,GAoC1CrE,KAJAU,GAhC0C,GAgC1CA,mBACAkB,GAjC0C,GAiC1CA,oBACA7F,GAlC0C,GAkC1CA,eACAoG,GAnC0C,GAmC1CA,iBAEIrF,GAAqBH,GAAYkG,GAAjC/F,iBACJ1kC,GAAO,OAAG6J,QAAH,IAAGA,OAAH,EAAGA,EAAgB4/B,KAAKzpC,QAGnCpL,qBAAU,gBAE4BsJ,KAAZ,OAAlBgd,QAAkB,IAAlBA,OAAA,EAAAA,EAAoBhB,QACpBkwB,EAASlQ,GAAagR,QAAQ/Q,eAAe,CACzCzhB,MAAK,OAAEwC,QAAF,IAAEA,OAAF,EAAEA,EAAoBhB,MAC3B8C,KAAM3G,GAAayE,WAK5B,QAACI,QAAD,IAACA,OAAD,EAACA,EAAoBhB,QAExBtlB,qBAAU,WACNw1C,EAASzuB,GAAsBuvB,QAAQptB,iBAAgB,MACxD,IAEHlpB,qBAAU,gBAC4BsJ,KAAZ,OAAlBgd,QAAkB,IAAlBA,OAAA,EAAAA,EAAoBP,QACpByvB,EAASlQ,GAAagR,QAAQ/Q,eAAe,CACzCzhB,MAAK,OAAEwC,QAAF,IAAEA,OAAF,EAAEA,EAAoBP,MAC3BqC,KAAM3G,GAAakkB,WAK5B,QAACrf,QAAD,IAACA,OAAD,EAACA,EAAoBP,QAExB/lB,qBAAU,WACN,GAAIgpG,KAAuB,CAEvB,IAAMpiF,EAAY42D,IAClBhoC,EAASzuB,GAAsBuvB,QAAQttB,aAAapC,OAEzD,CAACN,IAEJtmB,qBAAU,WAAO,IAAD,EACZ,GAAKsmB,GAAqC,IAAfF,EAE3B,GAAI,oBADoB+8D,eAAelyD,QAAQ,gBAC/C,CAKA,IAAM+uD,IAAWv8E,EAAawuB,OAAOC,OAAOC,GAEtCtO,EAASyC,EAAmBL,GAC5BmC,EAAOnC,IAAexE,GAAayE,MAAQ,EAAI,EACrD,GACKrC,GAAWA,EAAO/M,SAClB+M,EAAO/M,QAAQ4P,WAFpB,CAQA,IAAMy6D,EAAW,UAAGt9D,EAAO/M,QAAQiN,eAAlB,aAAG,EAAwB7lB,GACtC+hF,EAAY1wC,EAAmB,OACjCt6B,QADiC,IACjCA,OADiC,EACjCA,EAAgB4/B,KAAKzpC,QACnB+1E,EACFt9D,EAAO/M,QAAQ4P,WAAW1oB,MAExBkiF,GAAkB,OAACjrE,QAAD,IAACA,OAAD,EAACA,EAAgB4/B,KAAK3pC,SAAsB+0E,EAC9DxyE,EAAO,CACT0J,MAAO0M,EAAO/M,QAAQ4P,WAAWvP,MACjCgpE,aAAcC,GAAkBe,GAChCd,iBAAkBC,GAAqBz8D,EAAO/M,QAAQ4P,WAAW1oB,MACjEyF,aAAcu8E,EAAWlxC,EAA4BrrC,EAAawuB,QAAU,KAC5EvuB,SAAUirC,EAAyBjrC,EAAU0kB,GAC7Cm4D,aAAcvxC,EAAegxC,EAAUE,IAG3CrzE,IAAMi2B,KAAK8R,KAAuB,CAAEnnC,SAAQ5P,MAAK,SAAA6Y,GAAM,IAAD,IAClD,GAAIwpE,EAAiB,CACjB,IAAMO,EAA6C,QAAnB,OAAdxrE,QAAc,IAAdA,OAAA,EAAAA,EAAgB4/B,KAAKzpC,SACjCs1E,EAAoBC,GAAqB98D,EAAQ48D,GACjDG,EAAgBlqE,EAAEjJ,KAAKA,KAAKozE,qBAClC9xC,GAAe2xC,EAAmBE,GAAe,SAAC54E,GAAqB,IAAD,EAC5D+3E,EAAmB,UAAGl8D,EAAO/M,QAAQ4P,kBAAlB,aAAG,EAA2B1oB,KACnDirG,GAAiBlpB,GAAsBmpB,GAAsBrlF,EAAQk8D,GACzE,GAAIz5D,GAAuD,QAAnB,OAAdrR,QAAc,IAAdA,OAAA,EAAAA,EAAgB4/B,KAAKzpC,SAAkB,CAAC,IAAD,UACvDub,EAAO,UAAGL,EAAmBL,UAAtB,aAAG,EAAgCU,QAC5CA,GAAWA,EAAQ,KACU,oBAA5B,UAAAA,EAAQ,UAAR,mBAAY5C,eAAZ,eAAqB7lB,KAAuD,oBAA5B,UAAAyoB,EAAQ,UAAR,mBAAY5C,eAAZ,eAAqB7lB,MAK1C,gBAAxB6hF,GAAiE,aAAxBA,GAA8D,yBAAxBA,GAJnFT,GAAgB,GAChB9pC,EAASzuB,GAAsBuvB,QAAQptB,iBAAgB,MAQnDo2D,IAAkBt3E,GAAUihG,IAC5BzzD,EAASzuB,GAAsBuvB,QAAQptB,gBAAgBlhB,GAAUihG,UAIzE3pB,IAAkBt3E,GAAUihG,IAC5BzzD,EAASzuB,GAAsBuvB,QAAQptB,gBAAgBlhB,GAAUihG,OAK7E,GAC0B,MAAtBvyF,EAAEjJ,KAAKuzE,YACNtqE,EAAEjJ,KAAKA,KAAK6e,gBACsC,IAAnDhuB,OAAOD,KAAKqY,EAAEjJ,KAAKA,KAAK6e,gBAAgBjiB,OAH5C,CAhCkD,MA6C9CqM,EAAEjJ,KAAKA,KAAK6e,eAHZ20D,EA1C8C,EA0C9CA,aACAhkC,EA3C8C,EA2C9CA,OACAikC,EA5C8C,EA4C9CA,WAGJ1rC,EAASxhB,GAAmBsiB,QAAQniB,sBAAsB,CACtD/L,KAAMnC,EACNxY,KAAM,CACF0J,MAAK,OAAE0M,QAAF,IAAEA,GAAF,UAAEA,EAAQ/M,eAAV,iBAAE,EAAiB4P,kBAAnB,aAAE,EAA6BvP,MACpCgqE,YAAa1zE,EAAK0yE,aAClBiB,KAAMH,EACNhkC,OAAQA,EACRokC,OAAQH,EACRz9E,aAAcgK,EAAKhK,aACnBC,SAAU+J,EAAK/J,kBAnBnBylG,GAAuBljF,WAzD3BkjF,GAAuBljF,QAZvBk9D,eAAetoC,QAAQ,eAAgB,MA4F5C,CAACv0B,EAAoBL,IAGxBjmB,qBAAU,WAWN,GAAIsmB,EAAoB,CAAC,IAAD,UASlB,MARIK,EAAO,UAAGL,EAAmBL,UAAtB,aAAG,EAAgCU,QAC1CzP,EAAO,UAAGoP,EAAmBL,UAAtB,aAAG,EAAgC/O,QAChD,GAAqC,QAAnB,OAAdjC,QAAc,IAAdA,OAAA,EAAAA,EAAgB4/B,KAAKzpC,UACrBub,GACAA,EAAQ,KAFR,UAGAA,EAAQ,UAHR,iBAGA,EAAY5C,eAHZ,aAGA,EAAqB7lB,KACrBgZ,IAJA,OAKAA,QALA,IAKAA,GALA,UAKAA,EAAS6M,eALT,aAKA,EAAkB7lB,IAElBohF,EAAyC,yBAAlB,OAAPpoE,QAAO,IAAPA,GAAA,UAAAA,EAAS6M,eAAT,eAAkB7lB,MApBlB,CACpB,wBACA,kCACA,mBACA,gBACA,iBACA,wBACA,2BACA,6BAYuFqb,SAAhB,UAAyBoN,EAAQ,UAAjC,iBAAyB,EAAY5C,eAArC,aAAyB,EAAqB7lB,QAG1H,CAACooB,EAAoBL,EAAYG,IAMpC,IAAMg6D,GAAoB,SAACe,GACvB,MAAoB,sBAAhBA,EACO,mBAEAA,GAGTb,GAAuB,SAAC5rC,GAC1B,OAAQA,GACJ,IAAK,oBACD,MAAO,mBACX,IAAK,0BACD,MAAO,yBACX,IAAK,iBACD,MAAO,iBACX,IAAK,mBACD,MAAO,kBACX,IAAK,gBACD,MAAO,eACX,IAAK,iBACD,MAAO,sBAEX,QACI,OAAOA,IAKbw0D,GAAwB,SAACrlF,EAAauxB,GACxC,IAAIg0D,GAAU,EACd,GAAIvlF,EAAO8C,SAAW9C,EAAO8C,QAAQtc,OAAQ,CACzC,IAAMpM,EAAM4lB,EAAO8C,QAAQrpB,KAAI,SAACknB,GAAD,uBAAYA,EAAET,eAAd,aAAY,EAAW7lB,MACvCi3C,GAAiBC,EAAWn3C,EAAK,cACnCmrG,GAAU,GAG3B,GAAIvlF,EAAO3M,QAAS,CAAC,IAAD,EACVjZ,EAAM,WAAC4lB,EAAO3M,QAAQ6M,eAAhB,aAAC,EAAwB7lB,IACtBi3C,GAAiBC,EAAWn3C,EAAK,eACnCmrG,GAAU,GAE3B,OAAOA,GAGLzoB,GAAuB,SAAC98D,GAAuC,IAAD,EAAzB89D,EAAyB,wDAC1DC,GAA0B,OAAN/9D,QAAM,IAANA,OAAA,EAAAA,EAAQ8C,SAAR,OAAkB9C,QAAlB,IAAkBA,OAAlB,EAAkBA,EAAQ8C,QAAQrpB,KAAI,SAACknB,GAAD,uBAAYA,EAAET,eAAd,aAAY,EAAW7lB,MAAM,GACvF2jF,GAA2B,OAANh+D,QAAM,IAANA,OAAA,EAAAA,EAAQ3M,UAAWyqE,EAAgB,QAAC99D,QAAD,IAACA,GAAD,UAACA,EAAQ3M,QAAQ6M,eAAjB,aAAC,EAAyB7lB,IAAM,GAC9F,MAAM,GAAN,mBACO0jF,GACAC,IAILwnB,GAAc,WAAO,IAAD,EACtB,QAAK/iF,MACE,UAAAA,EAAmBL,UAAnB,eAAgCnP,UAGrCkyF,GAAsB,WAAO,IAAD,EAC9B,OAA8C,QAArB,OAAlB1iF,QAAkB,IAAlBA,GAAA,UAAAA,EAAoBhB,aAApB,eAA2BxO,UAGhCqyF,GAAyB,SAAC/gF,GAC5BotB,EAASxhB,GAAmBsiB,QAAQniB,sBAAsB,CACtD/L,KAAMA,EACN3a,UAAMnE,KAEVksC,EAASxhB,GAAmBsiB,QAAQliB,4BAA4B,CAC5DhM,KAAMA,EACN3a,UAAMnE,MAoBRggG,GAAsB,SAACxqG,GAAyD,IAAnCX,EAAkC,wDAArBiN,EAAqB,uCACjF,GAAKkb,EAAL,CACA,IAAM8B,EAAO9B,EAAmBL,GAC1BkjE,EAAgB/gE,EAAOA,EAAKtpB,GAAQ,KAE1C,IAAKqqF,EAAU,OAAO,KAEtB,GAAIrqF,IAASoc,GAAe6D,QAAS,CACjC,GAAIoqE,GAAaA,EAAmB9+E,OAAS,EAAG,CAE5C,GAAIe,EAAS,CAAC,IAAD,IACL2Y,EAAO,UAAGolE,EAAS,UAAZ,aAAG,EAAaplE,QAAQ7lB,GAC/BqrG,KAAuC,OAAxBjmD,SAAwB,IAAxBA,QAAA,EAAAA,GAA2Bl4C,IAC1Co+F,KAAuC,OAAxBlmD,SAAwB,IAAxBA,IAAA,UAAAA,GAA2Bl4C,UAA3B,eAAsC2Y,IAEzD,GAAIwlF,GAAgBC,EAAc,CAAC,IAAD,IAC1BC,EAActgB,EAAS,GACvB3lD,EAAO,2BACJimE,GADI,IAEP1lF,QAAQ,2BACD0lF,EAAY1lF,SADZ,IAEHotB,gBAAe,OAAEmS,SAAF,IAAEA,IAAF,UAAEA,GAA2Bl4C,UAA7B,aAAE,EAAsCq+F,EAAY1lF,QAAQ7lB,IAC3E8gB,OAAM,OAAEskC,SAAF,IAAEA,IAAF,UAAEA,GAA2Bl4C,UAA7B,aAAE,EAAsCq+F,EAAY1lF,QAAQ7lB,QAG1E,MAAO,CAACslC,GAER,OAAO2lD,EAIX,OAAOA,EAGf,OAAO,KAEX,OAAIhrF,EAAYgrF,EACTA,EAASziE,WAAayiE,EAASziE,WAAayiE,EAASplE,UAmC1D2lF,GAAuB,SAAC7lF,EAAwB1M,EAAeqN,GACjE,IAAMmlF,EAAmBL,GAAoBzlF,GAAQ,EAAMzY,IAC3D,IAAKu+F,EAAkB,OAAO,KAC9B,IAAKC,GAAgBplF,GAAI,OAAO,KAEhC,GAAIX,IAAW3I,GAAe0C,UAAY+rF,EAAiBjjF,WACvD,OAAO,cAAC,GAAD,CACHkG,QAAS+8E,EAAiB5lF,QAAQ7F,YAClC+gC,SAAU,SAACv4B,GAAD,OAxCG,SAAC5C,EAAsBC,EAAmB2C,GAA6B,IAAD,EAEvF66D,EACJ,IAAgB,OAAZ99E,QAAY,IAAZA,GAAA,UAAAA,EAAcwuB,cAAd,eAAsBC,SAAUnO,EAAQ7F,YAAa,CACrD,IAAMgU,EAASzuB,EAAawuB,OAAOC,OAC7BpwB,EAAY+zE,EAA4B,CAC1C1jD,GAAID,EAAOC,GACXC,GAAIF,EAAOE,IACZ0Z,IACG5tB,EAAck4D,EAChBryD,EAAQ7F,YAAYrH,QAAO,SAAAH,GAAC,OAAIA,EAAExT,QAAUwjB,EAAWxjB,SACvDwyC,EAAShkC,uBACb6vE,EAAwBpL,EAAgCj4D,EAAapc,GAEvD,UAAfmkB,GACCuvB,EAASzuB,GAAsBuvB,QAAQhtB,iBAAgB,IAE3DksB,EAASzuB,GAAsBuvB,QAAQruB,cAAc,CACjDL,WAAY1M,GAAe0C,QAC3BkG,QACAC,UACA2C,WAAY66D,GAAyB76D,KAmBP03E,CACtBuL,EAAiB7lF,MACjB6lF,EAAiB5lF,QACjB2C,MAGZ,GAAI7C,IAAW3I,GAAe6D,QAAS,CACnC,IAEI8qF,EAFE14D,EAAkBw4D,EAAiBxyF,GAAO4M,QAAQotB,gBAClDnyB,EAAS2qF,EAAiBxyF,GAAO4M,QAAQ/E,OAI/C,OAFqF6qF,EAAlF14D,GAAmBA,EAAgB9mC,OAAS,IAAM8mC,EAAgB53B,SAAS,MAAqB43B,EAChFnyB,GAEZ,cAAC,GAAD,CACHlM,SAAU62F,EAAiBxyF,GAAOvV,MAClCq9C,SAAU,SAACr9C,GAAD,OA9BO,SAACA,EAAmBuV,GAC7Cq+B,EAASzuB,GAAsBuvB,QAAQ1tB,gBAAgB,CACnDhnB,QACAuV,WA2ByB2yF,CAAqBloG,EAAOuV,IACjD6H,OAAQ+qF,GAAoBF,EAAa1yF,GACzC2M,MAAO6lF,EAAiBxyF,GAAO4M,QAAQ7lB,KALlB,KAS7B,OAAO,MAGL6rG,GAAsB,SAAC/qF,EAAe7H,GAAmB,IAAD,MAC1D,IAAKmP,KAAsB,OAACrR,QAAD,IAACA,OAAD,EAACA,EAAgB4/B,KAAK3pC,OAAO,OAAO8T,EAC/D,IAAM6E,EAASyC,EAAmBL,GAC5BnP,EAAO,OAAG+M,QAAH,IAAGA,GAAH,UAAGA,EAAQ/M,eAAX,iBAAG,EAAiB4P,kBAApB,aAAG,EAA6B1oB,KACvC2oB,EAAO,OAAG9C,QAAH,IAAGA,GAAH,UAAGA,EAAQ8C,QAAQxP,GAAO4M,eAA1B,aAAG,EAAgC7lB,GAChD,IAAK4Y,IAAY6P,EAAS,OAAO3H,EACjC,IAAMgrF,EAAYt2D,GAAmB58B,EAAS6P,GAGxCsjF,EAAgBn6D,GAAiBnpB,GAQvC,OANiB3H,EAAOnI,QAAO,SAAAH,GAC3B,OAAOszF,EAAUnzF,QAAO,SAAA0oC,GAEpB,OADwB7oC,EAAExY,GAAGgQ,QAAQ+7F,EAAe,IAC7Bj0F,gBAA8BupC,EANpBrxC,QAAQ,MAAO,IAAI8H,iBAOrD3L,WAKLu/F,GAAkB,SAACplF,GACrB,SAAOA,QAAclb,IAATkb,EAAEtmB,KAoBZgsG,GAA4B,WAAO,IAAD,IAC9BC,EAA8B,UAAflkF,EAAA,OAAyBK,QAAzB,IAAyBA,GAAzB,UAAyBA,EAAoBhB,aAA7C,aAAyB,EAA2BxO,QAApD,OAA8DwP,QAA9D,IAA8DA,GAA9D,UAA8DA,EAAoBP,aAAlF,aAA8D,EAA2BjP,QAG9G,QAFoD,QAAjB,OAAZqzF,QAAY,IAAZA,OAAA,EAAAA,EAAczjF,kBAAoDpd,KAAjB,OAAZ6gG,QAAY,IAAZA,OAAA,EAAAA,EAAczjF,cAKxE0jF,GAAmB,SAACvmF,GAEtB,IAAMzV,EAAQk7F,GAAoBzlF,EAAO3lB,IACnCsN,EAAWnK,MAAMC,QAAQ8M,GAC3BA,EAAM9Q,KAAI,SAAAoZ,GAAC,OAAIA,EAAEqN,WACjB,CAAC3V,GAGL,OACI,cAAC,WAAD,UACK5C,EAASlO,KAAI,SAACknB,EAAGrN,GAAJ,OACV,cAAC,GAAD,CACAoxF,QAASpxF,EAAQ,EACjBqxF,cACI3kF,EAAO3lB,KAAOgd,GAAe6D,SACT,IAApBvT,EAASnB,OAGbi+F,eAAgBoB,GAAqB7lF,EAAO3lB,GAAIiZ,EAAOqN,GACvDX,OAAQA,EACR4kF,QAAS,SAACh+D,EAAO5mB,GAAR,OA5LL,SAAC4mB,EAA4B5mB,EAAwB1M,GACrE,GAAa,WAAVszB,EAGC,OAFA+K,EAASzuB,GAAsBuvB,QAAQtvB,cAAc,SACrDwuB,EAASzuB,GAAsBuvB,QAAQ9tB,oBAAoB3E,IAIjD,WAAV4mB,IACA+K,EAASzuB,GAAsBuvB,QAAQhtB,iBAAgB,IACvDksB,EAASzuB,GAAsBuvB,QAAQ3uB,cAAc,CACjDC,WAAY/D,EAAO3lB,GACnBiZ,MAAO0M,EAAO3lB,KAAOgd,GAAe6D,QAAU5H,OAAQ7N,MAiLtB+gG,CAAY5/D,EAAO5mB,EAAQ1M,IACvD/I,QAAOw7F,GAAgBplF,IAAKA,EAC5BziB,UACKyiB,IAAD,OACIvP,QADJ,IACIA,OADJ,EACIA,EAAgB4/B,KAAK3pC,SACpBm+F,MACDxlF,EAAO3lB,KAAOgd,GAAe0C,SAfrC,UAMQiG,EAAO3lB,IANf,OAMoBiZ,QARb0M,EAAO3lB,KAoD9B,OACI,sBAAKc,UAAWgD,IAAhB,WArBwB,WACxB,IAAMoJ,EAAO,OAAG6J,QAAH,IAAGA,OAAH,EAAGA,EAAgB4/B,KAAKzpC,QACrC,MAAmB,OAAZA,GAAgC,OAAZA,EAoBnBk/F,IACA,sBAAKtrG,UAAWw8C,EAAE,iBAAkB16C,QAAS,WAvFrCopG,MAOhBv0D,EAAGlL,MAAM,CACLp3B,SAAU,mBACViB,OAAQ,eACRpR,MAAO,mBAGX0yC,EAAKnzC,MAAMO,EAAOc,eAVdilG,GAA6B,IAoFzB,UACCx8F,EAAE,uCACH,qBAAKvN,UAAWw8C,EAAE,2BAItB,qBAAKx8C,UAAWw8C,EAAE,iBAAlB,SAEQz5B,EAAqBzkB,KAAI,SAACumB,GAAD,OAA4BumF,GAAiBvmF,QAI9E,cAAC,GAAD,CAAOpS,KAAMq3F,EAA2BzmG,OAAO,UAAUskD,QAAS,kBAAMoiD,GAA6B,IAArG,SACI,sBAAK/pG,UAAWw8C,EAAE,SAAlB,UACI,qBAAKx8C,UAAWw8C,EAAE,cAAlB,SACI,cAAC,EAAD,CAAM38C,KAAK,kBAEf,mBAAGG,UAAWw8C,EAAE,cAAhB,SAEKjvC,EAAE,wCAEP,cAAC,GAAD,CACItN,MAAO,kBAAM8pG,GAA6B,IAC1CnsD,KAAMrwC,EAAE,yCACRzN,KAAK,YAAYm+C,OAAO,iBA1C3B,WAAO,IAAD,cACfgmC,EAA+E,uBAAtD,OAAC38D,QAAD,IAACA,GAAD,UAACA,EAAoBhB,aAArB,iBAAC,EAA2BxO,eAA5B,iBAAC,EAAoCiN,eAArC,aAAC,EAA6C7lB,IAC9C,OAACooB,QAAD,IAACA,GAAD,UAACA,EAAoBhB,aAArB,iBAAC,EAA2BxO,eAA5B,OAAC,EAAoC4P,WAClE,QAAuDpd,KAAjC,OAAlBgd,QAAkB,IAAlBA,GAAA,UAAAA,EAAoBhB,aAApB,mBAA2BxO,eAA3B,eAAoC4P,YAA0B,OAAO,EASzE,MARuB,CACnB,oBACA,0BACA,iBACA,mBACA,gBACA,kBAEkBnN,SAASuN,IAAqCm8D,EAmC3DC,IACG,cAAC,GAAD,CACIzxE,KAAM4tE,EACNvrE,QAASvH,EAAE,eACXyyC,QAAS,CACL,CAAE97C,MAAOqJ,EAAE,+BAAgCrO,GAAI,YAC/C,CAAEgF,MAAOqJ,EAAE,yBAA0BrO,GAAI,OAE7Cs0D,eAAgB,SAACt0D,GAAD,OAnEf,SAACA,GAClBohF,GAAgB,GACL,OAAPphF,GACA03C,EAAKnzC,MAAMO,EAAOS,cAgEkB2/E,CAAallF,OAO5CghF,IAAD,OAAWjqE,QAAX,IAAWA,OAAX,EAAWA,EAAgB4/B,KAAK3pC,QAChC,mBAAGlM,UAAWw8C,EAAE,iBAAhB,SACKjvC,EAAE,+BCjjBRg+F,GA9BuB,SAAC,GAK/B,IAJJtlE,EAIG,EAJHA,MACA7+B,EAGG,EAHHA,KACAokG,EAEG,EAFHA,SACA9nG,EACG,EADHA,SACG,EAEYzB,EAAO,eAFnB,mBAEIe,EAFJ,KAEOw5C,EAFP,KAMGivD,EAAoB,WACtB,OAAQrkG,EAAY,CAAC,QAAN,IAGnB,OACI,sBAAKpH,UAAWgD,IAAhB,UACI,sBAAKhD,UAAWw8C,EAAE,QAASivD,KAA3B,UACI,gCAAQxlE,IACR,sBAAMjmC,UAAWw8C,EAAE,SAAU16C,QAAS0pG,EAAtC,SACI,cAAC,EAAD,CAAO1rG,KAAOsH,EAAO,KAAO,OAASvE,KAAK,cAGlD,qBAAK7C,UAAWw8C,EAAE,UAAWivD,KAA7B,SACK/nG,QC8GFgoG,GAtH+B,WAAO,IAO7CllD,EAP6C,EAElCvkD,EAAO,wBAF2B,mBAE1Ce,EAF0C,KAEvCw5C,EAFuC,OAGczhC,YAAY0P,IAAnErD,EAHyC,EAGzCA,WAAYqC,EAH6B,EAG7BA,cAAeE,EAHc,EAGdA,aAAc1C,EAHA,EAGAA,WAHA,GAIhClM,YAAY6a,IAArBpiB,KACoBlT,oBAAS,IALY,mBAK1Ci4C,EAL0C,KAKlCozD,EALkC,KAM3Cn1D,EAAWC,cAETlpC,EAAMN,EAAe8N,YAAYX,IAAjC7M,EARyC,EASDjN,oBAAS,GATR,mBAS1CsrG,EAT0C,KASxBC,EATwB,KAajD7qG,qBAAU,WASN,OARA6qC,OAAOvkC,iBAAiB,SAAUwkG,GAClCt1D,EAASzuB,GAAsBuvB,QAAQvtB,cAAa,IAAI5f,MAAOC,gBAE/DosC,EAAStd,GAAiBoe,QAAQ5d,0BAAqBpvB,IACvDksC,EAAStd,GAAiBoe,QAAQ1d,iCAA4BtvB,IAC9DksC,EAAStd,GAAiBoe,QAAQne,oBAAe7uB,IACjDksC,EAASnzB,GAAci0B,QAAQjzB,uBAAkB/Z,IAE1C,WACHksC,EAASzuB,GAAsBuvB,QAAQtvB,cAAc,IACrDwuB,EAASzuB,GAAsBuvB,QAAQ9tB,oBAAoB,OAC3DgtB,EAASzuB,GAAsBuvB,QAAQ/uB,WAAW9F,GAAayE,QAC/DsvB,EAASxhB,GAAmBsiB,QAAQlzB,WAAW,aAC/CynB,OAAOu8C,oBAAoB,SAAU0jB,MAE3C,IAEF9qG,qBAAU,WAEHomB,EAAa,GACZovB,EAASzuB,GAAsBuvB,QAAQtvB,cAAc,IAEzDwuB,EAASzuB,GAAsBuvB,QAAQ9tB,oBAAoB,SAC5D,CAACvC,IAGJ,IAAM6kF,EAAiB,WAChBtlD,GAAS7C,aAAa6C,GACzBA,EAAWva,YAAW,WAClB0/D,GAAU,GACV1/D,YAAW,kBAAM0/D,GAAU,KAAO,OACnC,MAgCP,OACI,sBAAK3rG,UAAWgD,IAAM,QAAtB,UAEI,cAAC,GAAD,IAEA,sBAAKhD,UAAWw8C,EAAE,WAAlB,UACI,cAAC,GAAD,CACIv8C,MApCE,WACdu2C,EAASzuB,GAAsBuvB,QAAQtvB,cAAcZ,EAAa,IAChD,IAAfA,GACC6kB,YAAW,WACPuK,EAASzuB,GAAsBuvB,QAAQ9tB,oBAAoB,SAC5D,MAgCK00B,YAAY,QACZl+C,UAAWw8C,EAAE,aAAc,CArB/Bp1B,EAAa,GAAKA,EAAa,EAqBoB,OAAS,KACxDw2B,KA9BW,WACvB,IAAI15C,EAA4B,GAGhC,OAFGkjB,EAAa,IAAGljB,EAAK,OAAGulB,QAAH,IAAGA,OAAH,EAAGA,EAAevlB,OACxB,IAAfkjB,IAAkBljB,EAAK,OAAGylB,QAAH,IAAGA,OAAH,EAAGA,EAAczlB,OACpCqJ,EAAErJ,GA0BS6nG,GACN18F,KAAK,yBAAyBvP,KAAK,YACnCk+C,aAAa,SAEfzF,GACF,eAAC,GAAD,CAAWr5C,GAAG,mBAAmB2+F,eAAgB,EAAGC,aAAc12E,EAAlE,UACI,cAAC,GAAD,IACA,cAAC,GAAD,IACA,cAAC,GAAD,IAEA,8BACI,sBAAKpnB,UAAWw8C,EAAE,mBAAlB,UAEI,cAAC,GAAD,CACIvW,MAAO14B,EAAE,kCACTnG,KAAMwkG,EACNJ,SAAU,kBAAMK,GAAqBD,IAHzC,SAKI,cAAC,GAAD,CAAkB5tF,OAAO,wBAE7B,uBACA,cAAC,GAAD,mB,46GC3CbguF,GAnF0B,SAAC,GAGlC,IAFJC,EAEG,EAFHA,WAEG,IADH12C,IACG,EAGYtzD,EAAO,gBAAD,OADG,kBAFrB,MADG,UACH,GAEiC,WAAa,KAF9C,mBAGIe,EAHJ,KAGOw5C,EAHP,QAIc/F,cACen2C,mBAAS,CAAC,UAAU,UAAU,aAL3D,mBAKIk8F,EALJ,KAKc0P,EALd,KAQCC,EADctgE,OAAOpxB,SAASU,SACLqyB,MAAM,KAAKjzB,SAAS,iBAC3C6xF,EAAc,CAChB3sE,MAAQ0sE,EAAoE,2DAAvD,qDACrBzsE,OAASysE,EAAwE,2DAA3D,yDACtBE,MAAQF,EAAmD,2DAAtC,qCAKzBnrG,qBAAU,WACN,IAAI6X,EAAU2jF,EAIXyP,GAAc,GAETpzF,EAAQ,GADM,KAAfozF,EACc,OAEA,GAGbA,GAAc,IAAMA,GAAc,GAElCpzF,EAAQ,GADM,KAAfozF,EACc,OAEA,GAGbA,GAAc,KAEVpzF,EAAQ,GADM,MAAfozF,EACc,OAGA,IAKzBC,EAAYrzF,KACX,CAACozF,IAaN,OACQ,qBAAKjsG,UAAWgD,IAAhB,SACI,sBAAKhD,UAAWw8C,EAAE,aAAlB,UACI,6BAVTyvD,GAAc,GACNG,EAAY3sE,MACfwsE,GAAc,IAAMA,GAAc,GAC/BG,EAAY1sE,OACfusE,GAAc,GACXG,EAAYC,WADlB,IAOO,sBAAKrsG,UAAU,qBAAf,UACI,qBAAKA,UAAU,4BAAf,SACI,qBAAKA,UAAS,yBAAoBw8F,EAAS,QAE/C,qBAAMx8F,UAAU,4BAAhB,SACI,qBAAKA,UAAS,yBAAoBw8F,EAAS,QAE/C,qBAAMx8F,UAAU,4BAAhB,SACI,qBAAKA,UAAS,yBAAoBw8F,EAAS,iBC4djE8P,GAAe,SAAC1rF,GACpB,MAAM,GAAN,OAAUnb,EAASA,EAASC,aAAaO,YAAzC,OAAsD2a,IAGpD2rF,GAAwBD,GAAa,0BACrCE,GAA6BF,GAAa,iCA0gB/BG,GAxgB2B,WAAO,MAE/BxqG,EAAO,mBAFwB,mBAEtCe,EAFsC,KAGtC0F,GAHsC,KAGflC,IAAvBkC,qBAHsC,EAICpI,oBAAS,GAJV,mBAItCosG,EAJsC,KAIrBC,EAJqB,OAKvB55D,IAAMgE,WAAWjE,IAAhChlC,EALsC,EAKtCA,IAAK+lC,EALiC,EAKjCA,OALiC,EAOXvzC,mBAAS,GAPE,mBAOtCssG,EAPsC,KAO3BC,EAP2B,KASvCC,EAAc/rG,iBAAO,GAI3BC,qBAAU,YACe,uCAAG,kCAAAwJ,EAAA,sEAEwBsD,EAAI,mBAAoB,6BAFhD,cAElBi/F,EAFkB,gBAGgBj/F,EAAI,mBAAoB,wBAHxC,UAGlBk/F,EAHkB,OAKpBD,EALoB,iCAMQrkG,EAAoB8jG,IAN5B,cAMhBS,EANgB,iBAOhBp5D,EAAO,mBAAoB,CAC/B30C,GAAG,4BACHyd,MAAOswF,IATa,WAapBD,EAboB,kCAcUtkG,EAAoB6jG,IAd9B,eAchBW,EAdgB,iBAehBr5D,EAAO,mBAAoB,CAC7B30C,GAAG,uBACHyd,MAAOuwF,IAjBW,4CAAH,qDAqBvBC,KACA,IAkBF,IAAMzlG,EAAS,WACbolG,EAAY7rG,SAAW,EAEvB4rG,GAAa,SAAAhjD,GAAI,OAAIA,EAAO,KAEzBijD,EAAY7rG,SAjDG,KAkDhB0rG,GAAmB,IASvB,OACE,sBAAK3sG,UAAWgD,EAAG0pG,EAAkB,WAAa,IAAlD,UAOE,cAAC,GAAD,CAAeT,WAdQ,WACzB,IAAMjlD,EAAW4lD,EAtDC,IAsDyB,IAE3C,OAAOtjG,KAAKinD,MAAMvJ,GAWWomD,KAG3B,qBAAKprG,IAAI,GAAGD,IAAKsrG,WAAeC,OAAQ,kBAAK5lG,OAC7C,qBAAK1F,IAAI,GAAGD,IAAKwrG,WAAeD,OAAQ,kBAAK5lG,OAC7C,qBAAK1F,IAAI,GAAGD,IAAKyrG,WAAeF,OAAQ,kBAAK5lG,OAC7C,qBAAK1F,IAAI,GAAGD,IAAK0rG,WAAeH,OAAQ,kBAAK5lG,OAC7C,qBAAK1F,IAAI,GAAGD,IAAK2rG,WAAeJ,OAAQ,kBAAK5lG,OAC7C,qBAAK1F,IAAI,GAAGD,IAAK4rG,WAAeL,OAAQ,kBAAK5lG,OAC7C,qBAAK1F,IAAI,GAAGD,IAAK6rG,WAAeN,OAAQ,kBAAK5lG,OAC7C,qBAAK1F,IAAI,GAAGD,IAAK8rG,WAAeP,OAAQ,kBAAK5lG,OAC7C,qBAAK1F,IAAI,GAAGD,IAAK+rG,WAAeR,OAAQ,kBAAK5lG,OAC7C,qBAAK1F,IAAI,GAAGD,IAAKgsG,WAAeT,OAAQ,kBAAK5lG,OAC7C,qBAAK1F,IAAI,GAAGD,IAAKisG,WAAgBV,OAAQ,kBAAK5lG,OAC9C,qBAAK1F,IAAI,GAAGD,IAAKksG,WAAgBX,OAAQ,kBAAK5lG,OAC9C,qBAAK1F,IAAI,GAAGD,IAAKmsG,WAAgBZ,OAAQ,kBAAK5lG,OAC9C,qBAAK1F,IAAI,GAAGD,IAAKosG,WAAgBb,OAAQ,kBAAK5lG,OAC9C,qBAAK1F,IAAI,GAAGD,IAAKqsG,WAAgBd,OAAQ,kBAAK5lG,OAC9C,qBAAK1F,IAAI,GAAGD,IAAKssG,WAAgBf,OAAQ,kBAAK5lG,OAC9C,qBAAK1F,IAAI,GAAGD,IAAKusG,WAAgBhB,OAAQ,kBAAK5lG,OAC9C,qBAAK1F,IAAI,GAAGD,IAAKwsG,WAAgBjB,OAAQ,kBAAK5lG,OAC9C,qBAAK1F,IAAI,GAAGD,IAAKysG,WAAgBlB,OAAQ,kBAAK5lG,OAC9C,qBAAK1F,IAAI,GAAGD,IAAK0sG,WAAgBnB,OAAQ,kBAAK5lG,OAC9C,qBAAK1F,IAAI,GAAGD,IAAK2sG,WAAgBpB,OAAQ,kBAAK5lG,OAC9C,qBAAK1F,IAAI,GAAGD,IAAK4sG,WAAgBrB,OAAQ,kBAAK5lG,OAC9C,qBAAK1F,IAAI,GAAGD,IAAK6sG,WAAgBtB,OAAQ,kBAAK5lG,OAC9C,qBAAK1F,IAAI,GAAGD,IAAK8sG,WAAgBvB,OAAQ,kBAAK5lG,OAC9C,qBAAK1F,IAAI,GAAGD,IAAK+sG,WAAgBxB,OAAQ,kBAAK5lG,OAC9C,qBAAK1F,IAAI,GAAGD,IAAKgtG,WAAgBzB,OAAQ,kBAAK5lG,OAC9C,qBAAK1F,IAAI,GAAGD,IAAKitG,WAAgB1B,OAAQ,kBAAK5lG,OAC9C,qBAAK1F,IAAI,GAAGD,IAAKktG,WAAgB3B,OAAQ,kBAAK5lG,OAC9C,qBAAK1F,IAAI,GAAGD,IAAKmtG,WAAgB5B,OAAQ,kBAAK5lG,OAC9C,qBAAK1F,IAAI,GAAGD,IAAKotG,WAAgB7B,OAAQ,kBAAK5lG,OAC9C,qBAAK1F,IAAI,GAAGD,IAAKqtG,WAAgB9B,OAAQ,kBAAK5lG,OAC9C,qBAAK1F,IAAI,GAAGD,IAAKstG,WAAgB/B,OAAQ,kBAAK5lG,OAC9C,qBAAK1F,IAAI,GAAGD,IAAKutG,WAAgBhC,OAAQ,kBAAK5lG,OAC9C,qBAAK1F,IAAI,GAAGD,IAAKwtG,WAAgBjC,OAAQ,kBAAK5lG,OAC9C,qBAAK1F,IAAI,GAAGD,IAAKytG,WAAgBlC,OAAQ,kBAAK5lG,OAC9C,qBAAK1F,IAAI,GAAGD,IAAK0tG,WAAgBnC,OAAQ,kBAAK5lG,OAC9C,qBAAK1F,IAAI,GAAGD,IAAK2tG,WAAgBpC,OAAQ,kBAAK5lG,OAC9C,qBAAK1F,IAAI,GAAGD,IAAK4tG,WAAgBrC,OAAQ,kBAAK5lG,OAC9C,qBAAK1F,IAAI,GAAGD,IAAK6tG,WAAgBtC,OAAQ,kBAAK5lG,OAC9C,qBAAK1F,IAAI,GAAGD,IAAK8tG,WAAgBvC,OAAQ,kBAAK5lG,OAC9C,qBAAK1F,IAAI,GAAGD,IAAK+tG,WAAgBxC,OAAQ,kBAAK5lG,OAC9C,qBAAK1F,IAAI,GAAGD,IAAKguG,WAAgBzC,OAAQ,kBAAK5lG,OAC9C,qBAAK1F,IAAI,GAAGD,IAAKiuG,WAAgB1C,OAAQ,kBAAK5lG,OAC9C,qBAAK1F,IAAI,GAAGD,IAAKkuG,WAAgB3C,OAAQ,kBAAK5lG,OAC9C,qBAAK1F,IAAI,GAAGD,IAAKmuG,WAAgB5C,OAAQ,kBAAK5lG,OAC9C,qBAAK1F,IAAI,GAAGD,IAAKouG,WAAgB7C,OAAQ,kBAAK5lG,OAC9C,qBAAK1F,IAAI,GAAGD,IAAKquG,WAAgB9C,OAAQ,kBAAK5lG,OAC9C,qBAAK1F,IAAI,GAAGD,IAAKsuG,WAAgB/C,OAAQ,kBAAK5lG,OAC9C,qBAAK1F,IAAI,GAAGD,IAAKuuG,WAAgBhD,OAAQ,kBAAK5lG,OAC9C,qBAAK1F,IAAI,GAAGD,IAAKwuG,WAAgBjD,OAAQ,kBAAK5lG,OAC9C,qBAAK1F,IAAI,GAAGD,IAAKyuG,WAAgBlD,OAAQ,kBAAK5lG,OAC9C,qBAAK1F,IAAI,GAAGD,IAAK0uG,WAAgBnD,OAAQ,kBAAK5lG,OAC9C,qBAAK1F,IAAI,GAAGD,IAAK2uG,WAAgBpD,OAAQ,kBAAK5lG,OAC9C,qBAAK1F,IAAI,GAAGD,IAAK4uG,WAAgBrD,OAAQ,kBAAK5lG,OAC9C,qBAAK1F,IAAI,GAAGD,IAAK6uG,WAAgBtD,OAAQ,kBAAK5lG,OAC9C,qBAAK1F,IAAI,GAAGD,IAAK8uG,WAAgBvD,OAAQ,kBAAK5lG,OAC9C,qBAAK1F,IAAI,GAAGD,IAAK+uG,WAAgBxD,OAAQ,kBAAK5lG,OAC9C,qBAAK1F,IAAI,GAAGD,IAAKgvG,WAAgBzD,OAAQ,kBAAK5lG,OAC9C,qBAAK1F,IAAI,GAAGD,IAAKivG,WAAgB1D,OAAQ,kBAAK5lG,OAC9C,qBAAK1F,IAAI,GAAGD,IAAKkvG,WAAgB3D,OAAQ,kBAAK5lG,OAC9C,qBAAK1F,IAAI,GAAGD,IAAKmvG,WAAgB5D,OAAQ,kBAAK5lG,OAG9C,qBAAK1F,IAAI,GAAGD,IAAKovG,WAAU7D,OAAQ,kBAAK5lG,OACxC,qBAAK1F,IAAI,GAAGD,IAAKqvG,WAAU9D,OAAQ,kBAAK5lG,OACxC,qBAAK1F,IAAI,GAAGD,IAAKsvG,WAAU/D,OAAQ,kBAAK5lG,OACxC,qBAAK1F,IAAI,GAAGD,IAAKuvG,WAAUhE,OAAQ,kBAAK5lG,OACxC,qBAAK1F,IAAI,GAAGD,IAAKwvG,WAAUjE,OAAQ,kBAAK5lG,OACxC,qBAAK1F,IAAI,GAAGD,IAAKyvG,WAAUlE,OAAQ,kBAAK5lG,OACxC,qBAAK1F,IAAI,GAAGD,IAAK0vG,WAAUnE,OAAQ,kBAAK5lG,OACxC,qBAAK1F,IAAI,GAAGD,IAAK2vG,WAAUpE,OAAQ,kBAAK5lG,OACxC,qBAAK1F,IAAI,GAAGD,IAAK4vG,WAAUrE,OAAQ,kBAAK5lG,OACxC,qBAAK1F,IAAI,GAAGD,IAAK6vG,WAAUtE,OAAQ,kBAAK5lG,OACxC,qBAAK1F,IAAI,GAAGD,IAAK8vG,WAAWvE,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAK+vG,WAAWxE,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAKgwG,WAAWzE,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAKiwG,WAAW1E,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAKkwG,WAAW3E,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAKmwG,WAAW5E,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAKowG,WAAW7E,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAKqwG,WAAW9E,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAKswG,WAAW/E,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAKuwG,WAAWhF,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAKwwG,WAAWjF,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAKywG,WAAWlF,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAK0wG,WAAWnF,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAK2wG,WAAWpF,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAK4wG,WAAWrF,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAK6wG,WAAWtF,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAK8wG,WAAWvF,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAK+wG,WAAWxF,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAKgxG,WAAWzF,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAKixG,WAAW1F,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAKkxG,WAAW3F,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAKmxG,WAAW5F,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAKoxG,WAAW7F,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAKqxG,WAAW9F,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAKsxG,WAAW/F,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAKuxG,WAAWhG,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAKwxG,WAAWjG,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAKyxG,WAAWlG,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAK0xG,WAAWnG,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAK2xG,WAAWpG,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAK4xG,WAAWrG,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAK6xG,WAAWtG,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAK8xG,WAAWvG,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAK+xG,WAAWxG,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAKgyG,WAAWzG,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAKiyG,WAAW1G,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAKkyG,WAAW3G,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAKmyG,WAAW5G,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAKoyG,WAAW7G,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAKqyG,WAAW9G,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAKsyG,WAAW/G,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAKuyG,WAAWhH,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAKwyG,WAAWjH,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAKyyG,WAAWlH,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAK0yG,WAAWnH,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAK2yG,WAAWpH,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAK4yG,WAAWrH,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAK6yG,WAAWtH,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAK8yG,WAAWvH,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAK+yG,WAAWxH,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAKgzG,WAAWzH,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAKizG,WAAW1H,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAKkzG,WAAW3H,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAKmzG,WAAW5H,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAKozG,WAAW7H,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAKqzG,WAAW9H,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAKszG,WAAW/H,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAKuzG,WAAWhI,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAKwzG,WAAWjI,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAKyzG,WAAWlI,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAK0zG,WAAWnI,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAK2zG,WAAWpI,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAK4zG,WAAWrI,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAK6zG,WAAWtI,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAK8zG,WAAWvI,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAK+zG,WAAWxI,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAKg0G,WAAWzI,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAKi0G,WAAW1I,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAKk0G,WAAW3I,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAKm0G,WAAW5I,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAKo0G,WAAW7I,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAKq0G,WAAW9I,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAKs0G,WAAW/I,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAKu0G,WAAWhJ,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAKw0G,WAAWjJ,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAKy0G,WAAWlJ,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAK00G,WAAWnJ,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAK20G,WAAWpJ,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAK40G,WAAWrJ,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAK60G,WAAWtJ,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAK80G,WAAWvJ,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAK+0G,WAAWxJ,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAKg1G,WAAWzJ,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAKi1G,WAAW1J,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAKk1G,WAAW3J,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAKm1G,WAAW5J,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAKo1G,WAAW7J,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAKq1G,WAAW9J,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAKs1G,WAAW/J,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAKu1G,WAAWhK,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAKw1G,WAAYjK,OAAQ,kBAAK5lG,OAC1C,qBAAK1F,IAAI,GAAGD,IAAKy1G,WAAYlK,OAAQ,kBAAK5lG,OAC1C,qBAAK1F,IAAI,GAAGD,IAAK01G,WAAYnK,OAAQ,kBAAK5lG,OAC1C,qBAAK1F,IAAI,GAAGD,IAAK21G,WAAYpK,OAAQ,kBAAK5lG,OAC1C,qBAAK1F,IAAI,GAAGD,IAAK41G,WAAYrK,OAAQ,kBAAK5lG,OAC1C,qBAAK1F,IAAI,GAAGD,IAAK61G,WAAYtK,OAAQ,kBAAK5lG,OAC1C,qBAAK1F,IAAI,GAAGD,IAAK81G,WAAYvK,OAAQ,kBAAK5lG,OAC1C,qBAAK1F,IAAI,GAAGD,IAAK+1G,WAAYxK,OAAQ,kBAAK5lG,OAC1C,qBAAK1F,IAAI,GAAGD,IAAKg2G,WAAYzK,OAAQ,kBAAK5lG,OAC1C,qBAAK1F,IAAI,GAAGD,IAAKi2G,WAAY1K,OAAQ,kBAAK5lG,OAC1C,qBAAK1F,IAAI,GAAGD,IAAKk2G,WAAY3K,OAAQ,kBAAK5lG,OAC1C,qBAAK1F,IAAI,GAAGD,IAAKm2G,WAAY5K,OAAQ,kBAAK5lG,OAC1C,qBAAK1F,IAAI,GAAGD,IAAKo2G,WAAY7K,OAAQ,kBAAK5lG,OAC1C,qBAAK1F,IAAI,GAAGD,IAAKq2G,WAAY9K,OAAQ,kBAAK5lG,OAC1C,qBAAK1F,IAAI,GAAGD,IAAKs2G,WAAY/K,OAAQ,kBAAK5lG,OAC1C,qBAAK1F,IAAI,GAAGD,IAAKu2G,WAAYhL,OAAQ,kBAAK5lG,OAC1C,qBAAK1F,IAAI,GAAGD,IAAKw2G,WAAYjL,OAAQ,kBAAK5lG,OAC1C,qBAAK1F,IAAI,GAAGD,IAAKy2G,WAAYlL,OAAQ,kBAAK5lG,OAC1C,qBAAK1F,IAAI,GAAGD,IAAK02G,WAAYnL,OAAQ,kBAAK5lG,OAC1C,qBAAK1F,IAAI,GAAGD,IAAK22G,WAAYpL,OAAQ,kBAAK5lG,OAC1C,qBAAK1F,IAAI,GAAGD,IAAK42G,WAAYrL,OAAQ,kBAAK5lG,OAC1C,qBAAK1F,IAAI,GAAGD,IAAK62G,WAAYtL,OAAQ,kBAAK5lG,OAC1C,qBAAK1F,IAAI,GAAGD,IAAK82G,WAAYvL,OAAQ,kBAAK5lG,OAC1C,qBAAK1F,IAAI,GAAGD,IAAK+2G,WAAYxL,OAAQ,kBAAK5lG,OAC1C,qBAAK1F,IAAI,GAAGD,IAAKg3G,WAAYzL,OAAQ,kBAAK5lG,OAC1C,qBAAK1F,IAAI,GAAGD,IAAKi3G,WAAY1L,OAAQ,kBAAK5lG,OAC1C,qBAAK1F,IAAI,GAAGD,IAAKk3G,WAAY3L,OAAQ,kBAAK5lG,OAC1C,qBAAK1F,IAAI,GAAGD,IAAKm3G,WAAY5L,OAAQ,kBAAK5lG,OAC1C,qBAAK1F,IAAI,GAAGD,IAAKo3G,WAAY7L,OAAQ,kBAAK5lG,OAC1C,qBAAK1F,IAAI,GAAGD,IAAKq3G,WAAY9L,OAAQ,kBAAK5lG,OAC1C,qBAAK1F,IAAI,GAAGD,IAAKs3G,WAAY/L,OAAQ,kBAAK5lG,OAC1C,qBAAK1F,IAAI,GAAGD,IAAKu3G,WAAYhM,OAAQ,kBAAK5lG,OAC1C,qBAAK1F,IAAI,GAAGD,IAAKw3G,WAAYjM,OAAQ,kBAAK5lG,OAC1C,qBAAK1F,IAAI,GAAGD,IAAKy3G,WAAYlM,OAAQ,kBAAK5lG,OAC1C,qBAAK1F,IAAI,GAAGD,IAAK03G,WAAYnM,OAAQ,kBAAK5lG,OAC1C,qBAAK1F,IAAI,GAAGD,IAAK23G,WAAYpM,OAAQ,kBAAK5lG,OAC1C,qBAAK1F,IAAI,GAAGD,IAAK43G,WAAYrM,OAAQ,kBAAK5lG,OAC1C,qBAAK1F,IAAI,GAAGD,IAAK63G,WAAYtM,OAAQ,kBAAK5lG,OAC1C,qBAAK1F,IAAI,GAAGD,IAAK83G,WAAYvM,OAAQ,kBAAK5lG,OAC1C,qBAAK1F,IAAI,GAAGD,IAAK+3G,WAAYxM,OAAQ,kBAAK5lG,OAC1C,qBAAK1F,IAAI,GAAGD,IAAKg4G,WAAYzM,OAAQ,kBAAK5lG,OAC1C,qBAAK1F,IAAI,GAAGD,IAAKi4G,WAAY1M,OAAQ,kBAAK5lG,OAC1C,qBAAK1F,IAAI,GAAGD,IAAKk4G,WAAY3M,OAAQ,kBAAK5lG,OAC1C,qBAAK1F,IAAI,GAAGD,IAAKm4G,WAAY5M,OAAQ,kBAAK5lG,OAC1C,qBAAK1F,IAAI,GAAGD,IAAKo4G,WAAY7M,OAAQ,kBAAK5lG,OAG1C,qBAAK1F,IAAI,GAAGD,IAAMi3E,WAAYs0B,OAAQ,kBAAK5lG,OAG3C,qBAAK1F,IAAI,GAAGD,IAAMq4G,WAAwB9M,OAAQ,kBAAK5lG,OACvD,qBAAK1F,IAAI,GAAGD,IAAMs4G,WAAwB/M,OAAQ,kBAAK5lG,OACvD,qBAAK1F,IAAI,GAAGD,IAAMu4G,WAAwBhN,OAAQ,kBAAK5lG,OACvD,qBAAK1F,IAAI,GAAGD,IAAMw4G,WAAwBjN,OAAQ,kBAAK5lG,OACvD,qBAAK1F,IAAI,GAAGD,IAAMy4G,WAAwBlN,OAAQ,kBAAK5lG,OACvD,qBAAK1F,IAAI,GAAGD,IAAM04G,WAAwBnN,OAAQ,kBAAK5lG,OACvD,qBAAK1F,IAAI,GAAGD,IAAM24G,WAAwBpN,OAAQ,kBAAK5lG,OACvD,qBAAK1F,IAAI,GAAGD,IAAM44G,WAAwBrN,OAAQ,kBAAK5lG,OACvD,qBAAK1F,IAAI,GAAGD,IAAM64G,WAAwBtN,OAAQ,kBAAK5lG,OACvD,qBAAK1F,IAAI,GAAGD,IAAM84G,WAAwBvN,OAAQ,kBAAK5lG,OACvD,qBAAK1F,IAAI,GAAGD,IAAM+4G,WAAyBxN,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAMg5G,WAAyBzN,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAMi5G,WAAyB1N,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAMk5G,WAAyB3N,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAMm5G,WAAyB5N,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAMo5G,WAAyB7N,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAMq5G,WAAyB9N,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAMs5G,WAAyB/N,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAMu5G,WAAyBhO,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAMw5G,WAAyBjO,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAMy5G,WAAyBlO,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAM05G,WAAyBnO,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAM25G,WAAyBpO,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAM45G,WAAyBrO,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAM65G,WAAyBtO,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAM85G,WAAyBvO,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAM+5G,WAAyBxO,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAMg6G,WAAyBzO,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAMi6G,WAAyB1O,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAMk6G,WAAyB3O,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAMm6G,WAAyB5O,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAMo6G,WAAyB7O,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAMq6G,WAAyB9O,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAMs6G,WAAyB/O,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAMu6G,WAAyBhP,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAMw6G,WAAyBjP,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAMy6G,WAAyBlP,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAM06G,WAAyBnP,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAM26G,WAAyBpP,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAM46G,WAAyBrP,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAM66G,WAAyBtP,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAM86G,WAAyBvP,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAM+6G,WAAyBxP,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAMg7G,WAAyBzP,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAMi7G,WAAyB1P,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAMk7G,WAAyB3P,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAMm7G,WAAyB5P,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAMo7G,WAAyB7P,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAMq7G,WAAyB9P,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAMs7G,WAAyB/P,OAAQ,kBAAK5lG,OAExD,qBAAK1F,IAAI,GAAGD,IAAMu7G,WAAwBhQ,OAAQ,kBAAK5lG,OACvD,qBAAK1F,IAAI,GAAGD,IAAMw7G,WAAwBjQ,OAAQ,kBAAK5lG,OACvD,qBAAK1F,IAAI,GAAGD,IAAMy7G,WAAwBlQ,OAAQ,kBAAK5lG,OACvD,qBAAK1F,IAAI,GAAGD,IAAM07G,WAAwBnQ,OAAQ,kBAAK5lG,OACvD,qBAAK1F,IAAI,GAAGD,IAAM27G,WAAwBpQ,OAAQ,kBAAK5lG,OACvD,qBAAK1F,IAAI,GAAGD,IAAM47G,WAAwBrQ,OAAQ,kBAAK5lG,OACvD,qBAAK1F,IAAI,GAAGD,IAAM67G,WAAwBtQ,OAAQ,kBAAK5lG,OACvD,qBAAK1F,IAAI,GAAGD,IAAM87G,WAAwBvQ,OAAQ,kBAAK5lG,OACvD,qBAAK1F,IAAI,GAAGD,IAAM+7G,WAAwBxQ,OAAQ,kBAAK5lG,OACvD,qBAAK1F,IAAI,GAAGD,IAAMg8G,WAAwBzQ,OAAQ,kBAAK5lG,OACvD,qBAAK1F,IAAI,GAAGD,IAAMi8G,WAAyB1Q,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAMk8G,WAAyB3Q,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAMm8G,WAAyB5Q,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAMo8G,WAAyB7Q,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAMq8G,WAAyB9Q,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAMs8G,WAAyB/Q,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAMu8G,WAAyBhR,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAMw8G,WAAyBjR,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAMy8G,WAAyBlR,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAM08G,WAAyBnR,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAM28G,WAAyBpR,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAM48G,WAAyBrR,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAM68G,WAAyBtR,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAM88G,WAAyBvR,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAM+8G,WAAyBxR,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAMg9G,WAAyBzR,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAMi9G,WAAyB1R,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAMk9G,WAAyB3R,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAMm9G,WAAyB5R,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAMo9G,WAAyB7R,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAMq9G,WAAyB9R,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAMs9G,WAAyB/R,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAMu9G,WAAyBhS,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAMw9G,WAAyBjS,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAMy9G,WAAyBlS,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAM09G,WAAyBnS,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAM29G,WAAyBpS,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAM49G,WAAyBrS,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAM69G,WAAyBtS,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAM89G,WAAyBvS,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAM+9G,WAAyBxS,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAMg+G,WAAyBzS,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAMi+G,WAAyB1S,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAMk+G,WAAyB3S,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAMm+G,WAAyB5S,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAMo+G,WAAyB7S,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAMq+G,WAAyB9S,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAMs+G,WAAyB/S,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAMu+G,WAAyBhT,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAMw+G,WAAyBjT,OAAQ,kBAAK5lG,OAGxD,qBAAK1F,IAAI,GAAGD,IAAMyc,WAAc8uF,OAAQ,kBAAK5lG,OAC7C,qBAAK1F,IAAI,GAAGD,IAAM4c,WAAc2uF,OAAQ,kBAAK5lG,OAC7C,qBAAK1F,IAAI,GAAGD,IAAM2c,WAAa4uF,OAAQ,kBAAK5lG,OAC5C,qBAAK1F,IAAI,GAAGD,IAAM0c,WAAa6uF,OAAQ,kBAAK5lG,OAC5C,qBAAK1F,IAAI,GAAGD,IAAMye,WAAa8sF,OAAQ,kBAAK5lG,OAC5C,qBAAK1F,IAAI,GAAGD,IAAMy+G,WAAclT,OAAQ,kBAAK5lG,OAC7C,qBAAK1F,IAAI,GAAGD,IAAMse,WAAkBitF,OAAQ,kBAAK5lG,OACjD,qBAAK1F,IAAI,GAAGD,IAAM8d,WAAgBytF,OAAQ,kBAAK5lG,OAG/C,qBAAK1F,IAAI,GAAGD,IAAM2hG,WAAU4J,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAMwhG,WAAkB+J,OAAQ,kBAAK5lG,OACjD,qBAAK1F,IAAI,GAAGD,IAAM0hG,WAAkB6J,OAAQ,kBAAK5lG,OACjD,qBAAK1F,IAAI,GAAGD,IAAMyhG,WAAkB8J,OAAQ,kBAAK5lG,OAEjD,qBAAK1F,IAAI,GAAGD,IAAMo/F,WAAsBmM,OAAQ,kBAAK5lG,OACrD,qBAAK1F,IAAI,GAAGD,IAAM8+F,WAAsByM,OAAQ,kBAAK5lG,OACrD,qBAAK1F,IAAI,GAAGD,IAAM++F,WAAyBwM,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAMg/F,WAAsBuM,OAAQ,kBAAK5lG,OACrD,qBAAK1F,IAAI,GAAGD,IAAMi/F,WAAwBsM,OAAQ,kBAAK5lG,OACvD,qBAAK1F,IAAI,GAAGD,IAAMk/F,WAAqBqM,OAAQ,kBAAK5lG,OACpD,qBAAK1F,IAAI,GAAGD,IAAMm/F,WAAyBoM,OAAQ,kBAAK5lG,OAExD,qBAAK1F,IAAI,GAAGD,IAAMq/F,WAAqBkM,OAAQ,kBAAK5lG,OACpD,qBAAK1F,IAAI,GAAGD,IAAMs/F,WAAuBiM,OAAQ,kBAAK5lG,OACtD,qBAAK1F,IAAI,GAAGD,IAAMu/F,WAA0BgM,OAAQ,kBAAK5lG,OACzD,qBAAK1F,IAAI,GAAGD,IAAMw/F,WAAuB+L,OAAQ,kBAAK5lG,OACtD,qBAAK1F,IAAI,GAAGD,IAAMy/F,WAAqB8L,OAAQ,kBAAK5lG,OACpD,qBAAK1F,IAAI,GAAGD,IAAM0/F,WAAoB6L,OAAQ,kBAAK5lG,OACnD,qBAAK1F,IAAI,GAAGD,IAAM2/F,WAAyB4L,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAM4/F,WAAsB2L,OAAQ,kBAAK5lG,OACrD,qBAAK1F,IAAI,GAAGD,IAAM6/F,WAAsB0L,OAAQ,kBAAK5lG,OAErD,qBAAK1F,IAAI,GAAGD,IAAM8/F,WAAkByL,OAAQ,kBAAK5lG,OACjD,qBAAK1F,IAAI,GAAGD,IAAM+/F,WAAoBwL,OAAQ,kBAAK5lG,OACnD,qBAAK1F,IAAI,GAAGD,IAAMggG,WAAkBuL,OAAQ,kBAAK5lG,OACjD,qBAAK1F,IAAI,GAAGD,IAAMigG,WAAqBsL,OAAQ,kBAAK5lG,OACpD,qBAAK1F,IAAI,GAAGD,IAAMkgG,WAAsBqL,OAAQ,kBAAK5lG,OACrD,qBAAK1F,IAAI,GAAGD,IAAMmgG,WAAiBoL,OAAQ,kBAAK5lG,OAChD,qBAAK1F,IAAI,GAAGD,IAAMogG,WAAmBmL,OAAQ,kBAAK5lG,OAClD,qBAAK1F,IAAI,GAAGD,IAAMqgG,WAAqBkL,OAAQ,kBAAK5lG,OAEpD,qBAAK1F,IAAI,GAAGD,IAAMsgG,WAAyBiL,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAMugG,WAAmBgL,OAAQ,kBAAK5lG,OAClD,qBAAK1F,IAAI,GAAGD,IAAMwgG,WAAkB+K,OAAQ,kBAAK5lG,OACjD,qBAAK1F,IAAI,GAAGD,IAAMygG,WAAwB8K,OAAQ,kBAAK5lG,OACvD,qBAAK1F,IAAI,GAAGD,IAAM0gG,WAAqB6K,OAAQ,kBAAK5lG,OACpD,qBAAK1F,IAAI,GAAGD,IAAM2gG,WAAwB4K,OAAQ,kBAAK5lG,OACvD,qBAAK1F,IAAI,GAAGD,IAAM4gG,WAAiB2K,OAAQ,kBAAK5lG,OAChD,qBAAK1F,IAAI,GAAGD,IAAM6gG,WAAwB0K,OAAQ,kBAAK5lG,OACvD,qBAAK1F,IAAI,GAAGD,IAAM8gG,WAAoByK,OAAQ,kBAAK5lG,OACnD,qBAAK1F,IAAI,GAAGD,IAAM+gG,WAAsBwK,OAAQ,kBAAK5lG,OACrD,qBAAK1F,IAAI,GAAGD,IAAMghG,WAAsBuK,OAAQ,kBAAK5lG,OACrD,qBAAK1F,IAAI,GAAGD,IAAMihG,WAAmBsK,OAAQ,kBAAK5lG,OAClD,qBAAK1F,IAAI,GAAGD,IAAMkhG,WAAkBqK,OAAQ,kBAAK5lG,OACjD,qBAAK1F,IAAI,GAAGD,IAAMmhG,WAAuBoK,OAAQ,kBAAK5lG,OACtD,qBAAK1F,IAAI,GAAGD,IAAMohG,WAAyBmK,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAMqhG,WAAmBkK,OAAQ,kBAAK5lG,OAClD,qBAAK1F,IAAI,GAAGD,IAAMshG,WAA0BiK,OAAQ,kBAAK5lG,OACzD,qBAAK1F,IAAI,GAAGD,IAAMuhG,WAAmBgK,OAAQ,kBAAK5lG,OAElD,qBAAK1F,IAAI,GAAGD,IAAM4jG,WAAgB2H,OAAQ,kBAAK5lG,OAC/C,qBAAK1F,IAAI,GAAGD,IAAM8jG,WAAgByH,OAAQ,kBAAK5lG,OAC/C,qBAAK1F,IAAI,GAAGD,IAAMgkG,WAAgBuH,OAAQ,kBAAK5lG,OAC/C,qBAAK1F,IAAI,GAAGD,IAAMkkG,WAAgBqH,OAAQ,kBAAK5lG,OAC/C,qBAAK1F,IAAI,GAAGD,IAAMokG,WAAgBmH,OAAQ,kBAAK5lG,OAC/C,qBAAK1F,IAAI,GAAGD,IAAMskG,WAAgBiH,OAAQ,kBAAK5lG,OAC/C,qBAAK1F,IAAI,GAAGD,IAAMukG,WAAgBgH,OAAQ,kBAAK5lG,OAC/C,qBAAK1F,IAAI,GAAGD,IAAMwkG,WAAgB+G,OAAQ,kBAAK5lG,OAC/C,qBAAK1F,IAAI,GAAGD,IAAMykG,WAAgB8G,OAAQ,kBAAK5lG,OAC/C,qBAAK1F,IAAI,GAAGD,IAAM0kG,WAAgB6G,OAAQ,kBAAK5lG,OAE/C,qBAAK1F,IAAI,GAAGD,IAAMm6C,WAAUoxD,OAAQ,kBAAK5lG,OACzC,qBAAK1F,IAAI,GAAGD,IAAM0+G,WAAgBnT,OAAQ,kBAAK5lG,OAC/C,qBAAK1F,IAAI,GAAGD,IAAM2+G,WAAOpT,OAAQ,kBAAK5lG,OACtC,qBAAK1F,IAAI,GAAGD,IAAMu6C,WAAYgxD,OAAQ,kBAAK5lG,OAG3C,qBAAK1F,IAAI,GAAGD,IAAM4+G,WAAkBrT,OAAQ,kBAAK5lG,OACjD,qBAAK1F,IAAI,GAAGD,IAAM6+G,WAA0BtT,OAAQ,kBAAK5lG,OACzD,qBAAK1F,IAAI,GAAGD,IAAM8+G,WAAwBvT,OAAQ,kBAAK5lG,OACvD,qBAAK1F,IAAI,GAAGD,IAAM++G,WAAkBxT,OAAQ,kBAAK5lG,OACjD,qBAAK1F,IAAI,GAAGD,IAAMg/G,WAA4BzT,OAAQ,kBAAK5lG,OAC3D,qBAAK1F,IAAI,GAAGD,IAAMi/G,WAAwB1T,OAAQ,kBAAK5lG,OACvD,qBAAK1F,IAAI,GAAGD,IAAMk/G,WAAyB3T,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAMm/G,WAAuB5T,OAAQ,kBAAK5lG,OACtD,qBAAK1F,IAAI,GAAGD,IAAMo/G,WAAwB7T,OAAQ,kBAAK5lG,OACvD,qBAAK1F,IAAI,GAAGD,IAAMq/G,WAA2B9T,OAAQ,kBAAK5lG,OAC1D,qBAAK1F,IAAI,GAAGD,IAAMs/G,WAAyB/T,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAMu/G,WAA0BhU,OAAQ,kBAAK5lG,OACzD,qBAAK1F,IAAI,GAAGD,IAAMw/G,WAA0BjU,OAAQ,kBAAK5lG,OACzD,qBAAK1F,IAAI,GAAGD,IAAMy/G,WAA2BlU,OAAQ,kBAAK5lG,OAC1D,qBAAK1F,IAAI,GAAGD,IAAM0/G,WAAyBnU,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAM2/G,WAA0BpU,OAAQ,kBAAK5lG,OACzD,qBAAK1F,IAAI,GAAGD,IAAM4/G,WAAqBrU,OAAQ,kBAAK5lG,OACpD,qBAAK1F,IAAI,GAAGD,IAAM6/G,WAAyBtU,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAM8/G,WAAmBvU,OAAQ,kBAAK5lG,OAClD,qBAAK1F,IAAI,GAAGD,IAAM+/G,WAAsBxU,OAAQ,kBAAK5lG,OACrD,qBAAK1F,IAAI,GAAGD,IAAMggH,WAAyBzU,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAMigH,WAA2B1U,OAAQ,kBAAK5lG,OAC1D,qBAAK1F,IAAI,GAAGD,IAAMkgH,WAAoB3U,OAAQ,kBAAK5lG,OACnD,qBAAK1F,IAAI,GAAGD,IAAMmgH,WAAyB5U,OAAQ,kBAAK5lG,OACxD,qBAAK1F,IAAI,GAAGD,IAAMogH,WAAiC7U,OAAQ,kBAAK5lG,OAChE,qBAAK1F,IAAI,GAAGD,IAAMqgH,WAAuB9U,OAAQ,kBAAK5lG,OACtD,qBAAK1F,IAAI,GAAGD,IAAMsgH,WAAuB/U,OAAQ,kBAAK5lG,OACtD,qBAAK1F,IAAI,GAAGD,IAAMugH,WAAoBhV,OAAQ,kBAAK5lG,OACnD,qBAAK1F,IAAI,GAAGD,IAAMwgH,WAA6BjV,OAAQ,kBAAK5lG,OAC5D,qBAAK1F,IAAI,GAAGD,IAAMygH,WAAwBlV,OAAQ,kBAAK5lG,OACvD,qBAAK1F,IAAI,GAAGD,IAAM0gH,WAAqBnV,OAAQ,kBAAK5lG,OACpD,qBAAK1F,IAAI,GAAGD,IAAM2gH,WAA4BpV,OAAQ,kBAAK5lG,OAC3D,qBAAK1F,IAAI,GAAGD,IAAM4gH,WAAmBrV,OAAQ,kBAAK5lG,OAClD,qBAAK1F,IAAI,GAAGD,IAAM6gH,WAA0BtV,OAAQ,kBAAK5lG,OACzD,qBAAK1F,IAAI,GAAGD,IAAM8gH,WAAsBvV,OAAQ,kBAAK5lG,OACrD,qBAAK1F,IAAI,GAAGD,IAAM+gH,WAA0BxV,OAAQ,kBAAK5lG,OACzD,qBAAK1F,IAAI,GAAGD,IAAMghH,WAAsBzV,OAAQ,kBAAK5lG,OACrD,qBAAK1F,IAAI,GAAGD,IAAMihH,WAA6B1V,OAAQ,kBAAK5lG,OAC5D,qBAAK1F,IAAI,GAAGD,IAAMkhH,WAAqB3V,OAAQ,kBAAK5lG,OACpD,qBAAK1F,IAAI,GAAGD,IAAMmhH,WAA+B5V,OAAQ,kBAAK5lG,OAC9D,qBAAK1F,IAAI,GAAGD,IAAMohH,WAAmB7V,OAAQ,kBAAK5lG,OAClD,qBAAK1F,IAAI,GAAGD,IAAMqhH,WAA4B9V,OAAQ,kBAAK5lG,WC3gCpD27G,gBAtCY,WAAO,IAAD,EAGvBzsE,EAAO7K,KACL91B,EAAmB8E,YAAYX,GAA/BnE,eACF7J,EAAO,OAAG6J,QAAH,IAAGA,GAAH,UAAGA,EAAgB4/B,YAAnB,aAAG,EAAsBzpC,QAEhCwsD,GADcxsD,GAAW,CAAC,MAAMmO,SAASnO,GACzBA,GAAW,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAMmO,SAASnO,IACzEqO,EAAWC,cAEjB1Z,qBAAU,WACNsiH,IACAzrE,KAAQ0rE,SAAS9oG,EAASU,YAC3B,CAACV,IAEJ,IAAM6oG,EAAa,WAETrtG,GAA2C,WAAzBA,EAAeZ,OACb,wBAAtBoF,EAASU,UACa,mBAAtBV,EAASU,UACa,eAAtBV,EAASU,UAET8wB,YAAW,WACP2K,EAAKnzC,MAAMO,EAAOoB,qBACpB,KAIH6Q,IAAmB2iD,GAAuC,eAAtBn+C,EAASU,UAC5C8wB,YAAW,WACP2K,EAAKnzC,MAAMO,EAAOG,QACpB,MAIV,OAAO,2B,4DCnBIq/G,GAJC,CACZvjB,OAZA,CACAwjB,QAASA,WACTC,MAAOA,WACPC,KAAMA,WACNC,kBACAC,iBACAC,oBCuCWC,GA1C4B,SAAC,GAIpC,IAHJC,EAGG,EAHHA,cACAj9E,EAEG,EAFHA,MACAkZ,EACG,EADHA,SACG,EAEYh+C,EAAO,oBAFnB,mBAEIe,EAFJ,KAEOw5C,EAFP,KAGGyjD,EAASujB,GAAQvjB,OAGjB90C,EAAa,SAACjsD,GAChB,OAAOA,KAAE,OAAK8kH,QAAL,IAAKA,OAAL,EAAKA,EAAe9kH,IAAK,CAAC,YAAc,IAQrD,OACI,qBAAKc,UAAWgD,IAAhB,SAGQ+jC,EAAMzoC,KAAK,SAAA8K,GAAC,OACR,sBAAgBpJ,UAAWw8C,EAAE,SAAU2O,EAAW/hD,EAAElK,KAAM4C,QAAS,WAV3D,IAACqK,KAUgF/C,GAT3FlK,MAAP,OAAc8kH,QAAd,IAAcA,OAAd,EAAcA,EAAe9kH,KAChC+gD,EAAS9zC,IAQG,UACI,uBAAOnM,UAAWw8C,EAAE,gBAApB,SACKpzC,EAAElF,QAGP,sBAAMlE,UAAWw8C,EAAE,eAAgB2O,EAAW/hD,EAAElK,OAEhD,qBAAKc,UAAWw8C,EAAE,SAAUz6C,IAAKk+F,EAAO72F,EAAElK,GAAG2P,qBAAsB7M,IAAI,OAPjEoH,EAAElK,UC6UjB+kH,GA3VqB,WAAO,MAGJlpG,YAAYe,IAAvCL,EAH+B,EAG/BA,aAAcI,EAHiB,EAGjBA,SAHiB,EAKCvb,wBAAcgK,GALf,mBAKhC2M,EALgC,KAKlBR,EALkB,KAMjC+/B,EAAWC,cANsB,EAOfn2C,oBAAS,GAPM,mBAOhCmS,EAPgC,KAO1Bw9C,EAP0B,OAQC3vD,oBAAS,GARV,mBAQhC4jH,EARgC,KAQlBC,EARkB,OASxBliH,EAAO,YATiB,mBAShCe,EATgC,KAS7Bw5C,EAT6B,OAiBnCzhC,YAAYX,GANZvH,EAXmC,EAWnCA,QACAuD,EAZmC,EAYnCA,kBACAE,EAbmC,EAanCA,mBACAE,EAdmC,EAcnCA,2BACAP,EAfmC,EAenCA,eACAjK,EAhBmC,EAgBnCA,YAhBmC,EAkB2BiB,EAAe8N,YAAYX,IAArF7M,EAlB+B,EAkB/BA,EAAGY,EAlB4B,EAkB5BA,iBAAkBa,EAlBU,EAkBVA,kBAAmBR,EAlBT,EAkBSA,cAlBT,EAmBjBukC,IAAMgE,WAAWjE,IAAhChlC,EAnBgC,EAmBhCA,IAAK4lC,EAnB2B,EAmB3BA,OAnB2B,EAoBGpzC,qBApBH,mBAoBhC0jH,EApBgC,KAoBjBI,EApBiB,KAqBjClkC,EAASx1E,UAAU2tC,OArBc,EAuBS/3C,qBAvBT,mBAuBhC+jH,GAvBgC,KAuBdC,GAvBc,QAwBuBhkH,mBAA+BgW,GAxBtD,qBAwBhCiuG,GAxBgC,MAwBPC,GAxBO,SAyBuClkH,qBAzBvC,qBAyBhCmkH,GAzBgC,MAyBCC,GAzBD,SA6BCpkH,mBAA2B,WA7B5B,qBA6BhCqkH,GA7BgC,MA6BlBC,GA7BkB,MA8BjCC,GAAgB,CAClBz4G,QAAS,CACL65B,MAAO,qCACP6+E,eAAgB,iCAEpB34G,OAAQ,CACJ85B,MAAO,gBACP6+E,eAAgB,yBAkBxB9jH,qBAAU,WACNsjH,GAAoBt4G,KACtB,CAACA,IAEHhL,qBAAU,WACNwjH,GAA2BluG,KAC5B,CAACA,IAEJtV,qBAAU,WACN0jH,GAAmCluG,KACpC,CAACA,IAEJxV,qBAAU,WACNojH,EAAiBhuG,KAClB,CAACA,IAEJpV,qBAAU,WACkB,uBAAT,OAAZya,QAAY,IAAZA,OAAA,EAAAA,EAAcvc,KAEI,uCAAG,4BAAAsL,EAAA,sEACUsD,EAAI,gBAAiB,gBAD/B,OACdi3G,EADc,OAEpBtuG,EAAgBsuG,EAAgB31G,OAChC6gD,GAAQ,GAHY,2CAAH,oDAKrBxiD,KAED,CAACgO,EAAcrF,IAOlB,IAkCM4uG,GAAc,uCAAG,8BAAAx6G,EAAA,yDACC,YAAjBm6G,GADgB,uBAEfnuE,EAASthC,EAASoiC,QAAQjhC,sBAAsBkuG,KAChD/tE,EAASthC,EAASoiC,QAAQpgC,eAAemtG,KACzC7tE,EAASthC,EAASoiC,QAAQ/gC,8BAA8BkuG,KACxDx0D,GAAQ,GACRzZ,EAASh7B,GAAa87B,QAAQ37B,WAAW,CAACC,UAAMtR,KAEhC,eAAbuR,GACCowB,YAAW,kBAAKJ,OAAOpxB,SAAS89B,WAAU,KAT/B,8BAgBC,OAAjBniC,QAAiB,IAAjBA,OAAA,EAAAA,EAAmBlX,OAAnB,OAA0B8kH,QAA1B,IAA0BA,OAA1B,EAA0BA,EAAe9kH,IAhBzB,wBAiBf0lH,GAAgB,WAjBD,8BAoBfZ,EApBe,oEAsBoC71G,EAAgB,OAAC61G,QAAD,IAACA,OAAD,EAACA,EAAe9kH,IAAI,GAtBxE,oBAsBSu5C,EAtBT,EAsBZlqC,aAAeE,KAtBH,oEAwBbilC,EAAO,gBAAiB,CAC1Bx0C,GAAI,eACJkQ,MAAOqpC,EAAiBrsC,UA1BT,QA4BnBoqC,EAASthC,EAASoiC,QAAQnhC,qBAAqB6tG,IAC/CxtE,EAASthC,EAASoiC,QAAQ/gC,mCAA8BjM,IAExDs6G,GAAgB,WA/BG,4CAAH,qDAkCdvrD,GAAe,WACd6qD,EACCC,GAAgB,IAGhB3tE,EAASh7B,GAAa87B,QAAQ37B,WAAW,CAACC,UAAMtR,KAChDs6G,GAAgB,WAChB30D,GAAQ,KAaVg1D,GAAmB,uCAAG,WAAOt8G,GAAP,iBAAA6B,EAAA,sEAC+B2D,EAAgB,OAAC8H,QAAD,IAACA,OAAD,EAACA,EAAgB4/B,KAAK1pC,QADrE,gBACIssC,EADJ,EACjBlqC,aAAeE,KACtB+nC,EAASthC,EAASoiC,QAAQphC,YAAYuiC,EAAiBtsC,SACvDxD,IAHwB,2CAAH,sDAMnBu8G,GAAiB,uCAAG,4BAAA16G,EAAA,yDAEP,aADTgzF,EAA2B,WAAjBmnB,GAA4B,UAAY,UADlC,mBAGlBP,EAAiBhuG,MAEbvD,GAAW,IAAIxH,OAAS,GALV,uBAMd45G,IAAoB,kBAAML,GAAgBpnB,MAN5B,0BAUtBonB,GAAiBpnB,GAVK,2CAAH,qDAajB2nB,GAA0B,SAAC75G,EAAa85G,GAC1C,IAAMp5G,EAAciL,EAAa3L,GAC7B0/F,GAAY,EAChB,QAAmB1gG,IAAhB0B,EAA2B,CAC1B,IAAMq5G,EAAsC,GAE5C/lH,OAAOD,KAAK2M,EAAY4F,UAAUiS,SAAS,SAAAnM,GACR,OAA5B1L,EAAY4F,SAAS8F,IAAa2tG,EAA0B/hH,KAAKoU,MAIxEszF,EAD8Boa,EAAUvtG,QAAO,SAAA0vB,GAAG,OAAI89E,EAA0B9qG,SAASgtB,MAAMl8B,OAC3D,EAGxC,OAAO2/F,GAGLsa,GAAgC,SAACC,EAAmB50G,GACtD,OACmC,OAA/B8zG,SAA+B,IAA/BA,QAAA,EAAAA,GAAiC9zG,gBAAiBA,IACnB,OAA/B8zG,SAA+B,IAA/BA,QAAA,EAAAA,GAAiCr4G,WAAYm5G,EAC7C,WAAa,IAoBrB,OAAO,qCACH,cAAC,GAAD,CACI9yG,KAAMyxG,EACNxiH,MAhMW,CACf0B,MAAO,QACPC,OAAQ,QACRgsD,aAAc,QA8LVrvD,UAAWgD,IACX2kD,QAAS,kBAAM0R,MACfhL,0BAA4B,EALhC,SAOQ,sBAAKruD,UAAWw8C,EAAE,SAAlB,UACI,qBAAKx8C,UAAWw8C,EAAE,UAAlB,SACI,6BAAKjvC,EAAE,0CAEX,qBAAKvN,UAAWw8C,EAAE,iBAAlB,SACQ,6BAEQ+nE,KAAuB,OACvBA,SADuB,IACvBA,QADuB,EACvBA,GAAyB3yG,WACzBtS,OAAOD,KAAP,OAAYklH,SAAZ,IAAYA,QAAZ,EAAYA,GAAyB3yG,UAAUtT,KAAI,SAACgN,EAASlC,GAAV,OAC/C,6BACI,cAAC,GAAD,CACIw0C,KAAI,OAAE2mE,SAAF,IAAEA,QAAF,EAAEA,GAAyB3yG,SAAStG,GAAKpH,MAC7CpE,KAAK,YAAYm+C,OAAO,SACxBD,aAAa,OACbE,YAAY,QACZl+C,UAAW,eAAiBslH,GACxBf,GAAwBrlH,GAD6B,OAErDqlH,SAFqD,IAErDA,QAFqD,EAErDA,GAAyB3yG,SAAStG,GAAKpM,IAE3Ce,MAAO,kBA7CrB,SAACqL,GAC3B,GAAIi5G,GAAJ,CACA,IAAMvlH,EAAI,OAAGulH,SAAH,IAAGA,QAAH,EAAGA,GAAyB3yG,SAAStG,GAAKpM,GAC9CkN,EAAU6K,EAAastG,GAAwBrlH,IAErDolH,GAAoB,CAChBtlH,OACAoN,QAASA,EAAQA,QACjBJ,YAAaI,EAAQwF,SAAS5S,KAElC0lH,GAAmC,CAC/Bt4G,QAASm4G,GAAwBrlH,GACjCyR,aAAc3R,IAElBitC,YAAY,SAAAv0B,GAAC,OAAIysG,GAAgB,KAAQ,MA+BYqB,CAAsBl6G,OAVlClC,eAmBzC,cAAC,GAAD,CACIglD,gBAA+B,eAAbvyC,EAClBpJ,KAAMA,EACN/Q,MA1OW,CACf0B,MAAO,UACPC,OAAQ,UACRgsD,aAAc,QAwOVrvD,UAAWgD,IACX2kD,QAAS,kBAAM0R,MALnB,SAOQ,sBAAKr5D,UAAWw8C,EAAE,SAAlB,UACI,sBAAKx8C,UAAWw8C,EAAE,SAAUmoE,IAA5B,UACI,cAAC,GAAD,CACI/mE,KAAMrwC,EAAEs3G,GAAcF,IAAcG,gBACpChlH,KAAK,YAAYm+C,OAAO,SACxB5uC,KAAK,yBACL2uC,aAAa,OACb/9C,MAAQilH,GACRniH,UAAWm9E,KAIVA,GACD,sBAAMlgF,UAAWw8C,EAAE,WAAnB,SACKjvC,EAAE,6BAIX,6BAAKA,EAAEs3G,GAAcF,IAAc1+E,YAEvC,sBAAKjmC,UAAWw8C,EAAE,QAAlB,UAEuB,YAAjBmoE,IAA8B,6BAC1B1tG,IAAY,OAAIb,QAAJ,IAAIA,OAAJ,EAAIA,EAAmBhK,UAAWoC,EAAa,OAAC4H,QAAD,IAACA,OAAD,EAACA,EAAmBhK,SAC5E9N,KAAI,YAAwB,IAAD,mBAArBgN,EAAqB,KAAhB8D,EAAgB,KAC5B,OACQ,6BAEI,cAAC,GAAD,CACIrM,UAAWoiH,GAAwB75G,EAAK8D,EAAMwC,SAAStT,KAAK,SAACoZ,GAAD,OAAWA,EAAExY,OACzE0+C,KAAMxuC,EAAMlL,MACZpE,KAAK,YAAYm+C,OAAO,SACxB5uC,KAAML,EAAkBI,EAAMlL,OAC9BlE,UAAW,iBAAwC,OAAvBukH,SAAuB,IAAvBA,QAAA,EAAAA,GAAyBrlH,MAAOoM,EAAM,YAAc,IAChFrL,MAAO,kBAlO1B,SAACf,EAAYkN,GAClC,IAAOg5G,EAAYnuG,EAAa/X,GAAI0S,SAE9B6zG,EAAwBnmH,OAAOD,KAAK+lH,GAAWvtG,QAAQ,SAAAH,GACzD,OAAwB,OAAjB0tG,EAAU1tG,MAGrB8sG,GAA2B,aACvBtlH,MACGkN,IAIJq5G,EAAsBp6G,OAAS,IACJ,OAAvBk5G,SAAuB,IAAvBA,QAAA,EAAAA,GAAyBrlH,MAAOA,GAC/BwlH,QAAmCp6G,GAGvC65G,GAAgB,KAGhBG,GAAoB,CAChBtlH,KAAMymH,EAAsB,GAC5Br5G,QAASA,EAAQlI,MACjB8H,YAAao5G,EAAUK,EAAsB,MAEjDf,GAAmC,CAC/Bt4G,QAASlN,EACTyR,aAAc80G,EAAsB,MAsMOC,CAAiBp6G,EAAK8D,IACjC4uC,aAAa,OACbE,YAAY,WAVX5yC,QAmBJ,WAAjBq5G,IACA,cAAC,GAAD,CACI1kE,SAAUmkE,EACVr9E,MAAOl0B,EACPmxG,cAAeA,OAK3B,qBAAKhkH,UAAWw8C,EAAE,UAAlB,SACI,cAAC,GAAD,CACIoB,KAAMrwC,EAAE,sBACR8B,KAAK,2BACLpP,MAAO,kBAAI+kH,MACXjiH,SAzKA,YAAjB4hH,KACKF,gBCvIDkB,GA3CyB,SAAC,GAO9B,IAcUv2G,EApBb62B,EAME,EANFA,MAME,IALF/8B,aAKE,MALM,EAKN,MAJF08G,kBAIE,MAJW,EAIX,EAHF5lH,EAGE,EAHFA,UACAC,EAEE,EAFFA,MAEE,EAESgC,EAAO,iBAFhB,mBAECe,EAFD,KAEIw5C,EAFJ,KAGEjvC,EAAMN,EAAe8N,YAAYX,IAAjC7M,EAcR,OACI,sBAAKvN,UAAWgD,EAAE,GAAD,OAAIhD,IAAc8B,QAZhB,WACf7B,GACJA,KAUA,UACI,sBAAKD,UAAWw8C,EAAE,UAAlB,UACI,6BACKvW,IAED,cAAC,EAAD,CAAMpmC,KAAK,WAAWG,UAAWA,OAEzC,sBAAKA,UAAWw8C,EAAE,QAAlB,UACI,kCAAQopE,EAAR,KAZKx2G,EAYwB7B,EAAE,4BAX/B6B,EAAMtE,OAAO,EAAG,OAYhB,qBAAK9K,UAAWw8C,EAAE,qBAAlB,SACI,sBAAM96C,MAAO,CAAC0B,MAAM,GAAD,OAlBX,WACpB,IAAM4jD,EAAU,IAAM4+D,EAAa18G,EACnC,OAAOI,KAAKuiE,KAAK7kB,GAgBmB6+D,GAAL,iBC6ExBC,GA9GyB,WAAQ,IAAD,gBAGrCtvE,EAAWC,cAH0B,EAI5Bx0C,EAAO,iBAJqB,mBAIpCe,EAJoC,KAIjCw5C,EAJiC,OAKfzhC,YAAY4sB,IAAtBZ,GALyB,EAKnCjzB,SALmC,EAKzBizB,OAEVx5B,GADUwN,YAAYX,GAAtBrE,MACM9I,EAAe8N,YAAYX,IAAjC7M,GAERvM,qBAAU,gBACOsJ,IAAVy8B,GACCyP,EAAS1P,GAAcwQ,QAAQ5P,kBAAkBX,MAGtD,IAEH,IAGMg/E,EAAiB,SAACjmH,EAAYwL,GAChCkrC,EAAS1P,GAAcwQ,QAAQhQ,aAAa,CAACh8B,IAAIxL,EAAK0nC,YAAYl8B,KAClEkrC,EAAS1P,GAAcwQ,QAAQ7P,aAAa,qBAG1Cu+E,EAAc,WAAqB,IAApB/xG,EAAmB,uDAAN,GAC9B,OAAOA,EAAK5I,QAEV46G,EAAkB,WAAqB,IAApBhyG,EAAmB,uDAAN,GAC9B/K,EAAQ,EAIZ,OAHA+K,EAAK3V,KAAI,SAAA0gF,GACFA,EAAK33C,SAAQn+B,GAAgB,MAE7BA,GAEX,OAAQ,sBAAKlJ,UAAWgD,EAAE,IAAlB,UACQ,sBAAKhD,UAAWw8C,EAAE,SAAlB,UACI,qBAAKx8C,UAAWw8C,EAAE,gBAGlB,sBAAKx8C,UAAWw8C,EAAE,QAAlB,UACI,4BACCjvC,EAAE,+BAEH,+BACI,cAAC,EAAD,CAAM1N,KAAK,cAAcC,KAAK,QADlC,IACiDyN,EAAE,+BAEnD,uBACA,+BACI,cAAC,EAAD,CAAM1N,KAAK,oBAAoBC,KAAK,QAAcyN,EAAE,wCAIhE,sBAAKvN,UAAWw8C,EAAE,QAAlB,UACI,cAAC,GAAD,CAAWvW,MAAO14B,EAAE,2BAAqCvN,UAAU,mBAAnE,SAGuC,KAA1B,OAAL+mC,QAAK,IAALA,GAAA,UAAAA,EAAOC,mBAAP,eAAoB37B,UAApB,OAAoC07B,QAApC,IAAoCA,GAApC,UAAoCA,EAAOC,mBAA3C,aAAoC,EAAoB1oC,KAAI,SAAC8Q,EAAWhG,GACpE,OAAO,cAAC,GAAD,CAAc68B,MAAO72B,EAAMlL,MAC1BjE,MAAO,kBAAI8lH,EAAe,cAAc32G,EAAM9D,MAC9CtL,UAAWgmH,EAAY52G,EAAMg4B,WAAa6+E,EAAgB72G,EAAMg4B,SAAW,WAAa,GACxFw+E,WAAYI,EAAY52G,EAAMg4B,SAAUl+B,MAAO+8G,EAAgB72G,EAAMg4B,UAH/Bh+B,QAJJ,GAYtD,cAAC,GAAD,CAAW68B,MAAO14B,EAAE,oCAA8CvN,UAAU,mBAA5E,SAGsC,KAAzB,OAAL+mC,QAAK,IAALA,GAAA,UAAAA,EAAOE,kBAAP,eAAmB57B,UAAnB,OAAmC07B,QAAnC,IAAmCA,GAAnC,UAAmCA,EAAOE,kBAA1C,aAAmC,EAAmB3oC,KAAI,SAAC8Q,EAAWhG,GAClE,OAAO,cAAC,GAAD,CAAc68B,MAAO72B,EAAMlL,MAC1BjE,MAAO,kBAAI8lH,EAAe,aAAa32G,EAAM9D,MAC7Cs6G,WAAYI,EAAY52G,EAAMg4B,SAAUl+B,MAAO+8G,EAAgB72G,EAAMg4B,SACrEpnC,UAAWgmH,EAAY52G,EAAMg4B,WAAa6+E,EAAgB72G,EAAMg4B,SAAW,WAAa,IAHlDh+B,QAJK,GAc/D,cAAC,GAAD,CAAW68B,MAAO14B,EAAE,mCAA4CvN,UAAU,mBAA1E,SAGiD,KAApC,OAAL+mC,QAAK,IAALA,GAAA,UAAAA,EAAOG,6BAAP,eAA8B77B,UAA9B,OAA8C07B,QAA9C,IAA8CA,GAA9C,UAA8CA,EAAOG,6BAArD,aAA8C,EAA8B5oC,KAAI,SAAC8Q,EAAWhG,GACxF,OAAO,cAAC,GAAD,CAAc68B,MAAO72B,EAAMlL,MAC1BjE,MAAO,kBAAI8lH,EAAe,wBAAwB32G,EAAM9D,MACxDs6G,WAAYI,EAAY52G,EAAMg4B,SAAUl+B,MAAO+8G,EAAgB72G,EAAMg4B,SACrEpnC,UAAWgmH,EAAY52G,EAAMg4B,WAAa6+E,EAAgB72G,EAAMg4B,SAAW,WAAa,IAHlDh+B,QAJG,GAa7D,cAAC,GAAD,CAAW68B,MAAO14B,EAAE,iCAA0CvN,UAAU,mBAAxE,SAGqC,KAAxB,OAAL+mC,QAAK,IAALA,GAAA,UAAAA,EAAOI,iBAAP,eAAkB97B,UAAlB,OAAkC07B,QAAlC,IAAkCA,GAAlC,UAAkCA,EAAOI,iBAAzC,aAAkC,EAAkB7oC,KAAI,SAAC8Q,EAAWhG,GAChE,OAAO,cAAC,GAAD,CAAc68B,MAAO72B,EAAMlL,MAC1BjE,MAAO,kBAAI8lH,EAAe,YAAY32G,EAAM9D,MAC5Cs6G,WAAYI,EAAY52G,EAAMg4B,SAAUl+B,MAAO+8G,EAAgB72G,EAAMg4B,SACrEpnC,UAAWgmH,EAAY52G,EAAMg4B,WAAa6+E,EAAgB72G,EAAMg4B,SAAW,WAAa,IAHlDh+B,QAJC,UC2GpE88G,GA7M4B,WAEvC,IAAM1vE,EAAWC,cAF6B,EAG/Bx0C,EAAO,oBAHwB,mBAGvCe,EAHuC,KAGpCw5C,EAHoC,OAICzhC,YAAY4sB,IAAnD5zB,EAJsC,EAItCA,YAAaP,EAJyB,EAIzBA,KAAMuzB,EAJmB,EAInBA,MAAOjzB,EAJY,EAIZA,SAJY,EAKtBxT,mBAAS,IALa,mBAKvC2T,EALuC,KAKjCkyG,EALiC,KAMtC54G,EAAMN,EAAe8N,YAAYX,IAAjC7M,EAoCF64G,EAAY,WAAyD,IAAxDnyG,EAAuD,uDAAzC,GAAImzB,EAAqC,uDAAvB,GAAI97B,EAAmB,uDAAL,EACjEkrC,EAAS1P,GAAcwQ,QAAQ7P,aAAa,kBAC5C0+E,EAAQlyG,GAERoyG,EAAa/6G,EAAI87B,GACjBoP,EAAS1P,GAAcwQ,QAAQ5P,kBAAkB2+E,EAAa/6G,EAAI87B,MAGhEi/E,EAAe,WAAsC,IAAD,QAApC/6G,EAAoC,uDAAvB,EAAG87B,EAAoB,uDAAN,GAC5CvuB,EAAU,GACd,cAAO/E,QAAP,IAAOA,OAAP,EAAOA,EAAUwxB,YACb,IAAK,cACDzsB,EAAO,2BACAkuB,GADA,IAEHC,YAAW,OAAED,QAAF,IAAEA,GAAF,UAAEA,EAAOC,mBAAT,aAAE,EAAoB1oC,KAAI,SAAAya,GACH,IAAD,EAAzB,OAAGA,EAAEzN,MAAQ87B,EAAQ97B,IACV,2BACAyN,GADP,IAEIquB,QAAO,UAAEruB,EAAEquB,eAAJ,aAAE,EAAW9oC,KAAI,SAAC4nC,EAAI98B,GACzB,OAAGkC,IAAQlC,GAAK88B,EAAImB,OACT,2BACAnB,GADP,IAEImB,QAAQ,IAGL,2BACAnB,GADP,IAEImB,QAAQ,SAMrB,eACAtuB,QAOnB,MACJ,IAAK,aACDF,EAAO,2BACAkuB,GADA,IAEHE,WAAU,OAAEF,QAAF,IAAEA,GAAF,UAAEA,EAAOE,kBAAT,aAAE,EAAmB3oC,KAAI,SAAAya,GACD,IAAD,EAAzB,OAAGA,EAAEzN,MAAQ87B,EAAQ97B,IACV,2BACAyN,GADP,IAEIquB,QAAO,UAAEruB,EAAEquB,eAAJ,aAAE,EAAW9oC,KAAI,SAAC4nC,EAAI98B,GACzB,OAAGkC,IAAQlC,GAAM88B,EAAImB,OACV,2BACAnB,GADP,IAEImB,QAAQ,IAGL,2BACAnB,GADP,IAEImB,QAAQ,SAMrB,eACAtuB,QAMnB,MACJ,IAAK,wBACDF,EAAO,2BACAkuB,GADA,IAEHG,sBAAqB,OAAEH,QAAF,IAAEA,GAAF,UAAEA,EAAOG,6BAAT,aAAE,EAA8B5oC,KAAI,SAAAya,GACvB,IAAD,EAAzB,OAAGA,EAAEzN,MAAQ87B,EAAQ97B,IACV,2BACAyN,GADP,IAEIquB,QAAO,UAAEruB,EAAEquB,eAAJ,aAAE,EAAW9oC,KAAI,SAAC4nC,EAAI98B,GACzB,OAAGkC,IAAQlC,GAAM88B,EAAImB,OACV,2BACAnB,GADP,IAEImB,QAAQ,IAGL,2BACAnB,GADP,IAEImB,QAAQ,SAMrB,eACAtuB,QAInB,MACJ,IAAK,YACDF,EAAO,2BACAkuB,GADA,IAEHI,UAAS,OAAEJ,QAAF,IAAEA,GAAF,UAAEA,EAAOI,iBAAT,aAAE,EAAkB7oC,KAAI,SAAAya,GACC,IAAD,EAAzB,OAAGA,EAAEzN,MAAQ87B,EAAQ97B,IACV,2BACAyN,GADP,IAEIquB,QAAO,UAAEruB,EAAEquB,eAAJ,aAAE,EAAW9oC,KAAI,SAAC4nC,EAAI98B,GACzB,OAAGkC,IAAQlC,GAAM88B,EAAImB,OACV,2BACAnB,GADP,IAEImB,QAAQ,IAGL,2BACAnB,GADP,IAEImB,QAAQ,SAMrB,eACAtuB,QAW3B,OAAOF,GAWX,OACI,sBAAK7Y,UAAWgD,EAAE,IAAlB,UAEiB,oBAATwQ,GACI,sBAAKxT,UAAWw8C,EAAE,UAAlB,UACI,oCAAKzoC,QAAL,IAAKA,OAAL,EAAKA,EAAa7P,QAClB,mCAAI6P,QAAJ,IAAIA,OAAJ,EAAIA,EAAaA,iBAI7B,sBAAK/T,UAAWw8C,EAAE,QAAlB,UACe,oBAAThpC,GA9LU,WAAM,IAAD,EAgCzB,OA9BkB,OAClBO,QADkB,IAClBA,GADkB,UAClBA,EAAaqzB,eADK,aAClB,EAAsB9oC,KAAI,SAAC+5F,EAAGjvF,GAC1B,OAAO,sBAAKpJ,UAAWw8C,EAAE,aAAlB,UACC,4BAAI67C,EAAGpyD,QACP,sBAAKjmC,UAAWw8C,EAAE,kBAAlB,UACI,cAAC,GAAD,CACIoB,KAAMrwC,EAAE,wBACRzN,KAAK,YAAYm+C,OAAO,SACxB5uC,KAAK,QACLivC,SAAS,MACTN,aAAa,OACb/9C,MAAO,kBAAImmH,EAAU/tB,EAAGpkF,KAAMF,EAAa3K,MAI/C,cAAC,GAAD,CACIw0C,KAAMrwC,EAAE,+BACRzN,KAAK,UAAUm+C,OAAO,SACtB5uC,KAAK,oBACLivC,SAAS,MACTN,aAAa,OACbK,MAAI,SAnBwBj1C,MA0LPk9G,GACtB,kBAAT9yG,GAnBH,qBAAKxT,UAAWw8C,EAAE,SAAlB,SACH,uBAAOu9C,UAAQ,EAACl4C,UAAQ,EAAxB,SACI,wBAAQ9/C,IAAKkS,EAAMnU,KAAK,yBCqCzBymH,GA7MqB,WAGhC,IAAM/vE,EAAWC,cAHsB,EAIfn2C,oBAAS,GAJM,mBAIhCmS,EAJgC,KAI1Bw9C,EAJ0B,OAKxBhuD,EAAO,YALiB,mBAKhCe,EALgC,KAK7Bw5C,EAL6B,KAM/B/gC,EAAiBV,YAAYe,IAA7BL,aAN+B,EAOfV,YAAY4sB,IAA5Bn0B,EAP+B,EAO/BA,KAAMuzB,EAPyB,EAOzBA,MACNhxB,EAAUgF,YAAYX,GAAtBrE,MACAxI,EAAMN,EAAe8N,YAAYX,IAAjC7M,EAQRvM,qBAAU,WACkB,cAAT,OAAZya,QAAY,IAAZA,OAAA,EAAAA,EAAcvc,KACjB+wD,GAAQ,KACT,CAACx0C,IAEJza,qBAAU,WACHyR,GAAK4mF,MAET,CAAC5mF,IACJ,IAAM4mF,EAAY,WACd,IAAMx1D,EAAe,CAAE91B,QAAS,CAAC,+BAA4BgI,KAEvD6K,EACN/U,EAAUU,SACVsB,IAAMC,IACF8S,EAAKijB,GACRhlC,MAAK,SAAAoP,QACW3D,IAAVy8B,EACCyP,EAAS1P,GAAcwQ,QAAQ5P,kBAAkBz5B,EAAIQ,OAGrD+3G,EAAmBv4G,EAAIQ,SAG5BnN,MAAMsM,IAEPA,EAAU,SAACinB,KAEX2xF,EAAqB,SAAC/3G,GACxB,IAAMg4G,GAAuB,OAAJh4G,QAAI,IAAJA,OAAA,EAAAA,EAAMu4B,eAAN,OAAqBv4B,QAArB,IAAqBA,OAArB,EAAqBA,EAAMu4B,YAAY1oC,KAAI,SAACya,EAAoBZ,GAAiB,IAAD,EACrG,kCACOY,GADP,IAEIquB,QAAO,UAAEruB,EAAEquB,eAAJ,aAAE,EAAW9oC,KAAI,SAAC8oC,EAAgCs/E,GACrD,UAAG3/E,QAAH,IAAGA,OAAH,EAAGA,EAAOC,YAAY,CAAC,IAAD,EACZ2/E,GAAgB,OAAL5/E,QAAK,IAALA,OAAA,EAAAA,EAAOC,YAAY37B,QAAO,GAAK8M,IAA/B,OACjB4uB,QADiB,IACjBA,OADiB,EACjBA,EAAOC,YAAY7uB,GAAOivB,WADT,OACoBL,QADpB,IACoBA,GADpB,UACoBA,EAAOC,YAAY7uB,GAAOivB,eAD9C,aACoB,EAAmCvvB,QAAO,SAAC0oC,GAAD,OAAyC,IAAbA,EAAElZ,QAC1GkZ,EAAEta,QAAUmB,EAAQnB,UACvB,OAAG0gF,GAAYA,EAASt7G,OAAS,IAAU,OAAL07B,QAAK,IAALA,OAAA,EAAAA,EAAOC,YAAY37B,SAAU8M,EACxD,CACH8tB,MAAOmB,EAAQnB,MACfoB,QAAQ,EACRpzB,KAAMmzB,EAAQnzB,MAGX,CACHgyB,MAAOmB,EAAQnB,MACfoB,QAAQ,EACRpzB,KAAMmzB,EAAQnzB,gBAShCizB,GAA4B,OAAJz4B,QAAI,IAAJA,OAAA,EAAAA,EAAMy4B,yBAAN,OAA+Bz4B,QAA/B,IAA+BA,OAA/B,EAA+BA,EAAMy4B,sBAAsB5oC,KAAI,SAACya,EAAmBZ,GAAiB,IAAD,EAC7H,kCACOY,GADP,IAEIquB,QAAO,UAAEruB,EAAEquB,eAAJ,aAAE,EAAW9oC,KAAI,SAAC8oC,EAAgCs/E,GACrD,UAAG3/E,QAAH,IAAGA,OAAH,EAAGA,EAAOG,sBAAsB,CAAC,IAAD,EACtBy/E,GAAe,OAAL5/E,QAAK,IAALA,OAAA,EAAAA,EAAOG,sBAAsB77B,QAAO,GAAK8M,IAAzC,OAChB4uB,QADgB,IAChBA,OADgB,EAChBA,EAAOG,sBAAsB/uB,GAAOivB,WADpB,OAC+BL,QAD/B,IAC+BA,GAD/B,UAC+BA,EAAOG,sBAAsB/uB,GAAOivB,eADnE,aAC+B,EAA6CvvB,QAAO,SAAC0oC,GAAD,OAAyC,IAAbA,EAAElZ,QAC9HkZ,EAAEta,QAAUmB,EAAQnB,UACvB,OAAG0gF,GAAYA,EAASt7G,OAAS,EACtB,CACH46B,MAAOmB,EAAQnB,MACfoB,QAAQ,EACRpzB,KAAMmzB,EAAQnzB,MAGX,CACHgyB,MAAOmB,EAAQnB,MACfoB,QAAQ,EACRpzB,KAAMmzB,EAAQnzB,gBAShCgzB,GAAiB,OAAJx4B,QAAI,IAAJA,OAAA,EAAAA,EAAMw4B,cAAN,OAAoBx4B,QAApB,IAAoBA,OAApB,EAAoBA,EAAMw4B,WAAW3oC,KAAI,SAACya,EAAmBZ,GAAiB,IAAD,EAC5F,kCACOY,GADP,IAEIquB,QAAO,UAAEruB,EAAEquB,eAAJ,aAAE,EAAW9oC,KAAI,SAAC8oC,EAAgCs/E,GACrD,UAAG3/E,QAAH,IAAGA,OAAH,EAAGA,EAAOE,WAAW,CAAC,IAAD,EACX0/E,GAAgB,OAAL5/E,QAAK,IAALA,OAAA,EAAAA,EAAOE,WAAW57B,QAAO,GAAK8M,IAA9B,OACjB4uB,QADiB,IACjBA,OADiB,EACjBA,EAAOE,WAAW9uB,GAAOivB,WADR,OACmBL,QADnB,IACmBA,GADnB,UACmBA,EAAOE,WAAW9uB,GAAOivB,eAD5C,aACmB,EAAkCvvB,QAAO,SAAC0oC,GAAD,OAAyC,IAAbA,EAAElZ,QACxGkZ,EAAEta,QAAUmB,EAAQnB,UACvB,OAAG0gF,GAAYA,EAASt7G,OAAS,EACtB,CACH46B,MAAOmB,EAAQnB,MACfoB,QAAQ,EACRpzB,KAAMmzB,EAAQnzB,MAGX,CACHgyB,MAAOmB,EAAQnB,MACfoB,QAAQ,EACRpzB,KAAMmzB,EAAQnzB,gBAoChC2P,EAAW,CACbojB,YAAay/E,EACbv/E,sBAAuBA,EACvBC,WA9BkB,OAAJ14B,QAAI,IAAJA,OAAA,EAAAA,EAAM04B,aAAN,OAAmB14B,QAAnB,IAAmBA,OAAnB,EAAmBA,EAAM04B,UAAU7oC,KAAI,SAACya,EAAmBZ,GAAiB,IAAD,EACzF,kCACOY,GADP,IAEIquB,QAAO,UAAEruB,EAAEquB,eAAJ,aAAE,EAAW9oC,KAAI,SAAC8oC,EAAgCs/E,GACrD,UAAG3/E,QAAH,IAAGA,OAAH,EAAGA,EAAOI,UAAU,CAAC,IAAD,EACVw/E,GAAgB,OAAL5/E,QAAK,IAALA,OAAA,EAAAA,EAAOI,UAAU97B,QAAO,GAAK8M,IAA7B,OAChB4uB,QADgB,IAChBA,GADgB,UAChBA,EAAOI,UAAUhvB,GAAOivB,eADR,aAChB,EAAiCvvB,QAAO,SAAC0oC,GAAD,OAAyC,IAAbA,EAAElZ,QAAmBkZ,EAAEta,QAAUmB,EAAQnB,UAE9G,OAAG0gF,GAAYA,EAASt7G,OAAS,EACtB,CACH46B,MAAOmB,EAAQnB,MACfoB,QAAQ,EACRpzB,KAAMmzB,EAAQnzB,MAGX,CACHgyB,MAAOmB,EAAQnB,MACfoB,QAAQ,EACRpzB,KAAMmzB,EAAQnzB,gBAalCgzB,WAAYA,GAEhBuP,EAAS1P,GAAcwQ,QAAQ5P,kBAAkB9jB,GAAY,MAajE,OACI,cAAC,GAAD,CAAOnR,KAAMA,EAAM/Q,MApKJ,CACf0B,MAAO,UACPC,OAAQ,UACRgsD,aAAc,QAiKwBrvD,UAAWgD,IAAK2kD,QAAS,kBAX/DnR,EAASh7B,GAAa87B,QAAQ37B,WAAW,CAACC,UAAMtR,UAChD2lD,GAAQ,IAWR7B,gBAAwB,kBAAP56C,EADjB,SAEQ,sBAAKxT,UAAWw8C,EAAE,SAAlB,UACI,sBAAKx8C,UAAWw8C,EAAE,UAAlB,UAEiB,iBAAThpC,GACI,cAAC,GAAD,CACAoqC,KAAMrwC,EAAE,uBACRzN,KAAK,YAAYm+C,OAAO,SACxB5uC,KAAK,yBACL2uC,aAAa,OACbh+C,UAAkB,oBAAPwT,EAA2B,GAAK,eAC3CvT,MAAO,WAlB3Bu2C,EADQ,oBAAThjC,EACUszB,GAAcwQ,QAAQ7P,aAAa,gBAEnCX,GAAcwQ,QAAQ7P,aAAa,uBAsBtB,iBAATj0B,GAA4B,6BAAKjG,EAAE,gCAExC,qBAAKvN,UAAWw8C,EAAE,QAAlB,SACc,iBAAThpC,EAA2B,cAAC,GAAD,IAC5B,cAAC,GAAD,YCFTywG,GAzMqB,WAAO,MAIC3jH,wBAAcgK,GAJf,mBAIhC2M,EAJgC,KAIlBR,EAJkB,KAM/BlD,EAAewH,YAAYX,GAA3B7G,WAN+B,EAOxBtR,EAAO,eAPiB,mBAOhCe,EAPgC,KAO7Bw5C,EAP6B,KAQjChG,EAAWC,cARsB,EASSxpC,EAAe8N,YAAYX,IAAnE7M,EAT+B,EAS/BA,EAAGyB,EAT4B,EAS5BA,kBAAmBR,EATS,EASTA,cATS,EAUClO,oBAAS,GAVV,mBAUhC4jH,EAVgC,KAUlBC,EAVkB,OAWC7jH,qBAXD,gCAkBnCya,YAAYX,IAJZhE,GAdmC,EAanCxD,YAbmC,EAcnCwD,mBACAE,EAfmC,EAenCA,mBAEAE,GAjBmC,EAgBnCxK,YAhBmC,EAiBnCwK,4BAjBmC,EAmBWlW,qBAnBX,mBAoBhCwN,GApBgC,UAoBzBilC,IAAMgE,WAAWjE,IAAxBhlC,KAcP9M,qBAAU,YACe,uCAAG,4BAAAwJ,EAAA,sEACUsD,EAAI,gBAAiB,gBAD/B,OACdi3G,EADc,OAEpBtuG,EAAgBsuG,EAAgB31G,OAFZ,2CAAH,qDAIrB3B,KACA,QAAC8F,QAAD,IAACA,OAAD,EAACA,EAAYG,mBAGjB,IAmDM2lD,EAAe,WACjB8qD,GAAgB,IASdgB,EAA0B,SAAC75G,EAAa85G,GAC1C,IAAMp5G,EAAciL,EAAa3L,GAC7B0/F,GAAY,EAChB,QAAkB1gG,GAAf0B,EAA0B,CACzB,IAAMq5G,EAAsC,GAE5C/lH,OAAOD,KAAK2M,EAAY4F,UAAUiS,SAAS,SAAAnM,GACR,OAA5B1L,EAAY4F,SAAS8F,IAAa2tG,EAA0B/hH,KAAKoU,MAIxEszF,EAD8Boa,EAAUvtG,QAAO,SAAA0vB,GAAG,OAAI89E,EAA0B9qG,SAASgtB,MAAMl8B,OAC3D,EAGxC,OAAO2/F,GAGLsa,EAAgC,SAACC,EAAmB50G,GACtD,OAC8B,OAA1B6F,QAA0B,IAA1BA,OAAA,EAAAA,EAA4B7F,gBAAiBA,IACnB,OAA1B6F,QAA0B,IAA1BA,OAAA,EAAAA,EAA4BpK,WAAYm5G,EACxC,WAAa,IAqBrB,OAAO,qCACC,oBAAIvlH,UAAWw8C,EAAE,sBAAjB,SACMvlC,GAAgBb,GAAqB5H,EAAa,OAAC4H,QAAD,IAACA,OAAD,EAACA,EAAmBhK,SACnE9N,KAAI,YAAwB,IAAD,mBAArBgN,EAAqB,KAAhB8D,EAAgB,KAC5B,OACQ,6BAEI,cAAC,GAAD,CACIrM,UAAWoiH,EAAwB75G,EAAK8D,EAAMwC,SAAStT,KAAK,SAACoZ,GAAD,OAAYA,EAAExY,OAC1E0+C,KAAMxuC,EAAMlL,MACZpE,KAAK,YAAYm+C,OAAO,SACxB5uC,KAAML,EAAkBI,EAAMlL,OAC9BlE,UAAW,iBAAmC,OAAlBsW,QAAkB,IAAlBA,OAAA,EAAAA,EAAoBpX,MAAOoM,EAAM,YAAc,IAC3ErL,MAAO,kBA9Fd,SAACf,EAAYkN,GAClC,IAAOg5G,EAAYnuG,EAAa/X,GAAI0S,SAE9B6zG,EAAwBnmH,OAAOD,KAAK+lH,GAAWvtG,QAAQ,SAAAH,GACzD,OAAuB,MAAhB0tG,EAAU1tG,MAGrB8+B,EAASthC,EAASoiC,QAAQjhC,sBAAjB,aACLnX,MACGkN,KAIJq5G,EAAsBp6G,OAAS,GAC9BmrC,EAASthC,EAASoiC,QAAQ/gC,mCAA8BjM,IACxD65G,GAAgB,KAEhB3tE,EAASthC,EAASoiC,QAAQpgC,eAAe,CACrClY,KAAMymH,EAAsB,GAC5Br5G,QAASA,EAAQlI,MACjB8H,YAAao5G,EAAUK,EAAsB,OAEjDjvE,EAASthC,EAASoiC,QAAQ/gC,8BAA8B,CACpDnK,QAASlN,EACTyR,aAAc80G,EAAsB,OAsELC,CAAiBp6G,EAAK8D,IACjC4uC,aAAa,OACbE,YAAY,WAVX5yC,QAgBzB,cAAC,GAAD,CAAOmH,KAAMyxG,EAAcxiH,MA/IhB,CACf0B,MAAO,QACPC,OAAQ,QACRgsD,aAAc,QA4IoCrvD,UAAWgD,IAAM2kD,QAAS0R,EAAchL,0BAA4B,EAAlH,SACI,sBAAKruD,UAAWw8C,EAAE,SAAlB,UACI,qBAAKx8C,UAAWw8C,EAAE,UAAlB,SACI,6BAAKjvC,EAAE,0CAEX,qBAAKvN,UAAWw8C,EAAE,iBAAlB,SACI,6BAEQlmC,IAAkB,OAClBA,QADkB,IAClBA,OADkB,EAClBA,EAAoB1E,WACpBtS,OAAOD,KAAP,OAAYiX,QAAZ,IAAYA,OAAZ,EAAYA,EAAoB1E,UAAUtT,KAAI,SAACgN,EAASlC,GAAV,OAC1C,6BACI,cAAC,GAAD,CACIw0C,KAAI,OAAEtnC,QAAF,IAAEA,OAAF,EAAEA,EAAoB1E,SAAStG,GAAKpH,MACxCpE,KAAK,YAAYm+C,OAAO,SACxBD,aAAa,OACbE,YAAY,QACZl+C,UAAW,eAAiBslH,EACxBhvG,EAAmBpX,GADkC,OAErDoX,QAFqD,IAErDA,OAFqD,EAErDA,EAAoB1E,SAAStG,GAAKpM,IAEtCe,MAAO,kBA5DjB,SAACqL,GAC3B,GAAIgL,EAAJ,CACA,IAAMtX,EAAI,OAAGsX,QAAH,IAAGA,OAAH,EAAGA,EAAoB1E,SAAStG,GAAKpM,GACzCkN,EAAU6K,EAAaX,EAAmBpX,IAEhDs3C,EAASthC,EAASoiC,QAAQpgC,eAAe,CACrClY,OACAoN,QAASA,EAAQA,QACjBJ,YAAaI,EAAQwF,SAAS5S,MAGlCw3C,EAASthC,EAASoiC,QAAQ/gC,8BAA8B,CACpDnK,QAASkK,EAAmBpX,GAC5ByR,aAAc3R,KAElBitC,YAAY,SAAAv0B,GAAC,OAAIysG,GAAgB,KAAQ,MA6CQqB,CAAsBl6G,OAVlClC,mBCvK9Bw9G,GApByB,SAAC,GACjC,gBAAD,MAEY3kH,EAAO,WAFnB,6BAGcw0C,cAOjB,OACQ,sBAAKz2C,UAAU,cAAf,UACI,cAAC,GAAD,IACA,cAAC,GAAD,IACA,cAAC,GAAD,QC8HD6mH,GAvI2B,WAGzB96E,KAAb,IAH6C,EAI9B9pC,EAAO,mBAJuB,mBAItCe,EAJsC,KAInCw5C,EAJmC,KAKvChG,EAAWC,cACTlpC,EAAMN,EAAe8N,YAAYX,IAAjC7M,EAEFg2D,EAAW,CACb,CACIC,OAAOj2D,EAAE,mCACT65B,QAAQ75B,EAAE,sCAEd,CACIi2D,OAAOj2D,EAAE,8BACT65B,QAAQ75B,EAAE,iCAEd,CACIi2D,OAAOj2D,EAAE,iCACT65B,QAAQ75B,EAAE,oCAEd,CACIi2D,OAAOj2D,EAAE,gCACT65B,QAAQ75B,EAAE,mCAEd,CACIi2D,OAAOj2D,EAAE,8BACT65B,QAAQ75B,EAAE,iCAEd,CACIi2D,OAAOj2D,EAAE,kCACT65B,QAAQ75B,EAAE,qCAEd,CACIi2D,OAAOj2D,EAAE,iCACT65B,QAAQ75B,EAAE,oCAEd,CACIi2D,OAAOj2D,EAAE,iCACT65B,QAAQ75B,EAAE,oCAEd,CACIi2D,OAAOj2D,EAAE,gCACT65B,QAAQ75B,EAAE,oCAsBZu5G,EAAS,WACXtwE,EAASthC,EAASoiC,QAAQ/9B,mBAAkB,IAC5Ci9B,EAASthC,EAASoiC,QAAQ79B,qBAAoB,KA4ClD,OACI,sBAAKzZ,UAAWgD,IAAhB,UACI,sBAAKhD,UAAWw8C,EAAE,WAAlB,UACI,6BAAKjvC,EAAE,qCACP,qBAAKvN,UAAWw8C,EAAE,qBAAlB,SACI,8BACCjvC,EAAE,qCACH,uBAAK,uBACL,iCAAQ,4BAAIA,EAAE,gCACd,uBAAK,uBACJA,EAAE,oCACH,uBAAK,+BA7CIg2D,EAASjlE,KAAI,SAACqlE,EAAS1mC,GACxC,OACI,sBAAKj9B,UAAWw8C,EAAE,WAAlB,UACI,qBAAKx8C,UAAWw8C,EAAE,UAAlB,oBAAkCvf,EAAE,KAEpC,sBAAKj9B,UAAWw8C,EAAE,WAAlB,UACI,6BAAKmnB,EAAQH,UAEF,OAAPG,QAAO,IAAPA,OAAA,EAAAA,EAASv8B,UACT,qBAAKpnC,UAAWw8C,EAAE,qBAAlB,SACKsD,KAAe,OAAC6jB,QAAD,IAACA,OAAD,EAACA,EAASv8B,gBARPnK,MAgDvC,sBAAKj9B,UAAWw8C,EAAE,UAAlB,UACI,cAAC,GAAD,CAAQoB,KAAMrwC,EAAE,4BAA6BzN,KAAK,YAAauP,KAAK,UAAUivC,SAAS,MAAMr+C,MAAO6mH,IACpG,cAAC,GAAD,CAAQlpE,KAAMrwC,EAAE,2BAA4B8B,KAAK,eAAepP,MAAO6mH,WCwDxEC,GAlLuB,SAAC,GAE/B,gBAAD,MAEY9kH,EAAO,eAFnB,mBAEIe,EAFJ,KAEOw5C,EAFP,OAcCzhC,YAAYX,GALZ7G,EATD,EASCA,WACAV,EAVD,EAUCA,QAGA2D,GAbD,EAWCP,eAXD,EAYCK,mBAZD,EAaCE,4BAEEggC,EAAWC,cAfd,EAgB6BxpC,EAAe8N,YAAYX,IAAnD7M,EAhBL,EAgBKA,EAAGY,EAhBR,EAgBQA,iBACJm2B,EAAgBqM,GAAY51B,YAAY+K,KAAxCwe,YAjBJ,EAkBuChkC,qBAlBvC,mBAkBI0jH,EAlBJ,KAkBmBI,EAlBnB,KAmBK1wE,EAAWX,IAAMgE,WAAWjE,IAA5BY,OAGR1yC,qBAAU,WACNw1C,EAASthC,EAASoiC,QAAQh+B,kBAAkB,WAC5Ck9B,EAASthC,EAASoiC,QAAQ59B,iBAAiBstG,QAC5C,IAEH,IAKMC,EAAY,uCAAG,4BAAAz8G,EAAA,sEACM85B,IADN,OACXpe,EADW,OAEjBswB,EAASzuB,GAAsBuvB,QAAQrtB,YAAY/D,EAAS3X,eAF3C,2CAAH,qDAKZy4G,EAAa,WAGf,IAFA,IAAME,EAAQ5lF,SAAS6lF,OAAO35E,MAAM,KAChC45E,EAAc,GACTh+G,EAAE,EAAGA,EAAE89G,EAAM77G,OAAQjC,IAAI,CAC9B,IAAIggB,EAAO89F,EAAM99G,GAAGokC,MAAM,KAC1B45E,GAASh+F,EAAK,GAAG,IAAI3mB,QAAU4kH,SAASj+F,EAAKhqB,MAAM,GAAGoD,KAAK,MAE/D,MAAmB,KAAhB4kH,EAAQ,UAA8B98G,IAAhB88G,EAAQE,KAI/BtrC,EAAM,uCAAG,gCAAAxxE,EAAA,yDACa,YAAX,OAAV+I,QAAU,IAAVA,OAAA,EAAAA,EAAYC,QAAqBwwG,EADzB,iCAEgD71G,EAAgB,OAAC61G,QAAD,IAACA,OAAD,EAACA,EAAe9kH,IAAI,GAFpF,mBAEqBu5C,EAFrB,EAEAlqC,aAAeE,KAFf,iEAIDilC,EAAO,gBAAiB,CAC1Bx0C,GAAI,eACJkQ,MAAOqpC,EAAiBrsC,UANrB,cAQPoqC,EAASthC,EAASoiC,QAAQh+B,kBAAkB,aAC5Ck9B,EAASthC,EAASoiC,QAAQnhC,qBAAqB6tG,IATxC,2BAYa,cAAX,OAAVzwG,QAAU,IAAVA,OAAA,EAAAA,EAAYC,QACXyzG,IACAzwE,EAASthC,EAASoiC,QAAQ1hC,YAAYrC,EAAWG,kBAAoB,SACrE8iC,EAASthC,EAASoiC,QAAQzhC,gBAAe,UAAAtC,EAAWX,mBAAX,eAAwB5T,OAAQ,SACzEw3C,EAASthC,EAASoiC,QAAQh+B,kBAAkB,eAhBrC,4CAAH,qDAoBNiuG,EAAiB,SAAC1nF,GACpBukF,EAAiBvkF,IA4DrB,OACI,cAAC,GAAD,CAAOptB,KAAI,OAAEc,QAAF,IAAEA,OAAF,EAAEA,EAAYE,OAAQ/R,MA/HlB,CACf0B,MAAO,UACPC,OAAQ,UACRgsD,aAAc,QA4HsCrvD,UAAWgD,IAAK2kD,QAAS,kBAtG7EnR,EAASthC,EAASoiC,QAAQ/9B,mBAAkB,SAC5Ci9B,EAASthC,EAASoiC,QAAQ79B,qBAAoB,KAsG9C40C,0BAA4B,EAC5BD,iBAAiB,EAFjB,SAGQ,sBAAKpuD,UAAWw8C,EAAE,SAAlB,UACI,sBAAKx8C,UAAWw8C,EAAE,UAAlB,UAE6B,eAAX,OAAVjpC,QAAU,IAAVA,OAAA,EAAAA,EAAYC,OACR,cAAC,GAAD,CACIoqC,KAAMrwC,EAAE,wBACRzN,KAAK,YAAYm+C,OAAO,SACxB5uC,KAAK,yBACL2uC,aAAa,OACb/9C,MAAO,kBAAIu2C,EAASthC,EAASoiC,QAAQh+B,kBAAkB,gBAKnE,6BAvDE,WAClB,cAAO/F,QAAP,IAAOA,OAAP,EAAOA,EAAYC,MACf,IAAK,SACD,OAAOjG,EAAE,iBAEb,IAAK,WACD,OAAOA,EAAE,sCACb,IAAK,YACD,OAASA,EAAE,oCACf,QACI,UAAGgG,QAAH,IAAGA,OAAH,EAAGA,EAAYK,cACX,MAAO,iCA8CK4zG,QAIZ,qBAAKxnH,UAAWw8C,EAAE,gBAASjpC,QAAT,IAASA,OAAT,EAASA,EAAYC,OAAvC,SAjFG,WACf,cAAOD,QAAP,IAAOA,OAAP,EAAOA,EAAYC,MACf,IAAK,SACD,OAAO,cAAC,GAAD,CACKysC,SAAUsnE,EACVxgF,MAAOl0B,EACPmxG,cAAeA,IAE/B,IAAK,WACD,OAAO,cAAC,GAAD,IACX,IAAK,YACD,OAAQ,cAAC,GAAD,IACZ,QACI,UAAGzwG,QAAH,IAAGA,OAAH,EAAGA,EAAYK,cACX,OAAO,cAAC,GAAD,KAqEC6zG,MAKmB,cAAX,OAAVl0G,QAAU,IAAVA,OAAA,EAAAA,EAAYC,OAA6C,YAAX,OAAVD,QAAU,IAAVA,OAAA,EAAAA,EAAYC,QAClD,qBAAKxT,UAAWw8C,EAAE,UAAlB,SACI,cAAC,GAAD,CACIoB,KAAMrwC,EAAE,sBACR8B,KAAK,2BACLpP,MAAO,kBAAI+7E,KACXj5E,WA7CpB,OAACwQ,QAAD,IAACA,OAAD,EAACA,EAAYG,mBACQ,YAAX,OAAVH,QAAU,IAAVA,OAAA,EAAAA,EAAYC,QAAsBwwG,GACb,cAAX,OAAVzwG,QAAU,IAAVA,OAAA,EAAAA,EAAYC,QAAwBgD,YChGjCkxG,GAxCsC,SAAC,GAK9C,IAJJ5nH,EAIG,EAJHA,KACAsP,EAGG,EAHHA,MACA8W,EAEG,EAFHA,SACAihC,EACG,EADHA,SACG,EAEYllD,EAAO,gCAFnB,mBAEIe,EAFJ,KAOG2kH,GAPH,KAOgB,SAAC7nH,GACbqnD,GAASA,EAAS/3C,EAAOtP,KAQhC,OACI,sBAAKE,UAAWgD,IAAhB,UAEQlD,GACA,qCACI,cAAC,GAAD,CAAQ89C,KAAM13B,EAAUpmB,KAAe,WAATA,EAAoB,UAAY,YAC1DG,MAAO,kBAAM0nH,EAAW,aAE5B,cAAC,GAAD,CAAQ/pE,KAAK,IAAI99C,KAAe,YAATA,EAAqB,UAAY,YACpDG,MAAO,kBAAM0nH,EAAW,iBAKpC,uBAAO7nH,KAAK,SAASsP,MAAOA,EAAO+3C,SAnBrB,SAACroD,GACnB,IAAMi7B,EAAWj7B,EAAE0vC,OAAOp/B,MACvB+3C,GAASA,EAASptB,EAAUj6B,IAiBiC0vD,YAAY,UCgFrEo4D,GAxGwC,SAAC,GAIhD,IAAD,IAHH34E,YAGG,MAHI,GAGJ,EAFH44E,EAEG,EAFHA,aACA3hG,EACG,EADHA,SACG,EAEYjkB,EAAO,kCAFnB,mBAEIe,EAFJ,KAGKqiB,GAHL,KAG8BsrB,GAAY51B,YAAY+K,KAAjDT,qBACA9X,EAAMN,EAAe8N,YAAYX,IAAjC7M,EAGFu6G,EAAW,SAACxiG,EAAmBstB,EAAoBpC,GACrD,OAAIlrB,EAEGD,EAAoB,CACvBC,YACAstB,WAAYA,EACZpC,iBALiB,IASzB,OACI,qBAAKxwC,UAAWgD,IAAhB,SACI,kCACI,gCACI,+BACI,mCAAMuK,EAAE,2BAAR,OACA,mCAAMA,EAAE,+BAAR,OACA,mCAAMA,EAAE,+BAAR,OACA,mCAAMA,EAAE,2BAAR,OACA,mCAAMA,EAAE,yBAAR,OACA,mCAAMA,EAAE,yBAAR,OACA,6BACKA,EAAE,0DAEP,6BACKA,EAAE,sDAEP,6BACKA,EAAE,mCAIf,gCAEwB,IAAhB0hC,EAAK5jC,OACL,6BACI,oBAAIi8E,QAAS,EAAb,iCAIJr4C,EAAK3wC,KAAK,SAACknB,EAAGmsC,GAAJ,qBACN,+BACI,6BACMm2D,EAAStiG,EAAE1N,QAAS,UAAW0N,EAAEzN,eAEvC,6BACM+vG,EAAStiG,EAAExN,SAAU,aAE3B,6BACM8vG,EAAStiG,EAAEvN,SAAU,aAE3B,6BACM6vG,EAAStiG,EAAEtN,QAAS,aAE1B,6BACKsN,EAAErN,QAEP,+BACKqN,EAAElW,MADP,IACe4W,KAEf,oBAAIlmB,UAAU,SAAd,SACI,cAAC,GAAD,CACIkmB,SAAUA,EACVpmB,KAAI,UAAE0lB,EAAE2gE,8BAAJ,aAAE,EAA0BrmF,KAChCsP,OAAO,UAAAoW,EAAE2gE,8BAAF,eAA0B/2E,QAAS,GAC1C+3C,SAAU,SAAC5f,EAAIznC,GAAL,OAAc+nH,EAAariG,EAAEtmB,GAAc,yBAA0BqoC,EAAKznC,QAI5F,oBAAIE,UAAU,SAAd,SACI,cAAC,GAAD,CACIkmB,SAAUA,EACVpmB,KAAI,UAAE0lB,EAAE0gE,uBAAJ,aAAE,EAAmBpmF,KACzBsP,OAAO,UAAAoW,EAAE0gE,uBAAF,eAAmB92E,QAAS,GACnC+3C,SAAU,SAAC5f,EAAIznC,GAAL,OAAc+nH,EAAariG,EAAEtmB,GAAc,kBAAmBqoC,EAAKznC,QAGrF,oBAAIE,UAAU,SAAd,SACI,cAAC,GAAD,CACIkmB,SAAUA,EACV9W,OAAO,UAAAoW,EAAE4gE,eAAF,eAAWh3E,QAAS,GAC3B+3C,SAAU,SAAC5f,GAAD,OAASsgF,EAAariG,EAAEtmB,GAAc,UAAWqoC,UAxC9DoqB,cCvBtBo2D,GAvCsC,SAAC,GAM/C,EALH7oH,GAKI,IAJJgF,EAIG,EAJHA,MACAkL,EAGG,EAHHA,MACAtN,EAEG,EAFHA,QACAkmH,EACG,EADHA,QACG,EAEY/lH,EAAO,gCAFnB,mBAEIe,EAFJ,KAEOw5C,EAFP,KAKG37C,EAAiB,WAChBiB,GAAQA,KAUf,OACI,sBAAK9B,UAAWgD,IAAhB,UACI,uBAAOhD,UAAWw8C,EAAE,SAApB,SAA+Bt4C,IAC/B,gCACI,uBAAOkL,MAAOA,EAAOpP,UAAWw8C,EAAE,SAAS18C,KAAK,OAAO6/D,UAAQ,EAAC79D,QAASjB,IAGrEuO,EACA,cAAC,EAAD,CAAMpP,UAAWw8C,EAAE,SAAU38C,KAAK,aAAaC,KAAK,MAAMG,MAfnD,WAChB+nH,GAAQA,OAeC,cAAC,EAAD,CAAMhoH,UAAWw8C,EAAE,SAAU38C,KAAK,qBAAqBC,KAAK,MAAMG,MAAOY,WC2C9EonH,GA5D+C,SAAC,GAKvD,IAJJx1G,EAIG,EAJHA,KAIG,IAHHmb,eAGG,MAHO,GAGP,EAFH+5B,EAEG,EAFHA,QACA1H,EACG,EADHA,SACG,EAEYh+C,EAAO,0CAFnB,mBAEIe,EAFJ,KAEOw5C,EAFP,KAGKjvC,EAAMN,EAAe8N,YAAYX,IAAjC7M,EAKF26G,EAAe,WACdvgE,GAAQA,KAyBf,OACI,qBAAK3nD,UAAWgD,IAAhB,SACI,eAAC,GAAD,CACIyP,KAAMA,EACNk1C,QAAS,WAAOugE,KAChB7kH,OAAO,QAHX,UAKI,oBAAIrD,UAAWw8C,EAAE,SAAjB,SACKjvC,EAAE,oCAGP,qBAAKvN,UAAWw8C,EAAE,QAAlB,SAzBU,SAAhB4sD,EAAiB+e,GACnB,OAAOA,EAAI7pH,KAAK,SAAAoZ,GAAC,OACb,cAAC,GAAD,CAEIuuB,MAAOvuB,EAAExT,MAAOu5D,QAAS,WAZb,IAACqwB,KAYkCp2E,GAXhD0wG,cAAgBt6B,EAAIs6B,aAAa/8G,OAAS,IAAM40C,GACvDA,EAAS,CACL/7C,MAAO4pF,EAAI5pF,MACXkL,MAAO0+E,EAAI1+E,SAMX,SAIQsI,EAAE0wG,cACF1wG,EAAE0wG,aAAa/8G,OAAS,GACxB+9F,EAAc1xF,EAAE0wG,eALf1wG,EAAEtI,UAwBCg6F,CAAcx7E,WCqEvBy6F,GAxHiC,SAAC,GAEzC,IADJC,EACG,EADHA,SACG,EAEYrmH,EAAO,0BAFnB,mBAEIe,EAFJ,KAEOw5C,EAFP,OAG+CzhC,YAAYwS,IAAtDtI,EAHL,EAGKA,YAAa3Q,EAHlB,EAGkBA,0BAHlB,EAKmDhU,oBAAS,GAL5D,mBAKIioH,EALJ,KAKyBC,EALzB,OAMuCloH,mBAAiB,IANxD,mBAMImoH,EANJ,KAMmBC,EANnB,OAOuCpoH,mBAAgB,IAPvD,mBAOIqoH,EAPJ,KAOmBC,EAPnB,KAQKzqF,EAAyBiP,KAAzBjP,qBACA5wB,EAAMN,EAAe8N,YAAYX,IAAjC7M,EATL,EAYyBjN,mBAAyB,CACjD,CAAEpB,GAAI,cAAegF,MAAO,2BAC5B,CAAEhF,GAAI,WAAYgF,MAAO,+BACzB,CAAEhF,GAAI,QAASgF,MAAO,yBACtB,CAAEhF,GAAI,WAAYgF,MAAO,+BACzB,CAAEhF,GAAI,UAAWgF,MAAO,6BAjBzB,mBAYIouE,EAZJ,KAYYu2C,EAZZ,KAsBH7nH,qBAAU,cAEP,IAGH,IAiDsB8nH,EAjDhBjoH,EAAiBkoH,uBAAY,SAAC7pH,GAChC,IAAM0uB,EAAUo7F,EAAkB9pH,GAClC0pH,EAAiBh7F,GACjB86F,EAAiBxpH,GACjBspH,GAAuB,KACxB,IAGGS,EAAiBF,uBAAY,SAAC7pH,GAChC2pH,GAAU,SAAAK,GAAQ,OAAKA,EAAS5qH,KAAK,SAAAoZ,GAAC,OAClCA,EAAExY,KAAOA,EAAT,2BACKwY,GADL,IACQtI,WAAQ9E,IAChBoN,UAEL,IAIGsxG,EAAoB,SAAC9pH,GACvB,IAAMoM,EAAMpM,EAAGgQ,QAAQ,IAAK,IAAIA,QAAQ,IAAK,IAAIA,QAAQ,OAAQ,IAEjE,MAAW,UAAR5D,EACqBgJ,EAA0BuD,QAAQ,SAAAH,GAAC,OAAIA,EAAEnI,WAASjR,KAAK,SAAAoZ,GAAC,MAAK,CAC7ExT,MAAOwT,EAAEtI,MACTA,MAAOsI,EAAEtI,UAKF6V,EAAYpN,QAAQ,SAAC2N,GAAD,OAAuBA,EAAEtmB,KAAOoM,KAAK,GACjDuT,OAAOvgB,KAAI,SAACqQ,GAAD,MAAuB,CACrDzK,MAAOyK,EAAEzK,MACTkL,MAAOT,EAAEzP,GACTkpH,aAAcz5G,EAAEnC,SAASlO,KAAK,SAAAknB,GAAC,MAAK,CAChCthB,MAAOshB,EAAEthB,MACTkL,MAAOoW,EAAEtmB,GACTkpH,aAAcjqF,EAAqB3Y,EAAEtG,aAAe,IAAI5gB,KAAK,SAAAmzC,GAAE,MAAK,CAChEvtC,MAAOutC,EAAGvtC,MACVkL,MAAOqiC,EAAGzyC,kBAOpBmqH,EAA0BJ,uBAAY,WACxCP,GAAuB,KACxB,IAgBGY,EAAwBL,uBAAY,SAAC/6D,GACvC66D,GAAU,SAAAK,GAAQ,OAAKA,EAAS5qH,KAAK,SAAAoZ,GAAC,OAClCA,EAAExY,KAAOupH,EAAT,2BACK/wG,GADL,IACQtI,MAAO4+C,IACft2C,QAEJ8wG,GAAuB,KACzB,CAACC,IAEH,OACI,qCACI,sBAAKzoH,UAAWgD,IAAhB,UACI,qBAAKhD,UAAWw8C,EAAE,UAAlB,UA1BUssE,EA2BSx2C,EA1B3Bw2C,EAAKxqH,KAAK,SAAAoZ,GAAC,aACP,cAAC,GAAD,CAEIxY,GAAIwY,EAAExY,GACNgF,MAAOqJ,EAAEmK,EAAExT,OACXkL,OAAO,UAAAsI,EAAEtI,aAAF,eAASlL,QAAS,GACzBpC,QAAS,kBAAMjB,EAAe6W,EAAExY,KAChC8oH,QAAS,kBAAMiB,EAAevxG,EAAExY,MAL3BwY,EAAExY,UA0BP,cAAC,GAAD,CAAQ0+C,KAAMrwC,EAAE,0BAA2BvN,UAAWw8C,EAAE,UAAWv8C,MAAO,kBAAMqoH,EAASh2C,SAG7F,cAAC,GAAD,CACI7/D,KAAM81G,EACN5gE,QAASwhE,EACTlpE,SAAUmpE,EACVx7F,QAAS+6F,QCNVU,GArHgC,WAAQ,IAAD,EAE5C7yE,EAAWC,cAFiC,EAGnCx0C,EAAO,yBAH4B,mBAG3Ce,EAH2C,KAGxCw5C,EAHwC,KAI5C9F,EAAW37B,YAAYX,GACrB3N,EAAgCiqC,EAAhCjqC,aAAcwJ,EAAkBygC,EAAlBzgC,eAChBqzG,EAAkBvoH,iBAAO,YAAI0L,IANe,EAOJnM,mBAAS,YAAImM,IAPT,mBAO3C88G,EAP2C,KAO1BC,EAP0B,OAQFlpH,oBAAS,GARP,mBAQ3CmpH,EAR2C,KAQzBC,EARyB,KAS5C9yE,EAAO7K,KACLx+B,EAAMN,EAAeypC,GAArBnpC,EAERvM,qBAAU,WACNsoH,EAAgBroH,QAAU0oH,EAAwBL,EAAgBroH,SAClEuoH,EAAoBF,EAAgBroH,WACrC,IAGH,IAAM0oH,EAA0B,SAACl9G,GAU7B,OATqBA,EAAanO,KAAK,SAACoZ,EAAGi6C,GACvC,OAAO,mDACAj6C,GADP,IAEIxY,GAAIquC,OAAOokB,EAAO,IACbj6C,EAAEyuE,wBAA0B,CAAEA,uBAAwB,CAAErmF,KAAM,SAAiBsP,MAAO,OACtFsI,EAAEwuE,iBAAmB,CAAEA,gBAAiB,CAAEpmF,KAAM,SAAiBsP,MAAO,OACxEsI,EAAE0uE,SAAW,CAAEA,QAAS,CAAEh3E,MAAO,WAM5Cw6G,EAAiBb,uBAAY,SAAC91F,GAEhC,IAAM42F,EAAyB52F,EAAOpb,QAAQ,SAAAH,GAAC,OAAIA,EAAEtI,SAChB,IAAlCy6G,EAAuBx+G,OAK1Bm+G,GAAmB,WAUf,OATiB,YAAIF,EAAgBroH,SAAS4W,QAAQ,SAACH,GACnD,IAAMoyG,EAAgBD,EAAuBx+G,OACzCoa,EAAa,EAKjB,OAHAokG,EAAuBhmG,SAAS,SAAAsrB,GACzBz3B,EAAEy3B,EAAEjwC,MAAQiwC,EAAE//B,MAAMA,QAAMqW,GAAc,MAExCqkG,IAAkBrkG,QAZ7B+jG,EAAmBF,EAAgBroH,WAgBxC,IAsCH,OACI,sBAAKjB,UAAWgD,IAAM,QAAtB,UACI,cAAC,GAAD,CAAsBslH,SAAUsB,IAEhC,cAAC,GAAD,CACI1jG,SAAQ,OAAEjQ,QAAF,IAAEA,GAAF,UAAEA,EAAgBiQ,gBAAlB,aAAE,EAA0BysB,OACpC1D,KAAMs6E,GAAmB,GACzB1B,aA1CgB,SACxB3oH,EACAqyB,EACAniB,EACAtP,GAGAwpH,EAAgBroH,QAAUqoH,EAAgBroH,QAAQ3C,KAAK,SAAAoZ,GACnD,OAAGA,EAAExY,KAAOA,EACD,2BAAKwY,GAAZ,kBAAgB6Z,EAAQ,CAAEzxB,OAAMsP,WAE7BsI,KAGX8xG,GAAoB,SAAA3/D,GAChB,OAAOA,EAAKvrD,KAAK,SAAAoZ,GACb,OAAGA,EAAExY,KAAOA,EACD,2BAAKwY,GAAZ,kBAAgB6Z,EAAQ,CAAEzxB,OAAMsP,WAE7BsI,WA2BX,sBAAK1X,UAAWw8C,EAAE,WAAlB,UACI,cAAC,GAAD,CAAQoB,KAAMrwC,EAAE,wBAAyBtN,MAtB/B,WAClBu2C,EAASthC,EAASoiC,QAAQh/B,+BAA+BgxG,EAAgBroH,UACzEyoH,GAAoB,GACpB9yE,EAAKnzC,MAAMO,EAAOG,KAAM,QAoBhB,cAAC,GAAD,CAAQy5C,KAAMrwC,EAAE,0BAA2BzN,KAAK,YAAYG,MAjBhD,WACpB22C,EAAKnzC,MAAMO,EAAOI,mBAmBd,cAAC,GAAD,CACIf,OAAO,QAAQD,MAAM,QACrBqP,KAAMg3G,EAAkBr7D,iBAAiB,EAF7C,SAGI,sBAAKpuD,UAAU,6BAAf,UACI,cAAC,EAAD,CAAMH,KAAK,UACX,kD,oBC8DLkqH,GAnLS,WACpB,IAAMvzE,EAAWC,cACTtpC,EAAQF,EAAe8N,YAAYX,IAAnCjN,IAFkB,EAGXlL,EAAO,4BAHI,mBAGnBe,EAHmB,KAGhBw5C,EAHgB,OAI4BzhC,YAAYX,GAA1DxI,EAJkB,EAIlBA,SAAUS,EAJQ,EAIRA,mBAAoBC,EAJZ,EAIYA,YAJZ,EAKsBhS,mBAAiBsR,GALvC,mBAKnB8B,EALmB,KAKDs2G,EALC,OAMQ1pH,oBAAkB,GAN1B,mBAMnBozD,EANmB,KAMRu2D,EANQ,OAOU3pH,mBAAiB,IAP3B,mBAOnB4pH,EAPmB,KAOPC,EAPO,OAQM7pH,mBAAgC,IARtC,mBAQnB8pH,EARmB,KAQTC,EARS,OASM/pH,mBAAmD,OAArC0xB,aAAaC,QAAQ,YAAuBD,aAAaC,QAAQ,YAAc,WATnG,mBASnBxX,EATmB,KAST6vG,EATS,OAUQhqH,mBAAc,IAVtB,mBAUnBiqH,EAVmB,KAURC,EAVQ,KAWlB18G,EAAQilC,IAAMgE,WAAWjE,IAAzBhlC,IAGR9M,qBAAU,WACNw1C,EAASthC,EAASoiC,QAAQ1hC,YAAyB,YAAb6E,EAAyB,OAAS/G,IACxEse,aAAa6pB,QAAQ,WAAYphC,KAClC,CAAC/G,EAAkB+G,IAEtBzZ,qBAAU,WACN,IAAIypH,EAAU3jH,KAAKC,UAAUsL,GAC7B2f,aAAa6pB,QAAQ,mBAAoB4uE,GACzCJ,EAAYh4G,KACb,CAACA,IAGJ,IAAMq4G,EAAc,uCAAG,WAAOC,GAAP,qBAAAngH,EAAA,yDACP,YAARmgH,EADe,uBAEfL,EAAY,WACNM,EAAiB,KACjBC,EAAwB,OAJf,SAKI/8G,EAAI,gBAAiB,kBALzB,OAKXg9G,EALW,OAMXC,EAAqBD,EAAO17G,MAAMw7G,GAAgBh5G,SAASi5G,GACxEr0E,EAASthC,EAASoiC,QAAQngC,qBAAqB,CAC9C3E,UAAW,wBACXxT,KAAM6rH,EACNz+G,QAAS,KACTJ,YAAa++G,KAXU,OAenBf,EAA4B,YAARW,EAAoB,OAASA,GACjDn0E,EAASthC,EAASoiC,QAAQ1hC,YAAoB,YAAR+0G,EAAoB,OAASA,IACnEL,EAAYK,GAjBO,4CAAH,sDA4CdK,EAAoB,uCAAG,WAAOC,EAAgB7+G,GAAvB,+BAAA5B,EAAA,6DACnBsC,EAAcV,EAAQpN,KACtBo6C,EAAsBhtC,EAAQwF,SAAS5S,KAAO8N,EAF3B,SAGagB,EAAI,gBAAiB,kBAHlC,OAGnBo9G,EAHmB,OAInBC,EAAyBD,EACzBE,EALmB,OAKGF,QALH,IAKGA,GALH,UAKGA,EAAyB97G,MAAMtC,UALlC,aAKG,EAA6C8E,SAASwnC,GAC5EiyE,EANmB,UAMEF,EAAuBr+G,UANzB,aAME,EAAqC8E,SAASwnC,GACnEkyE,EAPmB,2BAOEF,GAAwBC,GAEzD70E,EAASthC,EAASoiC,QAAQngC,qBAAqB,CAC9C3E,UAAW1F,EACF9N,KAAMo6C,EACNhtC,QAASA,EAAQvM,KACjBmM,YAAas/G,KAEjBhB,EAAYl+G,EAAQwF,SAAS5S,KAAOoN,EAAQpN,MAfnB,4CAAH,wDAkB1B,OACI,qCACI,sBAAKgB,UAAWw8C,EAAE,kBAAmB16C,QAAS,kBAAMmoH,GAAa,IAAjE,UACI,qBAAKjqH,UAAU,gBAAf,SAAgC0T,EAAiByiE,UAAU,EAAE,GAAGliD,gBAChE,qBAAKj0B,UAAU,yBAEnB,eAAC,GAAD,CACIyuD,UAAWiF,EACXjhD,KAAMihD,EACN/L,QAAS,kBAAMsiE,GAAa,IAC5B77D,iBAAiB,EACjBC,0BAA0B,EAC1BruD,UAAWgD,IANf,UAQI,qBAAKhD,UAAWw8C,EAAE,SAAlB,SAA6BrvC,EAAI,oBAAqB,uBACtD,sBAAKnN,UAAWw8C,EAAE,WAAlB,UACI,uBAAOx8C,UAAWw8C,EAAE,SAApB,SAA+BrvC,EAAI,gCAAiC,mCACpE,sBAAKnN,UAAWw8C,EAAE,UAAlB,UACI,qBAAKx8C,UAAWw8C,EAAE,SAAlB,SACI,uBAAOx8C,UAAWw8C,EAAE,SAAUptC,MAAO86G,EAAY/iE,SAAU,SAACroD,GAAD,OAAOqrH,EAAerrH,EAAE0vC,OAAOp/B,MAAO4H,gBAAgBlX,KAAK,OAAO0vD,YAAariD,EAAI,2BAA4B,gCAE9K,qBAAKnN,UAAWw8C,EAAE,UAAW16C,QA/D7B,WAChB,IAAI2oH,EAAez4F,aAAaC,QAAQ,oBAClCxjB,EAAO3H,KAAKE,MAAMyjH,GACxB,GAAmB,KAAfP,EACAG,EAAY57G,OACT,CACH,IAAI88G,EAAkB,GAElB,OAAJ98G,QAAI,IAAJA,KAAMnQ,KAAI,SAACyqB,GACP,IAAIgyC,EAAiB,GACrBhyC,EAAKgyC,UAAUz8D,KAAI,SAAC8N,IACXA,EAAQvM,KAAKmX,cAAeuD,SAAS2vG,IAAgB99G,EAAQwF,SAAS/R,KAAKmX,cAAeuD,SAAS2vG,KACpGnvD,EAAUz3D,KAAK8I,MAGnB2uD,EAAU1vD,OAAS,IACnB0d,EAAKgyC,UAAYA,EACjBwwD,EAAWjoH,KAAKylB,OAGxBshG,EAAYkB,KA2CA,SACI,sBAAMvrH,UAAWw8C,EAAE,eAAnB,SACI,qBAAKz6C,IAAKypH,WAAYxpH,IAAI,0BAM1C,sBAAKhC,UAAWw8C,EAAE,WAAlB,UACI,uBAAOx8C,UAAWw8C,EAAE,SAApB,SAA+BrvC,EAAI,8BAA+B,iCADtE,OAGQmF,QAHR,IAGQA,OAHR,EAGQA,EAAahU,KAAI,SAACyqB,EAAM5Q,GACpB,OACI,+BAEmB,IAAVA,GAAe4Q,EAAK/pB,OAASyb,IAC1B,sBAAKza,UAAWw8C,EAAE,6BAA+BzzB,EAAK/pB,OAASyb,EAAW,UAAY,KAAM3Y,QAAS,kBAAM4oH,EAAe3hG,EAAK/pB,OAA/H,UACI,gCAAQmO,EAAI4b,EAAKlpB,KAAK,GAAIkpB,EAAKlpB,KAAK,MACpC,sBAAMG,UAAU,eAAhB,SACI,sBAAMA,UAAU,uBAN1BmY,SAiB1B,sBAAKnY,UAAWw8C,EAAE,WAAlB,UACI,uBAAOx8C,UAAWw8C,EAAE,SAApB,SAA+BrvC,EAAI,uCAAwC,0CAD/E,OAGQi9G,QAHR,IAGQA,OAHR,EAGQA,EAAU9rH,KAAI,SAACyqB,EAA2B5Q,GAAmB,IAAD,EACxD,OACI,sBAAiBnY,UAAWw8C,EAAE,sBAA9B,UACI,sBAAKx8C,UAAWw8C,EAAE,6BAA+BzzB,EAAKwhG,YAAcA,EAAY,UAAY,KAAMzoH,QAAS,kBAAM0oH,EAAazhG,EAAKwhG,YAAcA,EAAY,GAAKxhG,EAAKwhG,YAAvK,UACI,gCAAQxhG,EAAKwhG,UAAUv2F,OAAO,GAAGC,cAAgBlL,EAAKwhG,UAAUnrH,MAAM,KACtE,sBAAMY,UAAW,iBAAmB+oB,EAAKwhG,YAAcA,EAAY,KAAO,aAGzExhG,EAAKwhG,YAAcA,IAApB,OAAkCxhG,QAAlC,IAAkCA,GAAlC,UAAkCA,EAAMgyC,iBAAxC,aAAkC,EAAiBz8D,KAAI,SAAC8N,EAAc+L,GAAmB,IAAD,IACpF,OACI,qBAAiBnY,UAAWw8C,EAAE,6BAC1B16C,QACI,WAAO,IAAD,EACFkoH,GAA2B,OAAP59G,QAAO,IAAPA,GAAA,UAAAA,EAASwF,gBAAT,eAAmB5S,OAAnB,OAA0BoN,QAA1B,IAA0BA,OAA1B,EAA0BA,EAASpN,OACvDgsH,EAAqBjiG,EAAKwhG,UAAWn+G,IAJjD,SAOI,yCAAQA,QAAR,IAAQA,OAAR,EAAQA,EAASvM,KAAjB,aAA0BuM,QAA1B,IAA0BA,GAA1B,UAA0BA,EAASwF,gBAAnC,aAA0B,EAAmB/R,KACzC,sBAAMG,UAAU,6BAAhB,SACK4R,KAAoB,OAAPxF,QAAO,IAAPA,GAAA,UAAAA,EAASwF,gBAAT,eAAmB5S,OAAnB,OAA0BoN,QAA1B,IAA0BA,OAA1B,EAA0BA,EAASpN,OAAQ,sBAAMgB,UAAU,uBAT3EmY,SARhBA,MA4BtB,uBACA,iC,sECyNLszG,GAxX6B,WAAO,IAAD,EAC/BxpH,EAAO,wBADwB,mBACvCe,EADuC,KACpCw5C,EADoC,OAEJl8C,oBAAkB,GAFd,mBAEvCorH,EAFuC,KAExBC,EAFwB,KAGtCp+G,EAAMN,EAAe8N,YAAYX,IAAjC7M,EACAO,EAAQipC,qBAAWjE,IAAnBhlC,IAkCF89G,EAAkB,CACpB,CACI/rH,KAAM,MACNwU,SAAU,UACVw3G,YAAaxgE,WACbygE,YAAaC,WACbC,WAAW,EACXpuE,KAAM,CAAC,8BAEX,CACI/9C,KAAM,SACNwU,SAAU,aACVw3G,YAAavgE,WACbwgE,YAAaG,WACbD,WAAW,EACXpuE,KAAM,CAAC,iCAEX,CACI/9C,KAAM,QACNwU,SAAU,YACVw3G,YAAatgE,WACbugE,YAAaI,WACbF,WAAW,EACXpuE,KAAM,CAAC,gCAEX,CACI/9C,KAAM,QACNwU,SAAU,QACVw3G,YAAargE,WACbsgE,YAAaK,WACbH,WAAW,EACXpuE,KAAM,CAAC,4BAEX,CACI/9C,KAAM,WACNwU,SAAU,WACVw3G,YAAapgE,WACbqgE,YAAaM,WACbJ,WAAW,EACXpuE,KAAM,CAAC,gCA7E+B,EA0IAt9C,oBAAkB,GA1IlB,mBA0IvC+rH,EA1IuC,KA0ItBC,EA1IsB,OA2IVhsH,mBAASsrH,GA3IC,mBA2IvCW,EA3IuC,KA2I3BC,EA3I2B,OA4IRlsH,mBA3DX,CACvB,CACI6qD,YAAY,EACZQ,YAAa,6BACb5mC,QAAS,UACT0nG,WAAY,CACRC,QAAS,IACTC,WAAY,IACZC,UAAW,IACXC,MAAO,IACPC,SAAU,MAGlB,CACI3hE,YAAY,EACZQ,YAAa,yBACb5mC,QAAS,SACT0nG,WAAY,CACRC,QAAS,IACTC,WAAY,IACZC,UAAW,IACXC,MAAO,IACPC,SAAU,MAGlB,CACI3hE,YAAY,EACZQ,YAAa,0BACb5mC,QAAS,UACT0nG,WAAY,CACRC,QAAS,IACTC,WAAY,IACZC,UAAW,IACXC,MAAO,IACPC,SAAU,MAGlB,CACI3hE,YAAY,EACZQ,YAAa,6BACb5mC,QAAS,UACT0nG,WAAY,CACRC,QAAS,IACTC,WAAY,IACZC,UAAW,IACXC,MAAO,IACPC,SAAU,QA/HwB,mBA4IvC7nG,EA5IuC,KA4I1BiH,EA5I0B,OA6IhB5rB,mBAAiBsrH,EAAgB,GAAGhuE,KAAK,IA7IzB,mBA6IvCmvE,EA7IuC,KA6I9BC,EA7I8B,OA8IA1sH,mBAAc,IA9Id,mBA8IvCosD,EA9IuC,KA8ItBC,EA9IsB,OA+IcrsD,mBAAiB,8BA/I/B,mBA+IvC2sH,EA/IuC,KA+IfC,EA/Ie,OAgJR5sH,mBAAc,CAChD+T,SAAU,MACVy3C,qBAAsB,EACtBD,oBAAqB,IAnJqB,mBAgJvCG,EAhJuC,KAgJ1BC,EAhJ0B,KAsJ9CjrD,qBAAU,WACN2rD,EAAmB,IACnB,IAAIE,EAAeC,EAAed,EAAYH,oBAAqBG,EAAYF,sBAI/E,OAFAiB,EAAsBF,EAAcb,EAAY33C,UAEzC,WACHs4C,EAAmB,OAExB,CAACX,IAGJ,IAAMe,EAAqB,uCAAG,WAAOzhD,EAAa+I,GAApB,mBAAA7J,EAAA,sEAECsD,EAAI,iBAAkBxC,GAFvB,cAEtB6hH,EAFsB,gBAGEr/G,EAAI,iBAAkBuG,EAAW,MAHnC,OAGtB+4G,EAHsB,OAKtBD,GAAkBC,KACdhgE,EAAM,IACN9pD,KAAK6pH,GACT//D,EAAI9pD,KAAK8pH,GAETzgE,EAAmBS,IAVG,2CAAH,wDA2CrBN,EAAiB,SAACh9B,EAAuBo9B,GAC3C,GAAqB,IAAjBA,EACA,OAAQp9B,GACJ,KAAK,EACD,OAAOk8B,EAAY33C,SAAW,KAAO64C,EAAe,GAAG5nB,WAC3D,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,OAAO0mB,EAAY33C,SAAW,IAAO64C,EAAc5nB,WAEvD,QACI,MAAO,QAEZ,GAAqB,IAAjB4nB,EACP,OAAQp9B,GACJ,KAAK,EACD,OAAOk8B,EAAY33C,SAAW,KAAO64C,EAAe,GAAG5nB,WAC3D,KAAK,EACL,KAAK,EACL,KAAK,EACD,OAAO0mB,EAAY33C,SAAW,IAAO64C,EAAc5nB,WACvD,KAAK,EACD,OAAO0mB,EAAY33C,SAAW,KAAO64C,EAAe,GAAG5nB,WAC3D,QACI,MAAO,QAEZ,GAAqB,IAAjB4nB,EACP,OAAQp9B,GACJ,KAAK,EACL,KAAK,EACD,OAAOk8B,EAAY33C,SAAW,IAAO64C,EAAc5nB,WACvD,KAAK,EACD,OAAO0mB,EAAY33C,SAAW,KAAO64C,EAAe,GAAG5nB,WAC3D,KAAK,EACL,KAAK,EACD,OAAO0mB,EAAY33C,SAAW,KAAO64C,EAAe,GAAG5nB,WAC3D,QACI,MAAO,OAEZ,IAAqB,IAAjB4nB,EAcP,MAAO,WAbP,OAAQp9B,GACJ,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,OAAOk8B,EAAY33C,SAAW,KAAO64C,EAAe,GAAG5nB,WAC3D,KAAK,EACD,OAAO0mB,EAAY33C,SAAW,KAAO64C,EAAe,GAAG5nB,WAE3D,QACI,MAAO,MAOvB,OACI,qCACI,qBAAKtlC,UAAWw8C,EAAE,aAAc96C,MAAO,CAAC0wD,OAAQ,WAAYtwD,QAAS,kBAAM6pH,GAAiB,IAA5F,SACI,qBAAK5pH,IAAKsrH,eAEd,cAAC,GAAD,CACI56G,KAAMi5G,EACN/jE,QAAS,kBAAMgkE,GAAiB,IAChCjqH,MAzQW,WACnB,IAkBIukD,EAAcpa,OAAOqa,WAEzB,OAAID,EAAc,KAdG,CACjB7iD,MAAO,OACPC,OAAQ,UACRgsD,aAAc,QAedpJ,EAAc,IAZG,CACjB7iD,MAAO,OACPC,OAAQ,UACRgsD,aAAc,QAfC,CACfjsD,MAAO,OACPC,OAAQ,UACRgsD,aAAc,QAqQHi+D,GACP7+D,WAAW,EAJf,SAOI,sBAAKzuD,UAAWgD,IAAhB,UACI,qBAAKhD,UAAWw8C,EAAE,YAElB,qBAAKx8C,UAAWw8C,EAAE,oBAAlB,SAEQkQ,EAAgBpuD,KAAI,SAACivH,EAAYp1G,GAC7B,OAAc,IAAVA,EAEI,sBAAKnY,UAAU,QAAf,UACI,uBACI6hD,UAAU,EACVC,MAAM,EACNF,aAAW,EACXG,OAAK,EACLhgD,IAAKwrH,EAAM5wG,QAGf,sBAAK3c,UAAS,4BAAuBqsH,EAAkB,OAAS,SAAhE,UACI,qBAAKrsH,UAAU,gBAAf,SACI,sBAAM8B,QAAS,kBAAMwqH,GAAmB,QAE5C,qBAAKtsH,UAAU,qBAAf,SAEQilB,EAAY3mB,KAAI,SAACymB,EAAckpC,GAC3B,OACI,qBAEIjuD,UAAS,uBAAkB+kB,EAAQomC,WAAa,kBAAoB,IACpErpD,QAAS,YA/G9C,SAACmsD,EAAYlpC,GACpCmoG,EAA0BjoG,EAAYgpC,GAAItC,aAC1Cz/B,EAAejH,EAAY3mB,KAAI,SAACymB,EAAc5M,GAAf,mBAAC,eACzB4M,GADwB,IAE3BomC,WAAYhzC,IAAU81C,QAE1BhC,EAAe,2BACRD,GADO,IAEVF,qBAAsBmC,EAAK,KAE/Bq+D,GAAmB,GAsG6CkB,CAAmBv/D,IAJ3B,SAOKlpC,EAAQ4mC,aANJsC,YAexBo+D,GACG,oBAAGrsH,UAAS,mBAAZ,UACKitH,EACD,cAAC,EAAD,CACIptH,KAAK,SACLG,UAAU,eACVC,MAAO,kBAAMqsH,GAAmB,WAvCxBn0G,GAiDhC,sBAAKnY,UAAU,QAAf,UACI,uBACQ6hD,UAAU,EACVC,MAAM,EACNF,aAAW,EACXG,OAAK,EACLhgD,IAAKwrH,EAAM5wG,QAEnB,mBAAG3c,UAAU,mBAAb,iCARwBmY,QAiB5C,qBAAKnY,UAAYw8C,EAAE,UAAnB,SACI,sBAAKx8C,UAAU,qBAAf,UACI,qBAAKA,UAAS,mBAAcqsH,EAAkB,UAAY,IAA1D,SAEQE,EAAWjuH,KAAI,SAACy7F,EAAU5hF,GAAX,OACX,qBAEInY,UAAW+5F,EAASiyB,UAAY,UAAY,GAC5CjqH,IAAKg4F,EAASiyB,UAAYjyB,EAAS8xB,YAAc9xB,EAAS+xB,YAC1DhqH,QAAS,kBAtLtBmsD,EAsL8C91C,EAAO4hF,EAASl6F,KArLrF2sH,EAAcD,EAAWjuH,KAAI,SAACyf,EAAS5F,GACnC,OAAO,2BACA4F,GADP,IAEIiuG,UAAW7zG,IAAU81C,QAG7BhC,EAAe,2BACRD,GADO,IAEVH,oBAAqBoC,EACrB55C,SAAUu3G,EAAgB39D,GAAIpuD,QAElCmtH,EAAWpB,EAAgB39D,GAAIrQ,KAAK,SACpC0uE,GAAmB,GAbG,IAACr+D,IAmLkB91C,QASrB,qBAAKnY,UAAU,UAAf,SACI,4BAAIuN,EAAEw/G,qBCrTvBU,GAhE0B,WAAO,IAAD,EAC9BxrH,EAAO,uBADuB,mBACtCe,EADsC,KACnCw5C,EADmC,OAEXl8C,oBAAc,GAFH,mBAEtCotH,EAFsC,KAE3BC,EAF2B,OAGXrtH,mBAAc,MAHH,mBAGtCstH,EAHsC,KAG3BC,EAH2B,KAIvCr3E,EAAWC,cACTlkC,EAAsBwI,YAAYX,GAAlC7H,kBAGRvR,qBAAU,WACR,IAAMknF,EAAU,SAACppF,GACfA,EAAE+E,iBACF8pH,GAAa,GACbE,EAAa/uH,IAGf,OADA+sC,OAAOvkC,iBAAiB,sBAAwB4gF,GACzC,kBAAMr8C,OAAOu8C,oBAAoB,gBAAiBF,MACxD,IAUH,OACE,sBAAKloF,UAAWgD,IAAhB,UACE,cAAC,EAAD,CAAYhD,UAAWw8C,EAAE,QACvB/4C,MAAOO,EAAOsB,UADhB,SAGE,qBAAKvD,IAAK+c,WAAM9c,IAAI,mBAGtB,cAAC,EAAD,CAAMnC,KAAK,uBAAuBC,KAAK,MAAME,UAAWw8C,EAAE,eAG1D,sBAAKx8C,UAAWw8C,EAAE,SAAlB,UACE,qBAAKx8C,UAAWw8C,EAAE,iBAAkB16C,QAhBpB,WACpB+pC,OAAOpxB,SAAS89B,UAeZ,SACE,qBAAKx2C,IAAK+rH,eAEZ,sBAAM9tH,UAAWw8C,EAAE,mBAEjBkxE,GAA2B,OAAdE,GAAsB,qCACjC,qBAAK9rH,QA1BW,WACxB00C,EAAS1M,GAAgBwN,QAAQ1M,sBAAqB,KAyBb5qC,UAAWw8C,EAAE,kBAA9C,SACE,cAAC,EAAD,CAAM38C,KAAK,uBAEb,sBAAMG,UAAWw8C,EAAE,sBAIW,aAAd,OAAjBjqC,QAAiB,IAAjBA,OAAA,EAAAA,EAAmBnG,UAClB,qCACE,cAAC,GAAD,IACA,sBAAMpM,UAAWw8C,EAAE,sBAIzB,cAAC,GAAD,WCxEKuxE,GAA+B,CACxC,CACI7uH,GAAG,eACHgF,MAAM,CAAC,0CAA2C,kBAEtD,CACIhF,GAAG,eACHgF,MAAM,CAAC,+BAAgC,mBAE3C,CACIhF,GAAG,iBACHgF,MAAM,CAAC,0CAA2C,kBAEtD,CACIhF,GAAG,aACHgF,MAAM,CAAC,2BAA4B,iB,S1HV/B8sE,O,iBAAAA,I,+BAAAA,I,+BAAAA,I,mCAAAA,I,4BAAAA,Q,KAOZ,I2HfKg9C,G3HyCUC,GA1BqB,WAAO,IAAD,EACvBhsH,EAAO,oBADgB,mBAC/Be,EAD+B,KAC5Bw5C,EAD4B,OAEFl8C,mBAAiB,GAFf,mBAE/B4tH,EAF+B,KAEnBC,EAFmB,KAGhC/qH,EAA4B,GAAb8qH,EACd16G,EAASuH,YAAY+vB,IAArBt3B,KAST,OALExS,qBAAU,WACRmtH,EAAcn9C,GAAUx9D,MACvB,CAACA,IAIJ,sBAAKxT,UAAWgD,IAAhB,UACE,qBAAKhD,UAAWw8C,EAAE,SAAlB,mBACMp5C,EADN,OAIA,qBAAKpD,UAAWw8C,EAAE,OAAlB,SACE,sBAAM96C,MAAO,CAAC0B,MAAM,GAAD,OAAIA,EAAJ,MAAepD,UAAWw8C,EAAE,uB4HgExC4xE,GAtFkB,WAAkB,IAAD,MAEarzG,YAAY+vB,IAA/D3B,EAFsC,EAEtCA,oBAAqBC,EAFiB,EAEjBA,oBAAqB51B,EAFJ,EAEIA,KAC1C61B,EAAsCD,EAAtCC,gBAAiB9V,EAAqB6V,EAArB7V,SAAUN,EAAWmW,EAAXnW,OAG7Bo7F,EAA+BllF,EAAoBmlF,OAAM,SAAArkF,GAAM,OAAwB,IAApBA,EAAOn2B,YAG1Ey6G,EAAY/7C,GAA2B9sC,SAASxS,OAAOtT,IACvD4uG,EAAYh8C,GAA2B9sC,SAASxS,OAAOvT,IACvD8uG,EAAcj8C,GAA2B9sC,SAASnS,SAAS3T,IAC3D8uG,EAAcl8C,GAA2B9sC,SAASnS,SAAS5T,IAC3DwT,EAAE,OAAGF,QAAH,IAAGA,GAAH,UAAGA,EAAQC,cAAX,aAAG,EAAgBC,GACrBC,EAAE,OAAGH,QAAH,IAAGA,GAAH,UAAGA,EAAQC,cAAX,aAAG,EAAgBE,GAErBm8C,EAAc,SAACo/C,GACjB,GAAmB,iBAAhBA,EACC,OAAON,EAGX,GAAmB,iBAAhBM,EAA+B,CAC9B,GAAGtlF,IAAoBtG,GAA+BuG,KAAM,OAAO,EACnE,GAAGlW,GAAMD,GAAMI,EACX,QAAUH,GAAMm7F,GAAan7F,GAAMo7F,GAClCr7F,GAAMo7F,GAAap7F,GAAMq7F,GACzBj7F,GAAYk7F,GAAel7F,GAAYm7F,GAI5C,IAAIt7F,IAAOD,IAAOI,EAAU,OAAO,EACnC,GAAGH,GAAMD,GAAMI,EAAS,OAAO,EAEnC,OAAO,GA+CX,MAAO,CACHg8C,cACAq/C,iBA9CkB,SAACC,GACnB,OAAQA,GACJ,IAAK,eACD,OAAO79C,GAAUx9D,GAAQw9D,GAAUxsE,aACvC,IAAK,eACD,OAAOwsE,GAAUx9D,GAAQw9D,GAAUvsE,aACvC,IAAK,iBACD,OAAOusE,GAAUx9D,GAAQw9D,GAAU89C,eACvC,IAAK,aACD,OAAO99C,GAAUx9D,GAAQw9D,GAAU+9C,WACvC,QACI,OAAO,MC8iBRC,GAxmBwB,CACnC9hC,KAAK,CACD+hC,UAAU,CACNC,QAAQ,CACJpC,SAAU,EACVH,WAAY,EACZC,UAAW,EACXF,QAAS,EACTG,MAAO,GAEXsC,QAAQ,CACJrC,SAAU,EACVH,WAAW,EACXC,UAAW,EACXF,QAAS,EACTG,MAAO,GAEXuC,SAAS,CACLtC,SAAU,EACVH,WAAW,EACXC,UAAU,EACVF,QAAQ,EACRG,MAAM,IAIdwC,WAAW,CACPH,QAAQ,CACJpC,SAAS,EACTH,WAAW,EACXC,UAAU,EACVF,QAAQ,EACRG,MAAM,GAEVsC,QAAQ,CACJrC,SAAS,EACTH,WAAW,EACXC,UAAW,EACXF,QAAQ,EACRG,MAAO,GAEXuC,SAAS,CACLtC,SAAS,EACTH,WAAY,EACZC,UAAW,EACXF,QAAS,EACTG,MAAO,IAIfyC,WAAW,CACPJ,QAAQ,CACJpC,SAAU,EACVH,WAAW,EACXC,UAAW,EACXF,QAAS,EACTG,MAAO,GAEXsC,QAAQ,CACJrC,SAAU,EACVH,WAAY,EACZC,UAAW,EACXF,QAAS,EACTG,MAAO,GAEXuC,SAAS,CACLtC,SAAU,EACVH,WAAY,EACZC,UAAW,EACXF,QAAS,EACTG,MAAO,IAIf0C,aAAa,CACTL,QAAQ,CACJpC,SAAU,EACVH,WAAY,EACZC,UAAU,EACVF,QAAS,EACTG,MAAO,GAEXsC,QAAQ,CACJrC,SAAU,EACVH,WAAY,EACZC,UAAW,EACXF,QAAS,EACTG,MAAO,GAEXuC,SAAS,CACLtC,SAAU,EACVH,WAAY,EACZC,UAAW,EACXF,QAAS,EACTG,MAAO,IAIf2C,cAAc,CACVN,QAAQ,CACJpC,SAAU,EACVH,WAAY,EACZC,UAAW,EACXF,QAAS,EACTG,MAAO,GAEXsC,QAAQ,CACJrC,SAAU,EACVH,WAAY,EACZC,UAAW,EACXF,QAAS,EACTG,MAAO,GAEXuC,SAAS,CACLtC,SAAS,EACTH,WAAY,EACZC,UAAW,EACXF,QAAS,EACTG,MAAO,KAInB4C,0BAA0B,CACtBR,UAAU,CACNC,QAAQ,CACJpC,SAAU,YACVH,YAAa,YACbC,UAAW,YACXF,QAAS,YACTG,MAAO,aAEXsC,QAAQ,CACJrC,SAAU,YACVH,YAAa,WACbC,UAAW,YACXF,QAAS,YACTG,MAAO,aAEXuC,SAAS,CACLtC,SAAU,YACVH,WAAY,YACZC,UAAW,YACXF,QAAS,YACTG,MAAO,cAIfwC,WAAW,CACPH,QAAQ,CACJpC,SAAU,YACVH,YAAa,YACbC,UAAW,YACXF,QAAS,YACTG,MAAO,aAEXsC,QAAQ,CACJrC,SAAU,YACVH,YAAa,WACbC,UAAW,YACXF,QAAS,YACTG,MAAO,aAEXuC,SAAS,CACLtC,SAAU,YACVH,WAAY,YACZC,UAAW,YACXF,QAAS,YACTG,MAAO,cAIfyC,WAAW,CACPJ,QAAQ,CACJpC,SAAU,YACVH,WAAY,YACZC,UAAW,YACXF,QAAS,YACTG,MAAO,aAEXsC,QAAQ,CACJrC,SAAU,SACVH,WAAY,YACZC,UAAW,YACXF,QAAS,WACTG,MAAO,aAEXuC,SAAS,CACLtC,SAAU,YACVH,WAAY,YACZC,UAAW,YACXF,QAAS,YACTG,MAAO,cAIf0C,aAAa,CACTL,QAAQ,CACJpC,SAAU,YACVH,WAAY,YACZC,UAAW,YACXF,QAAS,YACTG,MAAO,aAEXsC,QAAQ,CACJrC,SAAU,YACVH,WAAY,YACZC,UAAW,YACXF,QAAS,YACTG,MAAO,aAEXuC,SAAS,CACLtC,SAAU,YACVH,WAAY,YACZC,UAAW,YACXF,QAAS,WACTG,MAAO,cAIf2C,cAAc,CACVN,QAAQ,CACJpC,UAAW,YACXH,WAAY,YACZC,UAAW,YACXF,QAAS,YACTG,MAAO,aAEXsC,QAAQ,CACJrC,SAAU,YACVH,WAAY,YACZC,UAAW,YACXF,QAAS,YACTG,MAAO,aAEXuC,SAAS,CACLtC,SAAU,YACVH,WAAY,YACZC,UAAW,YACXF,QAAS,YACTG,MAAO,eAOnB6C,gBAAgB,CACZT,UAAU,CACNC,QAAQ,CACJpC,SAAU,YACVH,WAAY,YACZC,UAAW,YACXF,QAAS,YACTG,OAAQ,aAEZsC,QAAQ,CACJrC,SAAU,YACVH,WAAY,YACZC,UAAW,YACXF,QAAS,YACTG,OAAQ,aAEZuC,SAAS,CACLtC,SAAU,YACVH,WAAY,YACZC,UAAW,YACXF,QAAS,YACTG,OAAQ,cAIhBwC,WAAW,CACPH,QAAQ,CACJpC,SAAU,YACVH,WAAY,YACZC,UAAW,UACXF,QAAS,YACTG,OAAQ,aAEZsC,QAAQ,CACJrC,SAAU,YACVH,WAAY,WACZC,UAAW,YACXF,QAAS,YACTG,OAAQ,YAEZuC,SAAS,CACLtC,SAAU,YACVH,WAAY,YACZC,UAAW,WACXF,QAAS,YACTG,OAAQ,cAIhByC,WAAW,CACPJ,QAAQ,CACJpC,SAAU,QACVH,WAAY,YACZC,UAAW,YACXF,QAAS,YACTG,MAAO,aAEXsC,QAAQ,CACJrC,SAAU,YACVH,WAAY,YACZC,UAAW,YACXF,QAAS,YACTG,MAAO,aAEXuC,SAAS,CACLtC,SAAU,YACVH,WAAY,YACZC,UAAW,YACXF,QAAS,YACTG,MAAO,cAIf0C,aAAa,CACTL,QAAQ,CACJpC,UAAW,WACXH,WAAY,WACZC,UAAW,YACXF,QAAS,YACTG,MAAO,aAEXsC,QAAQ,CACJrC,SAAU,YACVH,WAAY,YACZC,UAAW,YACXF,QAAS,YACTG,MAAO,aAEXuC,SAAS,CACLtC,SAAU,YACVH,WAAY,YACZC,UAAW,UACXF,QAAS,YACTG,MAAO,YAIf2C,cAAc,CACVN,QAAQ,CACJpC,UAAW,YACXH,WAAY,YACZC,UAAW,YACXF,QAAS,YACTG,MAAO,aAEXsC,QAAQ,CACJrC,UAAW,YACXH,WAAY,YACZC,UAAW,YACXF,QAAS,YACTG,MAAO,aAEXuC,SAAS,CACLtC,SAAU,YACVH,WAAY,WACZC,UAAW,YACXF,QAAS,YACTG,MAAO,eAMnB8C,iBAAiB,CACbV,UAAU,CACNC,QAAQ,CACJpC,SAAU,YACVH,YAAa,YACbC,UAAW,UACXF,QAAS,YACTG,OAAQ,aAEZsC,QAAQ,CACJrC,SAAU,YACVH,YAAa,YACbC,UAAW,YACXF,QAAS,YACTG,OAAQ,aAEZuC,SAAS,CACLtC,SAAU,YACVH,YAAa,YACbC,UAAW,YACXF,QAAS,YACTG,OAAQ,cAIhBwC,WAAW,CACPH,QAAQ,CACJpC,SAAU,YACVH,YAAa,YACbC,UAAW,WACXF,QAAS,YACTG,MAAO,aAEXsC,QAAQ,CACJrC,SAAU,WACVH,YAAa,YACbC,UAAW,YACXF,QAAS,YACTG,OAAQ,WAEZuC,SAAS,CACLtC,SAAU,YACVH,YAAa,YACbC,UAAW,YACXF,QAAS,YACTG,OAAQ,cAIhByC,WAAW,CACPJ,QAAQ,CACJpC,SAAU,YACVH,WAAY,WACZC,UAAW,YACXF,QAAS,YACTG,OAAQ,aAEZsC,QAAQ,CACJrC,SAAU,YACVH,WAAY,YACZC,UAAW,YACXF,QAAS,YACTG,OAAQ,aAEZuC,SAAS,CACLtC,SAAU,YACVH,WAAY,YACZC,UAAW,YACXF,QAAS,YACTG,MAAO,cAIf0C,aAAa,CACTL,QAAQ,CACJpC,SAAU,UACVH,WAAY,YACZC,UAAW,YACXF,QAAS,YACTG,OAAQ,YAEZsC,QAAQ,CACJrC,SAAU,YACVH,WAAY,YACZC,UAAW,YACXF,QAAS,YACTG,MAAO,aAEXuC,SAAS,CACLtC,SAAU,YACVH,WAAY,YACZC,UAAW,YACXF,QAAS,YACTG,MAAO,cAIf2C,cAAc,CACVN,QAAQ,CACJpC,SAAU,YACVH,WAAY,WACZC,UAAW,YACXF,QAAS,YACTG,OAAQ,aAEZsC,QAAQ,CACJrC,SAAU,YACVH,WAAY,YACZC,UAAW,YACXF,QAAS,YACTG,MAAO,aAEXuC,SAAS,CACLtC,SAAU,YACVH,WAAY,YACZC,UAAW,YACXF,QAAS,YACTG,MAAO,cAMnB+C,kBAAkB,CACdX,UAAU,CACNC,QAAQ,CACJpC,SAAU,YACVH,YAAa,YACbC,UAAW,YACXF,QAAS,YACTG,MAAO,aAEXsC,QAAQ,CACJrC,SAAU,YACVH,YAAa,YACbC,UAAW,YACXF,QAAS,YACTG,OAAQ,aAEZuC,SAAS,CACLtC,SAAU,WACVH,WAAY,YACZC,UAAW,YACXF,QAAS,YACTG,OAAQ,cAIhBwC,WAAW,CACPH,QAAQ,CACJpC,SAAU,WACVH,YAAa,YACbC,UAAW,YACXF,QAAS,YACTG,MAAO,aAEXsC,QAAQ,CACJrC,SAAU,YACVH,YAAa,YACbC,UAAW,YACXF,QAAS,YACTG,MAAO,aAEXuC,SAAS,CACLtC,SAAU,YACVH,YAAa,YACbC,UAAW,YACXF,QAAS,YACTG,OAAQ,cAIhByC,WAAW,CACPJ,QAAQ,CACJpC,SAAU,WACVH,WAAY,YACZC,UAAW,YACXF,QAAS,WACTG,OAAQ,aAEZsC,QAAQ,CACJrC,SAAU,YACVH,WAAY,YACZC,WAAY,WACZF,QAAS,YACTG,OAAQ,YAEZuC,SAAS,CACLtC,SAAU,YACVH,WAAY,YACZC,UAAW,YACXF,QAAS,YACTG,OAAQ,cAIhB0C,aAAa,CACTL,QAAQ,CACJpC,UAAW,YACXH,WAAY,YACZC,UAAW,YACXF,QAAS,YACTG,OAAQ,YAEZsC,QAAQ,CACJrC,SAAU,YACVH,WAAY,YACZC,UAAW,YACXF,QAAS,YACTG,OAAQ,YAEZuC,SAAS,CACLtC,SAAU,YACVH,WAAY,YACZC,UAAW,YACXF,QAAS,WACTG,MAAO,cAIf2C,cAAc,CACVN,QAAQ,CACJpC,UAAW,WACXH,WAAY,YACZC,UAAW,YACXF,QAAS,YACTG,OAAQ,aAEZsC,QAAQ,CACJrC,SAAU,YACVH,WAAY,YACZC,UAAW,YACXF,QAAS,YACTG,OAAQ,aAEZuC,SAAS,CACLtC,SAAU,YACVH,WAAY,WACZC,UAAW,YACXF,QAAS,YACTG,MAAO,gB,SFnmBlBmB,K,oBAAAA,E,kBAAAA,E,mBAAAA,Q,KAMUA,IGNV6B,GHMU7B,O,SGNV6B,K,sBAAAA,E,wBAAAA,E,wBAAAA,E,4BAAAA,E,+BAAAA,Q,KAQUA,ICRHC,GDQGD,MEwDAE,GApDW,WA6CtB,MAAO,CACHC,aA5CiB,SAAC5gH,GAClB,OAAGA,IAAU,GAAKA,GAAS,IAAYygH,GAA6BI,UAEhE7gH,GAAS,EAASygH,GAA6BK,WAE/C9gH,IAAU,KAAQA,GAAS,IAAcygH,GAA6BM,WAEtE/gH,GAAS,GAAKA,EAAQ,IAAaygH,GAA6BO,aAEhEhhH,EAAQ,EAAUygH,GAA6BQ,cAE5C,MAkCPC,mBA/BuB,SAACC,GACxB,OAAGA,GAAK,IAAWvC,GAAgCwC,SAEhDD,GAAK,GAAKA,EAAI,IAAWvC,GAAgCyC,QAEzDF,GAAK,KAAYvC,GAAgC0C,QAG7C,MAwBPC,uBApB2B,SAACnnF,EAAgDe,EAAqCxlB,GACjH,GAAiB,OAAdykB,GAA8B,OAARe,EAAa,CAClC,IAAMl2B,EAAW26G,GAAejqG,GAASykB,GAAWe,GAEpD,MAAO,CACHuiF,SAFqDz4G,EAAlDy4G,SAGHH,WAHqDt4G,EAAxCs4G,WAIbC,UAJqDv4G,EAA5Bu4G,UAKzBF,QALqDr4G,EAAjBq4G,QAMpCG,MANqDx4G,EAATw4G,OASpD,OAAO,QC6BA+D,GAnES,WAEpB,IAAMp6E,EAAWC,cAFS,EAIXx0C,EAAO,yBAJI,mBAInBe,EAJmB,KAIhBw5C,EAJgB,KAKlBrvC,EAAQF,EAAe8N,YAAYX,IAAnCjN,IALkB,EAMY4N,YAAY+vB,IAA1C1B,EANkB,EAMlBA,oBAAqB51B,EANH,EAMGA,KANH,EAOclT,mBAAiB,GAP/B,mBAOLuwH,GAPK,WAQlBjC,EAAqBR,KAArBQ,iBACAvlF,EAA0CD,EAA1CC,gBAAiBE,EAAyBH,EAAzBG,WAAYhW,EAAa6V,EAAb7V,SATX,EAU2Cw8F,KAA7DO,EAVkB,EAUlBA,mBAAoBN,EAVF,EAUEA,aAAcW,EAVhB,EAUgBA,uBAIpC9xC,EAAa,SAAC9lE,GAChB,GAAIvF,IAASuF,EACT,MAAO,UAyBf,OACI,sBAAK/Y,UAAWgD,IAAhB,UAEI,qBAAKhD,UAAWw8C,EAAE,oBAAlB,SAEQuxE,GAAazvH,KAAI,SAACosB,EAAMthB,GAAP,OACb,cAAC,GAAD,CACIw0C,KAAMzwC,EAAIud,EAAKxmB,MAAM,GAAIwmB,EAAKxmB,MAAM,IACpClE,UAAWw8C,EAAE,SAAUqiC,EAAWn0D,EAAKxrB,KACvC2+C,UAAU,EACV/9C,KAAK,SAELG,MAAO,kBAjCZ,SAAC8Y,EAAU3P,GAE1B,GADAynH,EAAgBznH,EAAI,GACV,mBAAN2P,IACIswB,IAAoBtG,GAA+BuG,MACnDkN,EAAS1M,GAAgBwN,QAAQ3M,yBAAwB,IAEzDpB,GAAchW,GAAY8V,IAAoBtG,GAA+BuG,MAAM,CACnF,IAAMiB,EAAM+lF,EAAmB/8F,GACzBiW,EAAYwmF,EAAazmF,GAC/B,GAAkB,OAAdC,GAA8B,OAARe,EAAc,CACpC,IAAMb,EAAsBinF,EAAuBnnF,EAAWe,EAAKlB,GACnEmN,EAAS1M,GAAgBwN,QAAQ9M,gBAAgBhB,IACjDgN,EAAS1M,GAAgBwN,QAAQ7M,mBAAmBF,IACpDiM,EAAS1M,GAAgBwN,QAAQ5M,uBAAuBhB,IACxD8M,EAAS1M,GAAgBwN,QAAQ3M,yBAAwB,KAIrE6L,EAAS1M,GAAgBwN,QAAQlzB,WAAWrL,IAeXqL,CAAWsG,EAAKxrB,GAAIkK,IACjCrG,SAAU6rH,EAAiBlkG,EAAKxrB,KAF3BkK,QAUrB,cAAC,GAAD,QC/CG0nH,GApBY,WAAO,IAAD,EACf7uH,EAAO,kBAAbe,EADqB,oBAGrB6mC,EAA0B9uB,YAAY+vB,IAAtCjB,sBAEV,OACE,mCACEA,EAMA,KALA,sBAAK7pC,UAAWgD,IAAhB,UACE,cAAC,GAAD,IACA,cAAC,GAAD,U,8BC+FO+tH,GAtGW,WACxB,IAAMv6E,EAAWC,cADa,EAEfx0C,EAAO,sBAFQ,mBAEvBe,EAFuB,KAEpBw5C,EAFoB,KAGtBrvC,EAAQF,EAAe8N,YAAYX,IAAnCjN,IAHsB,EAIY7M,oBAAkB,GAJ9B,mBAIvB0wH,EAJuB,KAKxBp6E,GALwB,KAKjB7K,MALiB,EAMgBhxB,YAAYX,GAAlDnE,EANsB,EAMtBA,eAAgB1D,EANM,EAMNA,kBAiDxB,OACE,sBAAKvS,UAAWgD,IAAhB,UACE,qBAAKhD,UAAWw8C,EAAE,QAAlB,SACE,cAAC,EAAD,CAAM38C,KAAK,uBAAuBC,KAAK,UAEzC,qBAAKE,UAAWw8C,EAAE,QAAlB,SA3BiC,WAAd,OAAjBjqC,QAAiB,IAAjBA,OAAA,EAAAA,EAAmBnG,SAEnB,8BACE,gFADF,QAEE,sBAAMpM,UAAWw8C,EAAE,iBAAnB,4DAMJ,8BACE,+BACGrvC,EAAI,2BAA4B,sBAFrC,OAKE,sBAAMnN,UAAWw8C,EAAE,iBAAnB,SACGrvC,EAAI,2BAA4B,4BAuBrC,sBAAKnN,UAAWw8C,EAAE,WAAlB,UACE,cAAC,GAAD,CACEoB,KAAMzwC,EAAI,2BAA4B,qBACtCnN,UAAWw8C,EAAE,uBACbntC,KAAK,4BACLwuC,UAAU,EACV/9C,KAAK,SACLG,MAjEQ,WAEE,QADL,OAAGgW,QAAH,IAAGA,OAAH,EAAGA,EAAgB4/B,KAAKzpC,UAEjCoqC,EAAS1M,GAAgBwN,QAAQlzB,WAAW,iBAC5CoyB,EAAS1M,GAAgBwN,QAAQruB,cAAc,SAC/CutB,EAAS1M,GAAgBwN,QAAQpN,8BAEjCsM,EAAS1M,GAAgBwN,QAAQlzB,WAAW,UAC5CoyB,EAAS1M,GAAgBwN,QAAQ19B,eA0D7B1a,GAAG,yBAGH8xH,GACA,cAAC,GAAD,CACEpzE,KAAMzwC,EAAI,6BAA8B,qBACxCkC,KAAK,4BACLrP,UAAWw8C,EAAE,eACbqB,UAAU,EACV/9C,KAAK,SACLG,MAlFO,WACfu2C,EAAS1M,GAAgBwN,QAAQ19B,aACjCg9B,EAAKnzC,MAAMO,EAAOG,OAiFVjF,GAAG,kCAIT,qBAAKc,UAAWw8C,EAAE,cAAlB,SACE,8BAAIrvC,EAAI,8BAA+B,mgBAAvC,kB,+BJ5GI2iH,K,cAAAA,E,eAAAA,Q,KKAZ,IAOemB,GAPW,CACtB1/B,SAAU,WACVH,QAAS,UACT8/B,UAAW,YACX7/B,MAAO,QACPC,WAAY,c,kDCgGD6/B,GA7FgC,CAC7C,CACE98G,SAAU48G,GAAkB7/B,QAC5B7wF,MAAO6wH,WACPnrF,MAAO,CAAC,4BAA4B,sDACpCorF,eAAe,EACfC,aAAa,EACbC,aAAc,CACZzxH,KAAMgwH,GAAmBvtG,MACzB0sB,KAAM,CAAC,CACLhJ,MAAO,4BACPyc,OAAQ,IACP,CACDzc,MAAO,8BACPyc,OAAQ,MAGZ6qE,MAAO,IAET,CACEl5G,SAAU48G,GAAkB3/B,WAC5B/wF,MAAOixH,WACPvrF,MAAO,CAAC,+BAA+B,2DACvCorF,eAAe,EACfC,aAAa,EACbC,aAAc,CACZzxH,KAAMgwH,GAAmBvtG,MACzB0sB,KAAM,CAAC,CACLhJ,MAAO,4BACPyc,OAAQ,IACP,CACDzc,MAAO,8BACPyc,OAAQ,MAGZ6qE,MAAO,IAET,CACEl5G,SAAU48G,GAAkBC,UAC5B3wH,MAAOkxH,WACPxrF,MAAO,CAAC,8BAA8B,6BACtCorF,eAAe,EACfC,aAAa,EACbC,aAAc,CACZzxH,KAAMgwH,GAAmBvtG,MACzB0sB,KAAM,CAAC,CACLhJ,MAAO,4BACPyc,OAAQ,IACP,CACDzc,MAAO,8BACPyc,OAAQ,MAGZ6qE,MAAO,IAET,CACEl5G,SAAU48G,GAAkB5/B,MAC5B9wF,MAAOmxH,WACPzrF,MAAO,CAAC,0BAA0B,mDAClCorF,eAAe,EACfC,aAAa,EACbC,aAAc,CACZzxH,KAAMgwH,GAAmBvtG,MACzB0sB,KAAM,CAAC,CACLhJ,MAAO,4BACPyc,OAAQ,IACP,CACDzc,MAAO,8BACPyc,OAAQ,MAGZ6qE,MAAO,IAET,CACEl5G,SAAU48G,GAAkB1/B,SAC5BhxF,MAAOoxH,WACP1rF,MAAO,CAAC,6BAA6B,8CACrCorF,eAAe,EACfC,aAAa,EACbC,aAAc,CACZzxH,KAAMgwH,GAAmBvtG,MACzB0sB,KAAM,CAAC,CACLhJ,MAAO,4BACPyc,OAAQ,IACP,CACDzc,MAAO,8BACPyc,OAAQ,MAGZ6qE,MAAO,KCTIqE,GAhFY,SAAC,GAA+F,IAA7F7sG,EAA4F,EAA5FA,QAAS8sG,EAAmF,EAAnFA,YAAaC,EAAsE,EAAtEA,eAAgBC,EAAsD,EAAtDA,oBAAqB55G,EAAiC,EAAjCA,MAAOg/C,EAA0B,EAA1BA,eACtFpuC,EAA4BhE,EAC1B5X,EAAQF,EAAe8N,YAAYX,IAAnCjN,IAF8G,EAGvGlL,EAAO,0BAHgG,mBAG5Gu6C,GAH4G,aAI1Fl8C,oBAAkB,GAJwE,mBAI/Gy9C,EAJ+G,KAIvGi0E,EAJuG,OAKpF1xH,oBAAS,GAL2E,mBAK/G87C,EAL+G,KAKpG61E,EALoG,KAOtH,OACI,mCACI,sBAAKjyH,UAAWw8C,EAAE,gBAAkB,KAAOuB,EAAS,sBAAwB,IACxEX,aAAc,WAAO40E,GAAU,GAAM76D,EAAeh/C,IACpDklC,aAAc,WACV20E,GAAU,GACVC,GAAa,GACb96D,GAAgB,IALxB,UAQI,qBAAKn3D,UAAWw8C,EAAE,2BAIlB,uBACIx8C,UAAWw8C,EAAE,oBAAsBJ,EAAY,UAAY,KAC3DyF,UAAU,EACVC,MAAM,EACNF,aAAW,EACXG,OAAK,EACLjgD,QAAS,kBAAMmwH,GAAa,IAC5BvwH,MAAO,CAAEstD,QAAS5S,EAAY,QAAU,QAP5C,SASI,wBAAQr6C,IAAKgnB,EAAKwkG,MAAOztH,KAAK,gBAElC,qBACIE,UAAWw8C,EAAE,cAAgBzzB,EAAKuoG,YAAc,gBAAkB,KAAOl1E,EAAY,GAAK,YAC1Fr6C,IAAKgnB,EAAKxoB,MACVmB,MAAO,CAAEstD,QAAS5S,EAAY,OAAS,SACvCp6C,IAAI,YAIJ+mB,EAAKsoG,eACD,sBAAKrxH,UAAWw8C,EAAE,eAAlB,UACI,sBAAMx8C,UAAWw8C,EAAE,sBACnB,sBAAMx8C,UAAWw8C,EAAE,qBAAnB,SAA0CrvC,EAAI,cAAe,oBAKrE4b,EAAKuoG,aACD,sBAAMtxH,UAAWw8C,EAAE,aAAnB,SAAkCrvC,EAAI,YAAa,eAG3D,qBAAKnN,UAAWw8C,EAAE,SAAlB,SAA6BrvC,EAAI4b,EAAKkd,MAAM,GAAIld,EAAKkd,MAAM,MAE3D,qBACI/mC,GAAI6pB,EAAKkd,MAAM,GACfjmC,UAAWw8C,EAAE,QACb16C,QAAS,WACLmwH,GAAa,GACbH,EAAe/oG,GACf8oG,GAAY,GACZE,EAAoB55G,IAP5B,SAWI,cAAC,GAAD,CACIylC,KAAMzwC,EAAI,OAAQ,QAClBnN,UAAWw8C,EAAE,eACbqB,UAAU,EACV/9C,KAAK,SACLZ,GAAI6pB,EAAKkd,MAAM,a,SCqDxBisF,GA/GwB,SAAC,GAA2F,IAAD,EAAxF11E,EAAwF,EAAxFA,EAAGjvC,EAAqF,EAArFA,EAAGmmD,EAAkF,EAAlFA,UAAyB3qC,GAAyD,EAAvEkhG,aAAuE,EAAzDlhG,MAAMgpE,EAAmD,EAAnDA,cAAe55E,EAAoC,EAApCA,MAAOg6G,EAA6B,EAA7BA,kBAEzFZ,EAAiBxoG,EAAjBwoG,aACF/kH,EAAW2kH,GAEbhoF,EACApuB,YAAY+vB,IADZ3B,oBAGJ,OACI,sBAAKnpC,UAAWw8C,EAAE,QAAD,OAASkX,EAAY,MAAQ,OAA9C,UAEQA,GACI,qBAAK1zD,UAAWw8C,EAAE,UAK1B,qBAAKx8C,UAAWw8C,EAAE,UAAlB,SAEQu1C,EAAgB,cAAC,GAAD,CAASt/E,MAAM,IAAlB,OACT8+G,QADS,IACTA,GADS,UACTA,EAActiF,YADL,aACT,EAAoB3wC,KAAI,SAACyqB,EAAW5Q,GAChC,OACI,sBAAKnY,UAAWw8C,EAAE,eAAlB,WAEoB,OAAZ+0E,QAAY,IAAZA,OAAA,EAAAA,EAAczxH,QAASgwH,GAAmBsC,MACtC,qBAAKrwH,IAAKgnB,EAAK25B,OAAQ1gD,IAAI,UAC3B,uBACI6/C,UAAU,EACVC,MAAM,EACNF,aAAW,EACXG,OAAK,EACLhgD,IAAKgnB,EAAK25B,SAGtB,qBAAK1iD,UAAWw8C,EAAE,+BAAlB,SACI,qBAAKx8C,UAAWw8C,EAAE,qBAAlB,SAAyCzzB,EAAKkd,YAbf9tB,QAoB3D,qBAAKnY,UAAWw8C,EAAE,YAAlB,UAESu1C,GACG,qCACI,sBAAK/xF,UAAWw8C,EAAE,iBAAlB,UACI,sBAAKx8C,UAAWw8C,EAAE,iBAA6B,IAAVrkC,EAAc,UAAY,aAAcjZ,GAAIsN,EAAS,GAAGy5B,MAAM,GAAnG,UAEkB,IAAV9tB,EACM,qBAAKzW,MAAO,CAAE0B,MAAO,IAAMlE,GAAIsN,EAAS,GAAGy5B,MAAM,GAAIlkC,IAAKspD,WAAcrpD,IAAKwK,EAAS,GAAGy5B,MAAM,KAC/F,qBAAKvkC,MAAO,CAAE0B,MAAO,IAAMlE,GAAIsN,EAAS,GAAGy5B,MAAM,GAAIlkC,IAAKgqH,WAAQjqH,QAAS,kBAAMqwH,EAAkB,IAAInwH,IAAKwK,EAAS,GAAGy5B,MAAM,KAGpIkD,EAAoB,GAAGr1B,UAAY,qBAAK9T,UAAWw8C,EAAE,aAAcz6C,IAAKswH,WAAWnzH,GAAIsN,EAAS,GAAGy5B,MAAM,GAAIjkC,IAAKwK,EAAS,GAAGy5B,MAAM,QAG5I,sBAAKjmC,UAAWw8C,EAAE,iBAA6B,IAAVrkC,EAAc,UAAY,aAAcjZ,GAAIsN,EAAS,GAAGy5B,MAAM,GAAnG,UAEkB,IAAV9tB,EACM,qBAAKzW,MAAO,CAAE0B,MAAO,GAAI8iE,UAAW,GAAKnkE,IAAKupD,WAAcpsD,GAAIsN,EAAS,GAAGy5B,MAAM,GAAIjkC,IAAKwK,EAAS,GAAGy5B,MAAM,KAC7G,qBAAKlkC,IAAKkqH,WAAQnqH,QAAS,kBAAMqwH,EAAkB,IAAIjzH,GAAIsN,EAAS,GAAGy5B,MAAM,GAAIjkC,IAAKwK,EAAS,GAAGy5B,MAAM,KAG9GkD,EAAoB,GAAGr1B,UAAY,qBAAK9T,UAAWw8C,EAAE,aAAcz6C,IAAKswH,WAAWnzH,GAAIsN,EAAS,GAAGy5B,MAAM,GAAIjkC,IAAKwK,EAAS,GAAGy5B,MAAM,QAG5I,sBAAKjmC,UAAWw8C,EAAE,iBAA6B,IAAVrkC,EAAc,UAAY,aAAcjZ,GAAIsN,EAAS,GAAGy5B,MAAM,GAAnG,UAEkB,IAAV9tB,EACM,qBAAKzW,MAAO,CAAE0B,MAAO,IAAMrB,IAAKwpD,WAAcrsD,GAAIsN,EAAS,GAAGy5B,MAAM,GAAIjkC,IAAKwK,EAAS,GAAGy5B,MAAM,KAC/F,qBAAKlkC,IAAKmqH,WAAQ9oH,MAAO,GAAItB,QAAS,kBAAMqwH,EAAkB,IAAIjzH,GAAIsN,EAAS,GAAGy5B,MAAM,GAAIjkC,IAAKwK,EAAS,GAAGy5B,MAAM,KAGzHkD,EAAoB,GAAGr1B,UAAY,qBAAK9T,UAAWw8C,EAAE,aAAcz6C,IAAKswH,WAAWnzH,GAAIsN,EAAS,GAAGy5B,MAAM,GAAIjkC,IAAKwK,EAAS,GAAGy5B,MAAM,QAG5I,sBAAKjmC,UAAWw8C,EAAE,iBAA6B,IAAVrkC,EAAc,UAAY,aAAcjZ,GAAIsN,EAAS,GAAGy5B,MAAM,GAAnG,UAEkB,IAAV9tB,EACM,qBAAKpW,IAAKypD,WAActsD,GAAIsN,EAAS,GAAGy5B,MAAM,GAAIjkC,IAAKwK,EAAS,GAAGy5B,MAAM,KACzE,qBAAKlkC,IAAKoqH,WAAQrqH,QAAS,kBAAMqwH,EAAkB,IAAIjzH,GAAIsN,EAAS,GAAGy5B,MAAM,GAAIjkC,IAAKwK,EAAS,GAAGy5B,MAAM,KAG9GkD,EAAoB,GAAGr1B,UAAY,qBAAK9T,UAAWw8C,EAAE,aAAcz6C,IAAKswH,WAAWnzH,GAAIsN,EAAS,GAAGy5B,MAAM,GAAIjkC,IAAKwK,EAAS,GAAGy5B,MAAM,QAG5I,sBAAKjmC,UAAWw8C,EAAE,iBAA6B,IAAVrkC,EAAc,UAAY,aAAcjZ,GAAIsN,EAAS,GAAGy5B,MAAM,GAAnG,UAEkB,IAAV9tB,EACM,qBAAKpW,IAAK0pD,WAAcvsD,GAAIsN,EAAS,GAAGy5B,MAAM,GAAIjkC,IAAKwK,EAAS,GAAGy5B,MAAM,KACzE,qBAAKlkC,IAAKqqH,WAAQtqH,QAAS,kBAAMqwH,EAAkB,IAAIjzH,GAAIsN,EAAS,GAAGy5B,MAAM,GAAIjkC,IAAKwK,EAAS,GAAGy5B,MAAM,KAG9GkD,EAAoB,GAAGr1B,UAAY,qBAAK9T,UAAWw8C,EAAE,aAAct9C,GAAIsN,EAAS,GAAGy5B,MAAM,GAAIlkC,IAAKswH,WAAWrwH,IAAKwK,EAAS,GAAGy5B,MAAM,WAIhJ,qBAAKjmC,UAAWw8C,EAAE,kBAAlB,SACI,qBAAKx8C,UAAWw8C,EAAE,sBAAlB,SAAyC,+BAAOjvC,EAAEwb,EAAKkd,MAAM,GAAIld,EAAKkd,MAAM,mBCpE7FqsF,GA3CiB,SAACxhE,GAAgB,IACrC3jD,EAAQF,EAAe8N,YAAYX,IAAnCjN,IADoC,EAE7BlL,EAAO,gCAFsB,mBAErCe,EAFqC,KAElCw5C,EAFkC,OAGVl8C,oBAAkB,GAHR,mBAGrCozD,EAHqC,KAG1Bu2D,EAH0B,KAS5C,OACI,mCAEQv2D,EACI,cAAC,GAAD,CACIhyD,MAVD,CACf0B,MAAO,OACPC,OAAQ,UACRgsD,aAAc,QAQEZ,WAAW,EACXh8C,KAAMq+C,EAAMyhE,SACZ5qE,QAAS,kBAAMmJ,EAAM+gE,aAAY,IACjCzjE,iBAAiB,EACjBC,0BAA0B,EAC1BruD,UAAWgD,IAPf,SASI,cAAC,GAAD,aACIw5C,EAAGA,EACHjvC,EAAGJ,EACHumD,UAAWA,EACXu2D,aAAcA,GACVn5D,MAGV,cAAC,GAAD,aACEtU,EAAGA,EACHjvC,EAAGJ,EACHumD,UAAWA,EACXu2D,aAAcA,GACVn5D,OCoBb0hE,GA/Da,CAYxB,CACItuH,MAAO,6BACPkL,MAAO,mBACPq9G,WAAY,CACRC,QAAS,EACTC,WAAY,EACZC,UAAW,EACXC,MAAO,EACPC,SAAU,GAEdzsH,MAAO,mCAEX,CACI6D,MAAO,6BACPkL,MAAO,oBACPq9G,WAAY,CACRC,QAAS,EACTC,WAAY,EACZC,UAAW,EACXC,MAAO,EACPC,SAAU,GAEdzsH,MAAO,oCAEX,CACI6D,MAAO,0BACPkL,MAAO,kBACPq9G,WAAY,CACRC,QAAS,EACTC,WAAY,EACZC,UAAW,EACXC,MAAO,EACPC,SAAU,GAEdzsH,MAAO,kCAEX,CACI6D,MAAO,6BACPkL,MAAO,4BACPq9G,WAAY,CACRC,QAAS,EACTC,WAAY,EACZC,UAAW,EACXC,MAAO,EACPC,SAAU,GAEdzsH,MAAO,6CCkTAoyH,GAxVe,WAC5B,IAAMj8E,EAAWC,cACTtpC,EAAQF,EAAe8N,YAAYX,IAAnCjN,IAF0B,EAGnBlL,EAAO,0BAHY,mBAG3Be,EAH2B,KAGxBw5C,EAHwB,KAK1BnT,EADwBtuB,YAAY+vB,IAApC1B,oBACAC,gBAL0B,EAOV0J,IAAMgE,WAAWjE,IAAjChlC,EAP0B,EAO1BA,IAAK+lC,EAPqB,EAOrBA,OACLnrC,EAAwBlC,IAAxBkC,oBAR0B,EAa9BqS,YAAY+vB,IAHd3B,EAVgC,EAUhCA,oBACAQ,EAXgC,EAWhCA,qBACAD,EAZgC,EAYhCA,oBAEMn3B,EAAsBwI,YAAYX,GAAlC7H,kBAd0B,EAgBQjS,oBAAS,GAhBjB,mBAgB3ByxF,EAhB2B,KAgBZ2gC,EAhBY,OAiBFpyH,oBAAkB,GAjBhB,mBAiB3BiyH,EAjB2B,KAiBjBV,EAjBiB,OAkBcvxH,mBAAgC,IAlB9C,mBAkB3BqyH,EAlB2B,KAkBTC,EAlBS,OAmBItyH,qBAnBJ,mBAmB3BuyH,EAnB2B,KAmBdf,EAnBc,OAoBcxxH,mBAAiB,GApB/B,mBAoB3BwyH,EApB2B,KAoBTf,EApBS,OAqBIzxH,oBAAkB,GArBtB,mBAqB3B42D,EArB2B,KAqBdC,EArBc,KAsB5B21C,EAAc/rG,iBAAO,GAErBgyH,EAAyBhyH,iBAAuB,MAqEtDC,qBAAU,WACJ+xH,EAAuB9xH,SACvB8xH,EAAuB9xH,QAAQmvF,eAAe,CAAEyG,SAAU,aAE7D,IAEH71F,qBAAU,WAgBR,OAfImoC,EAAoB99B,SAClB89B,EAAoBA,EAAoB99B,OAAS,GAAGyI,SACvC,OAAfq9G,SAAe,IAAfA,OAAiB7yH,KAAI,SAACyqB,GACpB,OAAOA,EAAKsoG,eAAgB,KAGX,OAAnBloF,QAAmB,IAAnBA,KAAqB7qC,KAAI,SAACyqB,EAAW3f,GAC/BA,EAAI+nH,GAAgB9lH,SACtB8lH,GAAgB/nH,GAAGioH,cAAgBtoG,EAAKjV,aAI9C8+G,EAAoBzB,KAGf,eACN,CAAChoF,IAEJnoC,qBAAU,WAGR,OADAgyH,KACO,eACN,CAACrpF,IAEJ,IAAMqpF,GAAmB,WACnBrpF,EAEa,OAAfwnF,SAAe,IAAfA,OAAiB7yH,IAAjB,uCAAqB,WAAOyqB,GAAP,eAAAve,EAAA,sEACQyoH,GAAgClqG,EAAK1U,SAAU0U,GADvD,cACbmqG,EADa,yBAEZA,GAFY,2CAArB,uDAOe,OAAf/B,SAAe,IAAfA,OAAiB7yH,KAAI,SAACyqB,GAEpB,OADqBoqG,GAAsBpqG,EAAK1U,SAAU0U,MAI9D6pG,EAAoBzB,KAEhBiC,GAAgB,SAACnnB,GAErB,OADcA,EAAa,GAAK,EAAIA,EAAa,GAAK,EAAI,GAItDgnB,GAA+B,uCAAG,WAAO5+G,EAAkB0U,GAAzB,qBAAAve,EAAA,6DAGhCyhG,EADeviE,EACMr1B,GACrBo4G,EAAa2G,GAAcnnB,GAC3BonB,EAAeC,GAAgBj/G,GALC,SAMXk/G,GAAiBF,EAAc5G,EAAY1jG,GANhC,cAMhCmqG,EANgC,yBAO/BA,GAP+B,2CAAH,wDAU/BC,GAAqB,uCAAG,WAAO9+G,EAAkB0U,GAAzB,mBAAAve,EAAA,6DAEtBiiH,EAAa+G,GAAwBn/G,GACrCg/G,EAAeC,GAAgBj/G,GAHT,SAIDk/G,GAAiBF,EAAc5G,EAAY1jG,GAJ1C,cAItBmqG,EAJsB,yBAKrBA,GALqB,2CAAH,wDAQrBK,GAAgB,uCAAG,WAAOl/G,EAAkB8D,EAAe4Q,GAAxC,mBAAAve,EAAA,sEACCsD,EAAI,iBAAkBuG,EAAW,IAAM8D,GADxC,cACjBs7G,EADiB,gBAEE3lH,EAAI,iBAAkBuG,EAAW,MAFnC,cAEjBq/G,EAFiB,OAInBD,GAAaC,KACTC,EAAYnB,GAAoB76G,MAAK,SAAAoR,GAAI,OAAIA,EAAK3Z,QAAUi6B,QAGhEtgB,EAAKwoG,aAAatiF,KAAK,GAAGhJ,MAAQ94B,EAAIwmH,EAAUvkH,MAAX,OAAiBukH,QAAjB,IAAiBA,OAAjB,EAAiBA,EAAWzvH,QAEnE6kB,EAAKwoG,aAAatiF,KAAK,GAAGyT,OAAS+wE,EAAU92G,MAE7CoM,EAAKwoG,aAAatiF,KAAK,GAAGyT,OAASgxE,EAAW/2G,OAZzB,kBAchBoM,GAdgB,2CAAH,0DAiBhBuqG,GAAkB,SAACj/G,GACvB,IAAIg/G,EAAuB,GAC3B,OAAQh/G,GACN,KAAKu/G,GAAiBxiC,QACpBiiC,EAAeQ,GAAcziC,QAC7B,MACF,KAAKwiC,GAAiBtiC,WACpB+hC,EAAeQ,GAAcviC,WAC7B,MACF,KAAKsiC,GAAiB1C,UACpBmC,EAAeQ,GAAcriC,UAC7B,MACF,KAAKoiC,GAAiBviC,MACpBgiC,EAAeQ,GAAcxiC,MAC7B,MACF,KAAKuiC,GAAiBriC,SACpB8hC,EAAeQ,GAActiC,SAKjC,OAAO8hC,GAGH3rH,GAAM,uCAAG,WAAO+G,EAAY0hC,GAAnB,SAAA3lC,EAAA,sDACbsiG,EAAY7rG,SAAW,EACnB6rG,EAAY7rG,SAxLE,IAyLZkvC,GACF6iF,KAEF/mF,YAAW,kBAAMymF,GAAiB,KAAO,MAN9B,2CAAH,wDASNoB,GAAkB,uCAAG,WAAOz/G,GAAP,yBAAA7J,EAAA,sDACzBkoH,GAAiB,GACjBb,GAAY,GAENpF,GADAsH,EAAerqF,GACQ0pF,GAAcW,EAAQ1/G,IAAYm/G,GAAwBn/G,GACjFg/G,EAAeC,GAAgBj/G,GALZ,eAMEq9E,IANF,IAMzB,IANyB,iBAOsB,EADpCsiC,EANc,QAOnBA,EAAariC,YAAc0hC,IACjB,OAAZW,QAAY,IAAZA,GAAA,UAAAA,EAAcn6G,cAAd,SAAsBvb,IAAtB,uCAA0B,WAAOqe,EAAOvT,GAAd,iBAAAoB,EAAA,yDACd,IAANpB,GAAWA,IAAMqjH,EADG,iCAEYvjE,GAAmB8qE,EAAariC,UAAWvoF,GAFvD,yCAIpBspH,GAAiB,GAJG,SAKChqH,EAAoBiU,GALrB,cAKditC,EALc,iBAMG/V,EAAO,iBAAkB,CAC9C30C,GAAG,GAAD,OAAK80H,EAAariC,UAAlB,YAA+BvoF,GACjCuT,MAAOitC,IARW,eAMdqqE,EANc,iBAUdvsH,GAAOusH,GAAU,GAVH,iDAYdvsH,KAZc,4CAA1B,2DAFJ,uBAA6C,IANpB,yEAAH,sDA6BlB8rH,GAA0B,SAACn/G,GAC/B,IAAM6/G,EAAyB1B,GAAoB76G,MAAK,SAAAoR,GAAI,OAAIA,EAAK3Z,QAAUi6B,KAC/E,OAAyB,OAAlB6qF,QAAkB,IAAlBA,OAAA,EAAAA,EAAoBzH,YAAayH,EAAmBzH,WAAWp4G,GAAW,GAG7E60C,GAAkB,uCAAG,WAAO70C,EAAkBjL,GAAzB,iBAAAoB,EAAA,6DACnBtL,EADmB,UACXmV,EADW,YACCjL,GADD,SAEL0E,EAAI,iBAAkB5O,GAFjB,cAEnByd,EAFmB,2BAGlBA,GAHkB,2CAAH,wDAyCxB,OACE,sBAAK3c,UAAWgD,IAAhB,UACE,qBAAKhD,UAAWw8C,EAAE,cAAlB,SA3BiC,WAAd,OAAjBjqC,QAAiB,IAAjBA,OAAA,EAAAA,EAAmBnG,SAEnB,qCACE,sBAAMpM,UAAWw8C,EAAE,qBAAnB,+DAGA,sBAAMx8C,UAAWw8C,EAAE,uBAAnB,gDAKA,sBAAMx8C,UAAWw8C,EAAE,qBAAnB,2CAOF,qCACE,uBAAMx8C,UAAWw8C,EAAE,qBAAnB,UAA0CrvC,EAAI,kBAAmB,mBAAjE,OAA4F,sBAAMnN,UAAWw8C,EAAE,uBAAnB,SAA4CrvC,EAAI,uBAAwB,+BAYxK,qBAAKnN,UAAWw8C,EAAE,YAAY0a,GAAe,EAAI,eAAe,KAAhE,SACE,cAAC,KAAD,2BA7QW,CACfl3D,UAAW,wBACXm0H,aAAc,EACdC,UAAU,EACVC,YAAY,EACZC,aAAc,EACdC,eAAgB,EAChBC,eAAe,EACfC,WAAY,CACV,CACEC,WAAY,KACZjvH,SAAU,CACR6uH,aAAc,EACdD,YAAY,IAGhB,CACEK,WAAY,KACZjvH,SAAU,CACR6uH,aAAc,EACdD,YAAY,IAGhB,CACEK,WAAY,KACZjvH,SAAU,CACR6uH,aAAc,EACdD,YAAY,IAGhB,CACEK,WAAY,KACZjvH,SAAU,CACR6uH,aAAc,EACdD,YAAY,IAGhB,CACEK,WAAY,KACZjvH,SAAU,CACR6uH,aAAc,EACdD,YAAY,IAGhB,CACEK,WAAY,KACZjvH,SAAU,CACR6uH,aAAc,EACdD,YAAY,IAGhB,CACEK,WAAY,KACZjvH,SAAU,CACR6uH,aAAc,IAGlB,CACEI,WAAY,KACZjvH,SAAU,CACR6uH,aAAc,OAiNhB,oBAEI3B,QAFJ,IAEIA,OAFJ,EAEIA,EAAkBr0H,KAAI,SAACyqB,EAAM3f,GAAP,OACpB,cAAC,GAAD,CAEE+O,MAAO/O,EACP+tD,eAAgBA,EAChBpyC,QAASgE,EACTwpG,SAAUA,EACVV,YAAa,kBAAMiC,GAAmB/qG,EAAK1U,WAC3Cy9G,eAAgBA,EAChBC,oBAAqBA,GAPhB3oH,WAaf,uBACA,uBACA,uBACA,qBAAKpJ,UAAWw8C,EAAE,yBAA0B7X,IAAKouF,EAAjD,SACE,cAAC,GAAD,CACEn1E,KAAMzwC,EAAI,mCAAmC,QAC7CkC,KAAK,4BACLrP,UAAWw8C,EAAE,eACbqB,UAAU,EACV/9C,KAAK,SACLG,MArES,WACfu2C,EAAS1M,GAAgBwN,QAAQlzB,WAAW,gBAqEtCllB,GAAG,wCAGP,uBACA,uBACA,uBAEA,cAAC,GAAD,CACEqzH,SAAUA,EACVV,YAAaA,EACb9oG,KAAM8pG,EACN9gC,cAAeA,EACf55E,MAAO26G,EACPhB,eAAgBA,EAChBK,kBAhFoB,SAACh6G,GACzB25G,EAAea,EAAiBx6G,IAChC45G,EAAoB55G,UC1MTw8G,GApEM,WACnB,IAAMn+E,EAAWC,cADQ,EAEVx0C,EAAO,iBAFG,mBAElBe,EAFkB,KAEfw5C,EAFe,KAGjBrvC,EAAQF,EAAe8N,YAAYX,IAAnCjN,IACAoF,EAAsBwI,YAAYX,GAAlC7H,kBAMRvR,qBAAU,WACRw1C,EAAS1M,GAAgBwN,QAAQ19B,eAChC,IA6BH,OACE,sBAAK5Z,UAAWgD,IAAhB,UACE,qBAAKhD,UAAWw8C,EAAE,QAAlB,SACE,cAAC,EAAD,CAAM38C,KAAK,uBAAuBC,KAAK,UAEzC,qBAAKE,UAAWw8C,EAAE,QAAlB,SA/BiC,WAAd,OAAjBjqC,QAAiB,IAAjBA,OAAA,EAAAA,EAAmBnG,SAEnB,8BACE,iCACE,sDADF,QAEE,sBAAMpM,UAAWw8C,EAAE,iBAAnB,kDACA,6CAEF,iCACE,sBAAMx8C,UAAWw8C,EAAE,iBAAnB,sCADF,QAEE,oEAMJ,8BACGrvC,EAAI,gCAAgC,mBACrC,sBAAMnN,UAAWw8C,EAAE,iBAAnB,SACCrvC,EAAI,2CAA2C,qCAqBpD,cAAC,GAAD,CACEywC,KAAMzwC,EAAI,mCAAmC,QAC7CkC,KAAK,4BACLrP,UAAWw8C,EAAE,UACbqB,UAAU,EACV/9C,KAAK,SACLG,MAvDW,WACfu2C,EAAS1M,GAAgBwN,QAAQlzB,WAAW,kBAuDxCllB,GAAG,kCC/BI01H,GA/Be,SAAC,GAKpB,IAJT30H,EAIQ,EAJRA,MACA29C,EAGQ,EAHRA,KAGQ,IAFR9pC,gBAEQ,SADRzT,EACQ,EADRA,MACQ,EACM4B,EAAO,SADb,mBACDe,EADC,KACCw5C,EADD,KAQR,OACE,sBACFt9C,GAAE,UAAa,UAAMmB,EAAdyT,EAAQ,4BACT9T,UAAWgD,EAAE,GAAD,OAAI8Q,EAAW,WAAa,KACxChS,QATiB,WACjB7B,GACJA,KAIA,UAKE,sBAAMD,UAAWw8C,EAAE,QAASt9C,GAAE,UAAa,UAAMmB,EAAdyT,EAAQ,4BAA3C,SACG8pC,IAEH,sBAAM59C,UAAWw8C,EAAE,QAASt9C,GAAE,UAAa,UAAMmB,EAAdyT,EAAQ,4BAA3C,SACGA,GACC,qBAAK9T,UAAWw8C,EAAE,iBAAkBt9C,GAAE,UAAa,UAAMmB,EAAdyT,EAAQ,oCCjB9C+gH,GATkB,SAAC,GAA+C,IAA9CnxH,EAA6C,EAA7CA,SAAU1D,EAAmC,EAAnCA,UAAmC,IAAxB80H,kBAAwB,WAC7D7yH,EAAO,YADsD,mBACrEe,EADqE,UAE9E,OACE,qBAAKhD,UAAS,UAAKgD,IAAL,YAAYhD,GAAa,GAAzB,YAA+B80H,EAAa,aAAe,IAAzE,SACKpxH,KC0GMqxH,GArG8B,WAC3C,IAAMv+E,EAAWC,cACTtpC,EAAQF,EAAe8N,YAAYX,IAAnCjN,IAFyC,EAGnClL,EAAO,wBAH4B,mBAG1Ce,EAH0C,KAGxCw5C,EAHwC,OAIXzhC,YAAY+vB,IAA1C3B,EAJyC,EAIzCA,oBAAqB31B,EAJoB,EAIpBA,KAJoB,EAOXlT,oBAAkB,GAPP,mBAQ1CivE,GAR0C,UAQ3B6+C,KAAf7+C,aAWP,OAEE,qBAAKvvE,UAAWgD,IAAhB,SACE,eAAC,GAAD,CAAUhD,UAAWw8C,EAAE,iBAAvB,UACE,sBAAKx8C,UAAWw8C,EAAE,eAAlB,UACE,sBAAMx8C,UAAWw8C,EAAE,iBAAnB,SACGrvC,EAAI,2BAA2B,qGAElC,sBAAMnN,UAAWw8C,EAAE,sBAAnB,SACGrvC,EAAI,yCAAyC,iCAIlD,qBAAKnN,UAAWw8C,EAAE,WAAlB,SAEIrT,EAAoB7qC,KAAI,SAAC2rC,GAAD,OACtB,cAAC,GAAD,CACE5pC,MAAO4pC,EAAO5pC,MACdu9C,KAAMzwC,EAAI88B,EAAO/lC,MAAM,GAAI+lC,EAAO/lC,MAAM,IAExC4P,SAAUm2B,EAAOn2B,SACjB7T,MAAO,kBA7BCf,EA6BkB+qC,EAAO/qC,QA5B7Cs3C,EAAS1M,GAAgBwN,QAAQvN,aAAa7qC,IAD3B,IAACA,IA2BH+qC,EAAO/qC,SAQpB,cAAC,GAAD,CACE0+C,KAAMzwC,EAAI,mCAAmC,QAC7CkC,KAAK,4BACLrP,UAAWw8C,EAAE,eACbqB,UAAU,EACV/9C,KAAK,SAELG,MAtCS,WACfu2C,EAAS1M,GAAgBwN,QAAQlzB,WAAW,kBAsCtCrhB,SAAUwsE,EAAY/7D,GACtBtU,GAAG,4CCqJE81H,GAlM+B,WAE5C,IAiBsBp0G,EAjBhB41B,EAAWC,cACTtpC,EAAQF,EAAe8N,YAAYX,IAAnCjN,IAH0C,EAKhD4N,YAAY+vB,IADN1B,EAJ0C,EAI1CA,oBAAqB51B,EAJqB,EAIrBA,KAAMq2B,EAJe,EAIfA,sBAJe,EAMnC5nC,EAAO,wBAN4B,mBAM3Ce,EAN2C,KAMxCw5C,EANwC,KAO1CnT,EAA0CD,EAA1CC,gBAAiBE,EAAyBH,EAAzBG,WAAYhW,EAAa6V,EAAb7V,SAPa,EAShDw8F,KADMO,EAR0C,EAQ1CA,mBAAoBN,EARsB,EAQtBA,aAAcW,EARQ,EAQRA,uBARQ,EAU1B59E,IAAMgE,WAC5BjE,IADMhlC,EAV0C,EAU1CA,IAAK+lC,EAVqC,EAUrCA,OAGLnrC,EAAwBlC,IAAxBkC,oBAEA6mE,EAAgB6+C,KAAhB7+C,YAf0C,EAgBlBjvE,oBAAkB,GAhBA,mBAgB3C20H,EAhB2C,KAgBjCC,EAhBiC,OAiBxB50H,mBAAc,MAjBU,mBAiB3Cqc,EAjB2C,KAiBpCw4G,EAjBoC,KAkB5Cv0E,EAAW7/C,mBAMXq0H,GALgBx0G,EAMpB,+CALM,GAAN,OACEnb,EAASA,EAASC,aAAaM,aADjC,0BAEkB4a,IAOpB5f,qBAAU,WACR,IAAI2nD,GAAU,EAqBd,OApB+B,uCAAG,gCAAAn+C,EAAA,sEACY0+C,EAC1C,gBACA,GAH8B,kDAMTxgD,EAAoB0sH,GANX,cAMxBxrE,EANwB,gBAOxB/V,EAAO,iBAAkB,CAC7B30C,GAAI,kBACJyd,MAAOitC,IATqB,wBAWV97C,EAAI,iBAAkB,mBAXZ,SAWxB6O,EAXwB,QAYpBA,OAAOw4G,EAASx4G,EAAMA,OAZF,yCAcV7O,EAAI,iBAAkB,mBAdZ,QAcxB6O,EAdwB,OAe1BgsC,GAAWhsC,EAAMA,OAAOw4G,EAASx4G,EAAMA,OAfb,4CAAH,oDAkB/B04G,GAEO,WAAO1sE,GAAU,KACvB,IAGH,IAAMO,EAAkB,uCAAG,WAAO70C,EAAkBjL,GAAzB,iBAAAoB,EAAA,6DACnBtL,EADmB,UACXmV,EADW,YACCjL,GADD,SAEL0E,EAAI,iBAAkB5O,GAFjB,cAEnByd,EAFmB,2BAGlBA,GAHkB,2CAAH,wDA0DxB,OACE,qBAAK3c,UAAWgD,IAAhB,SACI6mC,EAqDA,qCAEE,qBAAK7pC,UAAWw8C,EAAE,mBAAlB,SACE,uBACE7X,IAAKic,EACLiB,UAAU,EACVC,MAAM,EACNF,aAAW,EACXG,OAAK,EACLuzE,OAnGY,WACtBrpF,YAAW,WACTipF,GAAY,KACX,MA0FK,SAQE,wBAAQnzH,IAAK4a,QAGhBs4G,GACC,sBAAKj1H,UAAWw8C,EAAE,QAASt9C,GAAG,6BAA6B4C,QAnGnD,WAIhB,GAHIunC,IAAoBtG,GAA+BuG,MACrDkN,EAAS1M,GAAgBwN,QAAQ3M,yBAAwB,IAGzDpB,GACAhW,GACA8V,IAAoBtG,GAA+BuG,KACnD,CACA,IAAMiB,EAAM+lF,EAAmB/8F,GACzBiW,EAAYwmF,EAAazmF,GAC/B,GAAkB,OAAdC,GAA8B,OAARe,EAAc,CACtC,IAAMb,EAAsBinF,EAC1BnnF,EACAe,EACAlB,GAEFmN,EAAS1M,GAAgBwN,QAAQ9M,gBAAgBhB,IACjDgN,EAAS1M,GAAgBwN,QAAQ7M,mBAAmBF,IACpDiM,EACE1M,GAAgBwN,QAAQ5M,uBAAuBhB,IAEjD8M,EAAS1M,GAAgBwN,QAAQ3M,yBAAwB,KAG7D6L,EAAS1M,GAAgBwN,QAAQzM,0BAAyB,IAC1D2L,EAAS1M,GAAgBwN,QAAQlzB,WAAW,oBAyEpC,UACGjX,EAAI,cAAe,QACpB,cAAC,EAAD,CAAMtN,KAAK,eAAeQ,MAAM,qCArEtC,eAAC,GAAD,CAAUy0H,YAAU,EAApB,UAEE,sBAAK90H,UAAWw8C,EAAE,UAAlB,UACE,sBAAMx8C,UAAWw8C,EAAE,gBAAnB,SACKrvC,EAAI,wBAAyB,gCAElC,sBAAMnN,UAAWw8C,EAAE,iBAAnB,SACGrvC,EAAI,uCAAuC,+BAIhD,qBAAKnN,UAAWw8C,EAAE,WAAlB,SACGg2E,GAAoBl0H,KAAI,SAAC2rC,EAAQ7gC,GAC9B,OACI,cAAC,GAAD,CACI/I,MAAO4pC,EAAO5pC,MACdu9C,KAAMzwC,EAAI88B,EAAO76B,MAAO66B,EAAO/lC,OAE/B4P,SAAUm2B,EAAO76B,QAAUi6B,EAC3BppC,MAAO,kBAzEN+tD,EAyE0B/jB,EAAO76B,WApEtDonC,EAJGwX,IAAW3kB,EAKZS,GAAgBwN,QAAQruB,cACtB+kC,GALSlkB,GAAgBwN,QAAQruB,cAAc,SAF/B,IAAC+kC,IAuEI5kD,QASnB,sBAAKpJ,UAAWw8C,EAAE,UAAlB,UACE,sBAAMx8C,UAAWw8C,EAAE,iBAInB,qBAAKx8C,UAAWw8C,EAAE,kBAAlB,SAOE,cAAC,GAAD,CACEoB,KAAMzwC,EAAI,mCAAmC,QAC7CkC,KAAK,4BACLrP,UAAWw8C,EAAE,eACbqB,UAAU,EACV/9C,KAAK,SACLG,MAtFD,WACXu2C,EAAS1M,GAAgBwN,QAAQzM,0BAAyB,KAsF9C9nC,SAAUwsE,EAAY/7D,GACtBtU,GAAG,0CC/IJq2H,GA/B0B,SAAC,GAAY,IAAX7qG,EAAU,EAAVA,KAsBzC,OACE,mCAEIA,GArBW,SAACA,GAChB,OAAQA,GACN,IAAK,QACH,OAAO,cAAC,GAAD,IACT,IAAK,eACH,OAAO,cAAC,GAAD,IACT,IAAK,eACH,OAAO,cAAC,GAAD,IACT,IAAK,iBACH,OAAO,cAAC,GAAD,IACT,IAAK,aACH,OAAO,cAAC,GAAD,KAUC8qG,CAAS9qG,MCJV+qG,GA9Be,SAAC/yE,EAAiBlvC,GAAiB,IAAD,EAmBtDtT,EAAU,UAjBwB,CACxCyqE,MAAM,CACJzqE,WAAWwiD,EAAO,IAEpBl+C,aAAa,CACXtE,WAAWwiD,EAAO,IAEpBj+C,aAAa,CACXvE,WAAWwiD,EAAO,IAEpBosE,eAAe,CACb5uH,WAAWwiD,EAAO,IAEpBqsE,WAAW,CACT7uH,WAAWwiD,EAAO,KAGWlvC,UAAf,aAAG,EAAmBtT,WAQtC,MAAO,CAACw1H,gBAPgB,CACpBryH,OAAO,OACPD,MAAM,OACNzB,gBAAgB,OAAD,cAAQzB,QAAR,IAAQA,IAAcwiD,EAAO,GAA7B,KACf7gD,eAAgB,QAChBD,mBAAmB,YCmCZ+zH,GAzDgC,WAAM,MAEnC1zH,EAAO,mBAAbe,EAFyC,oBAGzC0F,EAAwBlC,IAAxBkC,oBAHyC,EAIHpI,oBAAS,GAJN,mBAI1CosG,EAJ0C,KAIzBC,EAJyB,OAKzB55D,IAAMgE,WAAWjE,IAAjChlC,EALyC,EAKzCA,IAAK+lC,EALoC,EAKpCA,OALoC,EAMfvzC,mBAAS,GANM,mBAM1CssG,EAN0C,KAM/BC,EAN+B,KAO3CC,EAAc/rG,iBAAO,GAI3BC,qBAAU,WAEN,OADA40H,IACO,eACR,IACH,IAAMluH,EAAS,WACXolG,EAAY7rG,SAAW,EACvB4rG,GAAa,SAAAhjD,GAAI,OAAIA,EAAO,KACxBijD,EAAY7rG,SAVA,IAWZ0rG,GAAmB,IAQrBipB,EAAc,uCAAG,gCAAAprH,EAAA,qEACIknF,IADJ,IACnB,IADmB,mBACRr9E,EADQ,QAEP,OAARA,QAAQ,IAARA,GAAA,UAAAA,EAAUwF,cAAV,SAAkBvb,IAAlB,uCAAsB,WAAOqe,EAAOvT,GAAd,eAAAoB,EAAA,sEACgB0+C,EAAmB70C,EAASs9E,UAAWvoF,GADvD,kDAIOV,EAAoBiU,GAJ3B,cAIRitC,EAJQ,gBAKR/V,EAAO,iBAAkB,CAC3B30C,GAAG,GAAD,OAAKmV,EAASs9E,UAAd,YAA2BvoF,GAC7BuT,MAAOitC,IAPG,OASdliD,IATc,wBAWdA,IAXc,4CAAtB,0DADJ,uBAAyC,IADtB,yEAAH,qDAkBdwhD,EAAkB,uCAAG,WAAO70C,EAAkBjL,GAAzB,iBAAAoB,EAAA,6DACjBtL,EADiB,UACTmV,EADS,YACGjL,GADH,SAEH0E,EAAI,iBAAkB5O,GAFnB,cAEjByd,EAFiB,2BAGhBA,GAHgB,2CAAH,wDAKxB,OACI,qBAAK3c,UAAWgD,EAAE0pG,EAAkB,WAAa,IAAjD,SACI,cAAC,GAAD,CAAeT,WA9BI,WACvB,IAAMjlD,EAAW4lD,EAfD,GAe2B,IAE3C,OAAOtjG,KAAKinD,MAAMvJ,GA2BaomD,GAAsB73C,IAAI,eCqFlDsgE,GA3HkB,WAC/B,IAAMr/E,EAAWC,cADoB,EAEtBx0C,EAAO,WAFe,mBAE9Be,EAF8B,KAE3Bw5C,EAF2B,KAG7BrvC,EAAQF,EAAe8N,YAAYX,IAAnCjN,IAH6B,EAID4N,YAAY+vB,IAAxCt3B,EAJ6B,EAI7BA,KAAMo2B,EAJuB,EAIvBA,kBAJuB,EAKDtpC,mBAAc,MALb,mBAK9Bw1H,EAL8B,KAKlBC,EALkB,KAM7BL,EAAoBD,GAAqB,CAACO,WAAaC,WAAaC,YAAc1iH,GAAlFkiH,gBAN6B,EAOP3+E,qBAAWjE,IAAlChlC,EAP8B,EAO9BA,IAAK4lC,EAPyB,EAOzBA,OAAQG,EAPiB,EAOjBA,OACZ59B,EAAmB8E,YAAYX,GAA/BnE,eAERkgH,2BAAgB,WAGd,OAFA3/E,EAAS1M,GAAgBwN,QAAQlzB,WAAW,UAErC,WACLgyG,OAED,IAEHp1H,qBAAU,WACR,IAAIoL,EAAO,OAAG6J,QAAH,IAAGA,OAAH,EAAGA,EAAgB4/B,KAAKzpC,QAEjCoqC,EADc,OAAZpqC,EACO09B,GAAgBwN,QAAQlzB,WAAW,gBAEnC0lB,GAAgBwN,QAAQlzB,WAAW,UAG9CiyG,IAEA,IAAMnuC,EAAU,SAACppF,GACfA,EAAE+E,iBACFkyH,EAAcj3H,IAGhB,OADA+sC,OAAOvkC,iBAAiB,sBAAuB4gF,GACxC,kBAAMr8C,OAAOu8C,oBAAoB,gBAAiBF,MACxD,IAEH,IAAMkuC,EAAqB,WACzB5/E,EAAS1M,GAAgBwN,QAAQ1M,sBAAqB,KASlDyrF,EAAkB,uCAAG,kCAAA7rH,EAAA,+EAELixC,MAAM,4DAFD,cAEjBxtC,EAFiB,gBAGJA,EAAI0tC,OAHA,cAGjBltC,EAHiB,gBAIOX,EAAI,gBAAiB,kBAJ5B,OAIjBi3G,EAJiB,QAKVA,EAAkBrxE,EAASG,GACnC,gBAAiB,CACpB30C,GAAI,iBACJkQ,MAAOX,EAAKwI,eAGVq/G,EAAyB7nH,EAAK88G,WAAWjtH,KAAI,SAACisH,GAChD,OAAO,2BACFA,GADL,IAEExvD,UAAWwvD,EAAUxvD,UAAU1xD,MAAK,SAACmB,EAAGmE,GACtC,OAAOnE,EAAE3K,KAAK02H,cAAc5nH,EAAE9O,cAKpC22C,EAASthC,EAASoiC,QAAQlgC,sBAAsBk/G,IAChD9/E,EAASthC,EAASoiC,QAAQjgC,eAAe5I,EAAK22G,YArBvB,2IAAH,qDA6BxB,OACE,qCACE,cAAC,GAAD,IACA,sBAAKlmH,GAAI8D,IAAM,IAAMwQ,EAAMxT,UAAWgD,IAAKtB,MAAOg0H,EAAlD,UACE,cAAC,GAAD,IACA,cAAC,GAAD,CAAkBhrG,KAAMlX,IACxB,uBAAMxT,UAAWw8C,EAAE,WAAnB,cARkB,kBAQlB,UAKA,cAAC,GAAD,CACE/pC,KAAMm3B,EACN5pC,UAAWw8C,EAAE,kBACbmL,QAAS,kBAAMyuE,KACf1nE,iBAAiB,UAJnB,SAME,sBAAK1uD,UAAWw8C,EAAE,sBAAlB,UACE,qBAAKx8C,UAAWw8C,EAAE,2BAAlB,SACE,cAAC,EAAD,CAAM38C,KAAK,uBAEb,sBAAKG,UAAWw8C,EAAE,2BAAlB,UACE,+BACGrvC,EAAI,kBAAmB,0BAE1B,4BACGA,EAAI,0BAA2B,wDAGpC,qBAAKnN,UAAWw8C,EAAE,kBAAmB16C,QAhErB,SAAChD,GACzBA,EAAE+E,iBACQ,OAAViyH,QAAU,IAAVA,KAAYU,SACZhgF,EAAS1M,GAAgBwN,QAAQ1M,sBAAqB,KA6D9C,SACE,cAAC,GAAD,CACEgT,KAAMzwC,EAAI,kBAAmB,WAC7BnN,UAAWw8C,EAAE,cAAe,WAC5BqB,UAAU,EACV/9C,KAAK,sBCsJN22H,OA5Of,WAAgB,IAAD,EACan2H,qBADb,mBACNmJ,EADM,KACCitH,EADD,OAEyBp2H,mBAInC,CACDmS,MAAM,IAPK,gCASuBnS,mBAAyBX,EAAeqV,WAT/D,mBASND,EATM,KASMiF,EATN,OAUyB1Z,oBAAkB,WACtDqW,GAAMggH,WAAU,WAGd,OAFchgH,GAAMi1B,WACG1+B,IACP+H,kBAdP,mBAUNA,EAVM,KAUOkF,EAVP,KAiBPy8G,EAAW71H,mBAjBJ,EAkBiBT,mBAI3B,CAACmS,MAAM,IAtBG,mBAkBNrE,EAlBM,KAkBG69E,EAlBH,KAwBP4qC,EAAmB91H,kBAAgB,GAxB5B,EAyBOT,wBAAkCgK,GAzBzC,mBAyBN4oC,EAzBM,KAyBF2gB,EAzBE,KA0BPC,EAAQ/yD,iBAAgCmyC,GA1BjC,EA2BiD8d,KAAtDI,EA3BK,EA2BLA,QAASI,EA3BJ,EA2BIA,aAAc1jD,EA3BlB,EA2BkBA,IAAIkkD,EA3BtB,EA2BsBA,OAAQne,EA3B9B,EA2B8BA,OAAQH,EA3BtC,EA2BsCA,OAC7CoD,EAAMjE,KAEZ7xC,qBAAU,WAAM,4CAId,4BAAAwJ,EAAA,sEACwB4mD,GAAQ,SAACle,GAAD,OAAase,EAAate,MAD1D,OACQihB,EADR,OAEEN,EAAMM,GAFR,4CAJc,sBACd2iE,IACAC,IAFc,mCAQd3iE,KACC,IAEHpzD,qBAAU,YACR8yD,EAAM7yD,QAAUiyC,EAChB8jF,IACI9jF,KAEyBlhB,aAAaC,QAAQ,0BAElDglG,IACAjlG,aAAa6pB,QAAQ,uBAAwB,YAC5C,CAAC3I,IAEJ,IAAM+jF,EAAmB,WAIvBjlE,EAAO9e,EAAmB,aAAa,SAACzkC,GACtC,MAAqC,kBAAtBA,EAAKuoB,eACnBn4B,MAAM,SAACmK,GACRzH,QAAQC,IAAIwH,GACZA,EAAO6a,SAAS,SAACqT,GACf,IAAMF,EAAckgG,EAAehgG,EAAKF,aACxC0c,EAAOR,EAAmB,YAApB,YAAC,eAAoChc,GAArC,IAA2CF,wBAKvDh2B,qBAAU,WACR2V,GAAMggH,WAAU,WACd,IACMjgF,EADQ//B,GAAMi1B,WACG1+B,IACvBiN,EAAeu8B,EAASzhC,kBAEzB,CAACA,IAEJ,IAgDIuxC,EAhDEwwE,EAA4B,WAAO,IAAD,EAChC/gH,EAAiBU,GAAMi1B,WAAW1+B,IAAI+I,gBAC1B,OAAGA,QAAH,IAAGA,GAAH,UAAGA,EAAgBiQ,gBAAnB,aAAG,EAA0BlnB,QAM/C64C,KAAQs/E,WAAWrgF,EAAIhxC,IACvB+xC,KAAQ0rE,SAAS,OAGbwT,EAAoB,WACxB,IAAIK,GAAe,EACnBvpH,IAAMwpH,aAAa1jF,QAAQ4hB,KACzB,SAAC/2D,GACC,IAAMuX,EAAQY,GAAMi1B,WAAW1+B,IAAI6I,MAMnC,OALAqhH,EAAe54H,EAAIuP,QAAJ,kBACRvP,EAAIuP,QAAJ,WACevP,EAAIuP,QAAJ,gBACLvP,EAAIuP,QAAJ,+BAAyCgI,IACtDqhH,GAAanrC,EAAW,CAACx5E,MAAM,IAC5BjU,KAET,SAAC0P,GAEC,OADIkpH,GAAanrC,EAAW,CAACx5E,MAAM,IAC5B9T,QAAQqJ,OAAOkG,MAG1BL,IAAMwpH,aAAajvH,SAASmtD,KAC1B,SAACtnD,GAKE,OAHmB,MAAfA,EAAI9F,QAAiC,MAAf8F,EAAI9F,QACzBivH,GAAanrC,EAAW,CAACx5E,MAAM,IAE7BxE,KAEV,SAACC,GAEC,OADIkpH,GAAanrC,EAAW,CAACx5E,MAAM,IAC5B9T,QAAQqJ,OAAOkG,OAKtBgpH,EAAiB,SAACl9D,GACtB,OAAO,IAAI7vD,KAAK,IAAIA,KAAK6vD,GAAMd,SAAS,EAAE,EAAE,EAAE,KAgC1C49D,EAAgB,WACpBngH,GAAMggH,WAAW,WACf,IAAMthH,EAAQsB,GAAMi1B,WAEd8K,EAAWrhC,EAAMnI,IACjBoqH,EAAe5gF,EAASjtC,MAE1BmtH,EAAS31H,SAAW21H,EAAS31H,UAAYq2H,EAAap4H,KACxDw3H,EAASY,GACTV,EAAS31H,QAAUq2H,EAAap4H,SAGLoL,IAA1BosC,EAAStoC,QAAQqE,OACjBikC,EAAStoC,QAAQqE,OAASokH,EAAiB51H,UAC5CgrF,EAAWv1C,EAAStoC,SACpByoH,EAAiB51H,QAAUy1C,EAAStoC,QAAQqE,MA3CvB,SAAC4C,GACxBsuC,aAAa6C,GACbA,EAAWva,YAAW,WACpB,IACE,IAAMf,EAAkBpkC,KAAKC,UAAUsO,GACvC2c,aAAa6pB,QAAQ,kBAAmB3Q,GAExC,IAAMhU,EAAO7hB,EAAM6hB,KACbtyB,EAAgByQ,EAAMzQ,cACtB2yH,EAASzjE,EAAM7yD,QACrB,IAAIs2H,IAAWrgG,IAASA,EAAKh4B,GAAG,OAChC,IAAM83B,EAAckgG,EAAehgG,EAAKF,aAExClpB,EAAIypH,EAAQ,YAAT,OAAsBrgG,QAAtB,IAAsBA,OAAtB,EAAsBA,EAAMh4B,IAAIL,MAAM,SAACmK,GACxC,GAAIA,EAIF0qC,EAAO6jF,EAAQ,YAAT,YAAC,eAAyBrgG,GAA1B,IAAgCF,cAAapyB,uBAJ1C,CACT,IAAIsyB,EAAKF,YAAY,OACrB6c,EAAO0jF,EAAQ,YAAT,YAAC,eAAyBrgG,GAA1B,IAAgCF,cAAapyB,uBAMvD,MAAO9F,GACPyC,QAAQ4pC,KAAKrsC,MAEd,KAqBH04H,CAAmBniH,GACnB2E,EAAc08B,EAAS3hC,gBAEzB2hH,EAAS//G,GAAMi1B,WAAW1+B,IAAIzD,QAGhC,OAAIypC,EAEF,sBAAKlzC,UAAS,mBAAc+U,GAAd,OAA2BE,EAAW,cAAmB,IAAMvT,MAAO,CAElF,0BAAoB+H,QAApB,IAAoBA,OAApB,EAAoBA,EAAOC,KAC3B,0BAAoBD,QAApB,IAAoBA,OAApB,EAAoBA,EAAOE,KAC3B,2BAAqBF,QAArB,IAAqBA,OAArB,EAAqBA,EAAOG,WAC5B,0BAAoBH,QAApB,IAAoBA,OAApB,EAAoBA,EAAOI,UAC3B,sBAAgBJ,QAAhB,IAAgBA,OAAhB,EAAgBA,EAAOI,WANzB,UASE,cAAC,IAAD,CAAU8M,MAAOA,GAAjB,SACE,cAAC,GAAD,CAAmBu8B,GAAIA,EAAvB,SACE,eAAC,IAAD,WACI,cAAC,GAAD,IACA,cAAC,GAAD,IACA,cAAC,GAAD,IACA,cAAC,EAAD,IACA,cAAC,GAAD,IACA,cAAC,GAAD,IACA,cAAC,GAAD,IACA,cAAC,GAAD,IACA,cAAC,GAAD,IAEJ,eAAC,IAAD,WACE,cAAC,IAAD,CAAOpvC,KAAME,EAAOsB,UAAUxB,KAAM2zH,OAAK,EAACC,UAAW7B,KACrD,cAAC,IAAD,CAAO/xH,KAAME,EAAOG,KAAKL,KAAM2zH,OAAK,EAACC,UAAWz/D,KAChD,cAAC,IAAD,CAAOn0D,KAAME,EAAOI,YAAYN,KAAM2zH,OAAK,EAACC,UAAWj4D,KACvD,cAAC,IAAD,CAAO37D,KAAME,EAAOK,WAAWP,KAAM2zH,OAAK,EAACC,UAAW13D,KACtD,cAAC,IAAD,CAAOl8D,KAAME,EAAOM,aAAaR,KAAM2zH,OAAK,EAACC,UAAWr0D,KACxD,cAAC,IAAD,CAAOv/D,KAAME,EAAOO,oBAAoBT,KAAM2zH,OAAK,EAACC,UAAWC,KAC/D,cAAC,IAAD,CAAO7zH,KAAME,EAAOQ,aAAaV,KAAM2zH,OAAK,EAACC,UAAW5mD,KACxD,cAAC,IAAD,CAAOhtE,KAAME,EAAOS,aAAaX,KAAM2zH,OAAK,EAACC,UAAWx+C,KACxD,cAAC,IAAD,CAAOp1E,KAAME,EAAOU,SAASZ,KAAM2zH,OAAK,EAACC,UAAWp4C,KACpD,cAAC,IAAD,CAAOx7E,KAAME,EAAOW,iBAAiBb,KAAM2zH,OAAK,EAACC,UAAWhsB,KAC5D,cAAC,IAAD,CAAO5nG,KAAME,EAAOY,cAAcd,KAAM2zH,OAAK,EAACC,UAAWnzC,KACzD,cAAC,IAAD,CAAOzgF,KAAME,EAAOa,QAAQf,KAAM2zH,OAAK,EAACC,UAAWrvC,KACnD,cAAC,IAAD,CAAOvkF,KAAME,EAAOc,aAAahB,KAAM2zH,OAAK,EAACC,UAAWjsC,KACxD,cAAC,IAAD,CAAO3nF,KAAME,EAAOe,SAASjB,KAAM2zH,OAAK,EAACC,UAAWrgC,KACpD,cAAC,IAAD,CAAOvzF,KAAME,EAAOgB,cAAclB,KAAM2zH,OAAK,EAACC,UAAW3vE,KACzD,cAAC,IAAD,CAAOjkD,KAAME,EAAOiB,eAAenB,KAAM2zH,OAAK,EAACC,UAAW3vE,KAC1D,cAAC,IAAD,CAAOjkD,KAAME,EAAOkB,KAAKpB,KAAM2zH,OAAK,EAACC,UAAW/+B,KAChD,cAAC,IAAD,CAAO70F,KAAME,EAAOmB,SAASrB,KAAM2zH,OAAK,EAACC,UAAW/+B,KACpD,cAAC,IAAD,CAAO70F,KAAME,EAAOoB,kBAAkBtB,KAAM2zH,OAAK,EAACC,UAAW19B,KAC7D,cAAC,IAAD,CAAOl2F,KAAME,EAAOqB,UAAUvB,KAAM2zH,OAAK,EAACC,UAAWj7B,KAErD,cAAC,IAAD,CAAO34F,KAAME,EAAOuB,eAAezB,KAAM2zH,OAAK,EAACC,UAAWrO,QAI5D,cAAC,GAAD,WAKJ,cAAC,GAAD,CAAS52G,KAAMrE,EAAQqE,KAAMmrC,KAAMxvC,EAAQwvC,KAAM4tC,SAAUp9E,EAAQo9E,cAvDzD,MClNVosC,GAAc5nE,QACW,cAA7BnkB,OAAOpxB,SAASo9G,UAEe,UAA7BhsF,OAAOpxB,SAASo9G,UAEhBhsF,OAAOpxB,SAASo9G,SAASC,MAAM,2DA0CnC,SAASC,GAAgBC,EAAelmF,GACtCpnC,UAAUutH,cACP39E,SAAS09E,GACTn5H,MAAK,SAACq5H,GACLA,EAAaC,cAAgB,WAC3B,IAAMC,EAAmBF,EAAaG,WACd,MAApBD,IAGJA,EAAiBE,cAAgB,WACA,cAA3BF,EAAiB/iH,QACf3K,UAAUutH,cAAc1L,YAI1BhrH,QAAQC,IACN,+GAKEswC,GAAUA,EAAOymF,UACnBzmF,EAAOymF,SAASL,KAMlB32H,QAAQC,IAAI,sCAGRswC,GAAUA,EAAOnkC,WACnBmkC,EAAOnkC,UAAUuqH,WAO5B52H,OAAM,SAACuzB,GACNtzB,QAAQszB,MAAM,4CAA6CA,MCjGjE,IAYe2jG,GAZS,SAACC,GACnBA,GAAeA,aAAuBC,UACxC,+BAAqB75H,MAAK,YAAkD,IAA/C85H,EAA8C,EAA9CA,OAAQC,EAAsC,EAAtCA,OAAQC,EAA8B,EAA9BA,OAAQC,EAAsB,EAAtBA,OAAQC,EAAc,EAAdA,QAC3DJ,EAAOF,GACPG,EAAOH,GACPI,EAAOJ,GACPK,EAAOL,GACPM,EAAQN,OCFdvpE,IAAS8pE,OACP,cAAC,IAAMC,WAAP,UACE,cAAC,GAAD,MAEF33F,SAASC,eAAe,SFcnB,SAAkBuQ,GACvB,GAA6C,kBAAmBpnC,UAAW,CAGzE,GADkB,IAAIpC,IAAI4wH,GAAwBrtF,OAAOpxB,SAAS1W,MACpDo1H,SAAWttF,OAAOpxB,SAAS0+G,OAIvC,OAGFttF,OAAOvkC,iBAAiB,QAAQ,WAC9B,IAAM0wH,EAAK,UAAMkB,GAAN,sBAEPtB,KAgEV,SAAiCI,EAAelmF,GAE9C2J,MAAMu8E,EAAO,CACXjqH,QAAS,CAAE,iBAAkB,YAE5BlP,MAAK,SAACuJ,GAEL,IAAMgxH,EAAchxH,EAAS2F,QAAQD,IAAI,gBAEnB,MAApB1F,EAASD,QACQ,OAAhBixH,IAA+D,IAAvCA,EAAYj2D,QAAQ,cAG7Cz4D,UAAUutH,cAAcoB,MAAMx6H,MAAK,SAACq5H,GAClCA,EAAaoB,aAAaz6H,MAAK,WAC7BgtC,OAAOpxB,SAAS89B,eAKpBw/E,GAAgBC,EAAOlmF,MAG1BxwC,OAAM,WACLC,QAAQC,IAAI,oEAtFV+3H,CAAwBvB,EAAOlmF,GAI/BpnC,UAAUutH,cAAcoB,MAAMx6H,MAAK,WACjC0C,QAAQC,IACN,+GAMJu2H,GAAgBC,EAAOlmF,OEpC/B0nF,CAAmC,CACjCjB,SAAU,SAAAL,GACJA,GAAgBA,EAAauB,SAC/BvB,EAAauB,QAAQC,YAAY,CAAE55H,KAAM,oBAQ/C04H,Q","file":"static/js/main.6e66ad33.chunk.js","sourcesContent":["export default __webpack_public_path__ + \"static/media/refresh.55dacbb0.svg\";","export default __webpack_public_path__ + \"static/media/experio-card.3dd6bf26.jpg\";","export default __webpack_public_path__ + \"static/media/blue-uv-card.6f1dc1f3.jpg\";","export default __webpack_public_path__ + \"static/media/eyezen-card.09faca27.png\";","export default \"data:image/gif;base64,R0lGODlhNgA2APf7AAGG1gOH1hCO2Q+N2ASI1wWI1w6N2P3+//v9/gaJ1/z+/z2j4AeJ1wqL2Pr9/vn8/prP7wKH1nO96AmK19vu+dzu+QuL2OPy+vP5/RmS2vf7/iaY3AiK173g9Cyb3SSX3ESm4ZDK7VCs4w2M2MTj9s7o94jH7FGs4wyM2Pj8/ma25qfV8TSf3p3Q77jd9O32/Nrt+Uio4ieZ3PL5/bre9Or1/IHD6/D4/T6j4KbV8XvA6jOe3vb7/hqS2iWY3Lvf9Hm/6fX6/W+76BaQ2tPq+Fux5X7C6lSu5JPM7h+V20an4ef0+x6U25/R8E+r41ev5BeR2jWf312y5dHp+BKP2bHa8mW25pvQ7xiR2mm453C76JTM7uv2/COX3JXN7l6z5RWQ2arX8a/Z8kGl4KvX8TGd3ozI7TKe3qjW8S+c3iGW20Om4Vmw5O73/Euq4jeg32u550Ck4BGO2SiZ3N7v+pLL7UKl4XW+6Xe+6Ump4j+k4N3v+rfd833B6me35yqa3eHx+tfs+fH4/Xi/6bne9ILE67Xc806r42666JjO7pzQ79/w+jyi4LDa8uLx+un1+y6c3a7Z8nrA6qzY8rzf9NXr+Eeo4U2r4hSP2anW8cDh9Tqi3+Ty+9nt+dbs+Mnl9qTU8DCd3obG7I/K7ez2/PT6/W266HG86JnP7ymZ3Vqx5HzB6qHS8EWn4Vav5FOt41Kt40yq4tLq+IPE64vI7GC05Y3J7SCV27Pb84fG7M3n91iw5B2U22O15nK86KPT8MPj9b/h9eXz+3/C6pHL7ROP2Wi35yua3YrH7C2b3djs+eDw+svm977g9RyT23a+6cfk9lWu5ITF67bc81+z5bLa88bk9sHi9bTb88rm9jmh34DD6+j0+6XU8RuT2sjl9qDS8GG05lyy5ebz+6LT8JbN7jui38Li9Wy5547J7cXj9mq454nH7NTr+Mzn99Dp9yKW22S15mK15pfO7nS96e/3/K3Y8s/o9zih30qp4gCG1v///wAAAAAAAAAAAAAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNi4wLWMwMDYgNzkuMTY0NjQ4LCAyMDIxLzAxLzEyLTE1OjUyOjI5ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOmQ1ODZlMjZhLTI5ZjAtYjQ0NS05NjRjLTZlNGEzMjJlN2I3OCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpENjAzMzFCNEE3RTYxMUVCOUM1MEVCMTZGODg5QjVBMiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpENjAzMzFCM0E3RTYxMUVCOUM1MEVCMTZGODg5QjVBMiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjIuMiAoV2luZG93cykiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo5Mzk5OWU4Ny1lMDhjLTAyNDctYTQ3Zi1lMTQ2MTE1NTVjMjMiIHN0UmVmOmRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDo1YTYzMGRjYS05ZGEyLWMzNGEtOTA1Ni0yZDliODYxYzRlMzYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4B//79/Pv6+fj39vX08/Lx8O/u7ezr6uno5+bl5OPi4eDf3t3c29rZ2NfW1dTT0tHQz87NzMvKycjHxsXEw8LBwL++vby7urm4t7a1tLOysbCvrq2sq6qpqKempaSjoqGgn56dnJuamZiXlpWUk5KRkI+OjYyLiomIh4aFhIOCgYB/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\"","export default __webpack_public_path__ + \"static/media/varilux-card.0a03684b.png\";","export default __webpack_public_path__ + \"static/media/crizal-card.d4a64f56.png\";","export default __webpack_public_path__ + \"static/media/optifog-card.075df866.png\";","export default __webpack_public_path__ + \"static/media/transitions-card.3e57705f.png\";","export default __webpack_public_path__ + \"static/media/stellest-card2.158aefca.png\";","export default __webpack_public_path__ + \"static/media/control-1-white.d000f808.svg\";","export default __webpack_public_path__ + \"static/media/control-2-white.34802679.svg\";","export default __webpack_public_path__ + \"static/media/control-3-white.d418c8e4.svg\";","export default __webpack_public_path__ + \"static/media/control-4-white.2177a804.svg\";","export default __webpack_public_path__ + \"static/media/control-5-white.291e2c76.svg\";","export default __webpack_public_path__ + \"static/media/Clear_Lens.9c9fab63.png\";","export default __webpack_public_path__ + \"static/media/eye.f133c2f1.svg\";","export default __webpack_public_path__ + \"static/media/fill.f007ed9a.svg\";","export default __webpack_public_path__ + \"static/media/hamburger.92410f86.svg\";","export default __webpack_public_path__ + \"static/media/Lens_All.58c3af6f.png\";","export default __webpack_public_path__ + \"static/media/Lens_Correct_Active.24eb5892.png\";","export default __webpack_public_path__ + \"static/media/Lens_Enhance_Active.a257e9b4.png\";","export default __webpack_public_path__ + \"static/media/Lens_Protect_Active.c45ba44b.png\";","export default __webpack_public_path__ + \"static/media/transition_green.7b6cfacd.png\";","export default __webpack_public_path__ + \"static/media/transition_amber.c3e6f120.png\";","export default __webpack_public_path__ + \"static/media/transition_amethyst.cb8f35ad.png\";","export default __webpack_public_path__ + \"static/media/transition_brown.7d5a2076.png\";","export default __webpack_public_path__ + \"static/media/transition_emerald.782855f8.png\";","export default __webpack_public_path__ + \"static/media/transition_grey.f861717b.png\";","export default __webpack_public_path__ + \"static/media/transition_saphirre.23361f32.png\";","export default __webpack_public_path__ + \"static/media/xperio_P_amber.f0d1ecd2.png\";","export default __webpack_public_path__ + \"static/media/xperio_P_blue_ink.e39bc27f.png\";","export default __webpack_public_path__ + \"static/media/xperio_P_blue_purple.96966ae5.png\";","export default __webpack_public_path__ + \"static/media/xperio_P_blue_sky.6345f60f.png\";","export default __webpack_public_path__ + \"static/media/xperio_P_brown.b7d20913.png\";","export default __webpack_public_path__ + \"static/media/xperio_P_grey.0f3f4754.png\";","export default __webpack_public_path__ + \"static/media/xperio_P_grey_green.474b97eb.png\";","export default __webpack_public_path__ + \"static/media/xperio_P_herbal.a56cfd79.png\";","export default __webpack_public_path__ + \"static/media/xperio_P_violet.fe6b8c62.png\";","export default __webpack_public_path__ + \"static/media/xperio_T_black.2fa011eb.png\";","export default __webpack_public_path__ + \"static/media/xperio_T_blue_ink.8fc99cd4.png\";","export default __webpack_public_path__ + \"static/media/xperio_T_brown.b031f004.png\";","export default __webpack_public_path__ + \"static/media/xperio_T_burgundy.975a242a.png\";","export default __webpack_public_path__ + \"static/media/xperio_T_grey_green.65cfa8be.png\";","export default __webpack_public_path__ + \"static/media/xperio_T_grey.3c133953.png\";","export default __webpack_public_path__ + \"static/media/xperio_T_herbal.d37d1a79.png\";","export default __webpack_public_path__ + \"static/media/xperio_T_newbrown.9c630d71.png\";","export default __webpack_public_path__ + \"static/media/xperio_M_bronze_shadow.b7754662.png\";","export default __webpack_public_path__ + \"static/media/xperio_M_bronze.af7588ae.png\";","export default __webpack_public_path__ + \"static/media/xperio_M_candy.4ae4782f.png\";","export default __webpack_public_path__ + \"static/media/xperio_M_forestgreen.2f9a4bfe.png\";","export default __webpack_public_path__ + \"static/media/xperio_M_goldpink.08eeda57.png\";","export default __webpack_public_path__ + \"static/media/xperio_M_green_shadow.3175d99d.png\";","export default __webpack_public_path__ + \"static/media/xperio_M_kaki.497a8c12.png\";","export default __webpack_public_path__ + \"static/media/xperio_M_mauve_silver.7457c105.png\";","export default __webpack_public_path__ + \"static/media/xperio_M_new_blue.0d0a639a.png\";","export default __webpack_public_path__ + \"static/media/xperio_M_new_silver.20965b46.png\";","export default __webpack_public_path__ + \"static/media/xperio_M_ocean_blue.271aa3f4.png\";","export default __webpack_public_path__ + \"static/media/xperio_M_orange.402e4dcd.png\";","export default __webpack_public_path__ + \"static/media/xperio_M_parma.573ccf4d.png\";","export default __webpack_public_path__ + \"static/media/xperio_M_pink_silver.26953be5.png\";","export default __webpack_public_path__ + \"static/media/xperio_M_silver_shadow.8bf60ecc.png\";","export default __webpack_public_path__ + \"static/media/xperio_M_silver.92d498cb.png\";","export default __webpack_public_path__ + \"static/media/xperio_M_skyblue_silver.9b377201.png\";","export default __webpack_public_path__ + \"static/media/xperio_M_violet.d2b0b022.png\";","export default __webpack_public_path__ + \"static/media/Concave_Lens_50.d8a0fba5.png\";","export default __webpack_public_path__ + \"static/media/Concave_Lens_56.618dd1e6.png\";","export default __webpack_public_path__ + \"static/media/Concave_Lens_60.1e4ad5aa.png\";","export default __webpack_public_path__ + \"static/media/Concave_Lens_67.cef47e73.png\";","export default __webpack_public_path__ + \"static/media/Concave_Lens_74.a15723c1.png\";","export default __webpack_public_path__ + \"static/media/Convexe_Lens_50.cd0f9fc6.png\";","export default __webpack_public_path__ + \"static/media/Convexe_Lens_56.a93adfe4.png\";","export default __webpack_public_path__ + \"static/media/Convexe_Lens_60.14d06003.png\";","export default __webpack_public_path__ + \"static/media/Convexe_Lens_67.e8d938ed.png\";","export default __webpack_public_path__ + \"static/media/Convexe_Lens_74.e2a75cc1.png\";","export default __webpack_public_path__ + \"static/media/control-1.357b168f.svg\";","export default __webpack_public_path__ + \"static/media/control-2.d3d46b5e.svg\";","export default __webpack_public_path__ + \"static/media/control-3.35833c7e.svg\";","export default __webpack_public_path__ + \"static/media/control-4.2488ac7f.svg\";","export default __webpack_public_path__ + \"static/media/control-5.c38f4361.svg\";","export default __webpack_public_path__ + \"static/media/Varilux_Stairs_ComfortMax.8446908d.svg\";","export default __webpack_public_path__ + \"static/media/Varilux_Stairs_Eseries.02b37cc2.svg\";","export default __webpack_public_path__ + \"static/media/Varilux_Stairs_Liberty.ff158e0a.svg\";","export default __webpack_public_path__ + \"static/media/Varilux_Stairs_Physio.64548be5.svg\";","export default __webpack_public_path__ + \"static/media/Varilux_Stairs_Sseries.22924cee.svg\";","export default __webpack_public_path__ + \"static/media/Varilux_Stairs_Xseries.54b064be.svg\";","export default __webpack_public_path__ + \"static/media/Varilux_Stairs_STANDARD.6d38df56.svg\";","export default __webpack_public_path__ + \"static/media/Varilux_Stairs_Comfort3.fa0fbaeb.svg\";","export default __webpack_public_path__ + \"static/media/Varilux_Stairs_ComfortMax-Line.918dab54.svg\";","export default __webpack_public_path__ + \"static/media/Varilux_Stairs_Eseries-Line.3f4f6be9.svg\";","export default __webpack_public_path__ + \"static/media/Varilux_Stairs_Liberty-Line.2ef35e40.svg\";","export default __webpack_public_path__ + \"static/media/Varilux_Stairs_Physio-Line.0afa2496.svg\";","export default __webpack_public_path__ + \"static/media/Varilux_Stairs_Sseries-Line.77b27911.svg\";","export default __webpack_public_path__ + \"static/media/Varilux_Stairs_Xseries-Line.d7b990cc.svg\";","export default __webpack_public_path__ + \"static/media/Varilux_Stairs_STANDARD-Line.ed3b4663.svg\";","export default __webpack_public_path__ + \"static/media/Varilux_Stairs_Comfort3-Line.2ef35e40.svg\";","export default __webpack_public_path__ + \"static/media/refresh-new.8991216d.svg\";","export default __webpack_public_path__ + \"static/media/demo.38716916.svg\";","export default __webpack_public_path__ + \"static/media/hamburger-new.cdcd820c.svg\";","export default __webpack_public_path__ + \"static/media/logo.fad6f2a2.png\";","export default __webpack_public_path__ + \"static/media/essilor-logo-white.76ffa61b.svg\";","export default __webpack_public_path__ + \"static/media/field-of-vision-min.d9ab1a8c.jpg\";","export default __webpack_public_path__ + \"static/media/enhance-lens-min.58287713.png\";","export default __webpack_public_path__ + \"static/media/protect-lens.28dc3d2e.png\";","export default __webpack_public_path__ + \"static/media/correct-lens.c702dd84.png\";","export default __webpack_public_path__ + \"static/media/montage_background_00000-min.53996ec7.png\";","export default __webpack_public_path__ + \"static/media/Lens_None.1c18ffc0.png\";","export default __webpack_public_path__ + \"static/media/Lens_Correct_Protect_Active.ed47bb00.png\";","export default __webpack_public_path__ + \"static/media/Lens_Correct_Enhance_Active.d3b28019.png\";","export default __webpack_public_path__ + \"static/media/Lens_Protect_Enhance_Active.8d61c234.png\";","export default __webpack_public_path__ + \"static/media/Lens_Correct_Glow.ccbf37ec.mp4\";","export default __webpack_public_path__ + \"static/media/Lens_Protect_Glow.1e7ed037.mp4\";","export default __webpack_public_path__ + \"static/media/Lens_Enhance_Glow.76d4d088.mp4\";","export default __webpack_public_path__ + \"static/media/lensMenuBlack.e2fcbb82.svg\";","export default __webpack_public_path__ + \"static/media/flip.172bd6a5.svg\";","export default __webpack_public_path__ + \"static/media/TransitionIn_00000.63ecf1b9.png\";","export default __webpack_public_path__ + \"static/media/TransitionIn_00001.287fb5aa.png\";","export default __webpack_public_path__ + \"static/media/TransitionIn_00002.58abff06.png\";","export default __webpack_public_path__ + \"static/media/TransitionIn_00003.3f5356b0.png\";","export default __webpack_public_path__ + \"static/media/TransitionIn_00004.de279994.png\";","export default __webpack_public_path__ + \"static/media/TransitionIn_00005.031341c9.png\";","export default __webpack_public_path__ + \"static/media/TransitionIn_00006.3fcc0462.png\";","export default __webpack_public_path__ + \"static/media/TransitionIn_00007.38e517f6.png\";","export default __webpack_public_path__ + \"static/media/TransitionIn_00008.fc36955e.png\";","export default __webpack_public_path__ + \"static/media/TransitionIn_00009.f1334018.png\";","export default __webpack_public_path__ + \"static/media/TransitionIn_00010.8b02d7d0.png\";","export default __webpack_public_path__ + \"static/media/TransitionIn_00011.1a8da4a7.png\";","export default __webpack_public_path__ + \"static/media/TransitionIn_00012.8809712b.png\";","export default __webpack_public_path__ + \"static/media/TransitionIn_00013.e0d5b206.png\";","export default __webpack_public_path__ + \"static/media/TransitionIn_00014.c90ba23d.png\";","export default __webpack_public_path__ + \"static/media/TransitionIn_00015.46339331.png\";","export default __webpack_public_path__ + \"static/media/TransitionIn_00016.50ab24b8.png\";","export default __webpack_public_path__ + \"static/media/TransitionIn_00017.7efa9a17.png\";","export default __webpack_public_path__ + \"static/media/TransitionIn_00018.09fce427.png\";","export default __webpack_public_path__ + \"static/media/TransitionIn_00019.88c02e20.png\";","export default __webpack_public_path__ + \"static/media/TransitionIn_00020.8c994035.png\";","export default __webpack_public_path__ + \"static/media/TransitionIn_00021.a3234997.png\";","export default __webpack_public_path__ + \"static/media/TransitionIn_00022.b5999dbb.png\";","export default __webpack_public_path__ + \"static/media/TransitionIn_00023.84fc7219.png\";","export default __webpack_public_path__ + \"static/media/TransitionIn_00024.09520f21.png\";","export default __webpack_public_path__ + \"static/media/TransitionIn_00025.3c0dd585.png\";","export default __webpack_public_path__ + \"static/media/TransitionIn_00026.76555aa8.png\";","export default __webpack_public_path__ + \"static/media/TransitionIn_00027.3bf0cba9.png\";","export default __webpack_public_path__ + \"static/media/TransitionIn_00028.fd2da1f6.png\";","export default __webpack_public_path__ + \"static/media/TransitionIn_00029.155d1d16.png\";","export default __webpack_public_path__ + \"static/media/TransitionIn_00030.c414816c.png\";","export default __webpack_public_path__ + \"static/media/TransitionIn_00031.6c5a736a.png\";","export default __webpack_public_path__ + \"static/media/TransitionIn_00032.6831cd06.png\";","export default __webpack_public_path__ + \"static/media/TransitionIn_00033.f176ad99.png\";","export default __webpack_public_path__ + \"static/media/TransitionIn_00034.c12a81a6.png\";","export default __webpack_public_path__ + \"static/media/TransitionIn_00035.57d01561.png\";","export default __webpack_public_path__ + \"static/media/TransitionIn_00036.b8a2bf68.png\";","export default __webpack_public_path__ + \"static/media/TransitionIn_00037.01b721ca.png\";","export default __webpack_public_path__ + \"static/media/TransitionIn_00038.4836ff52.png\";","export default __webpack_public_path__ + \"static/media/TransitionIn_00039.61193ee5.png\";","export default __webpack_public_path__ + \"static/media/TransitionIn_00040.7a4edc8d.png\";","export default __webpack_public_path__ + \"static/media/TransitionIn_00041.01173b32.png\";","export default __webpack_public_path__ + \"static/media/TransitionIn_00042.d44fc1c5.png\";","export default __webpack_public_path__ + \"static/media/TransitionIn_00043.0f2c59ef.png\";","export default __webpack_public_path__ + \"static/media/TransitionIn_00044.8ed06d7f.png\";","export default __webpack_public_path__ + \"static/media/TransitionIn_00045.f8d9357b.png\";","export default __webpack_public_path__ + \"static/media/TransitionIn_00046.c7bf1a0f.png\";","export default __webpack_public_path__ + \"static/media/TransitionIn_00047.25806e09.png\";","export default __webpack_public_path__ + \"static/media/TransitionIn_00048.6ce0f01e.png\";","export default __webpack_public_path__ + \"static/media/TransitionIn_00049.25ca8c3f.png\";","export default __webpack_public_path__ + \"static/media/TransitionIn_00050.428637c5.png\";","export default __webpack_public_path__ + \"static/media/TransitionIn_00051.76976c80.png\";","export default __webpack_public_path__ + \"static/media/TransitionIn_00052.e7bf3e8b.png\";","export default __webpack_public_path__ + \"static/media/TransitionIn_00053.ff2c3f10.png\";","export default __webpack_public_path__ + \"static/media/TransitionIn_00054.a82aca00.png\";","export default __webpack_public_path__ + \"static/media/TransitionIn_00055.d6cc7454.png\";","export default __webpack_public_path__ + \"static/media/TransitionIn_00056.5854c253.png\";","export default __webpack_public_path__ + \"static/media/TransitionIn_00057.d68b780d.png\";","export default __webpack_public_path__ + \"static/media/TransitionIn_00058.d68b780d.png\";","export default __webpack_public_path__ + \"static/media/TransitionIn_00059.d68b780d.png\";","export default __webpack_public_path__ + \"static/media/TransitionIn_00060.1c18ffc0.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00000-min.4ff69f54.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00001-min.6e3456ae.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00002-min.94d6cb5f.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00003-min.5fa27f28.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00004-min.85d2b276.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00005-min.0e97633c.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00006-min.8b06b868.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00007-min.00ee2f5c.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00008-min.150e73b5.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00009-min.5b36bd84.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00010-min.285845f2.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00011-min.2b35d016.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00012-min.bbca08e4.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00013-min.c8a64ed9.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00014-min.6f58ed75.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00015-min.5ec72433.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00016-min.51be6cfe.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00017-min.b1c7826d.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00018-min.8b796a45.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00019-min.9d6b3028.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00020-min.0cc2cf12.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00021-min.c6a1c9f6.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00022-min.b83f6df7.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00023-min.96254fd4.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00024-min.f8df3746.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00025-min.21722387.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00026-min.d93aa61b.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00027-min.082f551d.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00028-min.dceb41a4.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00029-min.5fa8aea5.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00030-min.aa326bfa.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00031-min.694c5071.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00032-min.e6b21f6f.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00033-min.9eec0858.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00034-min.319dc8b3.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00035-min.3858cef2.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00036-min.4ca4528d.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00037-min.9f2f25a4.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00038-min.791fd645.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00039-min.ae60210e.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00040-min.3b453cc8.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00041-min.e03ee803.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00042-min.e633078e.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00043-min.6c4e153e.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00044-min.3f3df988.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00045-min.d1b623b1.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00046-min.b2ff3efd.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00047-min.91fa19e4.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00048-min.84afa63a.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00049-min.c102b31a.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00050-min.ceadbd5b.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00051-min.a10d906c.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00052-min.284efaaf.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00053-min.ba1f0a1f.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00054-min.35c3705a.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00055-min.69035090.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00056-min.9eefc58f.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00057-min.14ec993d.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00058-min.c2525350.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00059-min.36e9e706.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00060-min.e556e45e.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00061-min.4ef9621e.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00062-min.a6849fa6.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00063-min.7c014981.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00064-min.360e499c.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00065-min.6e8c323a.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00066-min.e27706e3.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00067-min.3645213d.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00068-min.710cdd26.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00069-min.6e0bc3e7.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00070-min.504d599a.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00071-min.1b002e2b.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00072-min.a1d35add.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00073-min.03f1fc6d.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00074-min.271bf43b.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00075-min.f82b8842.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00076-min.f0332ac9.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00077-min.60477f12.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00078-min.5ea24e20.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00079-min.4de56389.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00080-min.28801a9a.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00081-min.6b5919fe.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00082-min.cdc414b9.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00083-min.11b9cfbb.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00084-min.4fc0975f.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00085-min.45ab0549.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00086-min.c2ce1f0f.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00087-min.20b1ce6a.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00088-min.855f4900.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00089-min.8844009b.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00090-min.770abd7b.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00091-min.631fa158.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00092-min.db0ab080.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00093-min.095dcc74.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00094-min.c0ae4263.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00095-min.8b787695.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00096-min.1d780c50.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00097-min.7ff4a404.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00098-min.dc9f4d02.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00099-min.a144ec77.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00100-min.4344f7bf.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00101-min.6606c189.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00102-min.74b4ccda.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00103-min.fc4e71e5.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00104-min.f53c3e4a.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00105-min.b3c2e228.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00106-min.cedebfd3.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00107-min.46cb5417.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00108-min.368cab16.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00109-min.48c57c4d.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00110-min.37a43c6d.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00111-min.98b6dc23.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00112-min.4506fb3a.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00113-min.424ca569.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00114-min.efab1fe7.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00115-min.1b5035c4.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00116-min.22e6e768.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00117-min.210d5788.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00118-min.cc38f03d.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00119-min.09aa42f1.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00120-min.f0e8e04e.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00121-min.823ef4e0.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00122-min.07056fd5.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00123-min.71305450.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00124-min.a06b96b6.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00125-min.a92ae880.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00126-min.71a6bf22.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00127-min.2f5a3184.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00128-min.221e981a.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00129-min.f67730ae.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00130-min.af7825df.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00131-min.2703d276.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00132-min.0fc41cd4.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00133-min.49108427.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00134-min.a0eb20d8.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00135-min.bb387dce.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00136-min.41da69db.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00137-min.691b8dc8.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00138-min.baff46ba.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00139-min.25df4e9e.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00140-min.8309b68d.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00141-min.5c3a6983.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00142-min.b7dd9b3e.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00143-min.8909109e.png\";","export default __webpack_public_path__ + \"static/media/loop verre01_plan01_00144-min.ec309898.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Convexe_00000.d49c02d1.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Convexe_00001.03b6f50c.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Convexe_00002.db730034.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Convexe_00003.a0ca68e2.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Convexe_00004.48b18640.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Convexe_00005.8d7de01e.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Convexe_00006.be5845b6.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Convexe_00007.30d11fce.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Convexe_00008.ff2f0e1b.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Convexe_00009.e3c37e4e.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Convexe_00010.a3b0c57d.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Convexe_00011.8f364bef.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Convexe_00012.5be64ddd.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Convexe_00013.c981b933.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Convexe_00014.f4ada57f.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Convexe_00015.ac710383.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Convexe_00016.c6c2773e.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Convexe_00017.fc958910.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Convexe_00018.915d2185.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Convexe_00019.eb7dbe51.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Convexe_00020.04d77f4e.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Convexe_00021.f954bdb8.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Convexe_00022.1a064042.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Convexe_00023.fe4f5ffc.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Convexe_00024.b21171f0.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Convexe_00025.aa9ca00c.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Convexe_00026.89717ca9.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Convexe_00027.666eaa62.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Convexe_00028.2a52f9d7.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Convexe_00029.3c4b8fd4.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Convexe_00030.e5530bc9.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Convexe_00031.31dbaca0.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Convexe_00032.bf360fcd.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Convexe_00033.ccb23421.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Convexe_00034.c9f028ad.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Convexe_00035.6721f296.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Convexe_00036.a63ed2c8.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Convexe_00037.ef1c3ec1.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Convexe_00038.c6662d72.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Convexe_00039.5618c7cf.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Convexe_00040.5930cd82.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Convexe_00041.5eacdc40.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Convexe_00042.82f5a160.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Convexe_00043.45ec8892.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Convexe_00044.d8b2723b.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Convexe_00045.19710d40.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Convexe_00046.519e6bef.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Convexe_00047.c9cd1d95.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Convexe_00048.236d395c.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Convexe_00049.4a1e4f1c.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Concave_00000.d49c02d1.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Concave_00001.03b6f50c.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Concave_00002.db730034.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Concave_00003.a0ca68e2.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Concave_00004.48b18640.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Concave_00005.8d7de01e.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Concave_00006.be5845b6.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Concave_00007.30d11fce.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Concave_00008.ff2f0e1b.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Concave_00009.e3c37e4e.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Concave_00010.a3b0c57d.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Concave_00011.8f364bef.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Concave_00012.5be64ddd.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Concave_00013.c981b933.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Concave_00014.f4ada57f.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Concave_00015.ac710383.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Concave_00016.749642c2.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Concave_00017.862592c7.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Concave_00018.02539a6b.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Concave_00019.f16ee750.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Concave_00020.85b868df.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Concave_00021.f31974e1.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Concave_00022.8d4a8a4e.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Concave_00023.6c8fdb08.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Concave_00024.0b39274a.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Concave_00025.561b7b1b.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Concave_00026.df30e735.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Concave_00027.5dde54a4.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Concave_00028.c5e7e08d.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Concave_00029.de89abe3.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Concave_00030.e2202854.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Concave_00031.cab5e34c.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Concave_00032.f1cfd35e.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Concave_00033.b9d4ed97.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Concave_00034.3d763e4c.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Concave_00035.3ccdbee9.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Concave_00036.6a1734ec.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Concave_00037.1b5979d6.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Concave_00038.1d4960c2.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Concave_00039.53d9ed1c.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Concave_00040.88a1676f.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Concave_00041.d696a398.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Concave_00042.54f7db32.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Concave_00043.23044949.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Concave_00044.99ae9a72.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Concave_00045.0d2db5f0.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Concave_00046.21f61dfe.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Concave_00047.ca310b69.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Concave_00048.7c071733.png\";","export default __webpack_public_path__ + \"static/media/TransitionOut_Concave_00049.8addd54c.png\";","export default __webpack_public_path__ + \"static/media/gen_eyes.be243b95.png\";","export default __webpack_public_path__ + \"static/media/gen_eyeglasses.429cb2e5.png\";","export default __webpack_public_path__ + \"static/media/gen_stop.0537dec1.png\";","export default __webpack_public_path__ + \"static/media/gen_nearby.5c0768c9.png\";","export default __webpack_public_path__ + \"static/media/gen_distance.f1942c98.png\";","export default __webpack_public_path__ + \"static/media/gen_far_away.ab1b0cec.png\";","export default __webpack_public_path__ + \"static/media/gen_drag_screen.daa5ee9d.png\";","export default __webpack_public_path__ + \"static/media/gen_drag_daily.52657795.png\";","export default __webpack_public_path__ + \"static/media/gen_drag_outdoor.4b90cbb1.png\";","export default __webpack_public_path__ + \"static/media/gen_drag_indoor.1b5e76bc.png\";","export default __webpack_public_path__ + \"static/media/gen_woman_children.43ede23e.png\";","export default __webpack_public_path__ + \"static/media/running.2a8e557c.png\";","export default __webpack_public_path__ + \"static/media/gen_expose.1b2a0d35.png\";","export default __webpack_public_path__ + \"static/media/running-solo.ab865218.png\";","export default __webpack_public_path__ + \"static/media/gen_discomfort.7ab2cbff.png\";","export default __webpack_public_path__ + \"static/media/gen_smudge.241a55f9.png\";","export default __webpack_public_path__ + \"static/media/gen_scratch_glasses.b652584c.png\";","export default __webpack_public_path__ + \"static/media/gen_rain.acaac7fc.png\";","export default __webpack_public_path__ + \"static/media/gen_multiple_screen.80af61c6.png\";","export default __webpack_public_path__ + \"static/media/gen_discussion.c427b6c6.png\";","export default __webpack_public_path__ + \"static/media/gen_meetings.ec9d6fb7.png\";","export default __webpack_public_path__ + \"static/media/bike.e22ca916.png\";","export default __webpack_public_path__ + \"static/media/scooter.5bfb7ef8.png\";","export default __webpack_public_path__ + \"static/media/motor.04bcbeee.png\";","export default __webpack_public_path__ + \"static/media/gen_car.7d1fa304.png\";","export default __webpack_public_path__ + \"static/media/gen_bus_driver.e02af0a6.png\";","export default __webpack_public_path__ + \"static/media/gen_brightlight.d3ebb6f3.png\";","export default __webpack_public_path__ + \"static/media/gen_lowlight.f57e20ae.png\";","export default __webpack_public_path__ + \"static/media/gen_reduced_dark.90654955.png\";","export default __webpack_public_path__ + \"static/media/gen_changing_light.73fc1360.png\";","export default __webpack_public_path__ + \"static/media/gen_glare.a6fcccaa.png\";","export default __webpack_public_path__ + \"static/media/gen_headlights.af10ba59.png\";","export default __webpack_public_path__ + \"static/media/gen_multitask.a39e91ca.png\";","export default __webpack_public_path__ + \"static/media/gen_precision_task.a7de51cc.png\";","export default __webpack_public_path__ + \"static/media/gen_electrician.47c8b86a.png\";","export default __webpack_public_path__ + \"static/media/gen_farsighted.09cb85f6.png\";","export default __webpack_public_path__ + \"static/media/gen_drag_quick_eye.229a11f3.png\";","export default __webpack_public_path__ + \"static/media/gen_drag_high_risk.860a4141.png\";","export default __webpack_public_path__ + \"static/media/gen_fast_response.d4f898f9.png\";","export default __webpack_public_path__ + \"static/media/gen_drag_kitchen.679f2b2a.png\";","export default __webpack_public_path__ + \"static/media/gen_smudge_dust_grease.18ad18e1.png\";","export default __webpack_public_path__ + \"static/media/gen_light_circumstances.e4bc4652.png\";","export default __webpack_public_path__ + \"static/media/oceanie.7e24380d.jpg\";","export default __webpack_public_path__ + \"static/media/amera.7b94b683.jpg\";","export default __webpack_public_path__ + \"static/media/noam.f391c82a.jpg\";","export default __webpack_public_path__ + \"static/media/europe.ea9622ff.jpg\";","export default __webpack_public_path__ + \"static/media/latam.1823a9fa.jpg\";","export default __webpack_public_path__ + \"static/media/africa.d893f0c6.jpg\";","export default __webpack_public_path__ + \"static/media/logo-white.4425de87.png\";","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAFxSURBVHgBnZLPSkJREMZn5lyLdj7CXUWU4m1bkGarVuYT6BuUYEQQ6S4jSiFah0+gEFFg+e8FvC6CVmFP0N0EYZ05nRvd21UJo29xzjDMj5lzvkEIaDfajL8jbgGCCYj6wvoQjfZFb/UZxkResB9tlBFVjYAdTVQBVFURJmZAtnJWNzUOonscRhoFiSr1KkLJir3uBAt2rJYJFGqhomy5t9LxOxYXbkwCmZkzRHoccqVzA6k4CyAvR0Y1BG4LPdZBb2PiHZ7Oe2sdRuXklrtxHxTAFjLbMEW6pi+VMn0QlBqEkMLTQFAQFoDOT0cFNrC0poKgLELhT0ah2WGVEDOl+dvYb0g+cl/QvrVPA35Szk47AilHhqyXFq8n/HL9JYQCsaoH8+gFJxpiwIr+vRephP2h14aRUozYf9OuIGKZJKWPH5L9EdDTUeQqwWyYUsfM0C4+bg7c/N5SMyaJa8yUPvuG/ywXzkfvnuA/0iv4Zd0nGXWPscsq2vMAAAAASUVORK5CYII=\"","export default __webpack_public_path__ + \"static/media/refresh.1b0b2a7e.svg\";","export default __webpack_public_path__ + \"static/media/play-video.2a501eac.svg\";","export default __webpack_public_path__ + \"static/media/variluxG9-bg-4.1cc0ec51.png\";","export default __webpack_public_path__ + \"static/media/variluxG9-bg-2.30653b39.png\";","export default __webpack_public_path__ + \"static/media/variluxG9-bg-3.1bebbd13.png\";","export default __webpack_public_path__ + \"static/media/01.353170b1.png\";","export default __webpack_public_path__ + \"static/media/027.ba31e348.png\";","export default __webpack_public_path__ + \"static/media/03.c7fdbba1.png\";","export default __webpack_public_path__ + \"static/media/04.67f76a0e.png\";","export default __webpack_public_path__ + \"static/media/05.737ccf8f.png\";","export default __webpack_public_path__ + \"static/media/qrcode-ca.0bcc3ec6.png\";","export default __webpack_public_path__ + \"static/media/qrcode-canada.0bcc3ec6.png\";","export default \"data:image/png;base64,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\"","export default __webpack_public_path__ + \"static/media/qrcode-sk.2761c989.png\";","var map = {\n\t\"./fonts/Akhand-Bold.otf\": [\n\t\t689,\n\t\t6\n\t],\n\t\"./fonts/AkhandSoft-Bold.otf\": [\n\t\t690,\n\t\t7\n\t],\n\t\"./gif/eye-reader-ava.gif\": [\n\t\t691,\n\t\t253\n\t],\n\t\"./gif/eye.gif\": [\n\t\t39\n\t],\n\t\"./images/BlueUV_FilterSystem.png\": [\n\t\t692,\n\t\t254\n\t],\n\t\"./images/base-lens.png\": [\n\t\t693,\n\t\t255\n\t],\n\t\"./images/bike.png\": [\n\t\t504\n\t],\n\t\"./images/blackboard.png\": [\n\t\t694,\n\t\t256\n\t],\n\t\"./images/blue-uv-card.jpg\": [\n\t\t37\n\t],\n\t\"./images/board0.png\": [\n\t\t695,\n\t\t257\n\t],\n\t\"./images/board1.png\": [\n\t\t696,\n\t\t258\n\t],\n\t\"./images/board2.png\": [\n\t\t697,\n\t\t259\n\t],\n\t\"./images/board3.png\": [\n\t\t698,\n\t\t260\n\t],\n\t\"./images/car.png\": [\n\t\t699,\n\t\t261\n\t],\n\t\"./images/clear-lens.png\": [\n\t\t700,\n\t\t262\n\t],\n\t\"./images/correct-blue.png\": [\n\t\t701,\n\t\t263\n\t],\n\t\"./images/correct.png\": [\n\t\t702,\n\t\t264\n\t],\n\t\"./images/crizal-card.png\": [\n\t\t42\n\t],\n\t\"./images/crizal-logo.png\": [\n\t\t703,\n\t\t265\n\t],\n\t\"./images/cycling.png\": [\n\t\t704,\n\t\t266\n\t],\n\t\"./images/delivery-summary-pair1.png\": [\n\t\t705,\n\t\t267\n\t],\n\t\"./images/delivery-summary-pair2.png\": [\n\t\t706,\n\t\t268\n\t],\n\t\"./images/delivery-summary.jpg\": [\n\t\t707,\n\t\t269\n\t],\n\t\"./images/deliveryAdviceStandard.jpg\": [\n\t\t708,\n\t\t270\n\t],\n\t\"./images/demonstration-car.png\": [\n\t\t709,\n\t\t271\n\t],\n\t\"./images/demonstrations/01.png\": [\n\t\t538\n\t],\n\t\"./images/demonstrations/02.png\": [\n\t\t710,\n\t\t272\n\t],\n\t\"./images/demonstrations/027.png\": [\n\t\t539\n\t],\n\t\"./images/demonstrations/03.png\": [\n\t\t540\n\t],\n\t\"./images/demonstrations/04.png\": [\n\t\t541\n\t],\n\t\"./images/demonstrations/05.png\": [\n\t\t542\n\t],\n\t\"./images/demonstrations/icons/Union.png\": [\n\t\t532\n\t],\n\t\"./images/demonstrations/icons/control-1.png\": [\n\t\t711,\n\t\t273\n\t],\n\t\"./images/demonstrations/icons/control-2.png\": [\n\t\t712,\n\t\t274\n\t],\n\t\"./images/demonstrations/icons/control-3.png\": [\n\t\t713,\n\t\t275\n\t],\n\t\"./images/demonstrations/icons/control-4.png\": [\n\t\t714,\n\t\t276\n\t],\n\t\"./images/demonstrations/icons/control-5.png\": [\n\t\t715,\n\t\t277\n\t],\n\t\"./images/demonstrations/icons/fill.png\": [\n\t\t716,\n\t\t278\n\t],\n\t\"./images/demonstrations/icons/zoom-in.png\": [\n\t\t717,\n\t\t279\n\t],\n\t\"./images/demonstrations/icons/zoom-out.png\": [\n\t\t718,\n\t\t280\n\t],\n\t\"./images/discovery/04_background_plan_logo2-min.png\": [\n\t\t719,\n\t\t281\n\t],\n\t\"./images/discovery/04_background_plan_logo2.png\": [\n\t\t720,\n\t\t282\n\t],\n\t\"./images/discovery/04_plan_logo2-min.png\": [\n\t\t721,\n\t\t283\n\t],\n\t\"./images/discovery/04_plan_logo2.png\": [\n\t\t722,\n\t\t284\n\t],\n\t\"./images/discovery/correct-lens.png\": [\n\t\t166\n\t],\n\t\"./images/discovery/correct-lens.svg\": [\n\t\t723,\n\t\t8\n\t],\n\t\"./images/discovery/enhance-lens-min.png\": [\n\t\t164\n\t],\n\t\"./images/discovery/enhance-lens.svg\": [\n\t\t724,\n\t\t9\n\t],\n\t\"./images/discovery/license-activation-bg-min.png\": [\n\t\t725,\n\t\t285\n\t],\n\t\"./images/discovery/license-activation-bg.png\": [\n\t\t726,\n\t\t286\n\t],\n\t\"./images/discovery/montage_background_00000-min.png\": [\n\t\t167\n\t],\n\t\"./images/discovery/montage_background_00000.png\": [\n\t\t727,\n\t\t287\n\t],\n\t\"./images/discovery/montage_background_00385.png\": [\n\t\t728,\n\t\t288\n\t],\n\t\"./images/discovery/protect-lens.png\": [\n\t\t165\n\t],\n\t\"./images/discovery/protect-lens.svg\": [\n\t\t729,\n\t\t10\n\t],\n\t\"./images/discovery/sprites/CORRECT_loop_sprite.png\": [\n\t\t730,\n\t\t289\n\t],\n\t\"./images/discovery/sprites/ENHANCE_loop_sprite.png\": [\n\t\t731,\n\t\t290\n\t],\n\t\"./images/discovery/sprites/PROTECT_loop_sprite.png\": [\n\t\t732,\n\t\t291\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00000-min.png\": [\n\t\t238\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00001-min.png\": [\n\t\t239\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00002-min.png\": [\n\t\t240\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00003-min.png\": [\n\t\t241\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00004-min.png\": [\n\t\t242\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00005-min.png\": [\n\t\t243\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00006-min.png\": [\n\t\t244\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00007-min.png\": [\n\t\t245\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00008-min.png\": [\n\t\t246\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00009-min.png\": [\n\t\t247\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00010-min.png\": [\n\t\t248\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00011-min.png\": [\n\t\t249\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00012-min.png\": [\n\t\t250\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00013-min.png\": [\n\t\t251\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00014-min.png\": [\n\t\t252\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00015-min.png\": [\n\t\t253\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00016-min.png\": [\n\t\t254\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00017-min.png\": [\n\t\t255\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00018-min.png\": [\n\t\t256\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00019-min.png\": [\n\t\t257\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00020-min.png\": [\n\t\t258\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00021-min.png\": [\n\t\t259\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00022-min.png\": [\n\t\t260\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00023-min.png\": [\n\t\t261\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00024-min.png\": [\n\t\t262\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00025-min.png\": [\n\t\t263\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00026-min.png\": [\n\t\t264\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00027-min.png\": [\n\t\t265\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00028-min.png\": [\n\t\t266\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00029-min.png\": [\n\t\t267\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00030-min.png\": [\n\t\t268\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00031-min.png\": [\n\t\t269\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00032-min.png\": [\n\t\t270\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00033-min.png\": [\n\t\t271\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00034-min.png\": [\n\t\t272\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00035-min.png\": [\n\t\t273\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00036-min.png\": [\n\t\t274\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00037-min.png\": [\n\t\t275\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00038-min.png\": [\n\t\t276\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00039-min.png\": [\n\t\t277\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00040-min.png\": [\n\t\t278\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00041-min.png\": [\n\t\t279\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00042-min.png\": [\n\t\t280\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00043-min.png\": [\n\t\t281\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00044-min.png\": [\n\t\t282\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00045-min.png\": [\n\t\t283\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00046-min.png\": [\n\t\t284\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00047-min.png\": [\n\t\t285\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00048-min.png\": [\n\t\t286\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00049-min.png\": [\n\t\t287\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00050-min.png\": [\n\t\t288\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00051-min.png\": [\n\t\t289\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00052-min.png\": [\n\t\t290\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00053-min.png\": [\n\t\t291\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00054-min.png\": [\n\t\t292\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00055-min.png\": [\n\t\t293\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00056-min.png\": [\n\t\t294\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00057-min.png\": [\n\t\t295\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00058-min.png\": [\n\t\t296\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00059-min.png\": [\n\t\t297\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00060-min.png\": [\n\t\t298\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00061-min.png\": [\n\t\t299\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00062-min.png\": [\n\t\t300\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00063-min.png\": [\n\t\t301\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00064-min.png\": [\n\t\t302\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00065-min.png\": [\n\t\t303\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00066-min.png\": [\n\t\t304\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00067-min.png\": [\n\t\t305\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00068-min.png\": [\n\t\t306\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00069-min.png\": [\n\t\t307\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00070-min.png\": [\n\t\t308\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00071-min.png\": [\n\t\t309\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00072-min.png\": [\n\t\t310\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00073-min.png\": [\n\t\t311\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00074-min.png\": [\n\t\t312\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00075-min.png\": [\n\t\t313\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00076-min.png\": [\n\t\t314\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00077-min.png\": [\n\t\t315\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00078-min.png\": [\n\t\t316\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00079-min.png\": [\n\t\t317\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00080-min.png\": [\n\t\t318\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00081-min.png\": [\n\t\t319\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00082-min.png\": [\n\t\t320\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00083-min.png\": [\n\t\t321\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00084-min.png\": [\n\t\t322\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00085-min.png\": [\n\t\t323\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00086-min.png\": [\n\t\t324\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00087-min.png\": [\n\t\t325\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00088-min.png\": [\n\t\t326\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00089-min.png\": [\n\t\t327\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00090-min.png\": [\n\t\t328\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00091-min.png\": [\n\t\t329\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00092-min.png\": [\n\t\t330\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00093-min.png\": [\n\t\t331\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00094-min.png\": [\n\t\t332\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00095-min.png\": [\n\t\t333\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00096-min.png\": [\n\t\t334\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00097-min.png\": [\n\t\t335\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00098-min.png\": [\n\t\t336\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00099-min.png\": [\n\t\t337\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00100-min.png\": [\n\t\t338\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00101-min.png\": [\n\t\t339\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00102-min.png\": [\n\t\t340\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00103-min.png\": [\n\t\t341\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00104-min.png\": [\n\t\t342\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00105-min.png\": [\n\t\t343\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00106-min.png\": [\n\t\t344\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00107-min.png\": [\n\t\t345\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00108-min.png\": [\n\t\t346\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00109-min.png\": [\n\t\t347\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00110-min.png\": [\n\t\t348\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00111-min.png\": [\n\t\t349\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00112-min.png\": [\n\t\t350\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00113-min.png\": [\n\t\t351\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00114-min.png\": [\n\t\t352\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00115-min.png\": [\n\t\t353\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00116-min.png\": [\n\t\t354\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00117-min.png\": [\n\t\t355\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00118-min.png\": [\n\t\t356\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00119-min.png\": [\n\t\t357\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00120-min.png\": [\n\t\t358\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00121-min.png\": [\n\t\t359\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00122-min.png\": [\n\t\t360\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00123-min.png\": [\n\t\t361\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00124-min.png\": [\n\t\t362\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00125-min.png\": [\n\t\t363\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00126-min.png\": [\n\t\t364\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00127-min.png\": [\n\t\t365\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00128-min.png\": [\n\t\t366\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00129-min.png\": [\n\t\t367\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00130-min.png\": [\n\t\t368\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00131-min.png\": [\n\t\t369\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00132-min.png\": [\n\t\t370\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00133-min.png\": [\n\t\t371\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00134-min.png\": [\n\t\t372\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00135-min.png\": [\n\t\t373\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00136-min.png\": [\n\t\t374\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00137-min.png\": [\n\t\t375\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00138-min.png\": [\n\t\t376\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00139-min.png\": [\n\t\t377\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00140-min.png\": [\n\t\t378\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00141-min.png\": [\n\t\t379\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00142-min.png\": [\n\t\t380\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00143-min.png\": [\n\t\t381\n\t],\n\t\"./images/discovery/texture/loop verre01_plan01_00144-min.png\": [\n\t\t382\n\t],\n\t\"./images/easy-to-clean.png\": [\n\t\t733,\n\t\t292\n\t],\n\t\"./images/education-a.png\": [\n\t\t734,\n\t\t293\n\t],\n\t\"./images/education-b.png\": [\n\t\t735,\n\t\t294\n\t],\n\t\"./images/education-c.png\": [\n\t\t736,\n\t\t295\n\t],\n\t\"./images/eliminates-off-balance.png\": [\n\t\t737,\n\t\t296\n\t],\n\t\"./images/enhance-blue.png\": [\n\t\t738,\n\t\t297\n\t],\n\t\"./images/enhance.png\": [\n\t\t739,\n\t\t298\n\t],\n\t\"./images/essilor-logo.png\": [\n\t\t740,\n\t\t299\n\t],\n\t\"./images/experio-card.jpg\": [\n\t\t36\n\t],\n\t\"./images/eye-reader-ava.png\": [\n\t\t741,\n\t\t300\n\t],\n\t\"./images/eye-reader-standard.png\": [\n\t\t742,\n\t\t301\n\t],\n\t\"./images/eye.png\": [\n\t\t743,\n\t\t302\n\t],\n\t\"./images/eyezen-card.png\": [\n\t\t38\n\t],\n\t\"./images/field-of-vision-min.jpg\": [\n\t\t163\n\t],\n\t\"./images/field-of-vision-n.jpg\": [\n\t\t744,\n\t\t303\n\t],\n\t\"./images/field-of-vision.jpg\": [\n\t\t745,\n\t\t304\n\t],\n\t\"./images/gen_brightlight.png\": [\n\t\t509\n\t],\n\t\"./images/gen_bus_driver.png\": [\n\t\t508\n\t],\n\t\"./images/gen_car.png\": [\n\t\t507\n\t],\n\t\"./images/gen_changing_light.png\": [\n\t\t512\n\t],\n\t\"./images/gen_daily.png\": [\n\t\t746,\n\t\t305\n\t],\n\t\"./images/gen_discomfort.png\": [\n\t\t497\n\t],\n\t\"./images/gen_discussion.png\": [\n\t\t502\n\t],\n\t\"./images/gen_distance.png\": [\n\t\t487\n\t],\n\t\"./images/gen_drag_daily.png\": [\n\t\t490\n\t],\n\t\"./images/gen_drag_high_risk.png\": [\n\t\t520\n\t],\n\t\"./images/gen_drag_indoor.png\": [\n\t\t492\n\t],\n\t\"./images/gen_drag_kitchen.png\": [\n\t\t522\n\t],\n\t\"./images/gen_drag_outdoor.png\": [\n\t\t491\n\t],\n\t\"./images/gen_drag_quick_eye.png\": [\n\t\t519\n\t],\n\t\"./images/gen_drag_screen.png\": [\n\t\t489\n\t],\n\t\"./images/gen_electrician.png\": [\n\t\t517\n\t],\n\t\"./images/gen_empty.png\": [\n\t\t747,\n\t\t306\n\t],\n\t\"./images/gen_expose.png\": [\n\t\t495\n\t],\n\t\"./images/gen_eyeglasses.png\": [\n\t\t484\n\t],\n\t\"./images/gen_eyes.png\": [\n\t\t483\n\t],\n\t\"./images/gen_far_away.png\": [\n\t\t488\n\t],\n\t\"./images/gen_farsighted.png\": [\n\t\t518\n\t],\n\t\"./images/gen_fast_response.png\": [\n\t\t521\n\t],\n\t\"./images/gen_glare.png\": [\n\t\t513\n\t],\n\t\"./images/gen_headlights.png\": [\n\t\t514\n\t],\n\t\"./images/gen_indoor.png\": [\n\t\t748,\n\t\t307\n\t],\n\t\"./images/gen_light_circumstances.png\": [\n\t\t524\n\t],\n\t\"./images/gen_lowlight.png\": [\n\t\t510\n\t],\n\t\"./images/gen_man_truck.png\": [\n\t\t749,\n\t\t308\n\t],\n\t\"./images/gen_meetings.png\": [\n\t\t503\n\t],\n\t\"./images/gen_multiple_screen.png\": [\n\t\t501\n\t],\n\t\"./images/gen_multitask.png\": [\n\t\t515\n\t],\n\t\"./images/gen_nearby.png\": [\n\t\t486\n\t],\n\t\"./images/gen_outdoor.png\": [\n\t\t750,\n\t\t309\n\t],\n\t\"./images/gen_precision_task.png\": [\n\t\t516\n\t],\n\t\"./images/gen_rain.png\": [\n\t\t500\n\t],\n\t\"./images/gen_reduced_dark.png\": [\n\t\t511\n\t],\n\t\"./images/gen_scratch.png\": [\n\t\t751,\n\t\t310\n\t],\n\t\"./images/gen_scratch_glasses.png\": [\n\t\t499\n\t],\n\t\"./images/gen_screen.png\": [\n\t\t752,\n\t\t311\n\t],\n\t\"./images/gen_short_distance.png\": [\n\t\t753,\n\t\t312\n\t],\n\t\"./images/gen_slide_climbing.png\": [\n\t\t754,\n\t\t313\n\t],\n\t\"./images/gen_slide_holidays.png\": [\n\t\t755,\n\t\t314\n\t],\n\t\"./images/gen_slide_nature.png\": [\n\t\t756,\n\t\t315\n\t],\n\t\"./images/gen_slide_urban.png\": [\n\t\t757,\n\t\t316\n\t],\n\t\"./images/gen_slide_waterside.png\": [\n\t\t758,\n\t\t317\n\t],\n\t\"./images/gen_slide_winter.png\": [\n\t\t759,\n\t\t318\n\t],\n\t\"./images/gen_smudge.png\": [\n\t\t498\n\t],\n\t\"./images/gen_smudge_dust_grease.png\": [\n\t\t523\n\t],\n\t\"./images/gen_stop.png\": [\n\t\t485\n\t],\n\t\"./images/gen_woman_bus.png\": [\n\t\t760,\n\t\t319\n\t],\n\t\"./images/gen_woman_children.png\": [\n\t\t493\n\t],\n\t\"./images/home-blue.png\": [\n\t\t761,\n\t\t320\n\t],\n\t\"./images/home-content-background.jpg\": [\n\t\t762,\n\t\t321\n\t],\n\t\"./images/home.png\": [\n\t\t763,\n\t\t322\n\t],\n\t\"./images/lens-base.png\": [\n\t\t764,\n\t\t323\n\t],\n\t\"./images/lens-consulatation/Lens_All.png\": [\n\t\t66\n\t],\n\t\"./images/lens-consulatation/Lens_Correct_Active.png\": [\n\t\t67\n\t],\n\t\"./images/lens-consulatation/Lens_Correct_Enhance_Active.png\": [\n\t\t170\n\t],\n\t\"./images/lens-consulatation/Lens_Correct_Protect_Active.png\": [\n\t\t169\n\t],\n\t\"./images/lens-consulatation/Lens_Enhance_Active.png\": [\n\t\t68\n\t],\n\t\"./images/lens-consulatation/Lens_None.png\": [\n\t\t168\n\t],\n\t\"./images/lens-consulatation/Lens_Protect_Active.png\": [\n\t\t69\n\t],\n\t\"./images/lens-consulatation/Lens_Protect_Enhance_Active.png\": [\n\t\t171\n\t],\n\t\"./images/lens-consulatation/lens-thickness/concave/Concave_Lens_50.png\": [\n\t\t112\n\t],\n\t\"./images/lens-consulatation/lens-thickness/concave/Concave_Lens_56.png\": [\n\t\t113\n\t],\n\t\"./images/lens-consulatation/lens-thickness/concave/Concave_Lens_60.png\": [\n\t\t114\n\t],\n\t\"./images/lens-consulatation/lens-thickness/concave/Concave_Lens_67.png\": [\n\t\t115\n\t],\n\t\"./images/lens-consulatation/lens-thickness/concave/Concave_Lens_74.png\": [\n\t\t116\n\t],\n\t\"./images/lens-consulatation/lens-thickness/convexe/Convexe_Lens_50.png\": [\n\t\t117\n\t],\n\t\"./images/lens-consulatation/lens-thickness/convexe/Convexe_Lens_56.png\": [\n\t\t118\n\t],\n\t\"./images/lens-consulatation/lens-thickness/convexe/Convexe_Lens_60.png\": [\n\t\t119\n\t],\n\t\"./images/lens-consulatation/lens-thickness/convexe/Convexe_Lens_67.png\": [\n\t\t120\n\t],\n\t\"./images/lens-consulatation/lens-thickness/convexe/Convexe_Lens_74.png\": [\n\t\t121\n\t],\n\t\"./images/lens-consulatation/tinted-lens/transition/transition_amber.png\": [\n\t\t71\n\t],\n\t\"./images/lens-consulatation/tinted-lens/transition/transition_amethyst.png\": [\n\t\t72\n\t],\n\t\"./images/lens-consulatation/tinted-lens/transition/transition_brown.png\": [\n\t\t73\n\t],\n\t\"./images/lens-consulatation/tinted-lens/transition/transition_emerald.png\": [\n\t\t74\n\t],\n\t\"./images/lens-consulatation/tinted-lens/transition/transition_green.png\": [\n\t\t70\n\t],\n\t\"./images/lens-consulatation/tinted-lens/transition/transition_grey.png\": [\n\t\t75\n\t],\n\t\"./images/lens-consulatation/tinted-lens/transition/transition_saphirre.png\": [\n\t\t76\n\t],\n\t\"./images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_bronze.png\": [\n\t\t95\n\t],\n\t\"./images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_bronze_shadow.png\": [\n\t\t94\n\t],\n\t\"./images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_candy.png\": [\n\t\t96\n\t],\n\t\"./images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_forestgreen.png\": [\n\t\t97\n\t],\n\t\"./images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_goldpink.png\": [\n\t\t98\n\t],\n\t\"./images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_green_shadow.png\": [\n\t\t99\n\t],\n\t\"./images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_kaki.png\": [\n\t\t100\n\t],\n\t\"./images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_mauve_silver.png\": [\n\t\t101\n\t],\n\t\"./images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_new_blue.png\": [\n\t\t102\n\t],\n\t\"./images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_new_silver.png\": [\n\t\t103\n\t],\n\t\"./images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_ocean_blue.png\": [\n\t\t104\n\t],\n\t\"./images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_orange.png\": [\n\t\t105\n\t],\n\t\"./images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_parma.png\": [\n\t\t106\n\t],\n\t\"./images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_pink_silver.png\": [\n\t\t107\n\t],\n\t\"./images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_silver.png\": [\n\t\t109\n\t],\n\t\"./images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_silver_shadow.png\": [\n\t\t108\n\t],\n\t\"./images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_skyblue_silver.png\": [\n\t\t110\n\t],\n\t\"./images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_violet.png\": [\n\t\t111\n\t],\n\t\"./images/lens-consulatation/tinted-lens/xperio/polarized/xperio_P_amber.png\": [\n\t\t77\n\t],\n\t\"./images/lens-consulatation/tinted-lens/xperio/polarized/xperio_P_blue_ink.png\": [\n\t\t78\n\t],\n\t\"./images/lens-consulatation/tinted-lens/xperio/polarized/xperio_P_blue_purple.png\": [\n\t\t79\n\t],\n\t\"./images/lens-consulatation/tinted-lens/xperio/polarized/xperio_P_blue_sky.png\": [\n\t\t80\n\t],\n\t\"./images/lens-consulatation/tinted-lens/xperio/polarized/xperio_P_brown.png\": [\n\t\t81\n\t],\n\t\"./images/lens-consulatation/tinted-lens/xperio/polarized/xperio_P_grey.png\": [\n\t\t82\n\t],\n\t\"./images/lens-consulatation/tinted-lens/xperio/polarized/xperio_P_grey_green.png\": [\n\t\t83\n\t],\n\t\"./images/lens-consulatation/tinted-lens/xperio/polarized/xperio_P_herbal.png\": [\n\t\t84\n\t],\n\t\"./images/lens-consulatation/tinted-lens/xperio/polarized/xperio_P_violet.png\": [\n\t\t85\n\t],\n\t\"./images/lens-consulatation/tinted-lens/xperio/tinted/xperio_T_black.png\": [\n\t\t86\n\t],\n\t\"./images/lens-consulatation/tinted-lens/xperio/tinted/xperio_T_blue_ink.png\": [\n\t\t87\n\t],\n\t\"./images/lens-consulatation/tinted-lens/xperio/tinted/xperio_T_brown.png\": [\n\t\t88\n\t],\n\t\"./images/lens-consulatation/tinted-lens/xperio/tinted/xperio_T_burgundy.png\": [\n\t\t89\n\t],\n\t\"./images/lens-consulatation/tinted-lens/xperio/tinted/xperio_T_grey.png\": [\n\t\t91\n\t],\n\t\"./images/lens-consulatation/tinted-lens/xperio/tinted/xperio_T_grey_green.png\": [\n\t\t90\n\t],\n\t\"./images/lens-consulatation/tinted-lens/xperio/tinted/xperio_T_herbal.png\": [\n\t\t92\n\t],\n\t\"./images/lens-consulatation/tinted-lens/xperio/tinted/xperio_T_newbrown.png\": [\n\t\t93\n\t],\n\t\"./images/lens-consulatation/transition-in/TransitionIn_00000.png\": [\n\t\t177\n\t],\n\t\"./images/lens-consulatation/transition-in/TransitionIn_00001.png\": [\n\t\t178\n\t],\n\t\"./images/lens-consulatation/transition-in/TransitionIn_00002.png\": [\n\t\t179\n\t],\n\t\"./images/lens-consulatation/transition-in/TransitionIn_00003.png\": [\n\t\t180\n\t],\n\t\"./images/lens-consulatation/transition-in/TransitionIn_00004.png\": [\n\t\t181\n\t],\n\t\"./images/lens-consulatation/transition-in/TransitionIn_00005.png\": [\n\t\t182\n\t],\n\t\"./images/lens-consulatation/transition-in/TransitionIn_00006.png\": [\n\t\t183\n\t],\n\t\"./images/lens-consulatation/transition-in/TransitionIn_00007.png\": [\n\t\t184\n\t],\n\t\"./images/lens-consulatation/transition-in/TransitionIn_00008.png\": [\n\t\t185\n\t],\n\t\"./images/lens-consulatation/transition-in/TransitionIn_00009.png\": [\n\t\t186\n\t],\n\t\"./images/lens-consulatation/transition-in/TransitionIn_00010.png\": [\n\t\t187\n\t],\n\t\"./images/lens-consulatation/transition-in/TransitionIn_00011.png\": [\n\t\t188\n\t],\n\t\"./images/lens-consulatation/transition-in/TransitionIn_00012.png\": [\n\t\t189\n\t],\n\t\"./images/lens-consulatation/transition-in/TransitionIn_00013.png\": [\n\t\t190\n\t],\n\t\"./images/lens-consulatation/transition-in/TransitionIn_00014.png\": [\n\t\t191\n\t],\n\t\"./images/lens-consulatation/transition-in/TransitionIn_00015.png\": [\n\t\t192\n\t],\n\t\"./images/lens-consulatation/transition-in/TransitionIn_00016.png\": [\n\t\t193\n\t],\n\t\"./images/lens-consulatation/transition-in/TransitionIn_00017.png\": [\n\t\t194\n\t],\n\t\"./images/lens-consulatation/transition-in/TransitionIn_00018.png\": [\n\t\t195\n\t],\n\t\"./images/lens-consulatation/transition-in/TransitionIn_00019.png\": [\n\t\t196\n\t],\n\t\"./images/lens-consulatation/transition-in/TransitionIn_00020.png\": [\n\t\t197\n\t],\n\t\"./images/lens-consulatation/transition-in/TransitionIn_00021.png\": [\n\t\t198\n\t],\n\t\"./images/lens-consulatation/transition-in/TransitionIn_00022.png\": [\n\t\t199\n\t],\n\t\"./images/lens-consulatation/transition-in/TransitionIn_00023.png\": [\n\t\t200\n\t],\n\t\"./images/lens-consulatation/transition-in/TransitionIn_00024.png\": [\n\t\t201\n\t],\n\t\"./images/lens-consulatation/transition-in/TransitionIn_00025.png\": [\n\t\t202\n\t],\n\t\"./images/lens-consulatation/transition-in/TransitionIn_00026.png\": [\n\t\t203\n\t],\n\t\"./images/lens-consulatation/transition-in/TransitionIn_00027.png\": [\n\t\t204\n\t],\n\t\"./images/lens-consulatation/transition-in/TransitionIn_00028.png\": [\n\t\t205\n\t],\n\t\"./images/lens-consulatation/transition-in/TransitionIn_00029.png\": [\n\t\t206\n\t],\n\t\"./images/lens-consulatation/transition-in/TransitionIn_00030.png\": [\n\t\t207\n\t],\n\t\"./images/lens-consulatation/transition-in/TransitionIn_00031.png\": [\n\t\t208\n\t],\n\t\"./images/lens-consulatation/transition-in/TransitionIn_00032.png\": [\n\t\t209\n\t],\n\t\"./images/lens-consulatation/transition-in/TransitionIn_00033.png\": [\n\t\t210\n\t],\n\t\"./images/lens-consulatation/transition-in/TransitionIn_00034.png\": [\n\t\t211\n\t],\n\t\"./images/lens-consulatation/transition-in/TransitionIn_00035.png\": [\n\t\t212\n\t],\n\t\"./images/lens-consulatation/transition-in/TransitionIn_00036.png\": [\n\t\t213\n\t],\n\t\"./images/lens-consulatation/transition-in/TransitionIn_00037.png\": [\n\t\t214\n\t],\n\t\"./images/lens-consulatation/transition-in/TransitionIn_00038.png\": [\n\t\t215\n\t],\n\t\"./images/lens-consulatation/transition-in/TransitionIn_00039.png\": [\n\t\t216\n\t],\n\t\"./images/lens-consulatation/transition-in/TransitionIn_00040.png\": [\n\t\t217\n\t],\n\t\"./images/lens-consulatation/transition-in/TransitionIn_00041.png\": [\n\t\t218\n\t],\n\t\"./images/lens-consulatation/transition-in/TransitionIn_00042.png\": [\n\t\t219\n\t],\n\t\"./images/lens-consulatation/transition-in/TransitionIn_00043.png\": [\n\t\t220\n\t],\n\t\"./images/lens-consulatation/transition-in/TransitionIn_00044.png\": [\n\t\t221\n\t],\n\t\"./images/lens-consulatation/transition-in/TransitionIn_00045.png\": [\n\t\t222\n\t],\n\t\"./images/lens-consulatation/transition-in/TransitionIn_00046.png\": [\n\t\t223\n\t],\n\t\"./images/lens-consulatation/transition-in/TransitionIn_00047.png\": [\n\t\t224\n\t],\n\t\"./images/lens-consulatation/transition-in/TransitionIn_00048.png\": [\n\t\t225\n\t],\n\t\"./images/lens-consulatation/transition-in/TransitionIn_00049.png\": [\n\t\t226\n\t],\n\t\"./images/lens-consulatation/transition-in/TransitionIn_00050.png\": [\n\t\t227\n\t],\n\t\"./images/lens-consulatation/transition-in/TransitionIn_00051.png\": [\n\t\t228\n\t],\n\t\"./images/lens-consulatation/transition-in/TransitionIn_00052.png\": [\n\t\t229\n\t],\n\t\"./images/lens-consulatation/transition-in/TransitionIn_00053.png\": [\n\t\t230\n\t],\n\t\"./images/lens-consulatation/transition-in/TransitionIn_00054.png\": [\n\t\t231\n\t],\n\t\"./images/lens-consulatation/transition-in/TransitionIn_00055.png\": [\n\t\t232\n\t],\n\t\"./images/lens-consulatation/transition-in/TransitionIn_00056.png\": [\n\t\t233\n\t],\n\t\"./images/lens-consulatation/transition-in/TransitionIn_00057.png\": [\n\t\t234\n\t],\n\t\"./images/lens-consulatation/transition-in/TransitionIn_00058.png\": [\n\t\t235\n\t],\n\t\"./images/lens-consulatation/transition-in/TransitionIn_00059.png\": [\n\t\t236\n\t],\n\t\"./images/lens-consulatation/transition-in/TransitionIn_00060.png\": [\n\t\t237\n\t],\n\t\"./images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00000.png\": [\n\t\t433\n\t],\n\t\"./images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00001.png\": [\n\t\t434\n\t],\n\t\"./images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00002.png\": [\n\t\t435\n\t],\n\t\"./images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00003.png\": [\n\t\t436\n\t],\n\t\"./images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00004.png\": [\n\t\t437\n\t],\n\t\"./images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00005.png\": [\n\t\t438\n\t],\n\t\"./images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00006.png\": [\n\t\t439\n\t],\n\t\"./images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00007.png\": [\n\t\t440\n\t],\n\t\"./images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00008.png\": [\n\t\t441\n\t],\n\t\"./images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00009.png\": [\n\t\t442\n\t],\n\t\"./images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00010.png\": [\n\t\t443\n\t],\n\t\"./images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00011.png\": [\n\t\t444\n\t],\n\t\"./images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00012.png\": [\n\t\t445\n\t],\n\t\"./images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00013.png\": [\n\t\t446\n\t],\n\t\"./images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00014.png\": [\n\t\t447\n\t],\n\t\"./images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00015.png\": [\n\t\t448\n\t],\n\t\"./images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00016.png\": [\n\t\t449\n\t],\n\t\"./images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00017.png\": [\n\t\t450\n\t],\n\t\"./images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00018.png\": [\n\t\t451\n\t],\n\t\"./images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00019.png\": [\n\t\t452\n\t],\n\t\"./images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00020.png\": [\n\t\t453\n\t],\n\t\"./images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00021.png\": [\n\t\t454\n\t],\n\t\"./images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00022.png\": [\n\t\t455\n\t],\n\t\"./images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00023.png\": [\n\t\t456\n\t],\n\t\"./images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00024.png\": [\n\t\t457\n\t],\n\t\"./images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00025.png\": [\n\t\t458\n\t],\n\t\"./images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00026.png\": [\n\t\t459\n\t],\n\t\"./images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00027.png\": [\n\t\t460\n\t],\n\t\"./images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00028.png\": [\n\t\t461\n\t],\n\t\"./images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00029.png\": [\n\t\t462\n\t],\n\t\"./images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00030.png\": [\n\t\t463\n\t],\n\t\"./images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00031.png\": [\n\t\t464\n\t],\n\t\"./images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00032.png\": [\n\t\t465\n\t],\n\t\"./images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00033.png\": [\n\t\t466\n\t],\n\t\"./images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00034.png\": [\n\t\t467\n\t],\n\t\"./images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00035.png\": [\n\t\t468\n\t],\n\t\"./images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00036.png\": [\n\t\t469\n\t],\n\t\"./images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00037.png\": [\n\t\t470\n\t],\n\t\"./images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00038.png\": [\n\t\t471\n\t],\n\t\"./images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00039.png\": [\n\t\t472\n\t],\n\t\"./images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00040.png\": [\n\t\t473\n\t],\n\t\"./images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00041.png\": [\n\t\t474\n\t],\n\t\"./images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00042.png\": [\n\t\t475\n\t],\n\t\"./images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00043.png\": [\n\t\t476\n\t],\n\t\"./images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00044.png\": [\n\t\t477\n\t],\n\t\"./images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00045.png\": [\n\t\t478\n\t],\n\t\"./images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00046.png\": [\n\t\t479\n\t],\n\t\"./images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00047.png\": [\n\t\t480\n\t],\n\t\"./images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00048.png\": [\n\t\t481\n\t],\n\t\"./images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00049.png\": [\n\t\t482\n\t],\n\t\"./images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00000.png\": [\n\t\t383\n\t],\n\t\"./images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00001.png\": [\n\t\t384\n\t],\n\t\"./images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00002.png\": [\n\t\t385\n\t],\n\t\"./images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00003.png\": [\n\t\t386\n\t],\n\t\"./images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00004.png\": [\n\t\t387\n\t],\n\t\"./images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00005.png\": [\n\t\t388\n\t],\n\t\"./images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00006.png\": [\n\t\t389\n\t],\n\t\"./images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00007.png\": [\n\t\t390\n\t],\n\t\"./images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00008.png\": [\n\t\t391\n\t],\n\t\"./images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00009.png\": [\n\t\t392\n\t],\n\t\"./images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00010.png\": [\n\t\t393\n\t],\n\t\"./images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00011.png\": [\n\t\t394\n\t],\n\t\"./images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00012.png\": [\n\t\t395\n\t],\n\t\"./images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00013.png\": [\n\t\t396\n\t],\n\t\"./images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00014.png\": [\n\t\t397\n\t],\n\t\"./images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00015.png\": [\n\t\t398\n\t],\n\t\"./images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00016.png\": [\n\t\t399\n\t],\n\t\"./images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00017.png\": [\n\t\t400\n\t],\n\t\"./images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00018.png\": [\n\t\t401\n\t],\n\t\"./images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00019.png\": [\n\t\t402\n\t],\n\t\"./images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00020.png\": [\n\t\t403\n\t],\n\t\"./images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00021.png\": [\n\t\t404\n\t],\n\t\"./images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00022.png\": [\n\t\t405\n\t],\n\t\"./images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00023.png\": [\n\t\t406\n\t],\n\t\"./images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00024.png\": [\n\t\t407\n\t],\n\t\"./images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00025.png\": [\n\t\t408\n\t],\n\t\"./images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00026.png\": [\n\t\t409\n\t],\n\t\"./images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00027.png\": [\n\t\t410\n\t],\n\t\"./images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00028.png\": [\n\t\t411\n\t],\n\t\"./images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00029.png\": [\n\t\t412\n\t],\n\t\"./images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00030.png\": [\n\t\t413\n\t],\n\t\"./images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00031.png\": [\n\t\t414\n\t],\n\t\"./images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00032.png\": [\n\t\t415\n\t],\n\t\"./images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00033.png\": [\n\t\t416\n\t],\n\t\"./images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00034.png\": [\n\t\t417\n\t],\n\t\"./images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00035.png\": [\n\t\t418\n\t],\n\t\"./images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00036.png\": [\n\t\t419\n\t],\n\t\"./images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00037.png\": [\n\t\t420\n\t],\n\t\"./images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00038.png\": [\n\t\t421\n\t],\n\t\"./images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00039.png\": [\n\t\t422\n\t],\n\t\"./images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00040.png\": [\n\t\t423\n\t],\n\t\"./images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00041.png\": [\n\t\t424\n\t],\n\t\"./images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00042.png\": [\n\t\t425\n\t],\n\t\"./images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00043.png\": [\n\t\t426\n\t],\n\t\"./images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00044.png\": [\n\t\t427\n\t],\n\t\"./images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00045.png\": [\n\t\t428\n\t],\n\t\"./images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00046.png\": [\n\t\t429\n\t],\n\t\"./images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00047.png\": [\n\t\t430\n\t],\n\t\"./images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00048.png\": [\n\t\t431\n\t],\n\t\"./images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00049.png\": [\n\t\t432\n\t],\n\t\"./images/lens-lines.png\": [\n\t\t765,\n\t\t324\n\t],\n\t\"./images/logo.png\": [\n\t\t766,\n\t\t325\n\t],\n\t\"./images/measure-step-1.png\": [\n\t\t767,\n\t\t326\n\t],\n\t\"./images/measure-step-2.png\": [\n\t\t768,\n\t\t327\n\t],\n\t\"./images/measure-step-3.png\": [\n\t\t769,\n\t\t328\n\t],\n\t\"./images/motor.png\": [\n\t\t506\n\t],\n\t\"./images/need-explorer/general_save_image.png\": [\n\t\t770,\n\t\t329\n\t],\n\t\"./images/needexplorer-hero.jpg\": [\n\t\t771,\n\t\t330\n\t],\n\t\"./images/optifog-card.png\": [\n\t\t43\n\t],\n\t\"./images/optifog-logo.png\": [\n\t\t772,\n\t\t331\n\t],\n\t\"./images/optimized-package.png\": [\n\t\t773,\n\t\t332\n\t],\n\t\"./images/outdoor-activities-image.png\": [\n\t\t774,\n\t\t333\n\t],\n\t\"./images/personalized-package.png\": [\n\t\t775,\n\t\t334\n\t],\n\t\"./images/practice-id.png\": [\n\t\t776,\n\t\t335\n\t],\n\t\"./images/prescription/Clear_Lens.png\": [\n\t\t52\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00000.png\": [\n\t\t777,\n\t\t336\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00001.png\": [\n\t\t778,\n\t\t337\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00002.png\": [\n\t\t779,\n\t\t338\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00003.png\": [\n\t\t780,\n\t\t339\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00004.png\": [\n\t\t781,\n\t\t340\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00005.png\": [\n\t\t782,\n\t\t341\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00006.png\": [\n\t\t783,\n\t\t342\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00007.png\": [\n\t\t784,\n\t\t343\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00008.png\": [\n\t\t785,\n\t\t344\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00009.png\": [\n\t\t786,\n\t\t345\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00010.png\": [\n\t\t787,\n\t\t346\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00011.png\": [\n\t\t788,\n\t\t347\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00012.png\": [\n\t\t789,\n\t\t348\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00013.png\": [\n\t\t790,\n\t\t349\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00014.png\": [\n\t\t791,\n\t\t350\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00015.png\": [\n\t\t792,\n\t\t351\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00016.png\": [\n\t\t793,\n\t\t352\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00017.png\": [\n\t\t794,\n\t\t353\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00018.png\": [\n\t\t795,\n\t\t354\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00019.png\": [\n\t\t796,\n\t\t355\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00020.png\": [\n\t\t797,\n\t\t356\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00021.png\": [\n\t\t798,\n\t\t357\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00022.png\": [\n\t\t799,\n\t\t358\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00023.png\": [\n\t\t800,\n\t\t359\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00024.png\": [\n\t\t801,\n\t\t360\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00025.png\": [\n\t\t802,\n\t\t361\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00026.png\": [\n\t\t803,\n\t\t362\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00027.png\": [\n\t\t804,\n\t\t363\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00028.png\": [\n\t\t805,\n\t\t364\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00029.png\": [\n\t\t806,\n\t\t365\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00030.png\": [\n\t\t807,\n\t\t366\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00031.png\": [\n\t\t808,\n\t\t367\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00032.png\": [\n\t\t809,\n\t\t368\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00033.png\": [\n\t\t810,\n\t\t369\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00034.png\": [\n\t\t811,\n\t\t370\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00035.png\": [\n\t\t812,\n\t\t371\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00036.png\": [\n\t\t813,\n\t\t372\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00037.png\": [\n\t\t814,\n\t\t373\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00038.png\": [\n\t\t815,\n\t\t374\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00039.png\": [\n\t\t816,\n\t\t375\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00040.png\": [\n\t\t817,\n\t\t376\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00041.png\": [\n\t\t818,\n\t\t377\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00042.png\": [\n\t\t819,\n\t\t378\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00043.png\": [\n\t\t820,\n\t\t379\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00044.png\": [\n\t\t821,\n\t\t380\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00045.png\": [\n\t\t822,\n\t\t381\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00046.png\": [\n\t\t823,\n\t\t382\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00047.png\": [\n\t\t824,\n\t\t383\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00048.png\": [\n\t\t825,\n\t\t384\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00049.png\": [\n\t\t826,\n\t\t385\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00050.png\": [\n\t\t827,\n\t\t386\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00051.png\": [\n\t\t828,\n\t\t387\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00052.png\": [\n\t\t829,\n\t\t388\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00053.png\": [\n\t\t830,\n\t\t389\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00054.png\": [\n\t\t831,\n\t\t390\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00055.png\": [\n\t\t832,\n\t\t391\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00056.png\": [\n\t\t833,\n\t\t392\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00057.png\": [\n\t\t834,\n\t\t393\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00058.png\": [\n\t\t835,\n\t\t394\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00059.png\": [\n\t\t836,\n\t\t395\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00060.png\": [\n\t\t837,\n\t\t396\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00061.png\": [\n\t\t838,\n\t\t397\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00062.png\": [\n\t\t839,\n\t\t398\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00063.png\": [\n\t\t840,\n\t\t399\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00064.png\": [\n\t\t841,\n\t\t400\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00065.png\": [\n\t\t842,\n\t\t401\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00066.png\": [\n\t\t843,\n\t\t402\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00067.png\": [\n\t\t844,\n\t\t403\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00068.png\": [\n\t\t845,\n\t\t404\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00069.png\": [\n\t\t846,\n\t\t405\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00070.png\": [\n\t\t847,\n\t\t406\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00071.png\": [\n\t\t848,\n\t\t407\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00072.png\": [\n\t\t849,\n\t\t408\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00073.png\": [\n\t\t850,\n\t\t409\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00074.png\": [\n\t\t851,\n\t\t410\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00075.png\": [\n\t\t852,\n\t\t411\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00076.png\": [\n\t\t853,\n\t\t412\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00077.png\": [\n\t\t854,\n\t\t413\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00078.png\": [\n\t\t855,\n\t\t414\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00079.png\": [\n\t\t856,\n\t\t415\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00080.png\": [\n\t\t857,\n\t\t416\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00081.png\": [\n\t\t858,\n\t\t417\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00082.png\": [\n\t\t859,\n\t\t418\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00083.png\": [\n\t\t860,\n\t\t419\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00084.png\": [\n\t\t861,\n\t\t420\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00085.png\": [\n\t\t862,\n\t\t421\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00086.png\": [\n\t\t863,\n\t\t422\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00087.png\": [\n\t\t864,\n\t\t423\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00088.png\": [\n\t\t865,\n\t\t424\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00089.png\": [\n\t\t866,\n\t\t425\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00090.png\": [\n\t\t867,\n\t\t426\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00091.png\": [\n\t\t868,\n\t\t427\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00092.png\": [\n\t\t869,\n\t\t428\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00093.png\": [\n\t\t870,\n\t\t429\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00094.png\": [\n\t\t871,\n\t\t430\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00095.png\": [\n\t\t872,\n\t\t431\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00096.png\": [\n\t\t873,\n\t\t432\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00097.png\": [\n\t\t874,\n\t\t433\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00098.png\": [\n\t\t875,\n\t\t434\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00099.png\": [\n\t\t876,\n\t\t435\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00100.png\": [\n\t\t877,\n\t\t436\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00101.png\": [\n\t\t878,\n\t\t437\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00102.png\": [\n\t\t879,\n\t\t438\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00103.png\": [\n\t\t880,\n\t\t439\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00104.png\": [\n\t\t881,\n\t\t440\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00105.png\": [\n\t\t882,\n\t\t441\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00106.png\": [\n\t\t883,\n\t\t442\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00107.png\": [\n\t\t884,\n\t\t443\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00108.png\": [\n\t\t885,\n\t\t444\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00109.png\": [\n\t\t886,\n\t\t445\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00110.png\": [\n\t\t887,\n\t\t446\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00111.png\": [\n\t\t888,\n\t\t447\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00112.png\": [\n\t\t889,\n\t\t448\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00113.png\": [\n\t\t890,\n\t\t449\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00114.png\": [\n\t\t891,\n\t\t450\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00115.png\": [\n\t\t892,\n\t\t451\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00116.png\": [\n\t\t893,\n\t\t452\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00117.png\": [\n\t\t894,\n\t\t453\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00118.png\": [\n\t\t895,\n\t\t454\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00119.png\": [\n\t\t896,\n\t\t455\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00120.png\": [\n\t\t897,\n\t\t456\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00121.png\": [\n\t\t898,\n\t\t457\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00122.png\": [\n\t\t899,\n\t\t458\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00123.png\": [\n\t\t900,\n\t\t459\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00124.png\": [\n\t\t901,\n\t\t460\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00125.png\": [\n\t\t902,\n\t\t461\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00126.png\": [\n\t\t903,\n\t\t462\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00127.png\": [\n\t\t904,\n\t\t463\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00128.png\": [\n\t\t905,\n\t\t464\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00129.png\": [\n\t\t906,\n\t\t465\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00130.png\": [\n\t\t907,\n\t\t466\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00131.png\": [\n\t\t908,\n\t\t467\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00132.png\": [\n\t\t909,\n\t\t468\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00133.png\": [\n\t\t910,\n\t\t469\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00134.png\": [\n\t\t911,\n\t\t470\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00135.png\": [\n\t\t912,\n\t\t471\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00136.png\": [\n\t\t913,\n\t\t472\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00137.png\": [\n\t\t914,\n\t\t473\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00138.png\": [\n\t\t915,\n\t\t474\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00139.png\": [\n\t\t916,\n\t\t475\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00140.png\": [\n\t\t917,\n\t\t476\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00141.png\": [\n\t\t918,\n\t\t477\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00142.png\": [\n\t\t919,\n\t\t478\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00143.png\": [\n\t\t920,\n\t\t479\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00144.png\": [\n\t\t921,\n\t\t480\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00145.png\": [\n\t\t922,\n\t\t481\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00146.png\": [\n\t\t923,\n\t\t482\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00147.png\": [\n\t\t924,\n\t\t483\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00148.png\": [\n\t\t925,\n\t\t484\n\t],\n\t\"./images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00149.png\": [\n\t\t926,\n\t\t485\n\t],\n\t\"./images/protect-blue-light.png\": [\n\t\t927,\n\t\t486\n\t],\n\t\"./images/protect-blue.png\": [\n\t\t928,\n\t\t487\n\t],\n\t\"./images/protect-light.png\": [\n\t\t929,\n\t\t488\n\t],\n\t\"./images/protect-uv-light.png\": [\n\t\t930,\n\t\t489\n\t],\n\t\"./images/protect.png\": [\n\t\t931,\n\t\t490\n\t],\n\t\"./images/qrcode-ca.png\": [\n\t\t579\n\t],\n\t\"./images/qrcode-canada.png\": [\n\t\t580\n\t],\n\t\"./images/qrcode-sample.png\": [\n\t\t581\n\t],\n\t\"./images/qrcode-sk.png\": [\n\t\t582\n\t],\n\t\"./images/reading-book.png\": [\n\t\t932,\n\t\t491\n\t],\n\t\"./images/regions/africa.jpg\": [\n\t\t530\n\t],\n\t\"./images/regions/amera.jpg\": [\n\t\t526\n\t],\n\t\"./images/regions/europe.jpg\": [\n\t\t528\n\t],\n\t\"./images/regions/latam.jpg\": [\n\t\t529\n\t],\n\t\"./images/regions/latam2.jpg\": [\n\t\t933,\n\t\t492\n\t],\n\t\"./images/regions/noam.jpg\": [\n\t\t527\n\t],\n\t\"./images/regions/oceanie.jpg\": [\n\t\t525\n\t],\n\t\"./images/running-solo.png\": [\n\t\t496\n\t],\n\t\"./images/running.png\": [\n\t\t494\n\t],\n\t\"./images/scooter.png\": [\n\t\t505\n\t],\n\t\"./images/sharp-vision-blue.png\": [\n\t\t934,\n\t\t493\n\t],\n\t\"./images/sharp-vision.png\": [\n\t\t935,\n\t\t494\n\t],\n\t\"./images/smooth-transition.png\": [\n\t\t936,\n\t\t495\n\t],\n\t\"./images/sphere-image.jpg\": [\n\t\t937,\n\t\t496\n\t],\n\t\"./images/spherical-360-degree-photo.jpg\": [\n\t\t938,\n\t\t497\n\t],\n\t\"./images/standard-package.png\": [\n\t\t939,\n\t\t498\n\t],\n\t\"./images/stellest-card2.png\": [\n\t\t46\n\t],\n\t\"./images/stellest-logo.png\": [\n\t\t940,\n\t\t499\n\t],\n\t\"./images/tablet-use.png\": [\n\t\t941,\n\t\t500\n\t],\n\t\"./images/tempo-thickness.png\": [\n\t\t942,\n\t\t501\n\t],\n\t\"./images/transitions-card.png\": [\n\t\t44\n\t],\n\t\"./images/transitions-logo.png\": [\n\t\t943,\n\t\t502\n\t],\n\t\"./images/truck.png\": [\n\t\t944,\n\t\t503\n\t],\n\t\"./images/tutorial-background.jpg\": [\n\t\t945,\n\t\t504\n\t],\n\t\"./images/varilux-card.png\": [\n\t\t41\n\t],\n\t\"./images/vision-test.png\": [\n\t\t946,\n\t\t505\n\t],\n\t\"./images/white-bg.png\": [\n\t\t947,\n\t\t506\n\t],\n\t\"./images/xperio-logo.png\": [\n\t\t948,\n\t\t507\n\t],\n\t\"./images/yoga.png\": [\n\t\t949,\n\t\t508\n\t],\n\t\"./png/acuity-near-vision-blue.png\": [\n\t\t950,\n\t\t509\n\t],\n\t\"./png/acuity-near-vision-white.png\": [\n\t\t951,\n\t\t510\n\t],\n\t\"./png/acuity-near-vision.png\": [\n\t\t952,\n\t\t511\n\t],\n\t\"./png/adapt-quickly-blue.png\": [\n\t\t953,\n\t\t512\n\t],\n\t\"./png/adapt-quickly-white.png\": [\n\t\t954,\n\t\t513\n\t],\n\t\"./png/adapt-quickly.png\": [\n\t\t955,\n\t\t514\n\t],\n\t\"./png/add-on-checkmark.png\": [\n\t\t956,\n\t\t515\n\t],\n\t\"./png/aesthetic-of-the-frame.png\": [\n\t\t957,\n\t\t516\n\t],\n\t\"./png/backpain-white.png\": [\n\t\t958,\n\t\t517\n\t],\n\t\"./png/backpain.png\": [\n\t\t959,\n\t\t518\n\t],\n\t\"./png/bag-scene.png\": [\n\t\t960,\n\t\t519\n\t],\n\t\"./png/balance-blue.png\": [\n\t\t961,\n\t\t520\n\t],\n\t\"./png/balance-white.png\": [\n\t\t962,\n\t\t521\n\t],\n\t\"./png/balance.png\": [\n\t\t963,\n\t\t522\n\t],\n\t\"./png/beach-polarised.png\": [\n\t\t964,\n\t\t523\n\t],\n\t\"./png/beach-scene.png\": [\n\t\t965,\n\t\t524\n\t],\n\t\"./png/beach-tinted.png\": [\n\t\t966,\n\t\t525\n\t],\n\t\"./png/bedroom.png\": [\n\t\t967,\n\t\t526\n\t],\n\t\"./png/benefit.png\": [\n\t\t968,\n\t\t527\n\t],\n\t\"./png/blinkingExcessively.png\": [\n\t\t969,\n\t\t528\n\t],\n\t\"./png/cam-white.png\": [\n\t\t970,\n\t\t529\n\t],\n\t\"./png/cam.png\": [\n\t\t971,\n\t\t530\n\t],\n\t\"./png/camera-white.png\": [\n\t\t972,\n\t\t531\n\t],\n\t\"./png/camera.png\": [\n\t\t973,\n\t\t532\n\t],\n\t\"./png/car-polarised.png\": [\n\t\t974,\n\t\t533\n\t],\n\t\"./png/check.png\": [\n\t\t975,\n\t\t534\n\t],\n\t\"./png/checkmark.png\": [\n\t\t976,\n\t\t535\n\t],\n\t\"./png/colors-blue.png\": [\n\t\t977,\n\t\t536\n\t],\n\t\"./png/colors.png\": [\n\t\t978,\n\t\t537\n\t],\n\t\"./png/competitor.png\": [\n\t\t979,\n\t\t538\n\t],\n\t\"./png/competitor2.png\": [\n\t\t980,\n\t\t539\n\t],\n\t\"./png/computer-white.png\": [\n\t\t981,\n\t\t540\n\t],\n\t\"./png/computer.png\": [\n\t\t982,\n\t\t541\n\t],\n\t\"./png/computer2-white.png\": [\n\t\t983,\n\t\t542\n\t],\n\t\"./png/computer2.png\": [\n\t\t984,\n\t\t543\n\t],\n\t\"./png/contacts-white.png\": [\n\t\t985,\n\t\t544\n\t],\n\t\"./png/contacts.png\": [\n\t\t986,\n\t\t545\n\t],\n\t\"./png/control-blue.png\": [\n\t\t987,\n\t\t546\n\t],\n\t\"./png/control-white.png\": [\n\t\t988,\n\t\t547\n\t],\n\t\"./png/control.png\": [\n\t\t989,\n\t\t548\n\t],\n\t\"./png/correct.png\": [\n\t\t990,\n\t\t549\n\t],\n\t\"./png/day.png\": [\n\t\t991,\n\t\t550\n\t],\n\t\"./png/decline.png\": [\n\t\t992,\n\t\t551\n\t],\n\t\"./png/digiboard-white.png\": [\n\t\t993,\n\t\t552\n\t],\n\t\"./png/digiboard.png\": [\n\t\t994,\n\t\t553\n\t],\n\t\"./png/discovery.png\": [\n\t\t995,\n\t\t554\n\t],\n\t\"./png/document-white.png\": [\n\t\t996,\n\t\t555\n\t],\n\t\"./png/document.png\": [\n\t\t997,\n\t\t556\n\t],\n\t\"./png/dry-white.png\": [\n\t\t998,\n\t\t557\n\t],\n\t\"./png/dry.png\": [\n\t\t999,\n\t\t558\n\t],\n\t\"./png/dust-repel-blue.png\": [\n\t\t1000,\n\t\t559\n\t],\n\t\"./png/dust-repel-white.png\": [\n\t\t1001,\n\t\t560\n\t],\n\t\"./png/dust-repel.png\": [\n\t\t1002,\n\t\t561\n\t],\n\t\"./png/effortless-vision-blue.png\": [\n\t\t1003,\n\t\t562\n\t],\n\t\"./png/effortless-vision-white.png\": [\n\t\t1004,\n\t\t563\n\t],\n\t\"./png/effortless-vision.png\": [\n\t\t1005,\n\t\t564\n\t],\n\t\"./png/enemies-of-vision__dust.png\": [\n\t\t1006,\n\t\t565\n\t],\n\t\"./png/enemies-of-vision__glare.png\": [\n\t\t1007,\n\t\t566\n\t],\n\t\"./png/enemies-of-vision__scratches.png\": [\n\t\t1008,\n\t\t567\n\t],\n\t\"./png/enemies-of-vision__smudges.png\": [\n\t\t1009,\n\t\t568\n\t],\n\t\"./png/enemies-of-vision__water.png\": [\n\t\t1010,\n\t\t569\n\t],\n\t\"./png/enemies-of-visions.png\": [\n\t\t1011,\n\t\t570\n\t],\n\t\"./png/enhance.png\": [\n\t\t1012,\n\t\t571\n\t],\n\t\"./png/env-light-blue.png\": [\n\t\t1013,\n\t\t572\n\t],\n\t\"./png/env-light-white.png\": [\n\t\t1014,\n\t\t573\n\t],\n\t\"./png/env-light.png\": [\n\t\t1015,\n\t\t574\n\t],\n\t\"./png/ereader-white.png\": [\n\t\t1016,\n\t\t575\n\t],\n\t\"./png/ereader.png\": [\n\t\t1017,\n\t\t576\n\t],\n\t\"./png/essidrive-day.png\": [\n\t\t1018,\n\t\t577\n\t],\n\t\"./png/essidrive-night.png\": [\n\t\t1019,\n\t\t578\n\t],\n\t\"./png/eyezen-in-front-of-computer.png\": [\n\t\t1020,\n\t\t579\n\t],\n\t\"./png/eyezen-in-front-of-computer2.png\": [\n\t\t1021,\n\t\t580\n\t],\n\t\"./png/family-scene.png\": [\n\t\t1022,\n\t\t581\n\t],\n\t\"./png/far-vision.png\": [\n\t\t1023,\n\t\t582\n\t],\n\t\"./png/far-white.png\": [\n\t\t1024,\n\t\t583\n\t],\n\t\"./png/far.png\": [\n\t\t1025,\n\t\t584\n\t],\n\t\"./png/field-of-vision.png\": [\n\t\t1026,\n\t\t585\n\t],\n\t\"./png/fingerprint-white.png\": [\n\t\t1027,\n\t\t586\n\t],\n\t\"./png/fingerprint.png\": [\n\t\t1028,\n\t\t587\n\t],\n\t\"./png/focus-white.png\": [\n\t\t1029,\n\t\t588\n\t],\n\t\"./png/focus.png\": [\n\t\t1030,\n\t\t589\n\t],\n\t\"./png/fog-on-pov.png\": [\n\t\t1031,\n\t\t590\n\t],\n\t\"./png/fog-rep-blue.png\": [\n\t\t1032,\n\t\t591\n\t],\n\t\"./png/fog-rep-white.png\": [\n\t\t1033,\n\t\t592\n\t],\n\t\"./png/fog-rep.png\": [\n\t\t1034,\n\t\t593\n\t],\n\t\"./png/garage.png\": [\n\t\t1035,\n\t\t594\n\t],\n\t\"./png/glare.png\": [\n\t\t1036,\n\t\t595\n\t],\n\t\"./png/glares.png\": [\n\t\t1037,\n\t\t596\n\t],\n\t\"./png/harmful-light-blue.png\": [\n\t\t1038,\n\t\t597\n\t],\n\t\"./png/harmful-light-gray.png\": [\n\t\t1039,\n\t\t598\n\t],\n\t\"./png/harmful-light-white.png\": [\n\t\t1040,\n\t\t599\n\t],\n\t\"./png/harmful-light.png\": [\n\t\t1041,\n\t\t600\n\t],\n\t\"./png/head-move-blue.png\": [\n\t\t1042,\n\t\t601\n\t],\n\t\"./png/head-move-white.png\": [\n\t\t1043,\n\t\t602\n\t],\n\t\"./png/head-move.png\": [\n\t\t1044,\n\t\t603\n\t],\n\t\"./png/headache-white.png\": [\n\t\t1045,\n\t\t604\n\t],\n\t\"./png/headache.png\": [\n\t\t1046,\n\t\t605\n\t],\n\t\"./png/headaches.png\": [\n\t\t1047,\n\t\t606\n\t],\n\t\"./png/homepage-bg.png\": [\n\t\t1048,\n\t\t607\n\t],\n\t\"./png/ico-journalist.png\": [\n\t\t1049,\n\t\t608\n\t],\n\t\"./png/in_front_of_my_computer.png\": [\n\t\t1050,\n\t\t609\n\t],\n\t\"./png/instant-blue.png\": [\n\t\t1051,\n\t\t610\n\t],\n\t\"./png/instant-white.png\": [\n\t\t1052,\n\t\t611\n\t],\n\t\"./png/instant.png\": [\n\t\t1053,\n\t\t612\n\t],\n\t\"./png/interactive-white.png\": [\n\t\t1054,\n\t\t613\n\t],\n\t\"./png/interactive.png\": [\n\t\t1055,\n\t\t614\n\t],\n\t\"./png/irritated-white.png\": [\n\t\t1056,\n\t\t615\n\t],\n\t\"./png/irritated.png\": [\n\t\t1057,\n\t\t616\n\t],\n\t\"./png/journalist.png\": [\n\t\t1058,\n\t\t617\n\t],\n\t\"./png/jungle-video.png\": [\n\t\t1059,\n\t\t618\n\t],\n\t\"./png/jungle-videos.png\": [\n\t\t1060,\n\t\t619\n\t],\n\t\"./png/kayak-polarised.png\": [\n\t\t1061,\n\t\t620\n\t],\n\t\"./png/kitchen.png\": [\n\t\t1062,\n\t\t621\n\t],\n\t\"./png/kitchens.png\": [\n\t\t1063,\n\t\t622\n\t],\n\t\"./png/laptop-white.png\": [\n\t\t1064,\n\t\t623\n\t],\n\t\"./png/laptop.png\": [\n\t\t1065,\n\t\t624\n\t],\n\t\"./png/lens-base.png\": [\n\t\t1066,\n\t\t625\n\t],\n\t\"./png/lens-default-protect.png\": [\n\t\t1067,\n\t\t626\n\t],\n\t\"./png/lens-lines.png\": [\n\t\t1068,\n\t\t627\n\t],\n\t\"./png/lens-mirror-bronze-shadow.png\": [\n\t\t1069,\n\t\t628\n\t],\n\t\"./png/lens-mirror-bronze.png\": [\n\t\t1070,\n\t\t629\n\t],\n\t\"./png/lens-mirror-candy.png\": [\n\t\t1071,\n\t\t630\n\t],\n\t\"./png/lens-mirror-forest-green.png\": [\n\t\t1072,\n\t\t631\n\t],\n\t\"./png/lens-mirror-gold-pink.png\": [\n\t\t1073,\n\t\t632\n\t],\n\t\"./png/lens-mirror-green-shadow.png\": [\n\t\t1074,\n\t\t633\n\t],\n\t\"./png/lens-mirror-kaki.png\": [\n\t\t1075,\n\t\t634\n\t],\n\t\"./png/lens-mirror-mauve-silver.png\": [\n\t\t1076,\n\t\t635\n\t],\n\t\"./png/lens-mirror-new-blue.png\": [\n\t\t1077,\n\t\t636\n\t],\n\t\"./png/lens-mirror-new-silver.png\": [\n\t\t1078,\n\t\t637\n\t],\n\t\"./png/lens-mirror-ocean-blue.png\": [\n\t\t1079,\n\t\t638\n\t],\n\t\"./png/lens-mirror-orange.png\": [\n\t\t1080,\n\t\t639\n\t],\n\t\"./png/lens-mirror-parma.png\": [\n\t\t1081,\n\t\t640\n\t],\n\t\"./png/lens-mirror-pink-silver.png\": [\n\t\t1082,\n\t\t641\n\t],\n\t\"./png/lens-mirror-silver-shadow.png\": [\n\t\t1083,\n\t\t642\n\t],\n\t\"./png/lens-mirror-silver.png\": [\n\t\t1084,\n\t\t643\n\t],\n\t\"./png/lens-mirror-sky-blue-silver.png\": [\n\t\t1085,\n\t\t644\n\t],\n\t\"./png/lens-mirror-violet.png\": [\n\t\t1086,\n\t\t645\n\t],\n\t\"./png/lens-polarized-amber.png\": [\n\t\t1087,\n\t\t646\n\t],\n\t\"./png/lens-polarized-blue-ink.png\": [\n\t\t1088,\n\t\t647\n\t],\n\t\"./png/lens-polarized-blue-purple.png\": [\n\t\t1089,\n\t\t648\n\t],\n\t\"./png/lens-polarized-blue-sky.png\": [\n\t\t1090,\n\t\t649\n\t],\n\t\"./png/lens-polarized-brown.png\": [\n\t\t1091,\n\t\t650\n\t],\n\t\"./png/lens-polarized-grey-green.png\": [\n\t\t1092,\n\t\t651\n\t],\n\t\"./png/lens-polarized-grey.png\": [\n\t\t1093,\n\t\t652\n\t],\n\t\"./png/lens-polarized-herbal.png\": [\n\t\t1094,\n\t\t653\n\t],\n\t\"./png/lens-polarized-violet.png\": [\n\t\t1095,\n\t\t654\n\t],\n\t\"./png/lens-tinted-black.png\": [\n\t\t1096,\n\t\t655\n\t],\n\t\"./png/lens-tinted-blue-ink.png\": [\n\t\t1097,\n\t\t656\n\t],\n\t\"./png/lens-tinted-brown.png\": [\n\t\t1098,\n\t\t657\n\t],\n\t\"./png/lens-tinted-burgundy.png\": [\n\t\t1099,\n\t\t658\n\t],\n\t\"./png/lens-tinted-grey-green.png\": [\n\t\t1100,\n\t\t659\n\t],\n\t\"./png/lens-tinted-grey.png\": [\n\t\t1101,\n\t\t660\n\t],\n\t\"./png/lens-tinted-herbal.png\": [\n\t\t1102,\n\t\t661\n\t],\n\t\"./png/lens-tinted-new-brown.png\": [\n\t\t1103,\n\t\t662\n\t],\n\t\"./png/lens-transitions-amber.png\": [\n\t\t1104,\n\t\t663\n\t],\n\t\"./png/lens-transitions-amethyst.png\": [\n\t\t1105,\n\t\t664\n\t],\n\t\"./png/lens-transitions-brown.png\": [\n\t\t1106,\n\t\t665\n\t],\n\t\"./png/lens-transitions-emerald.png\": [\n\t\t1107,\n\t\t666\n\t],\n\t\"./png/lens-transitions-green.png\": [\n\t\t1108,\n\t\t667\n\t],\n\t\"./png/lens-transitions-grey.png\": [\n\t\t1109,\n\t\t668\n\t],\n\t\"./png/lens-transitions-sapphire.png\": [\n\t\t1110,\n\t\t669\n\t],\n\t\"./png/lens-white.png\": [\n\t\t1111,\n\t\t670\n\t],\n\t\"./png/lens.png\": [\n\t\t1112,\n\t\t671\n\t],\n\t\"./png/logo-white.png\": [\n\t\t531\n\t],\n\t\"./png/logo.png\": [\n\t\t161\n\t],\n\t\"./png/looking-at-smartphone.png\": [\n\t\t1113,\n\t\t672\n\t],\n\t\"./png/looking-at-smartphone2.png\": [\n\t\t1114,\n\t\t673\n\t],\n\t\"./png/low-light-blue.png\": [\n\t\t1115,\n\t\t674\n\t],\n\t\"./png/low-light-white.png\": [\n\t\t1116,\n\t\t675\n\t],\n\t\"./png/low-light.png\": [\n\t\t1117,\n\t\t676\n\t],\n\t\"./png/magnify-white.png\": [\n\t\t1118,\n\t\t677\n\t],\n\t\"./png/magnify.png\": [\n\t\t1119,\n\t\t678\n\t],\n\t\"./png/map-white.png\": [\n\t\t1120,\n\t\t679\n\t],\n\t\"./png/map.png\": [\n\t\t1121,\n\t\t680\n\t],\n\t\"./png/measures01.png\": [\n\t\t1122,\n\t\t681\n\t],\n\t\"./png/measures02.png\": [\n\t\t1123,\n\t\t682\n\t],\n\t\"./png/measures03.png\": [\n\t\t1124,\n\t\t683\n\t],\n\t\"./png/mobile-white.png\": [\n\t\t1125,\n\t\t684\n\t],\n\t\"./png/mobile.png\": [\n\t\t1126,\n\t\t685\n\t],\n\t\"./png/moon-white.png\": [\n\t\t1127,\n\t\t686\n\t],\n\t\"./png/moon.png\": [\n\t\t1128,\n\t\t687\n\t],\n\t\"./png/natural-posture-blue.png\": [\n\t\t1129,\n\t\t688\n\t],\n\t\"./png/natural-posture-white.png\": [\n\t\t1130,\n\t\t689\n\t],\n\t\"./png/natural-posture.png\": [\n\t\t1131,\n\t\t690\n\t],\n\t\"./png/near-vision.png\": [\n\t\t1132,\n\t\t691\n\t],\n\t\"./png/neckpain-white.png\": [\n\t\t1133,\n\t\t692\n\t],\n\t\"./png/neckpain.png\": [\n\t\t1134,\n\t\t693\n\t],\n\t\"./png/night.png\": [\n\t\t1135,\n\t\t694\n\t],\n\t\"./png/no-white.png\": [\n\t\t1136,\n\t\t695\n\t],\n\t\"./png/no.png\": [\n\t\t1137,\n\t\t696\n\t],\n\t\"./png/often-white.png\": [\n\t\t1138,\n\t\t697\n\t],\n\t\"./png/often.png\": [\n\t\t1139,\n\t\t698\n\t],\n\t\"./png/optimal-clarity-blue.png\": [\n\t\t1140,\n\t\t699\n\t],\n\t\"./png/optimal-clarity-white.png\": [\n\t\t1141,\n\t\t700\n\t],\n\t\"./png/optimal-clarity.png\": [\n\t\t1142,\n\t\t701\n\t],\n\t\"./png/optimize-driving-blue.png\": [\n\t\t1143,\n\t\t702\n\t],\n\t\"./png/optimize-driving-white.png\": [\n\t\t1144,\n\t\t703\n\t],\n\t\"./png/optimize-driving.png\": [\n\t\t1145,\n\t\t704\n\t],\n\t\"./png/outdoor-sun-blue.png\": [\n\t\t1146,\n\t\t705\n\t],\n\t\"./png/outdoor-sun-white.png\": [\n\t\t1147,\n\t\t706\n\t],\n\t\"./png/outdoor-sun.png\": [\n\t\t1148,\n\t\t707\n\t],\n\t\"./png/packshot-frame.png\": [\n\t\t1149,\n\t\t708\n\t],\n\t\"./png/packshot-mirrors.png\": [\n\t\t1150,\n\t\t709\n\t],\n\t\"./png/packshot-of-frame.png\": [\n\t\t1151,\n\t\t710\n\t],\n\t\"./png/packshot-polarized.png\": [\n\t\t1152,\n\t\t711\n\t],\n\t\"./png/packshot-tinted.png\": [\n\t\t1153,\n\t\t712\n\t],\n\t\"./png/panel.png\": [\n\t\t1154,\n\t\t713\n\t],\n\t\"./png/panoramic-blue.png\": [\n\t\t1155,\n\t\t714\n\t],\n\t\"./png/panoramic-white.png\": [\n\t\t1156,\n\t\t715\n\t],\n\t\"./png/panoramic.png\": [\n\t\t1157,\n\t\t716\n\t],\n\t\"./png/play-white.png\": [\n\t\t1158,\n\t\t717\n\t],\n\t\"./png/play.png\": [\n\t\t1159,\n\t\t718\n\t],\n\t\"./png/playing-video-games.png\": [\n\t\t1160,\n\t\t719\n\t],\n\t\"./png/pool.png\": [\n\t\t1161,\n\t\t720\n\t],\n\t\"./png/progress-circle-white.png\": [\n\t\t1162,\n\t\t721\n\t],\n\t\"./png/protect.png\": [\n\t\t1163,\n\t\t722\n\t],\n\t\"./png/reflections.png\": [\n\t\t1164,\n\t\t723\n\t],\n\t\"./png/relax-screen-blue.png\": [\n\t\t1165,\n\t\t724\n\t],\n\t\"./png/relax-screen-white.png\": [\n\t\t1166,\n\t\t725\n\t],\n\t\"./png/relax-screen.png\": [\n\t\t1167,\n\t\t726\n\t],\n\t\"./png/room.png\": [\n\t\t1168,\n\t\t727\n\t],\n\t\"./png/rubbingEyes.png\": [\n\t\t1169,\n\t\t728\n\t],\n\t\"./png/running-white.png\": [\n\t\t1170,\n\t\t729\n\t],\n\t\"./png/running.png\": [\n\t\t1171,\n\t\t730\n\t],\n\t\"./png/school.png\": [\n\t\t1172,\n\t\t731\n\t],\n\t\"./png/scooter.png\": [\n\t\t1173,\n\t\t732\n\t],\n\t\"./png/scratch-icon-blue.png\": [\n\t\t1174,\n\t\t733\n\t],\n\t\"./png/scratch-icon-white.png\": [\n\t\t1175,\n\t\t734\n\t],\n\t\"./png/scratch-icon.png\": [\n\t\t1176,\n\t\t735\n\t],\n\t\"./png/scratch-white.png\": [\n\t\t1177,\n\t\t736\n\t],\n\t\"./png/scratch.png\": [\n\t\t1178,\n\t\t737\n\t],\n\t\"./png/seamless-blue.png\": [\n\t\t1179,\n\t\t738\n\t],\n\t\"./png/seamless-white.png\": [\n\t\t1180,\n\t\t739\n\t],\n\t\"./png/seamless.png\": [\n\t\t1181,\n\t\t740\n\t],\n\t\"./png/sharp-vision-icon-blue.png\": [\n\t\t1182,\n\t\t741\n\t],\n\t\"./png/sharp-vision-icon-white.png\": [\n\t\t1183,\n\t\t742\n\t],\n\t\"./png/sharp-vision-icon.png\": [\n\t\t1184,\n\t\t743\n\t],\n\t\"./png/smartphone.png\": [\n\t\t1185,\n\t\t744\n\t],\n\t\"./png/smudge-res-blue.png\": [\n\t\t1186,\n\t\t745\n\t],\n\t\"./png/smudge-res-white.png\": [\n\t\t1187,\n\t\t746\n\t],\n\t\"./png/smudge-res.png\": [\n\t\t1188,\n\t\t747\n\t],\n\t\"./png/spectrum-of-light.png\": [\n\t\t1189,\n\t\t748\n\t],\n\t\"./png/squinting.png\": [\n\t\t1190,\n\t\t749\n\t],\n\t\"./png/stabilised-blue.png\": [\n\t\t1191,\n\t\t750\n\t],\n\t\"./png/stabilised-white.png\": [\n\t\t1192,\n\t\t751\n\t],\n\t\"./png/stabilised.png\": [\n\t\t1193,\n\t\t752\n\t],\n\t\"./png/stairs.png\": [\n\t\t1194,\n\t\t753\n\t],\n\t\"./png/stairs_effect.png\": [\n\t\t1195,\n\t\t754\n\t],\n\t\"./png/sting-white.png\": [\n\t\t1196,\n\t\t755\n\t],\n\t\"./png/sting.png\": [\n\t\t1197,\n\t\t756\n\t],\n\t\"./png/sun-outside.png\": [\n\t\t1198,\n\t\t757\n\t],\n\t\"./png/tablet-white.png\": [\n\t\t1199,\n\t\t758\n\t],\n\t\"./png/tablet.png\": [\n\t\t1200,\n\t\t759\n\t],\n\t\"./png/test-blue.png\": [\n\t\t1201,\n\t\t760\n\t],\n\t\"./png/tired-white.png\": [\n\t\t1202,\n\t\t761\n\t],\n\t\"./png/tired.png\": [\n\t\t1203,\n\t\t762\n\t],\n\t\"./png/tiredEyes.png\": [\n\t\t1204,\n\t\t763\n\t],\n\t\"./png/tumble-scene.png\": [\n\t\t1205,\n\t\t764\n\t],\n\t\"./png/tutorial-accord-white.png\": [\n\t\t1206,\n\t\t765\n\t],\n\t\"./png/tutorial-accord.png\": [\n\t\t1207,\n\t\t766\n\t],\n\t\"./png/tv-white.png\": [\n\t\t1208,\n\t\t767\n\t],\n\t\"./png/tv.png\": [\n\t\t1209,\n\t\t768\n\t],\n\t\"./png/uv-protect-blue.png\": [\n\t\t1210,\n\t\t769\n\t],\n\t\"./png/uv-protect-white.png\": [\n\t\t1211,\n\t\t770\n\t],\n\t\"./png/uv-protect.png\": [\n\t\t1212,\n\t\t771\n\t],\n\t\"./png/varilux-download-bg.png\": [\n\t\t1213,\n\t\t772\n\t],\n\t\"./png/variluxG9-bg-1.png\": [\n\t\t1214,\n\t\t773\n\t],\n\t\"./png/variluxG9-bg-2.png\": [\n\t\t536\n\t],\n\t\"./png/variluxG9-bg-3.png\": [\n\t\t537\n\t],\n\t\"./png/variluxG9-bg-4.png\": [\n\t\t535\n\t],\n\t\"./png/variluxG9-logo-XXL.png\": [\n\t\t1215,\n\t\t774\n\t],\n\t\"./png/variluxG9-logo-final.png\": [\n\t\t1216,\n\t\t775\n\t],\n\t\"./png/variluxXR-logo-L.png\": [\n\t\t1217,\n\t\t776\n\t],\n\t\"./png/variluxXR-logo-M3.png\": [\n\t\t1218,\n\t\t777\n\t],\n\t\"./png/variluxXR-logo-M4.png\": [\n\t\t1219,\n\t\t778\n\t],\n\t\"./png/variluxXR-logo.png\": [\n\t\t1220,\n\t\t779\n\t],\n\t\"./png/varilux_card_bg.png\": [\n\t\t1221,\n\t\t780\n\t],\n\t\"./png/varilux_card_bg_1.png\": [\n\t\t1222,\n\t\t781\n\t],\n\t\"./png/video-advertisement-gen-8.png\": [\n\t\t1223,\n\t\t782\n\t],\n\t\"./png/video-advertisement-xtractive.png\": [\n\t\t1224,\n\t\t783\n\t],\n\t\"./png/video-white.png\": [\n\t\t1225,\n\t\t784\n\t],\n\t\"./png/video.png\": [\n\t\t1226,\n\t\t785\n\t],\n\t\"./png/vto_qr.png\": [\n\t\t1227,\n\t\t786\n\t],\n\t\"./png/watch-white.png\": [\n\t\t1228,\n\t\t787\n\t],\n\t\"./png/watch.png\": [\n\t\t1229,\n\t\t788\n\t],\n\t\"./png/water-repel-blue.png\": [\n\t\t1230,\n\t\t789\n\t],\n\t\"./png/water-repel-white.png\": [\n\t\t1231,\n\t\t790\n\t],\n\t\"./png/water-repel.png\": [\n\t\t1232,\n\t\t791\n\t],\n\t\"./png/wind-white.png\": [\n\t\t1233,\n\t\t792\n\t],\n\t\"./png/wind.png\": [\n\t\t1234,\n\t\t793\n\t],\n\t\"./png/wiping-scene.png\": [\n\t\t1235,\n\t\t794\n\t],\n\t\"./svg/UV.svg\": [\n\t\t1236,\n\t\t11\n\t],\n\t\"./svg/add-on-plus-white.svg\": [\n\t\t1237,\n\t\t12\n\t],\n\t\"./svg/add-on-plus.svg\": [\n\t\t1238,\n\t\t13\n\t],\n\t\"./svg/adjust-white.svg\": [\n\t\t1239,\n\t\t14\n\t],\n\t\"./svg/adjust-white1.svg\": [\n\t\t1240,\n\t\t15\n\t],\n\t\"./svg/adjust.svg\": [\n\t\t1241,\n\t\t16\n\t],\n\t\"./svg/age.svg\": [\n\t\t1242,\n\t\t17\n\t],\n\t\"./svg/antigua_and_barbuda.svg\": [\n\t\t1243,\n\t\t18\n\t],\n\t\"./svg/argentina.svg\": [\n\t\t1244,\n\t\t19\n\t],\n\t\"./svg/aruba.svg\": [\n\t\t1245,\n\t\t20\n\t],\n\t\"./svg/australia.svg\": [\n\t\t1246,\n\t\t21\n\t],\n\t\"./svg/austria.svg\": [\n\t\t1247,\n\t\t22\n\t],\n\t\"./svg/ava-lens.svg\": [\n\t\t1248,\n\t\t23\n\t],\n\t\"./svg/bahamas.svg\": [\n\t\t1249,\n\t\t24\n\t],\n\t\"./svg/barbados.svg\": [\n\t\t1250,\n\t\t25\n\t],\n\t\"./svg/belgium.svg\": [\n\t\t1251,\n\t\t26\n\t],\n\t\"./svg/bolivia.svg\": [\n\t\t1252,\n\t\t27\n\t],\n\t\"./svg/bulgaria.svg\": [\n\t\t1253,\n\t\t28\n\t],\n\t\"./svg/camera.svg\": [\n\t\t1254,\n\t\t29\n\t],\n\t\"./svg/canada.svg\": [\n\t\t1255,\n\t\t30\n\t],\n\t\"./svg/catalan.svg\": [\n\t\t1256,\n\t\t31\n\t],\n\t\"./svg/catalog.svg\": [\n\t\t1257,\n\t\t32\n\t],\n\t\"./svg/cayman_island.svg\": [\n\t\t1258,\n\t\t33\n\t],\n\t\"./svg/check-circle.svg\": [\n\t\t1259,\n\t\t34\n\t],\n\t\"./svg/check-square.svg\": [\n\t\t1260,\n\t\t35\n\t],\n\t\"./svg/check-with-circle.svg\": [\n\t\t1261,\n\t\t36\n\t],\n\t\"./svg/check-without-circle-blue.svg\": [\n\t\t1262,\n\t\t37\n\t],\n\t\"./svg/check-without-circle-white.svg\": [\n\t\t1263,\n\t\t38\n\t],\n\t\"./svg/check-without-circle.svg\": [\n\t\t1264,\n\t\t39\n\t],\n\t\"./svg/check.svg\": [\n\t\t1265,\n\t\t40\n\t],\n\t\"./svg/china.svg\": [\n\t\t1266,\n\t\t41\n\t],\n\t\"./svg/clear-lense.svg\": [\n\t\t1267,\n\t\t42\n\t],\n\t\"./svg/close-gray.svg\": [\n\t\t1268,\n\t\t43\n\t],\n\t\"./svg/close-white-modal.svg\": [\n\t\t1269,\n\t\t44\n\t],\n\t\"./svg/close-white.svg\": [\n\t\t1270,\n\t\t45\n\t],\n\t\"./svg/colombia.svg\": [\n\t\t1271,\n\t\t46\n\t],\n\t\"./svg/computer2.svg\": [\n\t\t1272,\n\t\t47\n\t],\n\t\"./svg/correct-lens.svg\": [\n\t\t1273,\n\t\t48\n\t],\n\t\"./svg/correct.svg\": [\n\t\t1274,\n\t\t49\n\t],\n\t\"./svg/costa_rica.svg\": [\n\t\t1275,\n\t\t50\n\t],\n\t\"./svg/croatia.svg\": [\n\t\t1276,\n\t\t51\n\t],\n\t\"./svg/curacao.svg\": [\n\t\t1277,\n\t\t52\n\t],\n\t\"./svg/cyprus.svg\": [\n\t\t1278,\n\t\t53\n\t],\n\t\"./svg/czech_republic.svg\": [\n\t\t1279,\n\t\t54\n\t],\n\t\"./svg/delivery.svg\": [\n\t\t1280,\n\t\t55\n\t],\n\t\"./svg/demo.svg\": [\n\t\t159\n\t],\n\t\"./svg/denmark.svg\": [\n\t\t1281,\n\t\t56\n\t],\n\t\"./svg/discovery.svg\": [\n\t\t1282,\n\t\t57\n\t],\n\t\"./svg/document.svg\": [\n\t\t1283,\n\t\t58\n\t],\n\t\"./svg/dominican_republic.svg\": [\n\t\t1284,\n\t\t59\n\t],\n\t\"./svg/down-arrow-white.svg\": [\n\t\t1285,\n\t\t60\n\t],\n\t\"./svg/down-arrow.svg\": [\n\t\t1286,\n\t\t61\n\t],\n\t\"./svg/download-varilux.svg\": [\n\t\t1287,\n\t\t62\n\t],\n\t\"./svg/download.svg\": [\n\t\t1288,\n\t\t63\n\t],\n\t\"./svg/drive.svg\": [\n\t\t1289,\n\t\t64\n\t],\n\t\"./svg/dropbox.svg\": [\n\t\t1290,\n\t\t65\n\t],\n\t\"./svg/durable.svg\": [\n\t\t1291,\n\t\t66\n\t],\n\t\"./svg/easy-to-clean.svg\": [\n\t\t1292,\n\t\t67\n\t],\n\t\"./svg/ecuador.svg\": [\n\t\t1293,\n\t\t68\n\t],\n\t\"./svg/education.svg\": [\n\t\t1294,\n\t\t69\n\t],\n\t\"./svg/egypt.svg\": [\n\t\t1295,\n\t\t70\n\t],\n\t\"./svg/el_salvador.svg\": [\n\t\t1296,\n\t\t71\n\t],\n\t\"./svg/eliminates.svg\": [\n\t\t1297,\n\t\t72\n\t],\n\t\"./svg/emat.svg\": [\n\t\t1298,\n\t\t73\n\t],\n\t\"./svg/empty-circle.svg\": [\n\t\t1299,\n\t\t74\n\t],\n\t\"./svg/enhance-lens.svg\": [\n\t\t1300,\n\t\t75\n\t],\n\t\"./svg/enhance.svg\": [\n\t\t1301,\n\t\t76\n\t],\n\t\"./svg/essilor-logo-white.svg\": [\n\t\t162\n\t],\n\t\"./svg/estonia.svg\": [\n\t\t1302,\n\t\t77\n\t],\n\t\"./svg/exclamation.svg\": [\n\t\t1303,\n\t\t78\n\t],\n\t\"./svg/expand-white.svg\": [\n\t\t1304,\n\t\t79\n\t],\n\t\"./svg/experiences.svg\": [\n\t\t1305,\n\t\t80\n\t],\n\t\"./svg/export.svg\": [\n\t\t1306,\n\t\t81\n\t],\n\t\"./svg/eye-blue.svg\": [\n\t\t1307,\n\t\t82\n\t],\n\t\"./svg/eye.svg\": [\n\t\t53\n\t],\n\t\"./svg/eyeIcon.svg\": [\n\t\t1308,\n\t\t83\n\t],\n\t\"./svg/eyeglass.svg\": [\n\t\t1309,\n\t\t84\n\t],\n\t\"./svg/eyezen.svg\": [\n\t\t1310,\n\t\t85\n\t],\n\t\"./svg/faIR.svg\": [\n\t\t1311,\n\t\t86\n\t],\n\t\"./svg/finland.svg\": [\n\t\t1312,\n\t\t87\n\t],\n\t\"./svg/finnish.svg\": [\n\t\t1313,\n\t\t88\n\t],\n\t\"./svg/flip.svg\": [\n\t\t176\n\t],\n\t\"./svg/france.svg\": [\n\t\t1314,\n\t\t89\n\t],\n\t\"./svg/gender.svg\": [\n\t\t1315,\n\t\t90\n\t],\n\t\"./svg/germany.svg\": [\n\t\t1316,\n\t\t91\n\t],\n\t\"./svg/globe.svg\": [\n\t\t1317,\n\t\t92\n\t],\n\t\"./svg/gps.svg\": [\n\t\t1318,\n\t\t93\n\t],\n\t\"./svg/greater-than.svg\": [\n\t\t1319,\n\t\t94\n\t],\n\t\"./svg/greece.svg\": [\n\t\t1320,\n\t\t95\n\t],\n\t\"./svg/grenada.svg\": [\n\t\t1321,\n\t\t96\n\t],\n\t\"./svg/grid.svg\": [\n\t\t1322,\n\t\t97\n\t],\n\t\"./svg/guatemala.svg\": [\n\t\t1323,\n\t\t98\n\t],\n\t\"./svg/guyana.svg\": [\n\t\t1324,\n\t\t99\n\t],\n\t\"./svg/hamburger-new.svg\": [\n\t\t160\n\t],\n\t\"./svg/hamburger.svg\": [\n\t\t65\n\t],\n\t\"./svg/harmful-light.svg\": [\n\t\t1325,\n\t\t100\n\t],\n\t\"./svg/home-blue.svg\": [\n\t\t1326,\n\t\t101\n\t],\n\t\"./svg/home.svg\": [\n\t\t1327,\n\t\t102\n\t],\n\t\"./svg/honduras.svg\": [\n\t\t1328,\n\t\t103\n\t],\n\t\"./svg/hungary.svg\": [\n\t\t1329,\n\t\t104\n\t],\n\t\"./svg/idID.svg\": [\n\t\t1330,\n\t\t105\n\t],\n\t\"./svg/import-white.svg\": [\n\t\t1331,\n\t\t106\n\t],\n\t\"./svg/import.svg\": [\n\t\t1332,\n\t\t107\n\t],\n\t\"./svg/india.svg\": [\n\t\t1333,\n\t\t108\n\t],\n\t\"./svg/indonesia.svg\": [\n\t\t1334,\n\t\t109\n\t],\n\t\"./svg/info.svg\": [\n\t\t1335,\n\t\t110\n\t],\n\t\"./svg/information-blue.svg\": [\n\t\t1336,\n\t\t111\n\t],\n\t\"./svg/information-white.svg\": [\n\t\t1337,\n\t\t112\n\t],\n\t\"./svg/iran.svg\": [\n\t\t1338,\n\t\t113\n\t],\n\t\"./svg/ireland.svg\": [\n\t\t1339,\n\t\t114\n\t],\n\t\"./svg/israel.svg\": [\n\t\t1340,\n\t\t115\n\t],\n\t\"./svg/italy.svg\": [\n\t\t1341,\n\t\t116\n\t],\n\t\"./svg/jamaica.svg\": [\n\t\t1342,\n\t\t117\n\t],\n\t\"./svg/kenya.svg\": [\n\t\t1343,\n\t\t118\n\t],\n\t\"./svg/kuwait.svg\": [\n\t\t1344,\n\t\t119\n\t],\n\t\"./svg/laptop.svg\": [\n\t\t1345,\n\t\t120\n\t],\n\t\"./svg/latvia.svg\": [\n\t\t1346,\n\t\t121\n\t],\n\t\"./svg/lc-pair-1.svg\": [\n\t\t1347,\n\t\t122\n\t],\n\t\"./svg/lc-pair-2.svg\": [\n\t\t1348,\n\t\t123\n\t],\n\t\"./svg/lebanon.svg\": [\n\t\t1349,\n\t\t124\n\t],\n\t\"./svg/left-arrow-circle-gray.svg\": [\n\t\t1350,\n\t\t125\n\t],\n\t\"./svg/left-arrow-white.svg\": [\n\t\t1351,\n\t\t126\n\t],\n\t\"./svg/lens-consultation.svg\": [\n\t\t1352,\n\t\t127\n\t],\n\t\"./svg/lens-pair-1.svg\": [\n\t\t1353,\n\t\t128\n\t],\n\t\"./svg/lens-pair-2.svg\": [\n\t\t1354,\n\t\t129\n\t],\n\t\"./svg/lens-thickness.svg\": [\n\t\t1355,\n\t\t130\n\t],\n\t\"./svg/lens.svg\": [\n\t\t1356,\n\t\t131\n\t],\n\t\"./svg/lensMenuBlack.svg\": [\n\t\t175\n\t],\n\t\"./svg/lessThan.svg\": [\n\t\t1357,\n\t\t132\n\t],\n\t\"./svg/lifestyle-advice.svg\": [\n\t\t1358,\n\t\t133\n\t],\n\t\"./svg/logo.svg\": [\n\t\t1359,\n\t\t134\n\t],\n\t\"./svg/madagascar.svg\": [\n\t\t1360,\n\t\t135\n\t],\n\t\"./svg/mail.svg\": [\n\t\t1361,\n\t\t136\n\t],\n\t\"./svg/main pain.svg\": [\n\t\t1362,\n\t\t137\n\t],\n\t\"./svg/malaysia.svg\": [\n\t\t1363,\n\t\t138\n\t],\n\t\"./svg/measures.svg\": [\n\t\t1364,\n\t\t139\n\t],\n\t\"./svg/menuEducation.svg\": [\n\t\t1365,\n\t\t140\n\t],\n\t\"./svg/mexico.svg\": [\n\t\t1366,\n\t\t141\n\t],\n\t\"./svg/mic.svg\": [\n\t\t1367,\n\t\t142\n\t],\n\t\"./svg/minus-circle-small.svg\": [\n\t\t1368,\n\t\t143\n\t],\n\t\"./svg/mobile.svg\": [\n\t\t1369,\n\t\t144\n\t],\n\t\"./svg/moldova.svg\": [\n\t\t1370,\n\t\t145\n\t],\n\t\"./svg/monitor-blue.svg\": [\n\t\t1371,\n\t\t146\n\t],\n\t\"./svg/monitor.svg\": [\n\t\t1372,\n\t\t147\n\t],\n\t\"./svg/morocco.svg\": [\n\t\t1373,\n\t\t148\n\t],\n\t\"./svg/mostSpend.svg\": [\n\t\t1374,\n\t\t149\n\t],\n\t\"./svg/need-explorer.svg\": [\n\t\t1375,\n\t\t150\n\t],\n\t\"./svg/netherlands.svg\": [\n\t\t1376,\n\t\t151\n\t],\n\t\"./svg/new_zealand.svg\": [\n\t\t1377,\n\t\t152\n\t],\n\t\"./svg/next-arrow.svg\": [\n\t\t1378,\n\t\t153\n\t],\n\t\"./svg/nicaragua.svg\": [\n\t\t1379,\n\t\t154\n\t],\n\t\"./svg/nlNL.svg\": [\n\t\t1380,\n\t\t155\n\t],\n\t\"./svg/norway.svg\": [\n\t\t1381,\n\t\t156\n\t],\n\t\"./svg/panama.svg\": [\n\t\t1382,\n\t\t157\n\t],\n\t\"./svg/pencil-circle-gray-gray.svg\": [\n\t\t1383,\n\t\t158\n\t],\n\t\"./svg/pencil-circle-gray.svg\": [\n\t\t1384,\n\t\t159\n\t],\n\t\"./svg/pencil-white.svg\": [\n\t\t1385,\n\t\t160\n\t],\n\t\"./svg/pencil.svg\": [\n\t\t1386,\n\t\t161\n\t],\n\t\"./svg/peru.svg\": [\n\t\t1387,\n\t\t162\n\t],\n\t\"./svg/philippines.svg\": [\n\t\t1388,\n\t\t163\n\t],\n\t\"./svg/phone.svg\": [\n\t\t1389,\n\t\t164\n\t],\n\t\"./svg/photochromic-lens.svg\": [\n\t\t1390,\n\t\t165\n\t],\n\t\"./svg/play.svg\": [\n\t\t1391,\n\t\t166\n\t],\n\t\"./svg/plus-circle-small.svg\": [\n\t\t1392,\n\t\t167\n\t],\n\t\"./svg/plus-circle.svg\": [\n\t\t1393,\n\t\t168\n\t],\n\t\"./svg/plus-white-outline.svg\": [\n\t\t1394,\n\t\t169\n\t],\n\t\"./svg/plus-white-white.svg\": [\n\t\t1395,\n\t\t170\n\t],\n\t\"./svg/plus-white.svg\": [\n\t\t1396,\n\t\t171\n\t],\n\t\"./svg/plus.svg\": [\n\t\t1397,\n\t\t172\n\t],\n\t\"./svg/poland.svg\": [\n\t\t1398,\n\t\t173\n\t],\n\t\"./svg/portugal.svg\": [\n\t\t1399,\n\t\t174\n\t],\n\t\"./svg/practice.svg\": [\n\t\t1400,\n\t\t175\n\t],\n\t\"./svg/prescription-minus.svg\": [\n\t\t1401,\n\t\t176\n\t],\n\t\"./svg/prescription-plus.svg\": [\n\t\t1402,\n\t\t177\n\t],\n\t\"./svg/prescription.svg\": [\n\t\t1403,\n\t\t178\n\t],\n\t\"./svg/print.svg\": [\n\t\t1404,\n\t\t179\n\t],\n\t\"./svg/progress-circle-white.svg\": [\n\t\t1405,\n\t\t180\n\t],\n\t\"./svg/progress-circle.svg\": [\n\t\t1406,\n\t\t181\n\t],\n\t\"./svg/protect-lens.svg\": [\n\t\t1407,\n\t\t182\n\t],\n\t\"./svg/protect.svg\": [\n\t\t1408,\n\t\t183\n\t],\n\t\"./svg/qatar.svg\": [\n\t\t1409,\n\t\t184\n\t],\n\t\"./svg/qrcode-canada.svg\": [\n\t\t1410,\n\t\t185\n\t],\n\t\"./svg/qrcode-white.svg\": [\n\t\t1411,\n\t\t186\n\t],\n\t\"./svg/qrcode.svg\": [\n\t\t1412,\n\t\t187\n\t],\n\t\"./svg/question-mark.svg\": [\n\t\t1413,\n\t\t188\n\t],\n\t\"./svg/reduce-glare.svg\": [\n\t\t1414,\n\t\t189\n\t],\n\t\"./svg/refresh-new.svg\": [\n\t\t158\n\t],\n\t\"./svg/refresh.svg\": [\n\t\t33\n\t],\n\t\"./svg/remove-dirt.svg\": [\n\t\t1415,\n\t\t190\n\t],\n\t\"./svg/right-arrow-circle-blue.svg\": [\n\t\t1416,\n\t\t191\n\t],\n\t\"./svg/right-arrow-circle-purple.svg\": [\n\t\t1417,\n\t\t192\n\t],\n\t\"./svg/right-arrow-circle-white.svg\": [\n\t\t1418,\n\t\t193\n\t],\n\t\"./svg/right-arrow-circle.svg\": [\n\t\t1419,\n\t\t194\n\t],\n\t\"./svg/right-arrow-white.svg\": [\n\t\t1420,\n\t\t195\n\t],\n\t\"./svg/right-arrow.svg\": [\n\t\t1421,\n\t\t196\n\t],\n\t\"./svg/romania.svg\": [\n\t\t1422,\n\t\t197\n\t],\n\t\"./svg/russia.svg\": [\n\t\t1423,\n\t\t198\n\t],\n\t\"./svg/saint_lucia.svg\": [\n\t\t1424,\n\t\t199\n\t],\n\t\"./svg/saudi_arabia.svg\": [\n\t\t1425,\n\t\t200\n\t],\n\t\"./svg/saved-white.svg\": [\n\t\t1426,\n\t\t201\n\t],\n\t\"./svg/saved.svg\": [\n\t\t1427,\n\t\t202\n\t],\n\t\"./svg/secondpair-lens.svg\": [\n\t\t1428,\n\t\t203\n\t],\n\t\"./svg/see-more.svg\": [\n\t\t1429,\n\t\t204\n\t],\n\t\"./svg/serbia.svg\": [\n\t\t1430,\n\t\t205\n\t],\n\t\"./svg/settings-white.svg\": [\n\t\t1431,\n\t\t206\n\t],\n\t\"./svg/settings.svg\": [\n\t\t1432,\n\t\t207\n\t],\n\t\"./svg/sharp-vision.svg\": [\n\t\t1433,\n\t\t208\n\t],\n\t\"./svg/singapore.svg\": [\n\t\t1434,\n\t\t209\n\t],\n\t\"./svg/slovakia.svg\": [\n\t\t1435,\n\t\t210\n\t],\n\t\"./svg/slovenia.svg\": [\n\t\t1436,\n\t\t211\n\t],\n\t\"./svg/smooth.svg\": [\n\t\t1437,\n\t\t212\n\t],\n\t\"./svg/south_africa.svg\": [\n\t\t1438,\n\t\t213\n\t],\n\t\"./svg/south_korea.svg\": [\n\t\t1439,\n\t\t214\n\t],\n\t\"./svg/spain.svg\": [\n\t\t1440,\n\t\t215\n\t],\n\t\"./svg/srSR.svg\": [\n\t\t1441,\n\t\t216\n\t],\n\t\"./svg/stacked-group.svg\": [\n\t\t1442,\n\t\t217\n\t],\n\t\"./svg/stacked-group2.svg\": [\n\t\t1443,\n\t\t218\n\t],\n\t\"./svg/sun-high.svg\": [\n\t\t1444,\n\t\t219\n\t],\n\t\"./svg/sun-low.svg\": [\n\t\t1445,\n\t\t220\n\t],\n\t\"./svg/svSV.svg\": [\n\t\t1446,\n\t\t221\n\t],\n\t\"./svg/sweden.svg\": [\n\t\t1447,\n\t\t222\n\t],\n\t\"./svg/switzerland.svg\": [\n\t\t1448,\n\t\t223\n\t],\n\t\"./svg/temp/Varilux_Stairs_Comfort3-Line.svg\": [\n\t\t149\n\t],\n\t\"./svg/temp/Varilux_Stairs_Comfort3.svg\": [\n\t\t141\n\t],\n\t\"./svg/temp/Varilux_Stairs_ComfortMax-Line.svg\": [\n\t\t142\n\t],\n\t\"./svg/temp/Varilux_Stairs_ComfortMax.svg\": [\n\t\t134\n\t],\n\t\"./svg/temp/Varilux_Stairs_Eseries-Line.svg\": [\n\t\t143\n\t],\n\t\"./svg/temp/Varilux_Stairs_Eseries.svg\": [\n\t\t135\n\t],\n\t\"./svg/temp/Varilux_Stairs_Liberty-Line.svg\": [\n\t\t144\n\t],\n\t\"./svg/temp/Varilux_Stairs_Liberty.svg\": [\n\t\t136\n\t],\n\t\"./svg/temp/Varilux_Stairs_Physio-Line.svg\": [\n\t\t145\n\t],\n\t\"./svg/temp/Varilux_Stairs_Physio.svg\": [\n\t\t137\n\t],\n\t\"./svg/temp/Varilux_Stairs_STANDARD-Line.svg\": [\n\t\t148\n\t],\n\t\"./svg/temp/Varilux_Stairs_STANDARD.svg\": [\n\t\t140\n\t],\n\t\"./svg/temp/Varilux_Stairs_Sseries-Line.svg\": [\n\t\t146\n\t],\n\t\"./svg/temp/Varilux_Stairs_Sseries.svg\": [\n\t\t138\n\t],\n\t\"./svg/temp/Varilux_Stairs_Xseries-Line.svg\": [\n\t\t147\n\t],\n\t\"./svg/temp/Varilux_Stairs_Xseries.svg\": [\n\t\t139\n\t],\n\t\"./svg/thailand.svg\": [\n\t\t1449,\n\t\t224\n\t],\n\t\"./svg/thickness-lens.svg\": [\n\t\t1450,\n\t\t225\n\t],\n\t\"./svg/trash.svg\": [\n\t\t1451,\n\t\t226\n\t],\n\t\"./svg/trinidad_and_tobago.svg\": [\n\t\t1452,\n\t\t227\n\t],\n\t\"./svg/turkey.svg\": [\n\t\t1453,\n\t\t228\n\t],\n\t\"./svg/uae.svg\": [\n\t\t1454,\n\t\t229\n\t],\n\t\"./svg/united_kingdom.svg\": [\n\t\t1455,\n\t\t230\n\t],\n\t\"./svg/united_states_of_america.svg\": [\n\t\t1456,\n\t\t231\n\t],\n\t\"./svg/usa.svg\": [\n\t\t1457,\n\t\t232\n\t],\n\t\"./svg/user.svg\": [\n\t\t1458,\n\t\t233\n\t],\n\t\"./svg/varilux-download.svg\": [\n\t\t1459,\n\t\t234\n\t],\n\t\"./svg/varilux-g9/icons/control-1-white.svg\": [\n\t\t47\n\t],\n\t\"./svg/varilux-g9/icons/control-1.svg\": [\n\t\t122\n\t],\n\t\"./svg/varilux-g9/icons/control-2-white.svg\": [\n\t\t48\n\t],\n\t\"./svg/varilux-g9/icons/control-2.svg\": [\n\t\t123\n\t],\n\t\"./svg/varilux-g9/icons/control-3-white.svg\": [\n\t\t49\n\t],\n\t\"./svg/varilux-g9/icons/control-3.svg\": [\n\t\t124\n\t],\n\t\"./svg/varilux-g9/icons/control-4-white.svg\": [\n\t\t50\n\t],\n\t\"./svg/varilux-g9/icons/control-4.svg\": [\n\t\t125\n\t],\n\t\"./svg/varilux-g9/icons/control-5-white.svg\": [\n\t\t51\n\t],\n\t\"./svg/varilux-g9/icons/control-5.svg\": [\n\t\t126\n\t],\n\t\"./svg/varilux-g9/icons/fill-white.svg\": [\n\t\t1460,\n\t\t235\n\t],\n\t\"./svg/varilux-g9/icons/fill.svg\": [\n\t\t55\n\t],\n\t\"./svg/varilux-g9/icons/play-video.svg\": [\n\t\t534\n\t],\n\t\"./svg/varilux-g9/icons/refresh.svg\": [\n\t\t533\n\t],\n\t\"./svg/varilux.svg\": [\n\t\t1461,\n\t\t236\n\t],\n\t\"./svg/venezuela.svg\": [\n\t\t1462,\n\t\t237\n\t],\n\t\"./svg/vietnam.svg\": [\n\t\t1463,\n\t\t238\n\t],\n\t\"./svg/vision.svg\": [\n\t\t1464,\n\t\t239\n\t],\n\t\"./svg/visit-advice.svg\": [\n\t\t1465,\n\t\t240\n\t],\n\t\"./svg/vtoqrcode.svg\": [\n\t\t1466,\n\t\t241\n\t],\n\t\"./svg/warning.svg\": [\n\t\t1467,\n\t\t242\n\t],\n\t\"./svg/watch.svg\": [\n\t\t1468,\n\t\t243\n\t],\n\t\"./svg/wearing-advice.svg\": [\n\t\t1469,\n\t\t244\n\t],\n\t\"./svg/x-small.svg\": [\n\t\t1470,\n\t\t245\n\t],\n\t\"./svg/x.svg\": [\n\t\t1471,\n\t\t246\n\t],\n\t\"./videos/lens_glow/Lens_Correct_Glow.mp4\": [\n\t\t172\n\t],\n\t\"./videos/lens_glow/Lens_Enhance_Glow.mp4\": [\n\t\t174\n\t],\n\t\"./videos/lens_glow/Lens_Protect_Glow.mp4\": [\n\t\t173\n\t],\n\t\"./videos/measurement.mp4\": [\n\t\t1472,\n\t\t247\n\t],\n\t\"./videos/montage_background.mp4\": [\n\t\t1473,\n\t\t248\n\t],\n\t\"./videos/varilux-g9/02.mp4\": [\n\t\t1474,\n\t\t249\n\t],\n\t\"./videos/varilux-g9/Varilux_Liberty_Demo_New.mp4\": [\n\t\t1475,\n\t\t250\n\t],\n\t\"./videos/varilux-g9/Varilux_Physio_Demo_New_.mp4\": [\n\t\t1476,\n\t\t251\n\t],\n\t\"./videos/varilux-g9/Varilux_Physio_Demo_New_Competitor.mp4\": [\n\t\t1477,\n\t\t252\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn Promise.all(ids.slice(1).map(__webpack_require__.e)).then(function() {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = 599;\nmodule.exports = webpackAsyncContext;","var map = {\n\t\"./qrcode-ca.png\": 579,\n\t\"./qrcode-canada.png\": 580,\n\t\"./qrcode-sample.png\": 581,\n\t\"./qrcode-sk.png\": 582\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 672;","enum ExperienceType {\n STANDARD = 'standard',\n AVA = 'ava',\n SUN = 'sun',\n VARILUX = 'varilux'\n}\n\nexport default ExperienceType;","// import { backgroundPosition } from 'html2canvas/dist/types/css/property-descriptors/background-position';\n// import { backgroundSize } from 'html2canvas/dist/types/css/property-descriptors/background-size';\nimport React, { useEffect, useRef, useState } from 'react';\n\ninterface Props {\n name: string,\n type?: 'svg' | 'image' | 'png' | 'gif',\n extension?: 'png' | 'jpg' | 'gif',\n className?: string,\n click?: () => void,\n background?: boolean,\n customStyle?: any,\n position?: string\n\n // for gtm id\n gtmId?: string\n}\n\nconst Icon : React.FC = ({\n name,\n type = 'svg',\n extension = 'png',\n className,\n click,\n background = false,\n customStyle,\n position = 'top',\n gtmId\n }) => {\n // VARIABLES\n const [ image, setImage ] = useState();\n const folders = {\n svg: 'svg',\n image: 'images',\n png: 'png',\n gif: 'gif'\n }\n\n // METHODS\n const getFileExtension = () => {\n return type === 'svg' ? 'svg' : extension;\n }\n\n\n const onClickHandler = () => {\n if(click)click();\n }\n\n const renderImage = () => {\n if(background) {\n return \n ;\n }\n return \"\"\n }\n\n // HOOKS\n const mounting = useRef(false)\n useEffect(() => {\n mounting.current = true\n const loadImage = (imgName: string) => {\n const ext = getFileExtension();\n import(`../../assets/${folders[type]}/${imgName}.${ext}`).then(img => {\n if(mounting.current){\n setImage(img.default)\n };\n }).catch(()=> console.log(`Image not found: ${imgName}`));\n };\n loadImage(name);\n\n return () => {\n mounting.current = false\n }\n }, [name])\n\n return (\n <>\n { image && renderImage()}\n \n );\n}\n\nexport default Icon;\n","type bemType = [\n B: (modifierName?: string | string[]) => string,\n E: (elementName: string, modifiers?: string | string[]) => string,\n]\n\nconst useBEM = (blockName: string): bemType => {\n\n const E = (elementName: string, modifiers?: string | string[]): string => {\n\n let modifier = '';\n if (modifiers) {\n modifier = `${blockName}__${elementName}--${modifiers}`;\n if(Array.isArray(modifiers)){\n modifier = modifiers.map( m => m ? `${blockName}__${elementName}--${m}` : '').join(' ');\n }\n }\n\n return `${blockName}__${elementName} ${modifier}`.trim();\n }\n\n const B = (modifiers?: string | string[]): string => { \n \n let modifier = '';\n if (modifiers) {\n modifier = `${blockName}--${modifiers}`;\n if (Array.isArray(modifiers)) {\n modifier = modifiers.map( m => m ? `${blockName}--${m}` : '').join(' ');\n }\n }\n \n return `${blockName} ${modifier}`.trim();\n }\n\n return [\n B,\n E\n ]\n}\n\nexport default useBEM;","import React, { useEffect } from 'react';\nimport useBEM from '../../utils/hooks/useBEM';\n\ninterface Props {\n type: 'right' | 'left' | 'up' | 'down',\n size?: string,\n color?: string,\n thickness?: string,\n className?: string,\n disabled?: boolean,\n onClick?: () => void\n}\n\nconst Arrow : React.FC = ({\n type,\n color,\n size = '.5rem',\n thickness = '.1rem',\n className,\n disabled = false,\n onClick\n}) => {\n // VARIABLES\n const [B] = useBEM('arrow');\n const stlye = {\n borderWidth: `0 ${thickness} ${thickness} 0`,\n borderColor: color,\n width: size,\n height: size\n // borderWidth: `0 ${size} ${size} 0`,\n // padding: size\n }\n\n // HOOKS\n useEffect(() => {\n\n }, [])\n\n // METHODS\n const onclick = () => {\n if(onClick) onClick();\n }\n\n const classModifers = () => {\n const modifiers: string[] = [type];\n if(disabled)modifiers.push('disabled');\n\n return modifiers;\n }\n\n return (\n //
\n
\n )\n}\n\nexport default Arrow;","import React from 'react';\nimport { useHistory } from 'react-router';\nimport iRoute from '../../interface/route.interface';\n\ninterface Props {\n route?: iRoute,\n className?: string,\n click?: () => void\n}\n\nconst RouterLink : React.FC = ({\n route,\n className,\n children,\n click\n}) => {\n // VARIABLES\n const history = useHistory();\n\n // HOOKS\n\n // METHODS\n const onclickHandler = (event: React.MouseEvent) => {\n event.preventDefault();\n\n if(click) {\n click();\n }\n\n if(!route)return;\n history.push(route.path);\n }\n\n return (\n onclickHandler(e)} className={className} href=\"/\">\n {children}\n \n )\n}\n\nexport default RouterLink;","\nconst routes = {\n testing: {\n id: 'testing',\n path: '/testing',\n label: 'Testing'\n },\n home: {\n id: 'home',\n path: '/',\n label: 'Essilor Companion ™'\n },\n myCompanion: {\n id: 'myCompanion',\n path: '/mycompanion',\n label: 'my_practice_my_my_compa'\n },\n practiceID: {\n id: 'practiceID',\n path: '/practice-id',\n label: 'my_practice_my_practice_id'\n },\n legalNotices: {\n id: 'legalNotices',\n path: '/legal-notices',\n label: 'legal_notices_ln_legal_notices'\n },\n lensProposalBuilder: {\n id: 'lens-proposal-builder',\n path: '/lens-proposal-builder',\n label: 'lens_proposal_builder_lpb_lens_pro_builder'\n },\n needExplorer: {\n id: 'needExplorer',\n path: '/need-explorer',\n label: 'lens_proposal_builder_lpb_need_explorer'\n },\n prescription: {\n id: 'prescription',\n path: '/prescription',\n label: 'prescription_rx_prescription'\n },\n measures: {\n id: 'measures',\n path: '/measures',\n label: 'pair_1_tab_del_p1_measures_title'\n },\n lensConsultation: {\n id: 'lensConsultation',\n path: '/lens-consultation',\n label: 'lens_proposal_builder_lpb__lens_consultation'\n },\n lensThickness: {\n id: 'lensThickness',\n path: '/lens-thickness',\n label: 'my_practice_my_lens_thick'\n },\n summary: {\n id: 'summary',\n path: '/summary',\n label: 'summary_sum_summary'\n },\n packageOffer: {\n id: 'packageOffer',\n path: '/package-offer',\n label: 'lens_consultation_lc_packaged_offer'\n },\n delivery: {\n id: 'delivery',\n path: '/delivery',\n label: 'lens_proposal_builder_lpb__delivery'\n },\n demonstration: {\n id: 'demonstrations',\n path: '/demonstrations',\n label: 'legal_notice_ln_01_demonstrations_title'\n },\n demonstration2: {\n id: 'demonstrations',\n path: '/demonstration',\n label: 'legal_notice_ln_01_demonstrations_title'\n },\n emat: {\n id: 'emat',\n path: '/emat',\n label: \"home_hommemat\"\n },\n whatsNew: {\n id: 'whatsnew',\n path: '/whats-new',\n label: \"home_hom_whats_new\"\n },\n licenseActivation: {\n id: 'license-activation',\n path: '/license-activation',\n label: 'license_activation_license_activation'\n },\n discovery: {\n id: 'discovery',\n path: '/discovery',\n label: 'discovery_essilor_de_discovery_essilor'\n },\n variluxG9: {\n id: 'varilux-g9',\n path: '/variluxxrdemo',\n label: 'varilux_g9_varilux'\n },\n\n //temp\n advanceSetting: {\n id: 'advanceSetting',\n path: '/advance-setting',\n label: 'advancedpricing_advance_settings'\n }\n}\n\nexport default routes;","import routes from \"./routes.constant\";\n\nconst breadcrumbs = {\n home: [\n ],\n myCompanion: [ \n routes.myCompanion\n ],\n practiceID: [ \n routes.practiceID\n ],\n legalNotices: [ \n routes.legalNotices\n ],\n lensProposalBuilder: [ \n routes.lensProposalBuilder\n ],\n needExplorer: [ \n routes.lensProposalBuilder,\n routes.needExplorer\n ],\n prescription: [ \n routes.lensProposalBuilder,\n routes.prescription\n ],\n measures: [ \n routes.lensProposalBuilder,\n routes.measures\n ],\n lensConsultation: [ \n routes.lensProposalBuilder,\n routes.lensConsultation\n ],\n lensThickness: [ \n routes.lensProposalBuilder,\n routes.lensConsultation,\n routes.lensThickness\n ],\n summary: [ \n routes.lensProposalBuilder,\n routes.lensConsultation,\n // routes.lensThickness,\n routes.summary\n ],\n packageOffer: [ \n routes.lensProposalBuilder,\n routes.lensConsultation,\n routes.packageOffer\n ],\n delivery: [ \n routes.lensProposalBuilder,\n routes.delivery\n ],\n demonstration: [ \n routes.lensProposalBuilder,\n routes.lensConsultation,\n routes.demonstration\n ],\n demonstration2: [ \n routes.lensProposalBuilder,\n routes.lensConsultation,\n routes.packageOffer,\n routes.demonstration\n ],\n emat: [\n routes.emat\n ],\n whatsNew: [\n routes.whatsNew\n ],\n licenseActivation: [\n\n ],\n discovery: [\n routes.discovery\n ],\n //temp\n advanceSetting:[\n routes.myCompanion,\n routes.advanceSetting\n ]\n}\n\nexport default breadcrumbs;","const settings: any = {\n environment:'prod',\n dev: {\n version: 'version: 0.14.22',\n apiUrl: 'https://essilor-sandbox-dev.apigee.net/gse/essilorcompanion/',\n GA: 'UA-203551100-2',\n // demoAssetsUrl: 'https://cpbx-dev-app-frc-03-companion.azurewebsites.net/sites/default/files/demo/'\n demoAssetsUrl: 'https://companion-cdn-dev.azureedge.net/demostration/optimized/',\n newAssetsUrl:'https://cpbxdevstafrccompanion.blob.core.windows.net/demostration/',\n siteAssets: 'https://companion-cdn-dev.azureedge.net/sites/assets/',\n dataStructureVersion: 66,\n signalRUrl: 'https://function-pwa-signalr-personal.azurewebsites.net',\n azureApiUrl: 'https://cpbx-dev-fnc-frc-companion.azurewebsites.net/api/',\n azureApiCodes: [\n 'XdDlrxDnhMaGPn91ffoXGPsmkly0vI6uCmzAU5ZTdpyRyHVoV4uFRQ==',\n 'ZCCbqSaNHqbYh/axQC6MNh4PlHHyFN7UmhwLHUL5RAAgr9QqVMfqAg==',\n 'Q8I1NaJjkxWBbOdK7J3FKyubys5UMpnk6T6U0Qk4DoLI/JMr921/1g==',\n 'jOjyPr0BHP7s0E7Mo3elhcQ4nwqNpSZ/tXTmTCIdDYrSUVpcysmYzQ=='\n ]\n },\n uat: {\n version: 'version: 0.9.78',\n // apiUrl: 'https://cpbx-tst-app-frc-01-companion.azurewebsites.net/api/v1/',\n apiUrl: 'https://essilor-int.apigee.net/gse/essilorcompanion/',\n GA: 'UA-197617238-1', // UAT\n // GA: 'UA-197524783-1', // DEV\n demoAssetsUrl: 'https://companion-cdn-qua.azureedge.net/demonstration/optimized/',\n newAssetsUrl:'https://cpbxtstaspfrc01companion.blob.core.windows.net/demonstration/',\n siteAssets: 'https://companion-cdn-qua.azureedge.net/sites/assets/',\n dataStructureVersion: 58,\n signalRUrl: 'https://function-pwa-signalr-personal.azurewebsites.net',\n azureApiUrl: 'https://cpbx-dev-fnc-frc-companion.azurewebsites.net/api/',\n azureApiCodes: [\n 'XdDlrxDnhMaGPn91ffoXGPsmkly0vI6uCmzAU5ZTdpyRyHVoV4uFRQ==',\n 'ZCCbqSaNHqbYh/axQC6MNh4PlHHyFN7UmhwLHUL5RAAgr9QqVMfqAg==',\n 'Q8I1NaJjkxWBbOdK7J3FKyubys5UMpnk6T6U0Qk4DoLI/JMr921/1g==',\n 'jOjyPr0BHP7s0E7Mo3elhcQ4nwqNpSZ/tXTmTCIdDYrSUVpcysmYzQ=='\n ]\n },\n prod: {\n version: 'version: 2.3.83',\n apiUrl: 'https://essilor-prd.apigee.net/gse/essilorcompanion/',\n GA: 'UA-202077407-1',\n // demoAssetsUrl: 'https://cpbx-dev-app-frc-03-companion.azurewebsites.net/sites/default/files/demo/'\n demoAssetsUrl: 'https://companion-cdn.azureedge.net/demonstration/optimized/',\n newAssetsUrl:'https://cpbxprdaspfrc01companion.blob.core.windows.net/demonstration/',\n siteAssets: 'https://companion-cdn.azureedge.net/sites/assets/',\n dataStructureVersion: 29,\n signalRUrl: 'https://cpbx-prd-fnc-frc-02.azurewebsites.net/',\n azureApiUrl: 'https://cpbx-prd-fnc-frc-01.azurewebsites.net/api/',\n azureApiCodes: [\n 'Q4yW0Qf/F1R7OalWv5VgdknPLf5AXdKnrvZXK/TW1QeZx2XQHYLkYA==',\n 'utE2P5SPrgnAKNVxKTpsFkD6hp7tF1m-2_d4iZgnIGiyAzFuM_QFBg==',\n 'nZl7BF7YfbbkPuPl92TT4LVbB9nWz9FWQ78mFxaDawn3AzFucg5Oxg==',\n 'hLutOzwe1Yzp5i6uKyhvHEt-rcme3nfDqGmCz3PF0-QpAzFu8OSjtQ=='\n ]\n },\n}\n\nexport default settings;","import settings from \"../constants/settings.constants\";\nimport iTheme from \"../interface/theme.interface\";\n\ntype utilsType = {\n cloneObject: (obj: T) => T,\n downloadAsset: (src: string, progressCallback?: (percent: number) => void) => Promise,\n downloadAssetBase64: (src: string, callback?: (request: any, percent: number) => void) => Promise,\n generateRandomNumbers: (count: number) => number[],\n getThemeVariables: (theme: iTheme) => React.CSSProperties,\n getDateTimeDifference: (date1: Date, date2: Date) => string;\n isNullUndefined: (object: any) => boolean;\n isMobileTablet: () => boolean;\n lensDemoURL: (path: string) => string;\n deepEqual: (object1: any, object2: any) => boolean\n}\n\nconst Utils = (): utilsType => {\n const cloneObject = (obj: T): T => {\n const str = JSON.stringify(obj);\n const json = JSON.parse(str);\n return json;\n }\n\n const downloadAsset = (src: string, progressCallback?: (percent: number) => void): Promise => {\n const req = new XMLHttpRequest();\n req.open('GET', src, true);\n req.responseType = 'blob';\n req.addEventListener(\"progress\", function (evt) {\n if (evt.lengthComputable) {\n const percentComplete = ((evt.loaded / evt.total) * 100).toFixed(0);\n if (progressCallback) progressCallback(Number(percentComplete));\n }\n }, false);\n const promise = new Promise((resolved, reject) => {\n req.onload = function () {\n if (this.status === 200) {\n const response = this.response;\n const blobData = URL.createObjectURL(response); // IE10+\n resolved(blobData);\n }\n }\n req.onerror = (e) => reject(e);\n });\n req.send();\n return promise;\n }\n\n const downloadAssetBase64 = (src: string, callback?: (request: any, percent: number) => void): Promise => {\n const req = new XMLHttpRequest();\n req.open('GET', src, true);\n req.responseType = 'blob';\n req.addEventListener(\"progress\", function (evt) {\n if (evt.lengthComputable) {\n const percentComplete = ((evt.loaded / evt.total) * 100).toFixed(0);\n if (callback) callback(req, Number(percentComplete));\n }\n }, false);\n const promise = new Promise((resolved, reject) => {\n req.onload = function () {\n if (this.status === 200) {\n const response = this.response;\n const reader = new FileReader();\n reader.readAsDataURL(response as any);\n reader.onloadend = function () {\n resolved(reader.result);//base64\n }\n }\n }\n req.onerror = (e) => reject(e);\n });\n req.send();\n return promise;\n }\n\n const generateRandomNumbers = (count: number): number[] => {\n const numbers = new Array(count).fill('').map((o, i) => i).sort(() => .5 - Math.random());\n return numbers;\n }\n\n const getThemeVariables = (theme: iTheme) => {\n return {\n \"--app-theme-main\": theme.main,\n \"--app-theme-dark\": theme.dark,\n \"--app-bubble-main\": theme?.bubbleMain,\n \"--app-bubble-sub\": theme?.bubbleSub,\n } as React.CSSProperties\n }\n\n const getDateTimeDifference = (start: Date, end: Date) => {\n if (start.getTime() > end.getTime()) return '00:00:00';\n\n const timediff = end.getTime() - start.getTime();\n return new Date(timediff).toISOString().slice(11, 19);\n }\n\n const isNullUndefined = (object: any) => {\n return object === undefined || object === null;\n }\n \n\n const isMobileTablet = (): boolean => {\n let check = false;\n (function (a) { if (/(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|android|ipad|playbook|silk/i.test(a) || /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.test(a.substr(0, 4))) check = true; })(navigator.userAgent || navigator.vendor);\n return check;\n };\n\n const lensDemoURL = (path: string) => {\n return `${settings[settings.environment].demoAssetsUrl}${path}`;\n }\n\n const deepEqual = (object1: any, object2: any): boolean => {\n const keys1 = Object.keys(object1);\n const keys2 = Object.keys(object2);\n if (keys1.length !== keys2.length) return false;\n for (const key of keys1) {\n const val1 = object1[key];\n const val2 = object2[key];\n const areObjects = isObject(val1) && isObject(val2);\n if (areObjects && !deepEqual(val1, val2) ||\n !areObjects && val1 !== val2)\n return false;\n }\n return true;\n }\n\n const isObject = (object: any) => { return object != null && typeof object === 'object' }\n\n return {\n cloneObject,\n downloadAsset,\n downloadAssetBase64,\n generateRandomNumbers,\n getThemeVariables,\n getDateTimeDifference,\n isNullUndefined,\n isMobileTablet,\n lensDemoURL,\n deepEqual\n }\n}\n\nexport default Utils;","import settings from \"./settings.constants\";\n\nconst apiURL = settings[settings.environment].apiUrl;\nconst withVersion = settings.environment !== 'prod' ? 'api/v1/' : '';\nconst apiUrlWithVersion = `${apiURL}${withVersion}`;\nconst {\n azureApiUrl,\n azureApiCodes\n} = settings[settings.environment];\n\nconst ENDPOINTS = {\n activateLicense: `${apiURL}bearertoken`, //register\n account: `${apiUrlWithVersion}account`,\n translation: `${apiUrlWithVersion}translation`,\n email: `${apiUrlWithVersion}email`,\n\n // TEMP\n\n lensThickness: `${azureApiUrl}lensthickness/calculate?code=${azureApiCodes[0]}`,\n eprom: (region: string, country: string) => `${azureApiUrl}eproms?code=${azureApiCodes[1]}®ion=${region}&country=${country}`,\n // emats: `https://cpbx-dev-app-frc-03-companion.azurewebsites.net/api/v1/emats`,\n // whatsnew: `https://cpbx-dev-app-frc-03-companion.azurewebsites.net/api/v1/whatsnew`,\n emats: `${apiUrlWithVersion}emats`,\n whatsnew: `${apiUrlWithVersion}whatsnew`,\n tutorial: `${apiUrlWithVersion}tutorial`,\n products: `${apiUrlWithVersion}products`,\n productCombi: `${apiUrlWithVersion}pricecombination`,\n masterLicenseData: `${azureApiUrl}config?code=${azureApiCodes[0]}`,\n orders: `${azureApiUrl}orders?code=${azureApiCodes[0]}`,\n order: (id: string) => `${azureApiUrl}orders/${id}?code=${azureApiCodes[0]}`,\n frametraces: (countryCode: string, shopId:string) => `${azureApiUrl}frametrace?countryShopId=${countryCode}-${shopId}&code=${azureApiCodes[2]}`,\n frametrace: (id: string) => `${azureApiUrl}frametrace/${id}?code=${azureApiCodes[3]}`\n}\n\nexport default ENDPOINTS;\n","import iAppStore from \"../../store/interface/app-store.interface\";\nimport axios from 'axios';\nimport ENDPOINTS from \"../../constants/endpoints\";\n\ntype hookType = {\n\ttg9: (key: string, fallback?: string) => string,\n t: (key: string, fallback?: string) => string,\n getTranslations: (params: {\n onSuccess?: (res: any) => void,\n onError?: (err:any) => void,\n }) => void,\n\n getTranslations2: (region: string, loading?: boolean) => Promise<{\n status: 'success' | 'error',\n responseData: any\n }>,\n sortCountries: (data: any) => any,\n generateIconImage: (country: string) => string\n\n}\n\nconst useTranslation = (app: iAppStore): hookType => {\n\n const translate = (key: string, fallback?: string): string => { \n if(!app.translation)return key;\n const multipleLanguages = [\"caCA\", \"chCH\", \"beBE\"];\n const lang = app.translation;\n if(!lang || !lang?.translation)return key;\n const text = lang.translation[key];\n return text || fallback || key;\n }\n\n\t\tconst translate_g9 = (key: string, fallback?: string) => {\n\t\t\tconst g9Lang = app.g9currentLanguage\n\n\t\t\tif (!g9Lang) return key\n\t\t\tlet text = g9Lang[key]\n\n\t\t\treturn text || fallback || key;\n\t\t}\n\n const getTranslations = (params: {\n onSuccess?: (res: any) => void,\n onError?: (err:any) => void,\n }) => {\n const {\n onSuccess,\n onError\n } = params;\n\n axios.get(ENDPOINTS.translation, { headers: {Authorization : true}})\n .then((res) => onSuccess && onSuccess(res))\n .catch((err) => onError && onError(err))\n }\n\n const getTranslations2 = (region: string, loading = false): Promise<{\n status: 'success' | 'error',\n responseData: any\n }> => { \n const promise = new Promise<{\n status: 'success' | 'error',\n responseData: any\n }>((res, rej) => {\n axios.get(`${ENDPOINTS.translation}/${region || ''}`, { headers: {\n Authorization : true,\n background: !loading\n }})\n .then((resp) => res({\n status: 'success',\n responseData: resp\n }))\n .catch((err) => rej({\n status: 'error',\n responseData: err\n }))\n });\n return promise;\n }\n\n const sorter = ( a: string, b: string ): number => {\n const aa = a.toLocaleLowerCase();\n const bb = b.toLocaleLowerCase();\n if ( aa < bb )return -1; \n if ( aa > bb )return 1;\n return 0;\n }\n \n const sortCountries = (data: any) => {\n const entries = Object.entries(data);\n return entries.sort((a: any,b: any) => {\n return sorter(a[1].label, b[1].label)\n })\n }\n\n const generateIconImage = (countryName: string) => {\n return (countryName || '').toLocaleLowerCase().replace(/ /g,'_');\n }\n\n return {\n\t\t\ttg9: translate_g9,\n t: translate,\n getTranslations,\n getTranslations2,\n sortCountries,\n generateIconImage\n }\n}\n\nexport default useTranslation;","const categories = [\n // [\n // {\n // value: 'ava',\n // label: 'AVA Precision Lenses',\n // icon: 'ava-lens'\n // }\n // ],\n [\n {\n value: 'correct',\n label: 'my_practice_my_correct',\n icon: 'correct-lens'\n },\n {\n value: 'protect',\n label: 'my_practice_my_protect',\n icon: 'protect-lens'\n },\n {\n value: 'enhance',\n label: 'my_practice_my_enhance',\n icon: 'enhance-lens' \n }\n ],\n [\n {\n value: 'thickness',\n label: 'my_practice_my_lens_thick',\n icon: 'thickness-lens'\n },\n {\n value: 'secondpair',\n label: 'my_practice_my_second_pair_disc',\n icon: 'secondpair-lens' \n },\n {\n value: 'advancesetting',\n label: 'advancedpricing_advance_settings',\n icon: 'secondpair-lens' \n }\n ]\n];\n\n\nconst lensThickness = [\n {\n value: 1.5,\n price: 0,\n enabled: true\n },\n // {\n // value: 1.56,\n // price: 0,\n // enabled: true\n // },\n {\n value: 1.59,\n price: 0,\n enabled: true\n },\n {\n value: 1.6,\n price: 0,\n enabled: true\n },\n {\n value: 1.67,\n price: 0,\n enabled: true\n },\n {\n value: 1.74,\n price: 0,\n enabled: true\n }\n]\n\nconst discount = [\n {\n label: 'price_bdown_amount_percent',\n value: 'p0',\n discountAmount: 0,\n discountPercentage: 0,\n enabled: false,\n amountEnabled: false,\n discountEnabled: true\n },\n {\n label: 'companion_discount_1',\n value: 'p1',\n discountAmount: 0,\n discountPercentage: 0,\n enabled: false\n },\n {\n label: 'companion_discount_2',\n value: 'p2',\n discountAmount: 0,\n discountPercentage: 0,\n enabled: false\n },\n]\n\n\nexport {\n categories,\n lensThickness,\n discount\n}\n","const KIDS_THEMES = [\n {\n id: 'red',\n main: '#ec7281',\n dark: '#ea5c6d',\n bubbleMain: '#ec6275',\n bubbleSub: '#ea5264',\n },\n {\n id: 'blue',\n main: '#3faaf7',\n dark: '#2b86d7',\n bubbleMain: '#2594ea',\n bubbleSub: '#2b80ce',\n },\n {\n id: 'green',\n main: '#6bd6c9',\n dark: '#63c6b9',\n bubbleMain: '#64ccbf',\n bubbleSub: '#5dc3b8',\n },\n {\n id: 'orange',\n main: '#f2a76b',\n dark: '#f09256',\n bubbleMain: '#ef9a5c',\n bubbleSub: '#f18d4d',\n },\n {\n id: 'purple',\n main: '#6b68c2',\n dark: '#5f5cac',\n bubbleMain: '#615eb5',\n bubbleSub: '#5b58a9',\n },\n {\n id: 'multi',\n main: '#0086d6',\n dark: '#0086d6',\n bubbleMain: '#0086d6',\n bubbleSub: '#0086d6',\n },\n]\n\nexport {\n KIDS_THEMES\n}\n\n\n","export const TRANSLATIONS_DEFAULT = {\n \"enUS\": {\n \"code\": \"enUS\",\n \"country\": \"USA\",\n \"translation\":{\n \"language_lang_select_your_language\":\"Select your language\",\n \"language_lang_next\":\"Next\",\n \"_message__la_mess_license_activation\":\"Please enter a valid credentials or If you have any questions, please contact your Essilor Companion Support Team. Thank you\",\n \"license_activation_welc\":\"Welcome to your new companion!\",\n \"license_activation_note\":\"If you don't have license, please contact your Essilor Representative.\",\n \"license_activation_la_id\":\"ID\",\n \"license_activation_la_pass\":\"Password\",\n \"license_activation_la_conct\":\"Connect\", \n \"message_-_first_time_app_loading_mess_pre-loading_assets...\": \"Pre-loading Assets...\",\n \"legal_notices_ln_legal_notices\": \"Legal Notice\",\n \"legal_notice_ln_01_demonstrations_title\": \"Demonstrations\",\n \"legal_notice_ln_01_demonstrations\": \"Please note that the information presented in this app is for demonstration purposes only. Comparison of products which might be quoted within the app, are for illustration only and must not be interpreted as comparative advertising. Each Essilor product, brand and or technology (Crizal...) does own specific marketing claims, to which you should revert, while promoting the benefits and properties of the said product.\",\n \"legal_notice_ln_under_this_privacy_notice_data_title\": \"Data\",\n \"inapp_inapprefresh\": \"Click to sync the latest update\",\n \"demo_download_all\":\"Download all demos\",\n \"demo_downloading\":\"Downloading\",\n \"legal_notice_ln_under_this_privacy_notice_data\": \"Under this Privacy Notice, we, Essilor International, inform you what personal data of yours we collect when you visit our website or use our services, why we collect it, and what we do with it. Your personal data means any information relating to you, in particular your name and contact details such as your home address, your telephone number or your email address. Please take the time to read this Privacy Notice carefully. It is very important that you fully understand how we process your personal data and how we protect your privacy. If you have any questions regarding our use of your personal data, you can of course contact us using the contact details provided below:Our contact details are: Essilor International, 141 Rue de Paris, Charenton le pont.The contact details of our Data Protection Officer are: Data Protection Office, You have the right to access, rectify or erase this data. Kindly ask the following to fill here the country’s contact details Privacy@essilor.comWHAT PERSONAL DATA WE COLLECTData we collect when you visit our websiteWhen you access our website, we automatically collect and store some of your data in our server logs and in cookies, which are small files we send to your computer when you visit our website. This data does not allow us to identify you directly. However, we do record data related to your browsing on our website, such as the pages that you accessed, the date and time you accessed these pages, your search queries, information on your device (hardware model, operating system version, unique device identifier, Internet protocol address, hardware settings, browser type, browser language), the date and time of your request and referral URL.The provision of your personal data is not required if you only want to visit our website. This means that you may refuse to accept cookies by configuring your web browser accordingly (for more information, refer to the ‘help’ section of your web browser). However, refusing cookies is likely to disrupt your navigation on our website, in particular by preventing you from accessing certain parts of it.Data we collect when you sign up or when you order productsSome of the services offered on our website require you to sign up. If you want to use these services, we will ask you to provide us with personal data. Please provide us with complete and accurate data, and also inform us if your data needs to be updated. If you do not provide us with complete and accurate data, or if you do not inform us that your data needs to be updated, we may not be able to provide you with the services you requested.We collect the following categories of your personal data: Identification data including your name, telephone number, e-mail address, home address, login and password, etc. ECP : Practice name, e-mail address, login & password, telephone if shared for customer service purposes. Consumer: name and e-mail, telephone number, if & only if coming from an Essilor platform (e.g appointment booking)IT data ECP: including data related to your browsing on our website, such as the pages that you accessed, the date and time you accessed these pages, your search queries, information on your device (hardware model, operating system version, unique device identifiers, Internet protocol address, hardware settings, browser type, browser language), the date and time of your request and referral URL]. Time spent on device & features, click count on demonstrationsConsumer: show or no show of an appointmentHealth dataPotentially stored on appWhat are the type of cookies that we are collecting: 1. Session Cookies - These cookies are only stored for the duration of your visit to a website until the user's browser is closed. 2. Persistent Cookies - These cookies are stored on a user's device for a period of time to help remember information, settings, preferences, sign-on credentials that the user previously saved. A persistent cookie lasts beyond the current session and will stay on your browser until they expire or you delete them. 3. First Party Cookies - are cookies set directly by the website you are visiting directly, allow website owners to retrieve data, remember language settings, and perform other useful functions that help provide a good user experience. 4. Third Party Cookies - are cookies used within our Services which are set by domains other than the website you are visiting directly. These include cookies from external analytics services or other applications that are integrated to our site.Below table are lists of the cookies that we and third parties placed.Since the number and names of cookies may change, these tables may be updated from time to time to provide you with the latest information.CategoryTypeCookies NameDomainPurposeProviderAuthenticationLocalStoragetokenessilorcompanion.comUse to authenticate User based on Machine Id and License CodeEssilor CompanionFunctionalLocalStoragepersistentDataessilorcompanion.comuser data, products, translations, themes, licenseEssilor CompanionFunctionalIndexDBusersessilorcompanion.comList of all users dataEssilor CompanionFunctionalIndexDBworkbox-expirationessilorcompanion.comCollections of offline dataEssilor CompanionThird PartyLocalStoragex-api-keyessilor-prd.apigee.comThird Party Proxy AppAPIGEEThird PartyCookiesARRAffinitySameSiteessilorcompanion.comAzure Load balancing on Az AppServiceAZUREThird PartyCookiesARRAffinityessilorcompanion.comStay with a certain instance of web app or web site in AzureAZUREThird PartytbdtbdtbdAppointment BookingKALIOPThird PartytbdtbdtbdSFCDSalesforceAnalyticsCookies_gcl_auessilorcompanion.comUsed through Google Analytics to understand user interaction with the site and advertisingGOOGLEAnalyticsCookies_gac_UA-essilorcompanion.comGoogle Analytics cookieGOOGLEAnalyticsCookies_gaessilorcompanion.comGoogle Analytics cookieGOOGLEAnalyticsCookies_gatessilorcompanion.comGoogle Analytics cookieGOOGLEAnalyticsCookies_gidessilorcompanion.comGoogle Analytics cookieGOOGLEAnalyticsCookies_gac_US-[Property ID]essilorcompanion.comGoogle Analytics cookieGOOGLEHOW WE USE PERSONAL DATA WE COLLECTWe only use your personal data within the limits authorized by the laws and regulations. Sometimes, we may use your personal data because the laws and regulations require us to do so. In any case, we do not make any automated decisions based solely on automatic processing which may produce legal effects on you, or similarly significantly affect you.We use your personal data for the following purposes: We use your identification data to give you a customized experience of the solution, understand how users use Essilor Companion and improve our features:ECP: to connect on the solution and use effectively. For CRM purposes & customer serviceConsumer: to streamline agenda of eye care professionals for incoming appointments of pickup of the equipment.We use your IT data for :ECP: Continuous improvement of the solution based on user experience. Consumer: Analyze consumer attendance to an appointmentHealth: We do not use or analyze Consumer personal health data. These data can be stored in a local cloud of the ECP and would be erased automatically after 2 months. These data include: consumer prescription data, consumer measurements and consumer answers to the questionnaire.HOW LONG WE KEEP PERSONAL DATA WE COLLECTThe period for which we store your personal data is shown in the table below:Category of dataRetention periodIdentification dataConsumer: 2 monthsECP: 5 yearsIT data[…13 months max … for Google analytics information – 3 Years on Back Office informationConsumer: 2 monthsECP: 13 MonthsPERSONAL DATA WE SHAREPlease note that we can share your personal data with the Essilor group and selected third parties. Category of dataCategory of recipientsLocationIdentification dataInternalEssilor Group and selected third partiesIT dataInternalEssilor Group and selected third partiesFor recipients located outside of the European Union, there is no adequacy decision by the European Commission for this area. This means that the level of data protection in this area is not comparable with the level of data protection in the European Union. Therefore, we use the appropriate internal measures as an appropriate safeguard to secure your personal data. HOW WE PROTECT PERSONAL DATAWe have measures in place to protect your personal data against unauthorized access, use, or disclosure including, without limitation, the following measures:We implement and maintain sophisticated technical measures to ensure that your personal data is recorded and processed in complete confidentiality and security;We implement and maintain appropriate restrictions on access to your personal data, and on monitoring the access, use, and transfer of personal data;All of our employees who have access to your personal data are required to enter into non-disclosure or similar agreements, which imposes obligations on them to comply with our data privacy and confidentiality requirements;We require any business partners and third party service providers with whom we may share your personal data to comply with any applicable data privacy and confidentiality requirements;We provide data privacy training on a regular basis to our employees and third parties who have access to personal data.WHAT RIGHTS YOU HAVEUnder applicable data protection laws and regulations, you have the right to:Access, rectify, and/or erase your personal data;Restrict or object to its processing;Tell us that you do not wish to receive marketing information;In some circumstances, require certain of your personal data to be transferred to you or a third party;To the extent our processing of your personal data is based upon your consent, withdraw your consent, without affecting the lawfulness of our processing based on your consent before its withdrawal.We are committed to enabling you to exercise your rights and, to do so, you can contact us using the contact information set out at the beginning of this Privacy Notice. Please provide us with the following information, so that we can act on your request with all due consideration:Your name and surname, and a photocopy of your identity document;Your specific request (in other words, what rights you want to exercise); andThe date of the application and your signature (if you send your application by post).If you are not fully satisfied with our response, you can also complain about our processing of your personal data to the relevant data protection authority.CHANGES TO THIS PRIVACY NOTICEWe regularly review our compliance with our Privacy Notice, in particular to ensure that it complies with new laws and regulations regarding data protection. But, although this Privacy Notice may change from time to time, we will not reduce your rights under this Privacy Notice without your explicit consent.\",\n\n region_language_change_region: 'Change your Region',\n region_filter: 'Select your location',\n language_lang__back_: 'Next',\n\n\n home_hom_whats_new: \"What's New?\",\n home_hommemat: 'eMat',\n home_home_disc_essilor: 'Discover Essilor',\n home_hom_lp_builder: 'Lens Proposal Builder',\n home_hom_start: 'Start',\n home_hom_start_from: 'Start From',\n home_hom_id: 'ID',\n home_hm_qr_code: 'QR Code',\n masterlicense_patientlist: 'Patient List'\n\n }\n }, \n}\n\nexport const TRANSLATIONS_MULTIPLE_LANG: any = {\n // TEMPORARY\n \"enCA\": {\n code: \"enCA\",\n country: \"canada\",\n multipleLanguage: {\n enUS: {\n code: \"enUS\",\n language: \"English\"\n },\n frFR: {\n code: \"frFR\",\n language: \"French\"\n }\n },\n translation: {}\n },\n \"chCH\" :{\n code: \"chCH\",\n country: \"switzerland\",\n multipleLanguage: {\n frFR: {\n code: \"frFR\",\n language: \"French\"\n },\n deDE: {\n code: \"deDE\",\n language: \"German\"\n },\n itIT: {\n code: \"itIT\",\n language: \"Italian\"\n }\n },\n translation: {}\n },\n \"beBE\" : {\n code: \"beBE\",\n country: \"belgium\",\n multipleLanguage: {\n frFR: {\n code: \"frFR\",\n language: \"French\"\n },\n itIT: {\n code: \"nlNL\",\n language: \"Netherlands\"\n },\n \n },\n translation: {}\n },\n \"arBA\" : {\n code: \"arBA\",\n country: \"aruba\",\n multipleLanguage: {\n frFR: {\n code: \"nlNL\",\n language: \"Dutch\"\n },\n itIT: {\n code: \"enUS\",\n language: \"English\"\n },\n \n },\n translation: {}\n },\n \"cuCA\" : {\n code: \"cuCA\",\n country: \"curaçao\",\n multipleLanguage: {\n frFR: {\n code: \"nlNL\",\n language: \"Dutch\"\n },\n itIT: {\n code: \"enUS\",\n language: \"English\"\n },\n \n },\n translation: {}\n },\n\n tlPH : {\n code: \"tlPH\",\n country: \"philippines\",\n multipleLanguage: { \n enPH: {\n code: \"enUS\",\n language: \"English\"\n }, \n },\n translation: {}\n },\n\n thTH : {\n code: \"thTH\",\n country: \"thailand\",\n multipleLanguage: { \n enPH: {\n code: \"enUS\",\n language: \"English\"\n }, \n },\n translation: {}\n },\n\n trTU : {\n code: \"trTU\",\n country: \"Turkey\",\n multipleLanguage: { \n enPH: {\n code: \"enUS\",\n language: \"English\"\n }, \n },\n translation: {}\n },\n\n ruRU : {\n code: \"ruRU\",\n country: \"Russia\",\n multipleLanguage: { \n enPH: {\n code: \"enUS\",\n language: \"English\"\n }, \n },\n translation: {}\n },\n\n msMY : {\n code: \"msMY\",\n country: \"Malaysia\",\n multipleLanguage: { \n enMY: {\n code: \"enUS\",\n language: \"English\"\n }, \n },\n translation: {}\n },\n\n koKR : {\n code: \"koKR\",\n country: \"Korea\",\n multipleLanguage: { \n enKR: {\n code: \"enUS\",\n language: \"English\"\n }, \n },\n translation: {}\n },\n\n hiIN : {\n code: \"hiIN\",\n country: \"India\",\n multipleLanguage: { \n enIN: {\n code: \"enUS\",\n language: \"English\"\n }, \n },\n translation: {}\n },\n\n heIL : {\n code: \"heIL\",\n country: \"Israel\",\n multipleLanguage: { \n enIL: {\n code: \"enUS\",\n language: \"English\"\n }, \n },\n translation: {}\n },\n\n faIR : {\n code: \"faIR\",\n country: \"Iran\",\n multipleLanguage: { \n enIR: {\n code: \"enUS\",\n language: \"English\"\n }, \n },\n translation: {}\n },\n\n arAE : {\n code: \"arAE\",\n country: \"UAE\",\n multipleLanguage: { \n enAE: {\n code: \"enUS\",\n language: \"English\"\n }, \n },\n translation: {}\n },\n\n idID : {\n code: \"idID\",\n country: \"Indonesia\",\n multipleLanguage: { \n enID: {\n code: \"enUS\",\n language: \"English\"\n }, \n },\n translation: {}\n },\n\n viVN : {\n code: \"viVN\",\n country: \"Vietnam\",\n multipleLanguage: { \n enVN: {\n code: \"enUS\",\n language: \"English\"\n }, \n },\n translation: {}\n }, \n}\n\nexport const VARILUX_TRANSLATIONS_MULTIPLE_LANG: any = {\n \"GB\": {\n \"language\": {\n \"enGB\": {\n \"current_lens_rx_current_lens\": \"Current lenses\",\n \"need_explorer_single_choice_question\": \"Single choice question\",\n \"varilux_demo_card_stabilized\": \"Stabilised vision even in the most demanding situations\",\n \"varilux_demo_card_sharp\": \"High visual acuity even in low light conditions\",\n \"varilux_demo_card_extended\": \"Natural posture in all circumstances\",\n \"need_explorer_warning_modification\": \"Any modification will influence the next steps\",\n \"need_explorer_back\": \"Back to Need Explorer\",\n \"choose_a_different_location_language\": \"Choose a different Location/Language\",\n \"need_explorer_continue\": \"Continue\",\n \"exclusive\": \"Exclusive\",\n \"varilux_install\": \"Install\",\n \"varilux_install_web_app\": \"Install the application for a better experience\",\n \"varilux_demo_card_instant\": \"Instant sharpness at all distances, even in motion\",\n \"language_settings\": \"Language Settings\",\n \"recommended\": \"Recommended\",\n \"message_messrequired_rx\": \"Required\",\n \"search_location_language\": \"Search Location\",\n \"select_your_location_language\": \"Select Your Location/Language\",\n \"skip_button\": \"Skip\",\n \"suggested_location_language\": \"Suggested Location/Language\",\n \"varilux_web_app\": \"Web App\",\n \"need_explorer_warning\": \"Warning\",\n \"calculation_based_on_lenses\": \"*Essilor R&D simulations – 2022 – calculation based on lensesn measurements weighted by the level of importance of each criterian for progressive lenses declared by users (Quantitative Consumer study - Ipsos - Q1 2022 - BR/FR/IT/UK/US - n=4000 progressive lens wearers) - Simulations done on most relevant competitive brands : brands with good level of awareness among consumers (Consumer Lens Brand Tracking - Ipsos - Q3 2022 - BR/CA/CN/FR/IN/IT/UK/US - n=8000) & offering premium progressive lenses.​\",\n \"conclusion_rx_conclusion\": \"Conclusion\",\n \"current_progress_lens\": \"Current progressive lenses\",\n \"demo\": \"Demo\",\n \"legal_notice_ln_01_demonstrations_title\": \"Demonstrations\",\n \"varilux_choice_difficulty_sharpness\": \"Difficulty to maintain sharpness\",\n \"varilux_choice_difficulty_light\": \"Difficulty to see sharply in low light conditions\",\n \"varilux_btn_end_experience\": \"End demonstration\",\n \"need_explorer_experience_your\": \"Experience your\",\n \"need_explorer_personalized_demonstration\": \"personalised demonstration\",\n \"full-screen\": \"Full screen\",\n \"varilux_choice_limited_posture\": \"Limited postural changes\",\n \"varilux__mandatory\": \"Mandatory\",\n \"need_explorer_multiple_choice_question\": \"Multiple choice question\",\n \"lens_proposal_builder_lpb_need_explorer\": \"Need Explorer\",\n \"varilux_btn_next_patient\": \"New demonstration\",\n \"personalize_your_lenses_pyl_next\": \"Next\",\n \"varilux_choice_none\": \"None, I am very sastisfied with my progressive lenses\",\n \"varilux_demo_card_panoramic\": \"Panoramic field of vision\",\n \"standard_progressive_lens\": \"Premium progressive lenses\",\n \"quit-full-screen\": \"Quit full screen\",\n \"varilux_choice_restricted\": \"Restricted field of vision\",\n \"select_visual__prog_lens\": \"Select the visual discomforts experienced by your patient with their current progressive lenses\",\n \"varilux_choice_sensation\": \"Sensation of swim effect while moving\",\n \"varilux_the_best_overall\": \"The best Varilux®\",\n \"varilux_progressive_lens\": \"progressive lens ever*\",\n \"welcome-to-your\": \"Welcome to your\",\n \"personalized-profile\": \"personalised profile\"\n }\n },\n \"country\": \"United Kingdom\"\n },\n \"RO\": {\n \"language\": {\n \"roRO\": {\n \"current_lens_rx_current_lens\": \"Lentile actuale\",\n \"need_explorer_single_choice_question\": \"Întrebare cu o singură alegere\",\n \"varilux_demo_card_stabilized\": \"Vedere stabilizată chiar și în cele mai solicitante situații\",\n \"varilux_demo_card_sharp\": \"Acuitate vizuală ridicată chiar și în condiții de lumină scăzută\",\n \"varilux_demo_card_extended\": \"Postură naturală în toate circumstanțele\",\n \"need_explorer_warning_modification\": \"Orice modificare va influența pașii următori\",\n \"need_explorer_back\": \"Înapoi la Explorer\",\n \"choose_a_different_location_language\": \"Alegeți o altă locație/limbă\",\n \"need_explorer_continue\": \"Continuați\",\n \"exclusive\": \"Exclusiv\",\n \"varilux_install\": \"Instalați\",\n \"varilux_install_web_app\": \"Instalați aplicația pentru o experiență mai bună \",\n \"varilux_demo_card_instant\": \"Claritate instantanee la orice distanță, chiar și în mișcaren\",\n \"language_settings\": \"Setări de limbă\",\n \"recommended\": \"Recomandat\",\n \"message_messrequired_rx\": \"Necesar\",\n \"search_location_language\": \"Căutați locație\",\n \"select_your_location_language\": \"Selectați locația/Limba dumneavoastră\",\n \"skip_button\": \"Omiteți\",\n \"suggested_location_language\": \"Locație/Limbă sugerată\",\n \"varilux_web_app\": \"Aplicație web\",\n \"need_explorer_warning\": \"Avertizare\",\n \"calculation_based_on_lenses\": \"*Simulări de cercetare și dezvoltare ale Essilor – 2022 – calcul bazat pe măsurătorile lentilelor ponderate cu nivelul de importanță al fiecărui criteriu pentru lentilele progresive declarate de utilizatori (studiu cantitativ la consumatori - Ipsos - Q1 2022 - BR/FR/IT/UK/US - n=4000 purtători de lentile progresive) - Simulări efectuate pe cele mai relevante mărci competitive: mărci cu un nivel bun de conștientizare în rândul consumatorilor (Consumer Lens Brand Tracking - Ipsos - Q3 2022 - BR/CA/CN/FR/IN/IT/UK/US - n=8000) și care oferă lentile progresive premium.​\",\n \"conclusion_rx_conclusion\": \"Concluzie\",\n \"current_progress_lens\": \"Lentile progresive actuale\",\n \"demo\": \"Demo\",\n \"legal_notice_ln_01_demonstrations_title\": \"Demonstrații\",\n \"varilux_choice_difficulty_sharpness\": \"Dificultate în menținerea clarității\",\n \"varilux_choice_difficulty_light\": \"Dificultate în a vedea clar în condiții de lumină scăzută\",\n \"varilux_btn_end_experience\": \"Încheiați demonstrația \",\n \"need_explorer_experience_your\": \"Experimentați demonstrația\",\n \"need_explorer_personalized_demonstration\": \"personalizată pentru dvs.\",\n \"full-screen\": \"Ecran complet\",\n \"varilux_choice_limited_posture\": \"Modificări posturale limitate\",\n \"varilux__mandatory\": \"Obligatorie\",\n \"need_explorer_multiple_choice_question\": \"Întrebare cu răspunsuri multiple\",\n \"lens_proposal_builder_lpb_need_explorer\": \"Explorer\",\n \"varilux_btn_next_patient\": \"Demonstrație nouă\",\n \"personalize_your_lenses_pyl_next\": \"Următorul\",\n \"varilux_choice_none\": \"Niciuna, sunt foarte mulțumit de lentilele mele progresive\",\n \"varilux_demo_card_panoramic\": \"Câmp vizual panoramic\",\n \"standard_progressive_lens\": \"Lentile progresive premium\",\n \"quit-full-screen\": \"Ieșiți din ecranul complet\",\n \"varilux_choice_restricted\": \"Câmp vizual restrâns\",\n \"select_visual__prog_lens\": \"Selectați tipul de disconfort vizual manifestat de pacientul dumneavoastră cu lentilele progresive actuale:\",\n \"varilux_choice_sensation\": \"Senzație de efect de înot în timpul mișcării\",\n \"varilux_the_best_overall\": \"Cea mai performantă\",\n \"varilux_progressive_lens\": \"lentilă progresivă Varilux\",\n \"welcome-to-your\": \"Bun venit \",\n \"personalized-profile\": \"la profilul dumneavoastră personalizat!\"\n }\n },\n \"country\": \"Romania\"\n },\n \"ES\": {\n \"language\": {\n \"esES\": {\n \"current_lens_rx_current_lens\": \"Lentes actuales\",\n \"need_explorer_single_choice_question\": \"Pregunta de opción única\",\n \"varilux_demo_card_stabilized\": \"Visión estabilizada incluso en las situaciones más exigentes\",\n \"varilux_demo_card_sharp\": \"Gran agudeza visual incluso en condiciones de poca luz\",\n \"varilux_demo_card_extended\": \"Postura natural en cualquier circunstancia\",\n \"need_explorer_warning_modification\": \"Cualquier modificación condicionará los siguientes pasos\",\n \"need_explorer_back\": \"Volver a Identificar necesidades\",\n \"choose_a_different_location_language\": \"Elige una ubicación/idioma diferente\",\n \"need_explorer_continue\": \"Continuar\",\n \"exclusive\": \"Exclusivo\",\n \"varilux_install\": \"Instalar\",\n \"varilux_install_web_app\": \"Instala la aplicación para una mejor experiencia \",\n \"varilux_demo_card_instant\": \"Nitidez instantánea a todas las distancias, incluso en movimiento\",\n \"language_settings\": \"Ajustes de idioma\",\n \"recommended\": \"Recomendado\",\n \"message_messrequired_rx\": \"Obligatorio\",\n \"search_location_language\": \"Buscar ubicación\",\n \"select_your_location_language\": \"Selecciona tu ubicación/idioma\",\n \"skip_button\": \"Saltar\",\n \"suggested_location_language\": \"Ubicación/Idioma sugerido\",\n \"varilux_web_app\": \"Aplicación web\",\n \"need_explorer_warning\": \"Advertencia\",\n \"calculation_based_on_lenses\": \"* Simulaciones internasnde I+D – 2022 – vs lente Varilux® X series™. \",\n \"conclusion_rx_conclusion\": \"Conclusión\",\n \"current_progress_lens\": \"Lentes progresivas actuales\",\n \"demo\": \"Demostración\",\n \"legal_notice_ln_01_demonstrations_title\": \"Demostraciones\",\n \"varilux_choice_difficulty_sharpness\": \"Dificultad para mantener la nitidez\",\n \"varilux_choice_difficulty_light\": \"Dificultad para ver con nitidez en condiciones de poca luz\",\n \"varilux_btn_end_experience\": \"Finalizar demostración \",\n \"need_explorer_experience_your\": \"Disfruta de una\",\n \"need_explorer_personalized_demonstration\": \"demostración personalizada\",\n \"full-screen\": \"Pantalla completa\",\n \"varilux_choice_limited_posture\": \"Cambios posturales limitados\",\n \"varilux__mandatory\": \"Obligatorio\",\n \"need_explorer_multiple_choice_question\": \"Pregunta de opción múltiple\",\n \"lens_proposal_builder_lpb_need_explorer\": \"Identificar necesidades\",\n \"varilux_btn_next_patient\": \"Nueva demostración\",\n \"personalize_your_lenses_pyl_next\": \"Siguiente\",\n \"varilux_choice_none\": \"Ninguno, me gustan mucho mis lentes progresivas\",\n \"varilux_demo_card_panoramic\": \"Campo de visión panorámico\",\n \"standard_progressive_lens\": \"Lentes progresivas premium\",\n \"quit-full-screen\": \"Salir de pantalla completa\",\n \"varilux_choice_restricted\": \"Campo de visión restringido\",\n \"select_visual__prog_lens\": \"Selecciona las molestias visuales que experimenta tu paciente con sus lentes progresivas actuales\",\n \"varilux_choice_sensation\": \"Sensación de visión borrosa y distorsionada en movimiento\",\n \"varilux_the_best_overall\": \"La mejor lente progresiva Varilux®\",\n \"varilux_progressive_lens\": \"de todos los tiempos*\",\n \"welcome-to-your\": \"Bienvenido a tu\",\n \"personalized-profile\": \"perfil personalizado\"\n }\n },\n \"country\": \"Spain\"\n },\n \"BE\": {\n \"language\": {\n \"nlBE\": {\n \"current_lens_rx_current_lens\": \"Huidige brillenglazen\",\n \"need_explorer_single_choice_question\": \"Enkele keuze vraag\",\n \"varilux_demo_card_stabilized\": \"Gestabiliseerd zicht, zelfs in de meest veeleisende situaties\",\n \"varilux_demo_card_sharp\": \"Hoge gezichtsscherpte, zelfs bij weinig licht\",\n \"varilux_demo_card_extended\": \"Natuurlijke lichaamshouding in alle omstandigheden\",\n \"need_explorer_warning_modification\": \"Elke wijziging heeft invloed op de volgende stappen\",\n \"need_explorer_back\": \"Terug naar de behoefteverkenner\",\n \"choose_a_different_location_language\": \"Kies een andere locatie/taal\",\n \"need_explorer_continue\": \"Doorgaan\",\n \"exclusive\": \"Exclusief\",\n \"varilux_install\": \"Installeren\",\n \"varilux_install_web_app\": \"Installeer de applicatie voor een betere ervaring \",\n \"varilux_demo_card_instant\": \"Onmiddellijke scherpte, zelfs in beweging\",\n \"language_settings\": \"Taalinstellingen\",\n \"recommended\": \"Aanbevolen\",\n \"message_messrequired_rx\": \"Vereist\",\n \"search_location_language\": \"Zoek locatie\",\n \"select_your_location_language\": \"Selecteer uw locatie/taal\",\n \"skip_button\": \"Overslaan\",\n \"suggested_location_language\": \"Voorgestelde locatie/taal\",\n \"varilux_web_app\": \"Webapplicatie\",\n \"need_explorer_warning\": \"Waarschuwing\",\n \"calculation_based_on_lenses\": \"*Essilor R&D-simulaties – 2022 – berekening op basis van brillenglazenmetingen gewogen volgens het belang van elk criterium voor multifocale brillenglazen zoals aangegeven door gebruikers (Kwantitatief consumentenonderzoek - Ipsos - KW1 2022 - BR/FR/IT/VK/VS - n = 4000 dragers van multifocale brillenglazen) - Simulaties uitgevoerd op de meest relevante concurrerende merken: merken met een grote naambekendheid bij de consument (Merkregistratie van brillenglazen voor consumenten - Ipsos - KW3 2022 - BR/CA/CN/FR/IN/IT/VK/VS - n = 8000) en die premium multifocale brillenglazen aanbieden.​\",\n \"conclusion_rx_conclusion\": \"Conclusie\",\n \"current_progress_lens\": \"Huidige multifocale brillenglazen\",\n \"demo\": \"Demo\",\n \"legal_notice_ln_01_demonstrations_title\": \"Demonstraties\",\n \"varilux_choice_difficulty_sharpness\": \"Moeite om de scherpte te behouden\",\n \"varilux_choice_difficulty_light\": \"Moeilijkheden om scherp te zien bij weinig licht\",\n \"varilux_btn_end_experience\": \"Einde demonstratie \",\n \"need_explorer_experience_your\": \"Ervaar uw\",\n \"need_explorer_personalized_demonstration\": \"persoonlijke demonstratie\",\n \"full-screen\": \"Volledig scherm\",\n \"varilux_choice_limited_posture\": \"Beperkte posturale veranderingen\",\n \"varilux__mandatory\": \"Verplicht\",\n \"need_explorer_multiple_choice_question\": \"Meerkeuzevraag\",\n \"lens_proposal_builder_lpb_need_explorer\": \"Behoefteverkenner\",\n \"varilux_btn_next_patient\": \"Nieuwe demonstratie\",\n \"personalize_your_lenses_pyl_next\": \"Volgende\",\n \"varilux_choice_none\": \"Geen, ik ben zeer tevreden met mijn multifocale brillenglazen\",\n \"varilux_demo_card_panoramic\": \"Panoramisch gezichtsveld\",\n \"standard_progressive_lens\": \"Premium multifocale brillenglazen\",\n \"quit-full-screen\": \"Sluit het volledige scherm af\",\n \"varilux_choice_restricted\": \"Beperkt gezichtsveld\",\n \"select_visual__prog_lens\": \"Selecteer de visuele ongemakken die uw patiënt ervaart met zijn of haar huidige multifocale brillenglazen\",\n \"varilux_choice_sensation\": \"Sensatie van schommeleffect tijdens het bewegen\",\n \"varilux_the_best_overall\": \"Het beste algemene\",\n \"varilux_progressive_lens\": \"multifocale brillenglas*\",\n \"welcome-to-your\": \"Welkom bij uw\",\n \"personalized-profile\": \"gepersonaliseerde profiel\"\n },\n \"frBE\": {\n \"current_lens_rx_current_lens\": \"Verres progressifs actuels\",\n \"need_explorer_single_choice_question\": \"Question à choix unique\",\n \"varilux_demo_card_stabilized\": \"Une vision stabilisée même dans les situations les plus exigeantes\",\n \"varilux_demo_card_sharp\": \"Une acuité visuelle élevée, même dans des conditions de faible luminosité\",\n \"varilux_demo_card_extended\": \"Une posture naturelle en toutes circonstances\",\n \"need_explorer_warning_modification\": \"Toute modification affectera les prochaines étapes\",\n \"need_explorer_back\": \"Retour à la découverte des besoins\",\n \"choose_a_different_location_language\": \"Choisir une autre localisation/langue\",\n \"need_explorer_continue\": \"Continuer\",\n \"exclusive\": \"Exclusif\",\n \"varilux_install\": \"Installer\",\n \"varilux_install_web_app\": \"Installez l'application pour une meilleure expérience \",\n \"varilux_demo_card_instant\": \"Netteté instantanée à toutes distances, même en mouvement\",\n \"language_settings\": \"Paramètres de langue\",\n \"recommended\": \"Recommandé\",\n \"message_messrequired_rx\": \"Nécessaire\",\n \"search_location_language\": \"Chercher la localisation\",\n \"select_your_location_language\": \"Sélectionnez votre localisation/langue\",\n \"skip_button\": \"Passer\",\n \"suggested_location_language\": \"Localisation/langue suggérée\",\n \"varilux_web_app\": \"Appli Web\",\n \"need_explorer_warning\": \"Avertissement\",\n \"calculation_based_on_lenses\": \"*Simulations de R&D Essilor - 2022 - calcul basé sur les mesures de verres, pondérées par le niveau d'importance de chaque critère de verres progressifs déclaré par les porteurs (Étude quantitative de consommation - Ipsos - Q1 2022 - BR/FR/IT/UK/US - n = 4000 porteurs de verres progressifs) - Simulations réalisées avec les marques concurrentes les plus pertinentes : marques ayant une notoriété élevée auprès des consommateurs (Suivi des marques de verres consommateurs - Ipsos - Q3 2022 - BR/CA/CN/FR/IN/IT/UK/US) et proposant des verres progressifs haut de gamme.​\",\n \"conclusion_rx_conclusion\": \"Conclusion\",\n \"current_progress_lens\": \"Choisissez les gênes visuelles rencontrées par votre patient avec ses verres progressifs actuels\",\n \"demo\": \"Démo\",\n \"legal_notice_ln_01_demonstrations_title\": \"Démonstrations\",\n \"varilux_choice_difficulty_sharpness\": \"Difficulté à maintenir la netteté\",\n \"varilux_choice_difficulty_light\": \"Difficulté à avoir une vision nette en situation de faible luminosité\",\n \"varilux_btn_end_experience\": \"Fermer la démonstration \",\n \"need_explorer_experience_your\": \"Faites l'expérience de\",\n \"need_explorer_personalized_demonstration\": \"votre démonstration personnalisée\",\n \"full-screen\": \"Plein écran\",\n \"varilux_choice_limited_posture\": \"Changements de posture limités\",\n \"varilux__mandatory\": \"Obligatoire\",\n \"need_explorer_multiple_choice_question\": \"Questionnaire à choix multiple\",\n \"lens_proposal_builder_lpb_need_explorer\": \"Découverte des besoins\",\n \"varilux_btn_next_patient\": \"Nouvelle démonstration\",\n \"personalize_your_lenses_pyl_next\": \"Suivant\",\n \"varilux_choice_none\": \"Aucune gêne, mes verres progressifs me conviennent\",\n \"varilux_demo_card_panoramic\": \"Champ de vision panoramique\",\n \"standard_progressive_lens\": \"Verres progressifs haut de gamme\",\n \"quit-full-screen\": \"Quitter le plein écran\",\n \"varilux_choice_restricted\": \"Champ de vision réduit\",\n \"select_visual__prog_lens\": \"Choisissez les gênes visuelles rencontrées par votre patient avec ses verres progressifs actuels\",\n \"varilux_choice_sensation\": \"Effets de tangage pendant le mouvement\",\n \"varilux_the_best_overall\": \"Le meilleur\",\n \"varilux_progressive_lens\": \"verre progressif*\",\n \"welcome-to-your\": \"Bienvenue sur votre\",\n \"personalized-profile\": \"profil personnalisé\"\n }\n },\n \"country\": \"Belgium\"\n },\n \"DE\": {\n \"language\": {\n \"deDE\": {\n \"current_lens_rx_current_lens\": \"Aktuelle Gleitsichtgläser\",\n \"need_explorer_single_choice_question\": \"Single-Choice-Frage\",\n \"varilux_demo_card_stabilized\": \"Verlässliches Sehen auch in den anspruchsvollsten Situationen\",\n \"varilux_demo_card_sharp\": \"Hohe Sehschärfe auch bei schlechten Lichtverhältnissen\",\n \"varilux_demo_card_extended\": \"Natürliche Körperhaltung in allen Situationen\",\n \"need_explorer_warning_modification\": \"Jegliche Änderung wirkt sich auf die nächsten Schritte aus\",\n \"need_explorer_back\": \"Zurück zur Anamnese\",\n \"choose_a_different_location_language\": \"Anderen Standort/andere Sprache auswählen\",\n \"need_explorer_continue\": \"Weiter\",\n \"exclusive\": \"Exklusiv\",\n \"varilux_install\": \"Installieren\",\n \"varilux_install_web_app\": \"Installieren Sie die App für ein besseres Nutzer:innenerlebnis \",\n \"varilux_demo_card_instant\": \"Sofort scharf sehen in allen Entfernungen – auch in Bewegung\",\n \"language_settings\": \"Spracheinstellungen\",\n \"recommended\": \"Empfohlen\",\n \"message_messrequired_rx\": \"Eingabe erforderlich\",\n \"search_location_language\": \"Standort suchen\",\n \"select_your_location_language\": \"Wählen Sie Ihren Standort/Ihre Sprache aus\",\n \"skip_button\": \"Überspringen\",\n \"suggested_location_language\": \"Vorgeschlagener Standort/vorgeschlagene Sprache\",\n \"varilux_web_app\": \"Web-App\",\n \"need_explorer_warning\": \"Warnung\",\n \"calculation_based_on_lenses\": \"*Essilor F&E-Simulationen – 2022 – Berechnung beruht auf Brillenglasmessungen gewichtet nach dem von den Nutzer:innen empfundenen Wichtigkeitsgrad des jeweiligen Gleitsichtglaskriteriums (Quantitative Verbraucherstudie – Ipsos – Q1 2022 – BR/FR/IT/UK/US – n = 4.000 Gleitsichtglas-Träger:innen) – Simulationen mit den wichtigsten Konkurrenzmarken durchgeführt: Marken mit hohem Bekanntheitsgrad unter den Verbraucher:innen, und die Premium-Gleitsichtgläser anbieten (Consumer Lens Brand Tracking – Ipsos – Q3 2022 – BR/CA/CN/FR/IN/IT/UK/US – n = 8.000).​\",\n \"conclusion_rx_conclusion\": \"Abschluss\",\n \"current_progress_lens\": \"Aktuelle Gleitsichtgläser\",\n \"demo\": \"Demo\",\n \"legal_notice_ln_01_demonstrations_title\": \"Demonstrationen\",\n \"varilux_choice_difficulty_sharpness\": \"Schwierigkeiten, durchgehend scharf zu sehen\",\n \"varilux_choice_difficulty_light\": \"Schwierigkeiten, bei schlechten Lichtverhältnissen scharf zu sehen\",\n \"varilux_btn_end_experience\": \"Demonstration beenden \",\n \"need_explorer_experience_your\": \"Erleben Sie Ihre\",\n \"need_explorer_personalized_demonstration\": \"personalisierte Demonstration\",\n \"full-screen\": \"Vollbild\",\n \"varilux_choice_limited_posture\": \"Eingeschränkte Haltungsflexibilität\",\n \"varilux__mandatory\": \"Pflichtfeld\",\n \"need_explorer_multiple_choice_question\": \"Multiple-Choice-Frage\",\n \"lens_proposal_builder_lpb_need_explorer\": \"Anamnese\",\n \"varilux_btn_next_patient\": \"Neue Demonstration\",\n \"personalize_your_lenses_pyl_next\": \"Weiter\",\n \"varilux_choice_none\": \"Keine, ich bin mit meinen aktuellen Gleitsichtgläsern sehr zufrieden\",\n \"varilux_demo_card_panoramic\": \"Panorama-Sehbereich\",\n \"standard_progressive_lens\": \"Premium-Gleitsichtgläser\",\n \"quit-full-screen\": \"Vollbildmodus beenden\",\n \"varilux_choice_restricted\": \"Eingeschränkter Sehbereich\",\n \"select_visual__prog_lens\": \"Wählen Sie die Sehbeschwerden aus, die der/die Kund:in mit seiner/ihrer aktuellen Gleitsichtbrille hat\",\n \"varilux_choice_sensation\": \"Schwimmeffekte in Bewegung\",\n \"varilux_the_best_overall\": \"Das beste Varilux Gleitsichtglas\",\n \"varilux_progressive_lens\": \"aller Zeiten*\",\n \"welcome-to-your\": \"Willkommen zu Ihrem\",\n \"personalized-profile\": \"personalisierten Profil\"\n }\n },\n \"country\": \"Germany\"\n },\n \"NO\": {\n \"language\": {\n \"noNO\": {\n \"current_lens_rx_current_lens\": \"Nåværende glass\",\n \"need_explorer_single_choice_question\": \"Enkeltvalgsspørsmål\",\n \"varilux_demo_card_stabilized\": \"Stabilisert syn, selv i de mest krevende situasjoner\",\n \"varilux_demo_card_sharp\": \"Høy synsskarphet, selv ved dårlige lysforhold\",\n \"varilux_demo_card_extended\": \"Naturlig kroppsholdning under alle omstendigheter\",\n \"need_explorer_warning_modification\": \"Enhver endring vil påvirke de neste trinnene\",\n \"need_explorer_back\": \"Gå tilbake til « Behovsutforsker»\",\n \"choose_a_different_location_language\": \"Velg et annet sted/språk\",\n \"need_explorer_continue\": \"Fortsett\",\n \"exclusive\": \"Eksklusiv\",\n \"varilux_install\": \"Installer\",\n \"varilux_install_web_app\": \"Installer programmet for en bedre opplevelse \",\n \"varilux_demo_card_instant\": \"Umiddelbar synsskarphet på alle avstander, selv i bevegelse\",\n \"language_settings\": \"Språkinnstillinger\",\n \"recommended\": \"Anbefalt\",\n \"message_messrequired_rx\": \"Obligatorisk\",\n \"search_location_language\": \"Søk etter sted\",\n \"select_your_location_language\": \"Velg sted/språk\",\n \"skip_button\": \"Hopp over\",\n \"suggested_location_language\": \"Foreslått sted/språk\",\n \"varilux_web_app\": \"Nettapp\",\n \"need_explorer_warning\": \"Advarsel\",\n \"calculation_based_on_lenses\": \"*Essilor FoU-simuleringer – 2022 – beregninger basert på glassmålinger vektet etter nivå av viktighet for hvert kriterium for progressive glass, oppgitt av brukere (kvantitativ kundeundersøkelse – Ipsos – Q1 2022 – BR/FR/IT/UK/US – n = 4000 brukere av progressive glass) – Simuleringer utført på de mest relevante konkurrerende merkene: merker med et godt nivå av bevissthet blant forbrukere (sporing av forbrukeres valg av glassmerke – Ipsos – Q3 2022 – BR/CA/CN/FR/IN/IT/UK/US – n = 8000) og som tilbyr førsteklasses progressive glass.​\",\n \"conclusion_rx_conclusion\": \"Konklusjon\",\n \"current_progress_lens\": \"Nåværende progressive glass\",\n \"demo\": \"Demonstrasjon\",\n \"legal_notice_ln_01_demonstrations_title\": \"Demonstrasjoner\",\n \"varilux_choice_difficulty_sharpness\": \"Vansker med å opprettholde skarphet\",\n \"varilux_choice_difficulty_light\": \"Vansker med å se skarpt i dårlige lysforhold\",\n \"varilux_btn_end_experience\": \"Avslutt demonstrasjon \",\n \"need_explorer_experience_your\": \"Opplev en personlig\",\n \"need_explorer_personalized_demonstration\": \"tilpasset demonstrasjon\",\n \"full-screen\": \"Full skjerm\",\n \"varilux_choice_limited_posture\": \"Begrensninger ifm kroppsholdning\",\n \"varilux__mandatory\": \"Obligatorisk\",\n \"need_explorer_multiple_choice_question\": \"Flervalgsspørsmål\",\n \"lens_proposal_builder_lpb_need_explorer\": \"Behovsutforsker\",\n \"varilux_btn_next_patient\": \"Ny demonstrasjon\",\n \"personalize_your_lenses_pyl_next\": \"Neste\",\n \"varilux_choice_none\": \"Ingen, jeg er veldig fornøyd med mine progressive glass\",\n \"varilux_demo_card_panoramic\": \"Panoramasynsfelt\",\n \"standard_progressive_lens\": \"Premium progressive glass\",\n \"quit-full-screen\": \"Avslutt full skjerm\",\n \"varilux_choice_restricted\": \"Begrenset synsfelt\",\n \"select_visual__prog_lens\": \"Velg de synsplagene som pasienten opplever med sine nåværende\",\n \"varilux_choice_sensation\": \"Følelse av «svømmeeffekt» i bevegelse\",\n \"varilux_the_best_overall\": \"Det beste progressive glasset\",\n \"varilux_progressive_lens\": \"til generell bruk*\",\n \"welcome-to-your\": \"Velkommen til din\",\n \"personalized-profile\": \"personlig tilpassede profil\"\n }\n },\n \"country\": \"Norway\"\n },\n \"PT\": {\n \"language\": {\n \"ptPT\": {\n \"current_lens_rx_current_lens\": \"Lentes atuais\",\n \"need_explorer_single_choice_question\": \"Questão de escolha única\",\n \"varilux_demo_card_stabilized\": \"Visão estabilizada, mesmo nas situações mais exigentes\",\n \"varilux_demo_card_sharp\": \"Elevada acuidade visual, mesmo em condições de pouca luminosidade\",\n \"varilux_demo_card_extended\": \"Postura natural em todas as circunstâncias\",\n \"need_explorer_warning_modification\": \"Qualquer alteração vai influenciar os próximos passos\",\n \"need_explorer_back\": \"Voltar ao Explorador de necessidades\",\n \"choose_a_different_location_language\": \"Escolher uma Localização/Idioma diferente\",\n \"need_explorer_continue\": \"Continuar\",\n \"exclusive\": \"Exclusivo\",\n \"varilux_install\": \"Instalar\",\n \"varilux_install_web_app\": \"Instale a aplicação para desfrutar de uma melhor experiência \",\n \"varilux_demo_card_instant\": \"Nitidez instantânea a todas as distâncias, mesmo em movimento\",\n \"language_settings\": \"Definições de idioma\",\n \"recommended\": \"Recomendado\",\n \"message_messrequired_rx\": \"Necessário\",\n \"search_location_language\": \"Pesquisar localização\",\n \"select_your_location_language\": \"Selecione a sua Localização/Idioma\",\n \"skip_button\": \"Ignorar\",\n \"suggested_location_language\": \"Localização/Idioma sugerido\",\n \"varilux_web_app\": \"Aplicação Web\",\n \"need_explorer_warning\": \"Aviso\",\n \"calculation_based_on_lenses\": \"Simulações do departamento de I&D internas – 2022 – em comparação com Varilux® X series™\",\n \"conclusion_rx_conclusion\": \"Conclusão\",\n \"current_progress_lens\": \"Lentes progressivas atuais\",\n \"demo\": \"Demonstração\",\n \"legal_notice_ln_01_demonstrations_title\": \"Demonstrações\",\n \"varilux_choice_difficulty_sharpness\": \"Dificuldade em manter a nitidez\",\n \"varilux_choice_difficulty_light\": \"Dificuldade em ver de forma nítida em condições de pouca luminosidade\",\n \"varilux_btn_end_experience\": \"Terminar demonstração \",\n \"need_explorer_experience_your\": \"Experimente a sua\",\n \"need_explorer_personalized_demonstration\": \"demonstração personalizada\",\n \"full-screen\": \"Ecrã inteiro\",\n \"varilux_choice_limited_posture\": \"Alterações posturais limitadas\",\n \"varilux__mandatory\": \"Obrigatório\",\n \"need_explorer_multiple_choice_question\": \"Pergunta de escolha múltipla\",\n \"lens_proposal_builder_lpb_need_explorer\": \"Explorador de necessidades\",\n \"varilux_btn_next_patient\": \"Nova demonstração\",\n \"personalize_your_lenses_pyl_next\": \"Seguinte\",\n \"varilux_choice_none\": \"Nenhum, estou muito satisfeito com as minhas lentes progressivas\",\n \"varilux_demo_card_panoramic\": \"Campo de visão panorâmico\",\n \"standard_progressive_lens\": \"Lentes progressivas premium\",\n \"quit-full-screen\": \"Sair do ecrã inteiro\",\n \"varilux_choice_restricted\": \"Campo de visão restrito\",\n \"select_visual__prog_lens\": \"Selecione os desconfortos visuais sentidos pelo utilizador com as lentes progressivas atuais\",\n \"varilux_choice_sensation\": \"Sensação de efeito de oscilação em movimento \",\n \"varilux_the_best_overall\": \"A melhor lente progressiva\",\n \"varilux_progressive_lens\": \"Varilux de sempre*\",\n \"welcome-to-your\": \"Bem-vindo ao seu\",\n \"personalized-profile\": \"perfil personalizado\"\n }\n },\n \"country\": \"Portugal\"\n },\n \"FR\": {\n \"language\": {\n \"frFR\": {\n \"current_lens_rx_current_lens\": \"Verres progressifs actuels\",\n \"need_explorer_single_choice_question\": \"Question à choix unique\",\n \"varilux_demo_card_stabilized\": \"Une vision stabilisée même dans les situations les plus exigeantes\",\n \"varilux_demo_card_sharp\": \"Une acuité visuelle élevée, même dans des conditions de faible luminosité\",\n \"varilux_demo_card_extended\": \"Une posture naturelle en toutes circonstances\",\n \"need_explorer_warning_modification\": \"Toute modification affectera les prochaines étapes\",\n \"need_explorer_back\": \"Retour à la découverte des besoins\",\n \"choose_a_different_location_language\": \"Choisir une autre localisation/langue\",\n \"need_explorer_continue\": \"Continuer\",\n \"exclusive\": \"Exclusif\",\n \"varilux_install\": \"Installer\",\n \"varilux_install_web_app\": \"Installez l'application pour une meilleure expérience \",\n \"varilux_demo_card_instant\": \"Netteté instantanée à toutes distances, même en mouvement\",\n \"language_settings\": \"Paramètres de langue\",\n \"recommended\": \"Recommandé\",\n \"message_messrequired_rx\": \"Nécessaire\",\n \"search_location_language\": \"Chercher la localisation\",\n \"select_your_location_language\": \"Sélectionnez votre localisation/langue\",\n \"skip_button\": \"Passer\",\n \"suggested_location_language\": \"Localisation/langue suggérée\",\n \"varilux_web_app\": \"Appli Web\",\n \"need_explorer_warning\": \"Avertissement\",\n \"calculation_based_on_lenses\": \"*Simulations de R&D Essilor - 2022 - calcul basé sur les mesures de verres, pondérées par le niveau d'importance de chaque critère de verres progressifs déclaré par les porteurs (Étude quantitative de consommation - Ipsos - Q1 2022 - BR/FR/IT/UK/US - n = 4000 porteurs de verres progressifs) - Simulations réalisées avec les marques concurrentes les plus pertinentes : marques ayant une notoriété élevée auprès des consommateurs (Suivi des marques de verres consommateurs - Ipsos - Q3 2022 - BR/CA/CN/FR/IN/IT/UK/US) et proposant des verres progressifs haut de gamme.​\",\n \"conclusion_rx_conclusion\": \"Conclusion\",\n \"current_progress_lens\": \"Choisissez les gênes visuelles rencontrées par votre patient avec ses verres progressifs actuels\",\n \"demo\": \"Démo\",\n \"legal_notice_ln_01_demonstrations_title\": \"Démonstrations\",\n \"varilux_choice_difficulty_sharpness\": \"Difficulté à maintenir la netteté\",\n \"varilux_choice_difficulty_light\": \"Difficulté à avoir une vision nette en situation de faible luminosité\",\n \"varilux_btn_end_experience\": \"Fermer la démonstration \",\n \"need_explorer_experience_your\": \"Faites l'expérience de\",\n \"need_explorer_personalized_demonstration\": \"votre démonstration personnalisée\",\n \"full-screen\": \"Plein écran\",\n \"varilux_choice_limited_posture\": \"Changements de posture limités\",\n \"varilux__mandatory\": \"Obligatoire\",\n \"need_explorer_multiple_choice_question\": \"Questionnaire à choix multiple\",\n \"lens_proposal_builder_lpb_need_explorer\": \"Découverte des besoins\",\n \"varilux_btn_next_patient\": \"Nouvelle démonstration\",\n \"personalize_your_lenses_pyl_next\": \"Suivant\",\n \"varilux_choice_none\": \"Aucune gêne, mes verres progressifs me conviennent\",\n \"varilux_demo_card_panoramic\": \"Champ de vision panoramique\",\n \"standard_progressive_lens\": \"Verres progressifs haut de gamme\",\n \"quit-full-screen\": \"Quitter le plein écran\",\n \"varilux_choice_restricted\": \"Champ de vision réduit\",\n \"select_visual__prog_lens\": \"Choisissez les gênes visuelles rencontrées par votre patient avec ses verres progressifs actuels\",\n \"varilux_choice_sensation\": \"Effets de tangage pendant le mouvement\",\n \"varilux_the_best_overall\": \"Le meilleur\",\n \"varilux_progressive_lens\": \"verre progressif*\",\n \"welcome-to-your\": \"Bienvenue sur votre\",\n \"personalized-profile\": \"profil personnalisé\"\n }\n },\n \"country\": \"France\"\n },\n\t\"TR\": {\n\t\t\"language\": {\n\t\t\t\"trTR\": {\n\t\t\t\t\"current_lens_rx_current_lens\": \"Mevcut camlar\",\n\t\t\t\t\"need_explorer_single_choice_question\": \"Tek seçenekli soru\",\n\t\t\t\t\"varilux_demo_card_stabilized\": \"En zorlu koşullarda bile stabil görüş\",\n\t\t\t\t\"varilux_demo_card_sharp\": \"Düşük ışık koşullarında bile yüksek görüş keskinliği\",\n\t\t\t\t\"varilux_demo_card_extended\": \"Her koşulda doğal duruş\",\n\t\t\t\t\"need_explorer_warning_modification\": \"Herhangi bir değişiklik sonraki adımları etkileyecektir\",\n\t\t\t\t\"need_explorer_back\": \"İhtiyaç Belirleme'ye dön\",\n\t\t\t\t\"choose_a_different_location_language\": \"Farklı bir Konum/Dil seçin\",\n\t\t\t\t\"need_explorer_continue\": \"Devam edin\",\n\t\t\t\t\"exclusive\": \"Özel\",\n\t\t\t\t\"varilux_install\": \"Yükle\",\n\t\t\t\t\"varilux_install_web_app\": \"Daha iyi bir deneyim için uygulamayı yükleyin \",\n\t\t\t\t\"varilux_demo_card_instant\": \"Hareket halindeyken bile tüm mesafelerde anında netlik\",\n\t\t\t\t\"language_settings\": \"Dil Ayarları\",\n\t\t\t\t\"recommended\": \"Önerilen\",\n\t\t\t\t\"message_messrequired_rx\": \"Gerekli\",\n\t\t\t\t\"search_location_language\": \"Konum Seç\",\n\t\t\t\t\"select_your_location_language\": \"Konumunuzu/Dilinizi Seçin\",\n\t\t\t\t\"skip_button\": \"Atla\",\n\t\t\t\t\"suggested_location_language\": \"Önerilen Konum/Dil\",\n\t\t\t\t\"varilux_web_app\": \"Web Uygulaması\",\n\t\t\t\t\"need_explorer_warning\": \"Uyarı\",\n\t\t\t\t\"calculation_based_on_lenses\": \"*Hesaplamalar, 2022 Essilor AR-GE simülasyonlarına dayalı olarak, kullanıcılar tarafından beyan edilen progresif camlar için her bir kriterin önem düzeyine göre ağırlıklandırılmış cam ölçümleri baz alınarak yapılmıştır (Niteliksel Tüketici çalışması - Ipsos - Q1 2022 - BR/FR/IT/UK/US - n=4000 progresif cam kullanıcısı). Simülasyonlar, en alakalı rakip markalar üzerinde gerçekleştirildi: Bunlar, tüketiciler arasında iyi bilinen (Tüketici Gözlük Camı Markası Takibi - Ipsos - Q3 2022 - BR/CA/CN/FR/IN/IT/UK/ ABD - n=8000) ve birinci sınıf progresif camları sunan markalardı.​\",\n\t\t\t\t\"conclusion_rx_conclusion\": \"Sonuç\",\n\t\t\t\t\"current_progress_lens\": \"Mevcut progresif camlar\",\n\t\t\t\t\"demo\": \"Demo\",\n\t\t\t\t\"legal_notice_ln_01_demonstrations_title\": \"Demolar\",\n\t\t\t\t\"varilux_choice_difficulty_sharpness\": \"Keskin görüşü sürdürme zorluğu\",\n\t\t\t\t\"varilux_choice_difficulty_light\": \"Düşük ışık koşullarında keskin görüşte zorluk\",\n\t\t\t\t\"varilux_btn_end_experience\": \"Demoyu bitir \",\n\t\t\t\t\"need_explorer_experience_your\": \"Kişiselleştirilmiş\",\n\t\t\t\t\"need_explorer_personalized_demonstration\": \"demonuzu deneyimleyin\",\n\t\t\t\t\"full-screen\": \"Tam ekran\",\n\t\t\t\t\"varilux_choice_limited_posture\": \"Kısıtlı duruş değişiklikleri\",\n\t\t\t\t\"varilux__mandatory\": \"Zorunlu\",\n\t\t\t\t\"need_explorer_multiple_choice_question\": \"Çoktan seçmeli soru\",\n\t\t\t\t\"lens_proposal_builder_lpb_need_explorer\": \"İhtiyaç Belirleme\",\n\t\t\t\t\"varilux_btn_next_patient\": \"Yeni demo\",\n\t\t\t\t\"personalize_your_lenses_pyl_next\": \"İleri\",\n\t\t\t\t\"varilux_choice_none\": \"Hiçbiri, progresif gözlük camlarımdan çok memnunum\",\n\t\t\t\t\"varilux_demo_card_panoramic\": \"Yanal alanlarda net görüş\",\n\t\t\t\t\"standard_progressive_lens\": \"Birinci sınıf progresif camlar\",\n\t\t\t\t\"quit-full-screen\": \"Tam ekrandan çık\",\n\t\t\t\t\"varilux_choice_restricted\": \"Kısıtlı görüş alanı\",\n\t\t\t\t\"select_visual__prog_lens\": \"Kullanıcının mevcut progresif camlarıyla yaşadığı görüş rahatsızlıklarını seçin\",\n\t\t\t\t\"varilux_choice_sensation\": \"Hareket halindeyken dalgalanma etkisi hissi\",\n\t\t\t\t\"varilux_the_best_overall\": \"Tüm özelliklerde\",\n\t\t\t\t\"varilux_progressive_lens\": \"en iyi progresif cam*\",\n\t\t\t\t\"welcome-to-your\": \"Kişiselleştirilmiş profilinize\",\n\t\t\t\t\"personalized-profile\": \"hoş geldiniz\"\n\t\t\t}\n\t\t},\n\t\t\"country\": \"Turkey\"\n\t},\n\t\"SG\": {\n \"language\": {\n \"enSG\": {\n \"current_lens_rx_current_lens\": \"Current lenses\",\n \"need_explorer_single_choice_question\": \"Single choice question\",\n \"varilux_demo_card_stabilized\": \"Stabilised vision even in the most demanding situations\",\n \"varilux_demo_card_sharp\": \"High visual acuity even in low light conditions\",\n \"varilux_demo_card_extended\": \"Natural posture in all circumstances\",\n \"need_explorer_warning_modification\": \"Any modification will influence the next steps\",\n \"need_explorer_back\": \"Back to Need Explorer\",\n \"choose_a_different_location_language\": \"Choose a different Location/Language\",\n \"need_explorer_continue\": \"Continue\",\n \"exclusive\": \"Exclusive\",\n \"varilux_install\": \"Install\",\n \"varilux_install_web_app\": \"Install the application for a better experience\",\n \"varilux_demo_card_instant\": \"Instant sharpness at all distances, even in motion\",\n \"language_settings\": \"Language Settings\",\n \"recommended\": \"Recommended\",\n \"message_messrequired_rx\": \"Required\",\n \"search_location_language\": \"Search Location\",\n \"select_your_location_language\": \"Select Your Location/Language\",\n \"skip_button\": \"Skip\",\n \"suggested_location_language\": \"Suggested Location/Language\",\n \"varilux_web_app\": \"Web App\",\n \"need_explorer_warning\": \"Warning\",\n \"calculation_based_on_lenses\": \"*Essilor R&D simulations – 2022 – calculation based on lensesn measurements weighted by the level of importance of each criterian for progressive lenses declared by users (Quantitative Consumer study - Ipsos - Q1 2022 - BR/FR/IT/UK/US - n=4000 progressive lens wearers) - Simulations done on most relevant competitive brands : brands with good level of awareness among consumers (Consumer Lens Brand Tracking - Ipsos - Q3 2022 - BR/CA/CN/FR/IN/IT/UK/US - n=8000) & offering premium progressive lenses.​\",\n \"conclusion_rx_conclusion\": \"Conclusion\",\n \"current_progress_lens\": \"Current progressive lenses\",\n \"demo\": \"Demo\",\n \"legal_notice_ln_01_demonstrations_title\": \"Demonstrations\",\n \"varilux_choice_difficulty_sharpness\": \"Difficulty to maintain sharpness\",\n \"varilux_choice_difficulty_light\": \"Difficulty to see sharply in low light conditions\",\n \"varilux_btn_end_experience\": \"End demonstration\",\n \"need_explorer_experience_your\": \"Experience your\",\n \"need_explorer_personalized_demonstration\": \"personalised demonstration\",\n \"full-screen\": \"Full screen\",\n \"varilux_choice_limited_posture\": \"Limited postural changes\",\n \"varilux__mandatory\": \"Mandatory\",\n \"need_explorer_multiple_choice_question\": \"Multiple choice question\",\n \"lens_proposal_builder_lpb_need_explorer\": \"Need Explorer\",\n \"varilux_btn_next_patient\": \"New demonstration\",\n \"personalize_your_lenses_pyl_next\": \"Next\",\n \"varilux_choice_none\": \"None, I am very sastisfied with my progressive lenses\",\n \"varilux_demo_card_panoramic\": \"Panoramic field of vision\",\n \"standard_progressive_lens\": \"Premium progressive lenses\",\n \"quit-full-screen\": \"Quit full screen\",\n \"varilux_choice_restricted\": \"Restricted field of vision\",\n \"select_visual__prog_lens\": \"Select the visual discomforts experienced by your patient with their current progressive lenses\",\n \"varilux_choice_sensation\": \"Sensation of swim effect while moving\",\n \"varilux_the_best_overall\": \"The best Varilux®\",\n \"varilux_progressive_lens\": \"progressive lens ever*\",\n \"welcome-to-your\": \"Welcome to your\",\n \"personalized-profile\": \"personalised profile\"\n }\n },\n \"country\": \"Singapore\"\n },\n \"TW\": {\n \"language\": {\n \"cnTW\": {\n \"current_lens_rx_current_lens\": \"現有鏡片\",\n \"need_explorer_single_choice_question\": \"單選題\",\n \"varilux_demo_card_stabilized\": \"即使在最嚴苛的情況下也有穩定的視力表現\",\n \"varilux_demo_card_sharp\": \"即使在低光源環境下也能保持清晰視力\",\n \"varilux_demo_card_extended\": \"任何情況下的自然姿勢\",\n \"need_explorer_warning_modification\": \"任何修改都會影響下一步\",\n \"need_explorer_back\": \"回到探索需求\",\n \"choose_a_different_location_language\": \"選擇不同的地區/語言\",\n \"need_explorer_continue\": \"繼續\",\n \"exclusive\": \"獨家的\",\n \"varilux_install\": \"安裝\",\n \"varilux_install_web_app\": \"安裝應用程序以獲得更好的體驗\",\n \"varilux_demo_card_instant\": \"瞬間清晰的動態視覺\",\n \"language_settings\": \"語言設定\",\n \"recommended\": \"建議的\",\n \"message_messrequired_rx\": \"必要的\",\n \"search_location_language\": \"搜尋地區\",\n \"select_your_location_language\": \"選擇您的地區/語言\",\n \"skip_button\": \"略過\",\n \"suggested_location_language\": \"選擇地區/語言\",\n \"varilux_web_app\": \"安裝網路應用程式\",\n \"need_explorer_warning\": \"警語\",\n \"calculation_based_on_lenses\": \"根據依視路國際公司2022年的研發模擬,基於使用者評估漸進鏡片各個產品特性的重要程度加權計算(資料來源:2022年第一季益普索市調公司在巴西、法國、義大利、英國與美國等地所執行的量化消費者研究,樣本數為4000名漸進鏡片配戴者)。該研究針對最相關的競爭品牌鏡片進行模擬測試:係指在消費者中具有良好知名度並提供高階漸進鏡片的品牌(資料來源:2022年第三季益普索市調公司於巴西、加拿大、中國、法國、印度、義大利、英國與美國等地執行的消費者鏡片品牌追蹤報告,樣本數為8000)。\",\n \"conclusion_rx_conclusion\": \"結論\",\n \"current_progress_lens\": \"現有漸進鏡片\",\n \"demo\": \"展示\",\n \"legal_notice_ln_01_demonstrations_title\": \"展示\",\n \"varilux_choice_difficulty_sharpness\": \"難以保持清晰度\",\n \"varilux_choice_difficulty_light\": \"在低光源環境下難以看清楚\",\n \"varilux_btn_end_experience\": \"結束展示\",\n \"need_explorer_experience_your\": \"體驗您的\",\n \"need_explorer_personalized_demonstration\": \"個人化設計\",\n \"full-screen\": \"全螢幕\",\n \"varilux_choice_limited_posture\": \"有限的姿勢變化\",\n \"varilux__mandatory\": \"必要性的\",\n \"need_explorer_multiple_choice_question\": \"多選題\",\n \"lens_proposal_builder_lpb_need_explorer\": \"探索需求\",\n \"varilux_btn_next_patient\": \"新的展示\",\n \"personalize_your_lenses_pyl_next\": \"下一個\",\n \"varilux_choice_none\": \"沒有,我對我的漸進鏡片非常滿意\",\n \"varilux_demo_card_panoramic\": \"擴增視野\",\n \"standard_progressive_lens\": \"高階漸進鏡片\",\n \"quit-full-screen\": \"停止全螢幕\",\n \"varilux_choice_restricted\": \"視野受限\",\n \"select_visual__prog_lens\": \"選擇配戴者使用目前漸進鏡片時所經歷的視覺不適\",\n \"varilux_choice_sensation\": \"移動時的晃動感受\",\n \"varilux_the_best_overall\": \"極致完美的\",\n \"varilux_progressive_lens\": \"漸進鏡片\",\n \"welcome-to-your\": \"歡迎來到您的\",\n \"personalized-profile\": \"個人化資料\"\n }\n },\n \"country\": \"Taiwan\"\n },\n \"MY\": {\n \"language\": {\n \"enMY\": {\n \"current_lens_rx_current_lens\": \"Current lenses\",\n \"need_explorer_single_choice_question\": \"Single choice question\",\n \"varilux_demo_card_stabilized\": \"Stabilised vision even in the most demanding situations\",\n \"varilux_demo_card_sharp\": \"High visual acuity even in low light conditions\",\n \"varilux_demo_card_extended\": \"Natural posture in all circumstances\",\n \"need_explorer_warning_modification\": \"Any modification will influence the next steps\",\n \"need_explorer_back\": \"Back to Need Explorer\",\n \"choose_a_different_location_language\": \"Choose a different Location/Language\",\n \"need_explorer_continue\": \"Continue\",\n \"exclusive\": \"Exclusive\",\n \"varilux_install\": \"Install\",\n \"varilux_install_web_app\": \"Install the application for a better experience\",\n \"varilux_demo_card_instant\": \"Instant sharpness at all distances, even in motion\",\n \"language_settings\": \"Language Settings\",\n \"recommended\": \"Recommended\",\n \"message_messrequired_rx\": \"Required\",\n \"search_location_language\": \"Search Location\",\n \"select_your_location_language\": \"Select Your Location/Language\",\n \"skip_button\": \"Skip\",\n \"suggested_location_language\": \"Suggested Location/Language\",\n \"varilux_web_app\": \"Web App\",\n \"need_explorer_warning\": \"Warning\",\n \"calculation_based_on_lenses\": \"*Essilor R&D simulations – 2022 – calculation based on lensesn measurements weighted by the level of importance of each criterian for progressive lenses declared by users (Quantitative Consumer study - Ipsos - Q1 2022 - BR/FR/IT/UK/US - n=4000 progressive lens wearers) - Simulations done on most relevant competitive brands : brands with good level of awareness among consumers (Consumer Lens Brand Tracking - Ipsos - Q3 2022 - BR/CA/CN/FR/IN/IT/UK/US - n=8000) & offering premium progressive lenses.​\",\n \"conclusion_rx_conclusion\": \"Conclusion\",\n \"current_progress_lens\": \"Current progressive lenses\",\n \"demo\": \"Demo\",\n \"legal_notice_ln_01_demonstrations_title\": \"Demonstrations\",\n \"varilux_choice_difficulty_sharpness\": \"Difficulty to maintain sharpness\",\n \"varilux_choice_difficulty_light\": \"Difficulty to see sharply in low light conditions\",\n \"varilux_btn_end_experience\": \"End demonstration\",\n \"need_explorer_experience_your\": \"Experience your\",\n \"need_explorer_personalized_demonstration\": \"personalised demonstration\",\n \"full-screen\": \"Full screen\",\n \"varilux_choice_limited_posture\": \"Limited postural changes\",\n \"varilux__mandatory\": \"Mandatory\",\n \"need_explorer_multiple_choice_question\": \"Multiple choice question\",\n \"lens_proposal_builder_lpb_need_explorer\": \"Need Explorer\",\n \"varilux_btn_next_patient\": \"New demonstration\",\n \"personalize_your_lenses_pyl_next\": \"Next\",\n \"varilux_choice_none\": \"None, I am very sastisfied with my progressive lenses\",\n \"varilux_demo_card_panoramic\": \"Panoramic field of vision\",\n \"standard_progressive_lens\": \"Premium progressive lenses\",\n \"quit-full-screen\": \"Quit full screen\",\n \"varilux_choice_restricted\": \"Restricted field of vision\",\n \"select_visual__prog_lens\": \"Select the visual discomforts experienced by your patient with their current progressive lenses\",\n \"varilux_choice_sensation\": \"Sensation of swim effect while moving\",\n \"varilux_the_best_overall\": \"The best Varilux®\",\n \"varilux_progressive_lens\": \"progressive lens ever*\",\n \"welcome-to-your\": \"Welcome to your\",\n \"personalized-profile\": \"personalised profile\"\n }\n },\n \"country\": \"Malaysia\"\n },\n \"PH\": {\n \"language\": {\n \"enPH\": {\n \"current_lens_rx_current_lens\": \"Current lenses\",\n \"need_explorer_single_choice_question\": \"Single choice question\",\n \"varilux_demo_card_stabilized\": \"Stabilised vision even in the most demanding situations\",\n \"varilux_demo_card_sharp\": \"High visual acuity even in low light conditions\",\n \"varilux_demo_card_extended\": \"Natural posture in all circumstances\",\n \"need_explorer_warning_modification\": \"Any modification will influence the next steps\",\n \"need_explorer_back\": \"Back to Need Explorer\",\n \"choose_a_different_location_language\": \"Choose a different Location/Language\",\n \"need_explorer_continue\": \"Continue\",\n \"exclusive\": \"Exclusive\",\n \"varilux_install\": \"Install\",\n \"varilux_install_web_app\": \"Install the application for a better experience\",\n \"varilux_demo_card_instant\": \"Instant sharpness at all distances, even in motion\",\n \"language_settings\": \"Language Settings\",\n \"recommended\": \"Recommended\",\n \"message_messrequired_rx\": \"Required\",\n \"search_location_language\": \"Search Location\",\n \"select_your_location_language\": \"Select Your Location/Language\",\n \"skip_button\": \"Skip\",\n \"suggested_location_language\": \"Suggested Location/Language\",\n \"varilux_web_app\": \"Web App\",\n \"need_explorer_warning\": \"Warning\",\n \"calculation_based_on_lenses\": \"*Essilor R&D simulations – 2022 – calculation based on lensesn measurements weighted by the level of importance of each criterian for progressive lenses declared by users (Quantitative Consumer study - Ipsos - Q1 2022 - BR/FR/IT/UK/US - n=4000 progressive lens wearers) - Simulations done on most relevant competitive brands : brands with good level of awareness among consumers (Consumer Lens Brand Tracking - Ipsos - Q3 2022 - BR/CA/CN/FR/IN/IT/UK/US - n=8000) & offering premium progressive lenses.​\",\n \"conclusion_rx_conclusion\": \"Conclusion\",\n \"current_progress_lens\": \"Current progressive lenses\",\n \"demo\": \"Demo\",\n \"legal_notice_ln_01_demonstrations_title\": \"Demonstrations\",\n \"varilux_choice_difficulty_sharpness\": \"Difficulty to maintain sharpness\",\n \"varilux_choice_difficulty_light\": \"Difficulty to see sharply in low light conditions\",\n \"varilux_btn_end_experience\": \"End demonstration\",\n \"need_explorer_experience_your\": \"Experience your\",\n \"need_explorer_personalized_demonstration\": \"personalised demonstration\",\n \"full-screen\": \"Full screen\",\n \"varilux_choice_limited_posture\": \"Limited postural changes\",\n \"varilux__mandatory\": \"Mandatory\",\n \"need_explorer_multiple_choice_question\": \"Multiple choice question\",\n \"lens_proposal_builder_lpb_need_explorer\": \"Need Explorer\",\n \"varilux_btn_next_patient\": \"New demonstration\",\n \"personalize_your_lenses_pyl_next\": \"Next\",\n \"varilux_choice_none\": \"None, I am very sastisfied with my progressive lenses\",\n \"varilux_demo_card_panoramic\": \"Panoramic field of vision\",\n \"standard_progressive_lens\": \"Premium progressive lenses\",\n \"quit-full-screen\": \"Quit full screen\",\n \"varilux_choice_restricted\": \"Restricted field of vision\",\n \"select_visual__prog_lens\": \"Select the visual discomforts experienced by your patient with their current progressive lenses\",\n \"varilux_choice_sensation\": \"Sensation of swim effect while moving\",\n \"varilux_the_best_overall\": \"The best Varilux®\",\n \"varilux_progressive_lens\": \"progressive lens ever*\",\n \"welcome-to-your\": \"Welcome to your\",\n \"personalized-profile\": \"personalised profile\"\n }\n },\n \"country\": \"Philippines\"\n },\n}\n ","const multipleLanguages = [\"enCA\",\"caCA\", \"chCH\", \"beBE\", \"arBA\", \"cuCA\"];\nconst elacES = [\"doDO\",\"ecEC\",\"svSV\",\"gtGT\",\"hnHN\",\"paPA\",\"pePE\", \"niNI\", \"crCR\", \"veZU\" ];\nconst elacEN = [\"baBA\",\"barBAR\",\"guGU\",\"jaJA\",\"trTR\", \"enUK\", \"anBA\", \"caIS\", \"grDA\", \"saLU\"];\nconst languageCode = {\n anBA:{\n code: \"anBA\",\n country: \"antigua and barbuda\",\n translation: {}\n },\n caIS:{\n code: \"caIS\",\n country: \"cayman islands\",\n translation: {}\n },\n grDA:{\n code: \"grDA\",\n country: \"grenada\",\n translation: {}\n },\n saLU:{\n code: \"saLU\",\n country: \"saint lucia\",\n translation: {}\n },\n veZU:{\n code: \"veZU\",\n country: \"venezuela\",\n translation: {}\n },\n baBA:{\n code: \"baBA\",\n country: \"Bahamas\",\n translation: {}\n },\n barBAR:{\n code: \"barBAR\",\n country: \"Barbados\",\n translation: {}\n },\n guGU:{\n code: \"guGU\",\n country: \"Guyana\",\n translation: {}\n },\n jaJA:{\n code: \"jaJA\",\n country: \"Jamaica\",\n translation: {}\n },\n trTR:{\n code: \"trTR\",\n country: \"Trinidad and Tobago\",\n translation: {}\n },\n niNI:{\n code: \"niNI\",\n country: \"Nicaragua\",\n translation: {}\n },\n crCR:{\n code: \"crCR\",\n country: \"Costa Rica\",\n translation: {}\n },\n enUK:{\n code: \"enUK\",\n country: \"united kingdom\",\n translation: {}\n },\n doDO:{\n code: \"doDO\",\n country: \"dominican republic\",\n multipleLanguage: {\n esBO: {\n code: \"esBO\",\n language: \"Spanish\"\n },\n },\n translation: {}\n },\n ecEC:{\n code: \"ecEC\",\n country: \"ecuador\",\n multipleLanguage: {\n esBO: {\n code: \"esBO\",\n language: \"Spanish\"\n },\n },\n translation: {}\n },\n svSV:{\n code: \"svSV\",\n country: \"el salvador\",\n multipleLanguage: {\n esBO: {\n code: \"esBO\",\n language: \"Spanish\"\n },\n },\n translation: {}\n },\n gtGT:{\n code: \"gtGT\",\n country: \"guatemala\",\n multipleLanguage: {\n esBO: {\n code: \"esBO\",\n language: \"Spanish\"\n },\n },\n translation: {}\n },\n hnHN:{\n code: \"hnHN\",\n country: \"honduras\",\n multipleLanguage: {\n esBO: {\n code: \"esBO\",\n language: \"Spanish\"\n },\n },\n translation: {}\n },\n paPA:{\n code: \"paPA\",\n country: \"panama\",\n translation: {}\n },\n pePE:{\n code: \"pePE\",\n country: \"peru\",\n multipleLanguage: {\n esBO: {\n code: \"esBO\",\n language: \"Spanish\"\n },\n },\n translation: {}\n },\n // caCA:{\n // code: \"caCA\",\n // country: \"canada\",\n // multipleLanguage: {\n // enUS: {\n // code: \"enUS\",\n // language: \"English\"\n // },\n // frFR: {\n // code: \"frFR\",\n // language: \"French\"\n // }\n // },\n // translation: {}\n // },\n // chCH : {\n // code: \"chCH\",\n // country: \"switzerland\",\n // multipleLanguage: {\n // frFR: {\n // code: \"frFR\",\n // language: \"French\"\n // },\n // deDE: {\n // code: \"deDE\",\n // language: \"German\"\n // }\n // },\n // translation: {}\n // },\n // beBE: {\n // code: \"beBE\",\n // country: \"belgium\",\n // multipleLanguage: {\n // deDE: {\n // code: \"deDE\",\n // language: \"German\"\n // },\n // frFR: {\n // code: \"frFR\",\n // language: \"French\"\n // },\n // itIT: {\n // code: \"itIT\",\n // language: \"Italy\"\n // },\n \n // },\n // translation: {}\n // }\n}\n\nexport {\n languageCode,\n multipleLanguages,\n elacES,\n elacEN\n}\n\n","enum ComplementaryEquipmentType {\n DRIVING = 'driving',\n COMPUTER = 'computer',\n SUN = 'sun'\n}\n\nexport default ComplementaryEquipmentType;","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport moment, { lang } from 'moment';\nimport { discount, lensThickness } from '../../constants/my-companion.constants';\nimport { KIDS_THEMES } from '../../constants/theme.constants';\nimport {TRANSLATIONS_DEFAULT} from '../../constants/translations.contants';\nimport iDiscountSetting from '../../interface/discount-setting';\nimport ematDetails from '../../interface/emat-details';\nimport iGlobalInformation from '../../interface/global-information';\nimport iLensThicknessSetting from '../../interface/lens-thickness-setting';\nimport iTheme from '../../interface/theme.interface';\nimport iTranslation from '../../interface/translation.interface';\nimport iAppStore from '../interface/app-store.interface';\nimport iMyCompanionStore from '../interface/mycompanion-store.interface';\nimport iRootState from '../interface/root-state.interface';\nimport { languageCode } from '../../constants/language-code.constants';\nimport iProductCombi from '../interface/product-combi.interface';\nimport iRegion from '../../interface/region.interface';\nimport iCountry from '../../interface/country.interface';\nimport ExperienceType from '../../types/experience.type';\nimport { IProductEprom } from '../../constants/eprom.constants';\nimport { VARILUX_TRANSLATIONS_MULTIPLE_LANG } from '../../constants/translations.contants';\nimport iG9CountryLanguages from '../interface/g9-country-languages.interface';\nimport iG9Languages from '../interface/g9-languages.interface';\n\nconst initialState: iAppStore = {\n\t// jump\n g9CountryLanguages: [],\n g9Languages: [],\n\t// variluxG9Translations: VARILUX_TRANSLATIONS_MULTIPLE_LANG,\n\tg9LanguageSetting: {\n\t\talphaCode: \"GB\",\n\t\tcode: \"enGB\",\n\t\tcountry: 'UK'\n\t},\n\tg9currentLanguage: VARILUX_TRANSLATIONS_MULTIPLE_LANG[\"GB\"].language[\"enGB\"],\n dataStructureVersion:0,\n loading: {\n show: false\n },\n theme: KIDS_THEMES[1],\n lensThicknessSettings: lensThickness,\n discountSettings: discount,\n language: 'enUS',\n subLanguage: '',\n regions: [],\n translation: TRANSLATIONS_DEFAULT.enUS,\n\n globalInformation: {\n storeName: '',\n phone: '',\n address: '',\n email: '',\n license: '',\n nickname: ''\n },\n recentEmat: [],\n recentNew: [],\n firstLogin: {\n view: 'region',\n isOpen: false,\n selectedLanguage: 'enUS',\n subLanguage: {code: '', country: ''},\n firstStatus: false,\n cookieEnabled: false\n },\n ematModal : {\n isOpen: false,\n selected: {\n type: '',\n label: '',\n description: '',\n created_date: '',\n file: '',\n }\n },\n products: [],\n productCombi: [],\n myCompannion: {\n isPriceOff: true,\n essilorRecommend: false,\n category: 'correct',\n tempLensThicknessSettings: lensThickness,\n tempDiscountSettings: discount,\n configUpdatedAt: ''\n },\n\n dataRetention: {\n lastDeletionDate: new Date('01/01/2000'),\n lastCheckedServerDate: new Date('01/01/2000'),\n isDateSync: true\n },\n globalAlert: {\n show: false,\n message: ''\n },\n experience: ExperienceType.STANDARD,\n isModalOpen:false\n}\n\nconst appSlice = createSlice({\n name: 'app',\n initialState,\n reducers: {\n loading: (state, action: PayloadAction) => {\n if(typeof action.payload === 'boolean'){\n return {\n ...state,\n loading: {\n show: action.payload,\n }\n }\n }\n\n return {\n ...state,\n loading: action.payload\n }\n\n },\n changeTheme: (state, action: PayloadAction) => ({...state, theme: action.payload }),\n showGlobalAlert: (state, action: PayloadAction<{\n show: boolean,\n message?: string,\n action?: () => void\n }>) => ({...state, globalAlert: action.payload }),\n // saveVideoBlob: (state, action: PayloadAction<{\n // video: 'discovery' | 'measurement',\n // blob: string | undefined\n // }>) => ({\n // ...state,\n // videos: {\n // ...state.videos,\n // [action.payload.video]: action.payload.blob\n // }\n // }),\n saveLensThicknessSettings: (state, action: PayloadAction) => {\n return {\n ...state,\n lensThicknessSettings: action.payload\n }\n },\n saveDiscountSettings: (state, action: PayloadAction) => {\n return {\n ...state,\n discountSettings: action.payload\n }\n },\n setLanguage: (state, action: PayloadAction) => ({ ...state, language: action.payload }),\n setSubLanguage: (state, action: PayloadAction) => ({ ...state, subLanguage: action.payload }),\n setToken: (state, action: PayloadAction) => ({ ...state, token: action.payload }),\n saveAccountDetails: (state, action: PayloadAction) => ({ ...state, accountDetails: action.payload }),\n saveRegions: (state, action: PayloadAction) => ({ ...state, regions: action.payload }),\n setTranslationRegion: (state, action: PayloadAction) => ({ ...state, translationRegion: action.payload }),\n setTranslationCountry: (state, action: PayloadAction) => ({ ...state, translationCountry: action.payload }),\n setTranslationCountryLanguage: (state, action: PayloadAction<{\n country: string,\n languageCode: string\n } | undefined >) => ({ ...state, translationCountryLanguage: action.payload }),\n // setTranslations: (state, action: PayloadAction<{[key: string]: iTranslation}>) => ({ ...state, translations: action.payload }),\n setTranslations: (state, action: PayloadAction<{[key: string]: iTranslation}>) => {\n let o = action.payload;\n let sorted:any = {},\n key:any, store:any = [],\n storeKey:any = [];\n o = {\n ...action.payload,\n ...languageCode\n }\n\n\n for (key in o) {\n if (o.hasOwnProperty(key)) {\n store.push(o[key]);\n storeKey.push(key);\n }\n }\n store.sort( function( firstSort:any, secondSort:any ) {\n firstSort = firstSort.country.toLowerCase();\n secondSort= secondSort.country.toLowerCase();\n return firstSort < secondSort ? -1 : firstSort > secondSort ? 1 : 0;\n });\n storeKey.sort();\n store.map((key:any, i:number)=>{\n sorted[key.code] = key;\n })\n\n return {\n ...state, translations: sorted\n }\n },\n setTranslation: (state, action: PayloadAction) => {\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\ttranslation: action.payload\n\t\t\t}\n\t\t},\n\t\tsetG9LanguageSetting: (state, action: PayloadAction) => {\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tg9LanguageSetting: action.payload,\n\t\t\t\tg9currentLanguage: action.payload.translation\n\t\t\t}\n\t\t},\n\n setG9CountryLanguages: (state, action: PayloadAction) => {\n return {\n ...state,\n g9CountryLanguages: action.payload\n }\n },\n\n setG9Languages: (state, action: PayloadAction) => {\n return {\n ...state,\n g9Languages: action.payload\n }\n },\n\n setProducts: (state, action: PayloadAction) => ({ ...state, products: action.payload }),\n setProductCombi: (state, action: PayloadAction<{\n data: iProductCombi[],\n isInAppRefresh?: boolean\n }>) => {\n let { data, isInAppRefresh = false } = action.payload;\n\n const getOriginalValue = (find: iProductCombi, list: iProductCombi[]) => {\n return list.filter( x => (\n find.correct === x.correct &&\n find.correct_sub === x.correct_sub &&\n find.protect1 === x.protect1 &&\n find.protect2 === x.protect2 &&\n find.enhance === x.enhance &&\n find.index === x.index\n ))[0]\n }\n\n if(isInAppRefresh){\n const originalDataList = [...state.productCombi];\n data = data.map( x => {\n const originalData = getOriginalValue(x, originalDataList);\n return !originalData ? x : {\n ...originalData,\n price: x.price,\n protect1_price: x.protect1_price,\n protect2_price: x.protect2_price\n };\n });\n }\n\n return {\n ...state,\n productCombi: data\n }\n },\n updateAdvancePriceCombinations: (state, action: PayloadAction) => ( {\n ...state,\n myCompannion: {\n ...state.myCompannion,\n isPriceOff: false,\n essilorRecommend: true\n },\n productCombi: action.payload\n }),\n saveGlobalInformation: (state, action: PayloadAction) => ({ ...state, globalInformation: action.payload }),\n saveLicense: (state, action: PayloadAction) => ({\n ...state,\n globalInformation: {\n ...state.globalInformation,\n license: action.payload\n }\n }),\n updateLicenseStatus: (state, action: PayloadAction) => {\n if(!state.accountDetails)return state;\n return {\n ...state,\n accountDetails: {\n ...state.accountDetails,\n state: action.payload\n }\n }\n },\n setLicenseValidationDate: (state, action: PayloadAction) => ({\n ...state,\n licenseValidationDate: action.payload\n }),\n seteMatList: (state, action: PayloadAction<{today: any, load : ematDetails[]}>) => {\n const payload = action.payload;\n let newList:any[];\n newList = payload.load.map((v, i: number) =>{\n // const currDate = moment(action.payload.today);\n // const createdDate = moment(moment(v.created_date, \"YYYY-MM-DD\").format(\"MM/DD/YYYY\"));\n // const validate = currDate.subtract(2, 'weeks');\n // if (createdDate.isSameOrAfter(validate) && i <= 5) {\n // return v;\n // }\n // else return 0\n const start = moment(v.created_date);\n const end = moment(action.payload.today);\n const daysOld = end.diff(start, \"days\");\n if(daysOld <= 14)return v;\n return 0;\n })\n return {\n ...state,\n recentEmat: newList\n }\n },\n setNewList: (state, action: PayloadAction<{today: any, load : ematDetails[]}>) => {\n const payload = action.payload;\n let newList:any[];\n newList = payload.load.map((v, i: number )=>{\n // const currDate = moment(action.payload.today);\n // const createdDate = moment(moment(v.created_date, \"YYYY-MM-DD\").format(\"MM/DD/YYYY\"));\n // const validate = currDate.subtract(2, 'weeks');\n // if (createdDate.isSameOrAfter(validate) && i <= 5) {\n // return v;\n // }\n // else return 0\n const start = moment(v.created_date);\n const end = moment(action.payload.today);\n const daysOld = end.diff(start, \"days\");\n if(daysOld <= 14)return v;\n return 0;\n })\n return {\n ...state,\n recentNew: newList\n }\n },\n setEmatModal: (state, action: PayloadAction<{open: boolean, detail?: ematDetails}>) => ({\n ...state,\n ematModal: {\n isOpen: action.payload.open,\n selected: action.payload.detail\n }\n }),\n setViewFirstLogin: (state, action: PayloadAction) => ({\n ...state,\n firstLogin: {...state.firstLogin, view: action.payload}\n }),\n setOpenFirstLogin: (state, action: PayloadAction) => ({\n ...state,\n firstLogin: {...state.firstLogin, isOpen: action.payload}\n }),\n selectedLanguage: (state, action: PayloadAction) => ({\n ...state,\n firstLogin: {...state.firstLogin, selectedLanguage: action.payload}\n }),\n selectedSubLanguage: (state, action: PayloadAction<{code: string, country: string}>) => ({\n ...state,\n firstLogin: {...state.firstLogin, subLanguage: {\n code: action.payload.code, country: action.payload.country\n }}\n }),\n setFirstLoginStatus: (state, action: PayloadAction) => ({\n ...state,\n firstLogin: {...state.firstLogin, firstStatus: action.payload}\n }),\n setCookieEnabled: (state, action: PayloadAction) => ({\n ...state,\n firstLogin: {...state.firstLogin, cookieEnabled: action.payload}\n }),\n updateDataStructureVersion: (state, action: PayloadAction) => ({\n ...state,\n dataStructureVersion: action.payload\n }),\n resetData: (state) => ({\n ...state,\n recentEmat: [],\n recentNew: [],\n ematModal : {\n isOpen: false,\n selected: {\n type: '',\n label: '',\n description: '',\n created_date: '',\n file: '',\n }\n },\n myCompannion: {\n ...( state.myCompannion || initialState.myCompannion )\n },\n\n //remove propery\n translations: undefined,\n videos: undefined\n }),\n //MY COMPANNION\n saveMyCompannionData: (state, action: PayloadAction) => ( {\n ...state,\n myCompannion: action.payload\n }),\n\n updateDataRententionData: (state, action: PayloadAction<{\n key: string,\n value: any\n }>) => ( {\n ...state,\n dataRetention: {\n ...state.dataRetention,\n [action.payload.key]: action.payload.value\n }\n }),\n setExperience: (state, action: PayloadAction) => ({\n ...state,\n experience: action.payload\n }),\n saveEPROMData: (state, action: PayloadAction) => ({\n ...state,\n epromData: action.payload\n }),\n setIsModalOpen: (state, action: PayloadAction) => ({\n ...state,\n isModalOpen: action.payload\n }),\n }\n});\n\nexport const getApp = (state:iRootState) => state.app;\nexport default appSlice;\n","\nconst useDisableOnVariluxG9 = (variluxIdentifier?: string) => {\n const variluxArray:string[] = ['varilux-g9']\n const disableOnVariluxG9 = variluxIdentifier && variluxArray.includes(variluxIdentifier)\n\n\n return [disableOnVariluxG9]\n}\n\nexport default useDisableOnVariluxG9;","import React, { useEffect, useState } from 'react';\nimport Icon from './ui/Icon';\nimport Arrow from './ui/Arrow';\nimport RouterLink from './ui/RouterLink';\nimport routes from '../constants/routes.constant';\nimport { useLocation } from 'react-router';\nimport breadcrumbs from '../constants/breadcrumbs.contant';\nimport Utils from '../utils/Utils';\nimport { useSelector } from 'react-redux';\nimport useTranslation from '../utils/hooks/useTranslation';\nimport { getApp } from '../store/slices/app.slice';\nimport useDisableOnVariluxG9 from '../utils/hooks/useDisableOnVariluxG9';\n\ninterface Props {\n}\n\nconst BreadCrumb : React.FC = () => {\n // VARIABLES\n const location = useLocation();\n const { cloneObject } = Utils();\n const [ activeBreadCrumbs, setActiveBreadCrumbs ] = useState([]);\n const [ activeRoute, setActiveRoute ] = useState(routes.home);\n const { t } = useTranslation(useSelector(getApp));\n const { accountDetails } = useSelector(getApp);\n const [ disableBreadCrumbsOnVarilux ] = useDisableOnVariluxG9(activeRoute?.id)\n \n // HOOKS\n useEffect( () => {\n const clonedbreadcrumbs = cloneObject(breadcrumbs);\n\n const activeRoute = getActiveRoute(location.pathname);\n setActiveRoute(activeRoute.route);\n setActiveBreadCrumbs(clonedbreadcrumbs[activeRoute.key]);\n\n }, [location]);\n\n // METHODS\n const getActiveRoute = (path: string) => {\n const routeKeys = Object.keys(routes);\n const clonedRoutes = cloneObject(routes);\n let activeRouteKey = routeKeys.filter( (k: string) => clonedRoutes[k].path === path)[0];\n return {\n key: activeRouteKey,\n route: clonedRoutes[activeRouteKey]\n };\n }\n\n return (\n <>\n {!disableBreadCrumbsOnVarilux &&\n
\n
    \n
  • \n \n 0 ? 'home' : 'home-blue'} type=\"svg\" className=\"breadcrumb__home\"/> \n \n
  • \n {\n activeBreadCrumbs && activeBreadCrumbs.map( (b: any, i) => (\n
  • \n \n \n\n \n {t(b.label)}\n \n
  • \n ))\n }\n
\n
\n }\n \n )\n}\n\nexport default BreadCrumb;","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport iMenu from '../../interface/menu.interface';\nimport iRootState from '../interface/root-state.interface';\nimport iSidebarStore from '../interface/sidebar-store.interface';\n\n\nconst initialState: iSidebarStore = {\n open: false,\n}\n\nconst sidebarSlice = createSlice({\n name: 'sidebar',\n initialState,\n reducers: {\n open: (state) => ({...state, open: true, selectedMenu: undefined}) ,\n close: (state) => ({...state, open: false }),\n selectMenu: (state, action: PayloadAction<{\n menu: iMenu | undefined,\n callerId?: string\n }>) => ({\n ...state,\n selectedMenu: action.payload.menu,\n callerId: action.payload.callerId\n }),\n }\n});\n\nexport const getSidebar = (state:iRootState) => state.sidebar;\nexport default sidebarSlice;","enum LensCategoryType {\n PROGRESSIVE = 'progressive',\n SINGLE_VISION = 'single vision',\n PERSONALIZED = 'personalized',\n PROGRESSIVE_SV_LENS = 'progressive_sv_lens',\n MYOPIA = 'myopia'\n}\n\nexport default LensCategoryType;","enum LensEnhanceType {\n AR = 'ar',\n TINTED = 'tinted'\n}\n\nexport default LensEnhanceType;","enum LensFamilyType {\n CORRECT = 'correct',\n PROTECT = 'protect',\n ENHANCE = 'enhance'\n}\n\nexport default LensFamilyType;","enum LensProtectType {\n BLUE_CUT = 'blue-cut',\n PHOTOCROMIC = 'photochromic',\n TINTED = 'tinted'\n}\n\nexport default LensProtectType;","enum ProductDemoType {\n VIDEO = 'video',\n SLIDER_VIDEO = 'slider-video',\n VERTICAL_SLIDER_VIDEO = 'vertical-slider-video',\n DIVIDER_VIDEO = 'divider-video',\n SLIDER_IMAGE = 'slider-image',\n NESTED_DEMO_TRANSVERSAL = 'nested-demo-transversal',\n NESTED_DEMO = 'nested-demo',\n // DRIVE = 'drive',\n // SPHERE_IMAGE = 'sphere-image',\n SEE_THROUGH_VIDEO = 'see-through-video',\n SEE_THROUGH_IMAGE = 'see-through-image',\n\n SIDE_BY_SIDE_VIDEO = 'side-by-side-video',\n}\n\nexport default ProductDemoType;","enum DemoDownloadType {\n COMPLETED = 'completed',\n WAITING = 'waiting',\n DOWNLOADING = 'downloading'\n}\n\nexport default DemoDownloadType;","import iLensDemo from \"../../interface/lens-demo\";\nimport ProductDemoType from \"../../types/product-demo.type\";\nimport Utils from \"../../utils/Utils\";\nconst { lensDemoURL } = Utils();\n\nconst sellout = [\n 'demo_new_demo_xmirr_l1',\n 'demo_new_demo_xmirr_l2',\n 'demo_new_demo_xmirr_l3',\n 'demo_new_demo_xmirr_l4',\n 'demo_new_demo_xmirr_l5',\n 'demo_new_demo_xmirr_l6',\n 'demo_new_demo_xmirr_l7',\n 'demo_new_demo_xmirr_l8',\n]\n\n\n\nconst packshotMirrors: iLensDemo = {\n demo: 'packshot-mirrors',\n demoType: ProductDemoType.SLIDER_IMAGE,\n products: [\n {\n id: 'xperio_mirrors',\n label: 'lens_propo_colors_bronze_shadow',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_bronze shadow.jpg'),\n colorID: \"lensMirrorBronzeShadow\",\n description: sellout\n },\n {\n id: 'standard',\n label: 'lens_propo_colors_bronze',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_bronze.jpg'),\n colorID: \"lensMirrorBronze\",\n description: sellout\n },\n {\n id: 'standard1',\n label: 'lens_propo_colors_candy',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_candy.jpg'),\n colorID: \"lensMirrorCandy\",\n description: sellout\n },\n {\n id: 'standard2',\n label: 'lens_propo_colors_forest_green',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_forest green.jpg'),\n colorID: \"lensMirrorForestGreen\",\n description: sellout\n },\n {\n id: 'standard3',\n label: 'lens_propo_colors_gold_pink',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_gold pink.jpg'),\n colorID: \"lensMirrorGoldPink\",\n description: sellout\n },\n {\n id: 'standard4',\n label: 'lens_propo_colors_green_shadow',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_green shadow.jpg'),\n colorID: \"lensMirrorGreenShadow\",\n description: sellout\n },\n {\n id: 'standard5',\n label: 'lens_propo_colors_kaki',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_kaki.jpg'),\n colorID: \"lensMirrorKaki\",\n description: sellout\n },\n {\n id: 'standard6',\n label: 'lens_propo_colors_mauve_silver',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_mauve silver.jpg'),\n colorID: \"lensMirrorMauveSilver\",\n description: sellout\n },\n {\n id: 'standard7',\n label: 'Blue',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_blue.jpg'),\n colorID: \"lensMirrorNewBlue\",\n description: sellout\n },\n {\n id: 'standard8',\n label: 'lens_propo_colors_new_silver',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_new silver.jpg'),\n colorID: \"lensMirrorNewSilver\",\n description: sellout\n },\n {\n id: 'standard9',\n label: 'lens_propo_colors_ocean_blue',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_ocean blue.jpg'),\n colorID: \"lensMirrorOceanBlue\",\n description: sellout\n },\n {\n id: 'standard10',\n label: 'lens_propo_colors_orange',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_orange.jpg'),\n colorID: \"lensMirrorOrange\",\n description: sellout\n },\n {\n id: 'standard11',\n label: 'lens_propo_colors_parma',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_parma.jpg'),\n colorID: \"lensMirrorParma\",\n description: sellout\n },\n {\n id: 'standard12',\n label: 'lens_propo_colors_pink_silver',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_pink silver.jpg'),\n colorID: \"lensMirrorPinkSilver\",\n description: sellout\n },\n {\n id: 'standard13',\n label: 'lens_propo_colors_silver_shadow',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_silver shadow.jpg'),\n colorID: \"lensMirrorSilverShadow\",\n description: sellout\n },\n {\n id: 'standard14',\n label: 'lens_propo_colors_silver',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_silver.jpg'),\n colorID: \"lensMirrorSilver\",\n description: sellout\n },\n {\n id: 'standard15',\n label: 'Sky Blue Silver',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_skyblue silver.jpg'),\n colorID: \"lensMirrorSkyBlueSilver\",\n description: sellout\n },\n {\n id: 'standard16',\n label: \"lens_propo_colors_violet\",\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_violet.jpg'),\n colorID: \"lensMirrorViolet\",\n description: sellout\n }\n ]\n}\n\nexport const experioMirrorsDemo: iLensDemo[] = [\n packshotMirrors\n];\n\n","import iLensDemo from \"../../interface/lens-demo\";\nimport ProductDemoType from \"../../types/product-demo.type\";\nimport Utils from \"../../utils/Utils\";\nconst { lensDemoURL } = Utils();\n\n\nconst sellout = [\n 'demo_new_demo_xpol_l1',\n 'demo_new_demo_xpol_l2',\n 'demo_new_demo_xpol_l3',\n 'demo_new_demo_xpol_l4',\n 'demo_new_demo_xpol_l5',\n 'demo_new_demo_xpol_l6',\n 'demo_new_demo_xpol_l7',\n 'demo_new_demo_xpol_l8',\n 'demo_new_demo_xpol_l9',\n 'demo_new_demo_xpol_l10'\n]\n\nconst packshotPolarized: iLensDemo = {\n demo: 'packshot-polarized',\n demoType: ProductDemoType.SLIDER_IMAGE,\n products: [\n {\n id: 'xperio_polarised',\n label: \"lens_propo_colors_amber\",\n asset: lensDemoURL('Xperio/02_Xperio Polarized_1/Xperio_Polarized_amber.jpg'),\n description: sellout,\n colorID: 'lensPolarizedAmber'\n },\n {\n id: 'standard',\n label: 'lens_propo_colors_blue_ink',\n asset: lensDemoURL('Xperio/02_Xperio Polarized_1/Xperio_Polarized_blue ink.jpg'),\n description: sellout,\n colorID: 'lensPolarizedBlueInk'\n },\n {\n id: 'standard1',\n label: \"lens_propo_colors_violet\",\n asset: lensDemoURL('Xperio/02_Xperio Polarized_1/Xperio_Polarized_violet.jpg'),\n description: sellout,\n colorID: 'lensPolarizedViolet'\n }, \n {\n id: 'standard2',\n label: 'lens_propo_colors_blue_sky',\n asset: lensDemoURL('Xperio/02_Xperio Polarized_1/Xperio_Polarized_sky.jpg'),\n description: sellout,\n colorID: 'lensPolarizedBlueSky'\n },\n {\n id: 'standard3',\n label: \"lens_propo_colors_herbal\",\n asset: lensDemoURL('Xperio/02_Xperio Polarized_1/Xperio_Polarized_herbal.jpg'),\n description: sellout,\n colorID: 'lensPolarizedHerbal'\n },\n {\n id: 'standard4',\n label: \"lens_propo_colors_grey\",\n asset: lensDemoURL('Xperio/02_Xperio Polarized_1/Xperio_Polarized_grey.jpg'),\n description: sellout,\n colorID: 'lensPolarizedGrey'\n },\n {\n id: 'standard5',\n label: \"lens_propo_colors_grey_green\",\n asset: lensDemoURL('Xperio/02_Xperio Polarized_1/Xperio_Polarized_grey green.jpg'),\n description: sellout,\n colorID: 'lensPolarizedGreyGreen'\n },\n {\n id: 'standard6',\n label: \"lens_propo_colors_brown\",\n asset: lensDemoURL('Xperio/02_Xperio Polarized_1/Xperio_Polarized_brown.jpg'),\n description: sellout,\n colorID:'lensPolarizedBrown'\n },\n {\n id: 'standard7',\n label: 'lens_propo_colors_blue_purple',\n asset: lensDemoURL('Xperio/02_Xperio Polarized_1/Xperio_Polarized_blue purple.jpg'),\n description: sellout,\n colorID:'lensPolarizedBluePurple'\n }\n ]\n}\n\n\nconst getVideoByColor = (\n color: string, \n folder: 'with-filter' | 'without-filter'\n) => {\n return lensDemoURL(`Xperio/02_Xperio Polarized_1/car/${folder}/XPERIO_POLARIZED_CAR_${folder}-${color}.mp4`)\n}\n\nconst generateDemo = (label: string) => {\n const color = label.replaceAll(' ', '-').toLocaleLowerCase();\n return {\n demo: `car-polarised-${color}`, \n demoType: ProductDemoType.SIDE_BY_SIDE_VIDEO,\n hideSlider: true,\n products: [\n {\n id: 'xperio_polarised',\n label: `Xperio Polarised ${label}`,\n asset: getVideoByColor(color, 'with-filter'),\n description: sellout\n },\n {\n id: 'standard',\n label: 'packaged_offer_popup_po_popup_standard',\n asset: getVideoByColor(color, 'without-filter'),\n }\n ]\n }\n}\n\nconst carPolarised: iLensDemo = {\n demo: 'car-polarised', \n demoType: ProductDemoType.NESTED_DEMO,\n hideCenterButton: true,\n products: [\n generateDemo('Amber'),\n generateDemo('Grey'),\n generateDemo('Grey-green'),\n generateDemo('Brown'),\n generateDemo('Blue Ink'),\n generateDemo('Blue purple'),\n generateDemo('Blue sky'),\n generateDemo('Herbal'),\n generateDemo('Violet'),\n\n ]\n}\n\nexport const experioPolarisedDemo: iLensDemo[] = [\n packshotPolarized,\n carPolarised\n];","import iLensDemo from \"../../interface/lens-demo\";\nimport ProductDemoType from \"../../types/product-demo.type\";\nimport Utils from \"../../utils/Utils\";\nconst { lensDemoURL } = Utils();\n\nconst sellout = [\n 'demo_new_demo__xper_tin_l3',\n 'demo_new_demo__xper_tin_l4',\n 'demo_new_demo__xper_tin_l5',\n 'demo_new_demo__xper_tin_l6',\n 'demo_new_demo__xper_tin_l7',\n 'demo_new_demo__xper_tin_l8',\n 'demo_demo__xper_tin_l1',\n 'demo_new_demo__xper_tin_l1',\n 'demo_demo__xper_tin_l3',\n 'demo_new_demo__xper_tin_l2'\n]\n\nconst packshotTinted: iLensDemo = {\n demo: 'packshot-tinted',\n demoType: ProductDemoType.SLIDER_IMAGE,\n products: [\n {\n id: 'xperio_tinted',\n label: \"lens_propo_colors_black\",\n asset: lensDemoURL('Xperio/04_Xperio Tinted_1/Xperio_teinted_black.jpg'),\n description: sellout,\n colorID: 'lensTintedBlack'\n },\n {\n id: 'standard',\n label: 'lens_propo_colors_blue_ink',\n asset: lensDemoURL('Xperio/04_Xperio Tinted_1/Xperio_teinted_blue ink.jpg'),\n description: sellout,\n colorID: 'lensTintedBlueInk'\n },\n {\n id: 'standard1',\n label: \"lens_propo_colors_brown\",\n asset: lensDemoURL('Xperio/04_Xperio Tinted_1/Xperio_teinted_brown.jpg'),\n description: sellout,\n colorID: 'lensTintedBrown'\n },\n {\n id: 'standard2',\n label: \"lens_propo_colors_burgundy\",\n asset: lensDemoURL('Xperio/04_Xperio Tinted_1/Xperio_teinted_burgundy.jpg'),\n description: sellout,\n colorID: 'lensTintedBurgundy'\n },\n {\n id: 'standard3',\n label: 'lens_propo_colors_gray_green',\n asset: lensDemoURL('Xperio/04_Xperio%20Tinted_1/Xperio_teinted_gray green.jpg'),\n description: sellout,\n colorID: 'lensTintedGreyGreen'\n },\n {\n id: 'standard4',\n label: \"lens_propo_colors_grey\",\n asset: lensDemoURL('Xperio/04_Xperio Tinted_1/Xperio_teinted_gray.jpg'),\n description: sellout,\n colorID: 'lensTintedGrey'\n },\n\n {\n id: 'standard5',\n label: \"lens_propo_colors_herbal\",\n asset: lensDemoURL('Xperio/04_Xperio%20Tinted_1/Xperio_teinted_herbal.jpg'),\n description: sellout,\n colorID: 'lensTintedHerbal'\n },\n {\n id: 'standard6',\n label: \"lens_propo_colors_new_brown\",\n asset: lensDemoURL('Xperio/04_Xperio%20Tinted_1/Xperio_teinted_new brown.jpg'),\n description: sellout,\n colorID: 'lensTintedNewBrown'\n }\n ]\n}\n\n\nconst beachWalking = {\n demo: 'beach-tinted', //pictos\n demoType: ProductDemoType.SLIDER_VIDEO,\n products: [\n {\n id: 'xperio_tinted',\n label: 'Xperio Tinted',\n asset: lensDemoURL('Xperio/04_Xperio Tinted_1/XPERIO_TINTED_with-filter-black.mp4'),\n description: sellout,\n },\n {\n id: 'standard',\n label: 'packaged_offer_popup_po_popup_standard',\n asset: lensDemoURL('Xperio/04_Xperio Tinted_1/XPERIO_TINTED_without-filter-black.mp4'),\n }\n ]\n}\n\nexport const experioTintedDemo: iLensDemo[] = [\n packshotTinted,\n // beachWalking\n];\n\n","import iLensDemo from \"../../interface/lens-demo\";\nimport ProductDemoType from \"../../types/product-demo.type\";\nimport Utils from \"../../utils/Utils\";\nconst { lensDemoURL } = Utils();\n\nconst sellout = [\n 'demo_new_demo_xmirr_l1',\n 'demo_new_demo_xmirr_l2',\n 'demo_new_demo_xmirr_l3',\n 'demo_new_demo_xmirr_l4',\n 'demo_new_demo_xmirr_l5',\n 'demo_new_demo_xmirr_l6',\n 'demo_new_demo_xmirr_l7',\n 'demo_new_demo_xmirr_l8',\n]\n\n\n\nconst packshotMirrors: iLensDemo = {\n demo: 'packshot-mirrors',\n demoType: ProductDemoType.SLIDER_IMAGE,\n products: [\n {\n id: 'xperio_tinted_mirrors',\n label: 'lens_propo_colors_bronze_shadow',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_bronze shadow.jpg'),\n colorID: \"lensMirrorBronzeShadow\",\n description: sellout\n },\n {\n id: 'standard',\n label: 'lens_propo_colors_bronze',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_bronze.jpg'),\n colorID: \"lensMirrorBronze\",\n description: sellout\n },\n {\n id: 'standard1',\n label: 'lens_propo_colors_candy',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_candy.jpg'),\n colorID: \"lensMirrorCandy\",\n description: sellout\n },\n {\n id: 'standard2',\n label: 'lens_propo_colors_forest_green',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_forest green.jpg'),\n colorID: \"lensMirrorForestGreen\",\n description: sellout\n },\n {\n id: 'standard3',\n label: 'lens_propo_colors_gold_pink',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_gold pink.jpg'),\n colorID: \"lensMirrorGoldPink\",\n description: sellout\n },\n {\n id: 'standard4',\n label: 'lens_propo_colors_green_shadow',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_green shadow.jpg'),\n colorID: \"lensMirrorGreenShadow\",\n description: sellout\n },\n {\n id: 'standard5',\n label: 'lens_propo_colors_kaki',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_kaki.jpg'),\n colorID: \"lensMirrorKaki\",\n description: sellout\n },\n {\n id: 'standard6',\n label: 'lens_propo_colors_mauve_silver',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_mauve silver.jpg'),\n colorID: \"lensMirrorMauveSilver\",\n description: sellout\n },\n {\n id: 'standard7',\n label: 'Blue',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_blue.jpg'),\n colorID: \"lensMirrorNewBlue\",\n description: sellout\n },\n {\n id: 'standard8',\n label: 'lens_propo_colors_new_silver',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_new silver.jpg'),\n colorID: \"lensMirrorNewSilver\",\n description: sellout\n },\n {\n id: 'standard9',\n label: 'lens_propo_colors_ocean_blue',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_ocean blue.jpg'),\n colorID: \"lensMirrorOceanBlue\",\n description: sellout\n },\n {\n id: 'standard10',\n label: 'lens_propo_colors_orange',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_orange.jpg'),\n colorID: \"lensMirrorOrange\",\n description: sellout\n },\n {\n id: 'standard11',\n label: 'lens_propo_colors_parma',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_parma.jpg'),\n colorID: \"lensMirrorParma\",\n description: sellout\n },\n {\n id: 'standard12',\n label: 'lens_propo_colors_pink_silver',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_pink silver.jpg'),\n colorID: \"lensMirrorPinkSilver\",\n description: sellout\n },\n {\n id: 'standard13',\n label: 'lens_propo_colors_silver_shadow',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_silver shadow.jpg'),\n colorID: \"lensMirrorSilverShadow\",\n description: sellout\n },\n {\n id: 'standard14',\n label: 'lens_propo_colors_silver',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_silver.jpg'),\n colorID: \"lensMirrorSilver\",\n description: sellout\n },\n {\n id: 'standard15',\n label: 'lens_propo_colors_sky_blue_silver',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_skyblue silver.jpg'),\n colorID: \"lensMirrorSkyBlueSilver\",\n description: sellout\n },\n {\n id: 'standard16',\n label: \"lens_propo_colors_violet\",\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_violet.jpg'),\n colorID: \"lensMirrorViolet\",\n description: sellout\n }\n ]\n}\n\nexport const experioTintedMirrorsDemo: iLensDemo[] = [\n packshotMirrors\n];","import iLensDemo from \"../../interface/lens-demo\";\nimport ProductDemoType from \"../../types/product-demo.type\";\nimport Utils from \"../../utils/Utils\";\nconst { lensDemoURL } = Utils();\n\nconst bedroom: iLensDemo = {\n demo: 'bedroom',\n demoType: ProductDemoType.SLIDER_IMAGE,\n compareByDefault: true,\n hideCenterButton: true,\n hideCompareButton: true,\n withSellout: true,\n // Note: Correct demo\n products:[\n {\n id: 'stellest',\n label: 'Stellest',\n asset: lensDemoURL('Stellest/indoor_correct.png'),\n description: [\n 'demo_new_sellout_myopia1',\n 'demo_new_sellout_myopia2',\n 'demo_new_sellout_myopia3'\n ]\n },\n {\n id: 'standard',\n label: 'packaged_offer_popup_po_popup_standard',\n asset: lensDemoURL('Stellest/indoor_correct.png'),\n }\n ],\n\n control: {\n demo: 'bedroom-control',\n parent: 'bedroom',\n demoType: ProductDemoType.SLIDER_IMAGE,\n compareByDefault: true,\n hideCompareButton: true,\n hideCenterButton: true,\n label: 'demo_stellest_now',\n withSellout: true,\n instruction: 'demo_stellest_nocontrol',\n\n children: [\n {\n demo: 'bedroom-control-child',\n parent: 'bedroom',\n demoType: ProductDemoType.SLIDER_IMAGE,\n label: 'demo_stellest_+2yrs',\n compareByDefault: true,\n hideCompareButton: true,\n hideCenterButton: true,\n withSellout: true,\n\n products: [\n {\n id: 'stellest',\n label: 'Stellest',\n asset: lensDemoURL('Stellest/indoor_control_2years-right.png'), \n description: [\n 'demo_new_sellout_myopia1',\n 'demo_new_sellout_myopia2',\n 'demo_new_sellout_myopia3'\n ]\n },\n {\n id: 'standard',\n label: 'packaged_offer_popup_po_popup_standard',\n asset: lensDemoURL('Stellest/indoor_control_2years-left.png'),\n }\n ]\n }\n ],\n\n products: [\n {\n id: 'stellest',\n label: 'Stellest',\n asset: lensDemoURL('Stellest/indoor_control_now.png'),\n description: [\n 'demo_new_sellout_myopia1',\n 'demo_new_sellout_myopia2',\n 'demo_new_sellout_myopia3'\n ],\n\n },\n {\n id: 'standard',\n label: 'packaged_offer_popup_po_popup_standard',\n asset: lensDemoURL('Stellest/indoor_control_now.png'),\n }\n ],\n },\n children: [\n {\n demo: 'vertical-compare',\n parent: 'bedroom',\n demoType: ProductDemoType.VERTICAL_SLIDER_VIDEO,\n label: 'demo_stellest_myopia',\n compareByDefault: true,\n hideCompareButton: true,\n hideCenterButton: true,\n withSellout: true,\n\n products: [\n {\n id: 'stellest',\n label: 'Stellest',\n description: [\n 'demo_new_sellout_myopia_prog1',\n 'demo_new_sellout_myopia_prog2',\n 'demo_new_sellout_myopia_prog3',\n 'demo_new_sellout_myopia_prog4'\n ],\n },\n {\n id: 'standard',\n label: 'packaged_offer_popup_po_popup_standard',\n asset: lensDemoURL('Stellest/sidebyside-3D.mp4'),\n }\n ]\n }\n ]\n}\n\nconst garage: iLensDemo = {\n demo: 'garage',\n demoType: ProductDemoType.SLIDER_IMAGE,\n compareByDefault: true,\n hideCenterButton: true,\n hideCompareButton: true,\n withSellout: true,\n // Note: Correct demo\n products:[\n {\n id: 'stellest',\n label: 'Stellest',\n asset: lensDemoURL('Stellest/outdoor_correct.png'),\n description: [\n 'demo_new_sellout_myopia1',\n 'demo_new_sellout_myopia2',\n 'demo_new_sellout_myopia3'\n ]\n },\n {\n id: 'standard',\n label: 'packaged_offer_popup_po_popup_standard',\n asset: lensDemoURL('Stellest/outdoor_correct.png'),\n }\n ],\n\n control: {\n demo: 'garage-control',\n parent: 'garage',\n demoType: ProductDemoType.SLIDER_IMAGE,\n compareByDefault: true,\n hideCompareButton: true,\n hideCenterButton: true,\n label: 'demo_stellest_now',\n withSellout: true,\n instruction: 'demo_stellest_nocontrol',\n\n children: [\n {\n demo: 'garage-control-child',\n parent: 'garage',\n demoType: ProductDemoType.SLIDER_IMAGE,\n label: 'demo_stellest_+2yrs',\n compareByDefault: true,\n hideCompareButton: true,\n hideCenterButton: true,\n withSellout: true,\n\n products: [\n {\n id: 'stellest',\n label: 'Stellest',\n asset: lensDemoURL('Stellest/outdoor_control_2years-right.png'), \n description: [\n 'demo_new_sellout_myopia1',\n 'demo_new_sellout_myopia2',\n 'demo_new_sellout_myopia3'\n ]\n },\n {\n id: 'standard',\n label: 'packaged_offer_popup_po_popup_standard',\n asset: lensDemoURL('Stellest/outdoor_control_2years-left.png'),\n }\n ]\n }\n ],\n\n products: [\n {\n id: 'stellest',\n label: 'Stellest',\n asset: lensDemoURL('Stellest/outdoor_control-now.png'),\n description: [\n 'demo_new_sellout_myopia1',\n 'demo_new_sellout_myopia2',\n 'demo_new_sellout_myopia3'\n ],\n\n },\n {\n id: 'standard',\n label: 'packaged_offer_popup_po_popup_standard',\n asset: lensDemoURL('Stellest/outdoor_control-now.png'),\n }\n ],\n },\n children: [\n {\n demo: 'vertical-compare',\n parent: 'garage',\n demoType: ProductDemoType.VERTICAL_SLIDER_VIDEO,\n label: 'demo_stellest_myopia',\n compareByDefault: true,\n hideCompareButton: true,\n hideCenterButton: true,\n withSellout: true,\n\n products: [\n {\n id: 'stellest',\n label: 'Stellest',\n description: [\n 'demo_new_sellout_myopia_prog1',\n 'demo_new_sellout_myopia_prog2',\n 'demo_new_sellout_myopia_prog3',\n 'demo_new_sellout_myopia_prog4'\n ],\n },\n {\n id: 'standard',\n label: 'packaged_offer_popup_po_popup_standard',\n asset: lensDemoURL('Stellest/sidebyside-3D.mp4'),\n }\n ]\n }\n ]\n}\n\nexport const stellestDemo: iLensDemo[] = [\n bedroom,\n garage\n];\n\n","import iLensDemo from \"../../interface/lens-demo\";\nimport ProductDemoType from \"../../types/product-demo.type\";\nimport Utils from \"../../utils/Utils\";\nconst { lensDemoURL } = Utils();\n\nconst sellout = [\n 'demo_new_demo_xmirr_l1',\n 'demo_new_demo_xmirr_l2',\n 'demo_new_demo_xmirr_l3',\n 'demo_new_demo_xmirr_l4',\n 'demo_new_demo_xmirr_l5',\n 'demo_new_demo_xmirr_l6',\n 'demo_new_demo_xmirr_l7',\n 'demo_new_demo_xmirr_l8',\n]\n\n\n\nconst packshotMirrors: iLensDemo = {\n demo: 'packshot-mirrors',\n demoType: ProductDemoType.SLIDER_IMAGE,\n products: [\n {\n id: 'transitions_style_mirrors',\n label: 'lens_propo_colors_bronze_shadow',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_bronze shadow.jpg'),\n colorID: \"lensMirrorBronzeShadow\",\n description: sellout\n },\n {\n id: 'standard',\n label: 'lens_propo_colors_bronze',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_bronze.jpg'),\n colorID: \"lensMirrorBronze\",\n description: sellout\n },\n {\n id: 'standard1',\n label: 'lens_propo_colors_candy',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_candy.jpg'),\n colorID: \"lensMirrorCandy\",\n description: sellout\n },\n {\n id: 'standard2',\n label: 'lens_propo_colors_forest_green',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_forest green.jpg'),\n colorID: \"lensMirrorForestGreen\",\n description: sellout\n },\n {\n id: 'standard3',\n label: 'lens_propo_colors_gold_pink',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_gold pink.jpg'),\n colorID: \"lensMirrorGoldPink\",\n description: sellout\n },\n {\n id: 'standard4',\n label: 'lens_propo_colors_green_shadow',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_green shadow.jpg'),\n colorID: \"lensMirrorGreenShadow\",\n description: sellout\n },\n {\n id: 'standard5',\n label: 'lens_propo_colors_kaki',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_kaki.jpg'),\n colorID: \"lensMirrorKaki\",\n description: sellout\n },\n {\n id: 'standard6',\n label: 'lens_propo_colors_mauve_silver',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_mauve silver.jpg'),\n colorID: \"lensMirrorMauveSilver\",\n description: sellout\n },\n {\n id: 'standard7',\n label: 'Blue',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_blue.jpg'),\n colorID: \"lensMirrorNewBlue\",\n description: sellout\n },\n {\n id: 'standard8',\n label: 'lens_propo_colors_new_silver',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_new silver.jpg'),\n colorID: \"lensMirrorNewSilver\",\n description: sellout\n },\n {\n id: 'standard9',\n label: 'lens_propo_colors_ocean_blue',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_ocean blue.jpg'),\n colorID: \"lensMirrorOceanBlue\",\n description: sellout\n },\n {\n id: 'standard10',\n label: 'lens_propo_colors_orange',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_orange.jpg'),\n colorID: \"lensMirrorOrange\",\n description: sellout\n },\n {\n id: 'standard11',\n label: 'lens_propo_colors_parma',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_parma.jpg'),\n colorID: \"lensMirrorParma\",\n description: sellout\n },\n {\n id: 'standard12',\n label: 'lens_propo_colors_pink_silver',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_pink silver.jpg'),\n colorID: \"lensMirrorPinkSilver\",\n description: sellout\n },\n {\n id: 'standard13',\n label: 'lens_propo_colors_silver_shadow',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_silver shadow.jpg'),\n colorID: \"lensMirrorSilverShadow\",\n description: sellout\n },\n {\n id: 'standard14',\n label: 'lens_propo_colors_silver',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_silver.jpg'),\n colorID: \"lensMirrorSilver\",\n description: sellout\n },\n {\n id: 'standard15',\n label: 'lens_propo_colors_sky_blue_silver',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_skyblue silver.jpg'),\n colorID: \"lensMirrorSkyBlueSilver\",\n description: sellout\n },\n {\n id: 'standard16',\n label: \"lens_propo_colors_violet\",\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_violet.jpg'),\n colorID: \"lensMirrorViolet\",\n description: sellout\n }\n ]\n}\n\nexport const transitionsStyleMirrorsDemo: iLensDemo[] = [\n packshotMirrors\n];","import iLensDemo from \"../../interface/lens-demo\";\nimport ProductDemoType from \"../../types/product-demo.type\";\nimport Utils from \"../../utils/Utils\";\nconst { lensDemoURL } = Utils();\n\nconst sellout = [\n 'demo_new_demo_xmirr_l1',\n 'demo_new_demo_xmirr_l2',\n 'demo_new_demo_xmirr_l3',\n 'demo_new_demo_xmirr_l4',\n 'demo_new_demo_xmirr_l5',\n 'demo_new_demo_xmirr_l6',\n 'demo_new_demo_xmirr_l7',\n 'demo_new_demo_xmirr_l8',\n]\n\n\n\nconst packshotMirrors: iLensDemo = {\n demo: 'packshot-mirrors',\n demoType: ProductDemoType.SLIDER_IMAGE,\n products: [\n {\n id: 'transitions_xtractive_mirror',\n label: 'lens_propo_colors_bronze_shadow',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_bronze shadow.jpg'),\n colorID: \"lensMirrorBronzeShadow\",\n description: sellout\n },\n {\n id: 'standard',\n label: 'lens_propo_colors_bronze',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_bronze.jpg'),\n colorID: \"lensMirrorBronze\",\n description: sellout\n },\n {\n id: 'standard1',\n label: 'lens_propo_colors_candy',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_candy.jpg'),\n colorID: \"lensMirrorCandy\",\n description: sellout\n },\n {\n id: 'standard2',\n label: 'lens_propo_colors_forest_green',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_forest green.jpg'),\n colorID: \"lensMirrorForestGreen\",\n description: sellout\n },\n {\n id: 'standard3',\n label: 'lens_propo_colors_gold_pink',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_gold pink.jpg'),\n colorID: \"lensMirrorGoldPink\",\n description: sellout\n },\n {\n id: 'standard4',\n label: 'lens_propo_colors_green_shadow',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_green shadow.jpg'),\n colorID: \"lensMirrorGreenShadow\",\n description: sellout\n },\n {\n id: 'standard5',\n label: 'lens_propo_colors_kaki',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_kaki.jpg'),\n colorID: \"lensMirrorKaki\",\n description: sellout\n },\n {\n id: 'standard6',\n label: 'lens_propo_colors_mauve_silver',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_mauve silver.jpg'),\n colorID: \"lensMirrorMauveSilver\",\n description: sellout\n },\n {\n id: 'standard7',\n label: 'Blue',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_blue.jpg'),\n colorID: \"lensMirrorNewBlue\",\n description: sellout\n },\n {\n id: 'standard8',\n label: 'lens_propo_colors_new_silver',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_new silver.jpg'),\n colorID: \"lensMirrorNewSilver\",\n description: sellout\n },\n {\n id: 'standard9',\n label: 'lens_propo_colors_ocean_blue',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_ocean blue.jpg'),\n colorID: \"lensMirrorOceanBlue\",\n description: sellout\n },\n {\n id: 'standard10',\n label: 'lens_propo_colors_orange',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_orange.jpg'),\n colorID: \"lensMirrorOrange\",\n description: sellout\n },\n {\n id: 'standard11',\n label: 'lens_propo_colors_parma',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_parma.jpg'),\n colorID: \"lensMirrorParma\",\n description: sellout\n },\n {\n id: 'standard12',\n label: 'lens_propo_colors_pink_silver',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_pink silver.jpg'),\n colorID: \"lensMirrorPinkSilver\",\n description: sellout\n },\n {\n id: 'standard13',\n label: 'lens_propo_colors_silver_shadow',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_silver shadow.jpg'),\n colorID: \"lensMirrorSilverShadow\",\n description: sellout\n },\n {\n id: 'standard14',\n label: 'lens_propo_colors_silver',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_silver.jpg'),\n colorID: \"lensMirrorSilver\",\n description: sellout\n },\n {\n id: 'standard15',\n label: 'lens_propo_colors_sky_blue_silver',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_skyblue silver.jpg'),\n colorID: \"lensMirrorSkyBlueSilver\",\n description: sellout\n },\n {\n id: 'standard16',\n label: \"lens_propo_colors_violet\",\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_violet.jpg'),\n colorID: \"lensMirrorViolet\",\n description: sellout\n }\n ]\n}\n\nexport const transitionsXtractiveMirrorDemo: iLensDemo[] = [\n packshotMirrors\n];","import iLensDemo from \"../../interface/lens-demo\";\nimport ProductDemoType from \"../../types/product-demo.type\";\nimport Utils from \"../../utils/Utils\";\nconst { lensDemoURL } = Utils();\n\nconst sellout = [\n 'demo_new_demo_xmirr_l1',\n 'demo_new_demo_xmirr_l2',\n 'demo_new_demo_xmirr_l3',\n 'demo_new_demo_xmirr_l4',\n 'demo_new_demo_xmirr_l5',\n 'demo_new_demo_xmirr_l6',\n 'demo_new_demo_xmirr_l7',\n 'demo_new_demo_xmirr_l8',\n]\n\n\n\nconst packshotMirrors: iLensDemo = {\n demo: 'packshot-mirrors',\n demoType: ProductDemoType.SLIDER_IMAGE,\n products: [\n {\n id: 'xperio_polarised_mirrors',\n label: 'lens_propo_colors_bronze_shadow',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_bronze shadow.jpg'),\n colorID: \"lensMirrorBronzeShadow\",\n description: sellout\n },\n {\n id: 'standard',\n label: 'lens_propo_colors_bronze',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_bronze.jpg'),\n colorID: \"lensMirrorBronze\",\n description: sellout\n },\n {\n id: 'standard1',\n label: 'lens_propo_colors_candy',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_candy.jpg'),\n colorID: \"lensMirrorCandy\",\n description: sellout\n },\n {\n id: 'standard2',\n label: 'lens_propo_colors_forest_green',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_forest green.jpg'),\n colorID: \"lensMirrorForestGreen\",\n description: sellout\n },\n {\n id: 'standard3',\n label: 'lens_propo_colors_gold_pink',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_gold pink.jpg'),\n colorID: \"lensMirrorGoldPink\",\n description: sellout\n },\n {\n id: 'standard4',\n label: 'lens_propo_colors_green_shadow',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_green shadow.jpg'),\n colorID: \"lensMirrorGreenShadow\",\n description: sellout\n },\n {\n id: 'standard5',\n label: 'lens_propo_colors_kaki',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_kaki.jpg'),\n colorID: \"lensMirrorKaki\",\n description: sellout\n },\n {\n id: 'standard6',\n label: 'lens_propo_colors_mauve_silver',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_mauve silver.jpg'),\n colorID: \"lensMirrorMauveSilver\",\n description: sellout\n },\n {\n id: 'standard7',\n label: 'Blue',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_blue.jpg'),\n colorID: \"lensMirrorNewBlue\",\n description: sellout\n },\n {\n id: 'standard8',\n label: 'lens_propo_colors_new_silver',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_new silver.jpg'),\n colorID: \"lensMirrorNewSilver\",\n description: sellout\n },\n {\n id: 'standard9',\n label: 'lens_propo_colors_ocean_blue',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_ocean blue.jpg'),\n colorID: \"lensMirrorOceanBlue\",\n description: sellout\n },\n {\n id: 'standard10',\n label: 'lens_propo_colors_orange',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_orange.jpg'),\n colorID: \"lensMirrorOrange\",\n description: sellout\n },\n {\n id: 'standard11',\n label: 'lens_propo_colors_parma',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_parma.jpg'),\n colorID: \"lensMirrorParma\",\n description: sellout\n },\n {\n id: 'standard12',\n label: 'lens_propo_colors_pink_silver',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_pink silver.jpg'),\n colorID: \"lensMirrorPinkSilver\",\n description: sellout\n },\n {\n id: 'standard13',\n label: 'lens_propo_colors_silver_shadow',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_silver shadow.jpg'),\n colorID: \"lensMirrorSilverShadow\",\n description: sellout\n },\n {\n id: 'standard14',\n label: 'lens_propo_colors_silver',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_silver.jpg'),\n colorID: \"lensMirrorSilver\",\n description: sellout\n },\n {\n id: 'standard15',\n label: 'lens_propo_colors_sky_blue_silver',\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_skyblue silver.jpg'),\n colorID: \"lensMirrorSkyBlueSilver\",\n description: sellout\n },\n {\n id: 'standard16',\n label: \"lens_propo_colors_violet\",\n asset: lensDemoURL('Xperio/01_Xperio Mirrors/Xperio_Mirror_violet.jpg'),\n colorID: \"lensMirrorViolet\",\n description: sellout\n }\n ]\n}\n\nexport const experioPolarisedMirrorsDemo: iLensDemo[] = [\n packshotMirrors\n];","import iLensDemo from \"../../interface/lens-demo\";\nimport { experioMirrorsDemo } from \"./experio-mirrors.constants\";\nimport { experioPolarisedDemo } from \"./experio-polarise.constants\";\nimport { experioTintedDemo } from \"./experio-tinted.constants\";\nimport { experioTintedMirrorsDemo } from \"./experio-tinted-mirrors.constants\";\nimport { stellestDemo } from \"./stellest.constants\";\nimport { transitionsStyleMirrorsDemo } from \"./transitions-style-mirrors.constants\";\nimport { transitionsXtractiveMirrorDemo } from \"./transitions-xtractive-mirrors.constants\";\nimport {experioPolarisedMirrorsDemo} from \"./experio-polarised-mirrors.constants\"\n\nconst PRODUCT_LENS_DEMO: iLensDemo[] = [\n ...experioPolarisedDemo,\n ...experioTintedDemo,\n ...experioMirrorsDemo,\n ...stellestDemo,\n ...experioTintedMirrorsDemo,\n ...transitionsStyleMirrorsDemo,\n ...experioPolarisedMirrorsDemo,\n ...transitionsXtractiveMirrorDemo,\n]\n\nexport default PRODUCT_LENS_DEMO;","import iProductFamily from \"../interface/product-family.interface\";\nimport ComplementaryEquipmentType from \"../types/complementary-equipment.type\";\nimport LensCategoryType from \"../types/lens-category.type\";\nimport LensEnhanceType from \"../types/lens-enhance.type\";\nimport LensFamilyType from \"../types/lens-family.type\";\nimport LensProtectType from \"../types/lens-protect.type\";\n\nimport variluxCard from './../assets/images/varilux-card.png';\nimport experioCard from './../assets/images/experio-card.jpg';\nimport blueUVCard from './../assets/images/blue-uv-card.jpg';\nimport eyezenCard from './../assets/images/eyezen-card.png';\nimport crizalCard from './../assets/images/crizal-card.png';\nimport optifogCard from './../assets/images/optifog-card.png';\nimport transitionsCard from './../assets/images/transitions-card.png';\nimport stellestCard2 from './../assets/images/stellest-card2.png';\n\nimport comformaxBlur from './../assets/svg/temp/Varilux_Stairs_ComfortMax.svg';\nimport eseriesBlur from './../assets/svg/temp/Varilux_Stairs_Eseries.svg';\nimport libertyBlur from './../assets/svg/temp/Varilux_Stairs_Liberty.svg';\nimport physioBlur from './../assets/svg/temp/Varilux_Stairs_Physio.svg';\nimport sseriesBlur from './../assets/svg/temp/Varilux_Stairs_Sseries.svg';\nimport xseriesBlur from './../assets/svg/temp/Varilux_Stairs_Xseries.svg';\nimport standardBlur from './../assets/svg/temp/Varilux_Stairs_STANDARD.svg';\nimport comfor3Blur from './../assets/svg/temp/Varilux_Stairs_Comfort3.svg';\n\nimport comformaxLine from './../assets/svg/temp/Varilux_Stairs_ComfortMax-Line.svg';\nimport eseriesLine from './../assets/svg/temp/Varilux_Stairs_Eseries-Line.svg';\nimport libertyLine from './../assets/svg/temp/Varilux_Stairs_Liberty-Line.svg';\nimport physioLine from './../assets/svg/temp/Varilux_Stairs_Physio-Line.svg';\nimport sseriesLine from './../assets/svg/temp/Varilux_Stairs_Sseries-Line.svg';\nimport xseriesLine from './../assets/svg/temp/Varilux_Stairs_Xseries-Line.svg';\nimport standardLine from './../assets/svg/temp/Varilux_Stairs_STANDARD-Line.svg';\nimport comfor3Line from './../assets/svg/temp/Varilux_Stairs_Comfort3-Line.svg';\n\nimport iLensDemo from \"../interface/lens-demo\";\n\n// DEMO\n// import variluxScooter from './../assets/videos/Varilux_Xseries_Trottinette_ESSILOR.mp4';\n// import standardScooter from './../assets/videos/Varilux_Xseries_Trottinette_STANDARD.mp4';\n// import variluxStairs from './../assets/videos/Varilux_Eseries_Urban_Stairs_ESSILOR.mp4';\n// import standardStairs from './../assets/videos/Varilux_Eseries_Urban_Stairs_STANDARD.mp4';\n\n\n// import comfortInFrontOfComputer from './../assets/videos/Varilux_Transversal_Comfort_3.0.mp4';\n// import comfortMaxInFrontOfComputer from './../assets/videos/Varilux_Transversal_ComfortMax.mp4';\n// import eSeriesInFrontOfComputer from './../assets/videos/Varilux_Transversal_eSeries.mp4';\n// import libertyInFrontOfComputer from './../assets/videos/Varilux_Transversal_Liberty.mp4';\n// import physioInFrontOfComputer from './../assets/videos/Varilux_Transversal_Physio.mp4';\n// import standardInFrontOfComputer from './../assets/videos/Varilux_Transversal_Standard.mp4';\n// import xSeriesInFrontOfComputer from './../assets/videos/Varilux_Transversal_xSeries.mp4';\n\n// import comfortMaxJournalist from './../assets/videos/ComfortMax_Journalist_ESSILOR.mp4';\n// import standardJournalist from './../assets/videos/ComfortMax_Journalist_STANDARD.mp4';\n\n// import roadpilotDay from './../assets/videos/Varilux_Roadpilot_Jour_ESSILOR.mp4';\n// import standardDay from './../assets/videos/Varilux_Roadpilot_Jour_STANDARD.mp4';\n// import roadpilotNight from './../assets/videos/Varilux_Roadpilot_Nuit_ESSILOR.mp4';\n// import standardNight from './../assets/videos/Varilux_Roadpilot_Nuit_STANDARD.mp4';\n\n// import xSeriesStairsEffect from './../assets/videos/Varilux_Stairs_Xseries.mp4';\n// import comfort3StairsEffect from './../assets/videos/Varilux_Stairs_Comfort3.mp4';\n// import comfortMaxStairsEffect from './../assets/videos/Varilux_Stairs_ComfortMax.mp4';\n// import libertyStairsEffect from './../assets/videos/Varilux_Stairs_Liberty.mp4';\n// import physioStairsEffect from './../assets/videos/Varilux_Stairs_Physio.mp4';\n// import sSeriesStairsEffect from './../assets/videos/Varilux_Stairs_Sseries.mp4';\n// import standardStairsEffect from './../assets/videos/Varilux_Stairs_STANDARD.mp4';\n// import eSeriesStairsEffect from './../assets/videos/Varilux_Stairs_Eseries.mp4';\n\n// import epsFamilyScene from './../assets/videos/BlueUVfilter_EPS_Protect_ESSILOR.mp4';\n// import standardFamilyScene from './../assets/videos/BlueUVfilter_EPS_Protect_STANDARD.mp4';\n\nimport ProductDemoType from \"../types/product-demo.type\";\nimport settings from \"./settings.constants\";\nimport PRODUCT_LENS_DEMO from \"./lens-demo/lens-demo.constants\";\n\n// import test from './../assets/videos/test';\n// import test from './../assets/videos/test';\n// import test from './../assets/videos/test';\n// import test from './../assets/videos/test';\n// import test from './../assets/videos/test';\n// import test from './../assets/videos/test';\n// import test from './../assets/videos/test';\n// import test from './../assets/videos/test';\n// import test from './../assets/videos/test';\n// import test from './../assets/videos/test';\n// import test from './../assets/videos/test';\n// import test from './../assets/videos/test';\n\n\nconst varilux = [\n 'Varilux X Series',\n 'Varilux E Series',\n 'Varilux Physio',\n 'Varilux Comfort Max',\n 'Varlix Liberty',\n 'Varilux Digitime'\n]\n\nconst eyezen = [\n 'Eyezen Boost',\n 'Eyezen® Kids',\n 'Eyezen Start'\n]\n\nconst blueUV = [\n 'eye_protect_system',\n 'Blue UV Filter System',\n 'Transitions Signature Gen 8'\n]\n\nconst PRODUCTS = [\n {\n label:\"Varilux\",\n background: 'varilux-card',\n logo:'varilux',\n subProducts: varilux\n },\n {\n label:\"Eyezen\",\n background: 'eyezen-card',\n logo:'eyezen',\n subProducts: eyezen\n },\n {\n label:\"BlueUV Filter System\",\n background: 'blue-uv-card',\n // logo:'varilux',\n subProducts: blueUV\n\n },\n {\n label:\"Varilux\",\n background: 'varilux-card',\n logo: 'varilux',\n subProducts: varilux\n }\n];\n\nconst BRANDS = [\n {\n id: 'varilux',\n label: 'Varilux',\n background: variluxCard,\n logo:'varilux',\n products: [\n {\n id: 'varilux_x_series',\n label: 'Varilux X Series', \n },\n {\n id: 'varilux_e_series',\n label: 'Varilux E Series', \n },\n {\n id: 'varilux_s_series',\n label: 'Varilux S Series', \n },\n {\n id: 'varilux_physio_3.0',\n label: 'Varilux Physio 3.0', \n },\n {\n id: 'varilux_comfort_max',\n label: 'Varilux Comfort Max',\n },\n {\n id: 'varilux_liberty_3.0',\n label: 'Varilux Liberty 3.0', \n },\n {\n id: 'varilux_digitime',\n label:'Varilux Digitime ',\n }\n ]\n },\n {\n id: 'eyezen',\n label: 'Eyezen',\n background: eyezenCard,\n logo:'eyezen',\n products: [\n {\n id: 'eyezen_boost',\n label:'Eyezen Boost', \n },\n {\n id: 'eyezen_start',\n label:'Eyezen Start',\n },\n {\n id: 'eyezen_kids',\n label:'Eyezen® Kids', \n },\n ]\n },\n {\n id: 'BlueUV_Filter_System',\n label: 'BlueUV Filter System',\n background: blueUVCard,\n logo:'BlueUV_FilterSystem',\n \n products: [\n {\n id: 'eye_protect_system',\n label:'Eye Protect System', \n },\n {\n id: 'Blue_UV_Capture',\n label:'Blue UV Filter System',\n },\n ]\n },\n {\n id: 'experio',\n label: 'Experio',\n background: experioCard,\n products: [\n {\n id: 'Xperio_UV',\n label:'Xperio UV', \n }\n ]\n },\n // {\n // id: 'xperio',\n // label: 'Xperio',\n // background: 'eyezen-card',\n // products: [\n // {\n // id: 'Xperio_React',\n // label:'Xperio React', \n // },\n // {\n // id: 'Xperio_Mirrors',\n // label:'Xperio Mirrors',\n // },\n // {\n // id: 'Xperio_Polarised',\n // label:'Xperio Polarised',\n // },\n // {\n // id: 'Xperio_Tinted',\n // label:'Xperio Tinted',\n // },\n // ]\n // },\n // {\n // id: 'crizal',\n // label: 'Crizal',\n // background: 'varilux-card',\n // products: [\n // {\n // id: 'Crizal_Easy',\n // label:'Crizal Easy', \n // },\n // {\n // id: 'Crizal_Forte',\n // label:'Crizal Forte', \n // },\n // {\n // id: 'Crizal_Prevencia',\n // label:'Crizal Prevencia', \n // },\n // {\n // id: 'Crizal_Drive',\n // label:'Crizal Drive', \n // },\n // ]\n // }\n]\n\nconst FAMILIES = {\n correct: {\n label: 'Correct',\n brands: [\n BRANDS[0],\n BRANDS[1], \n ]\n },\n protect: {\n label: 'Protect',\n brands: [\n BRANDS[2], \n BRANDS[3], \n // BRANDS[4], \n ]\n },\n enhance: {\n label: 'Enhance',\n brands: [\n // BRANDS[5] \n ]\n }\n}\n\n\n\nconst TEMPORARY_PRODUCT_LIST: iProductFamily[] = [\n {\n id: LensFamilyType.CORRECT,\n label: 'lens_consultation_lccorrect',\n brands: [\n {\n id: 'varilux',\n label: 'Varilux',\n background: variluxCard,\n logo:'varilux',\n\n products: [\n {\n id: 'varilux_x_series',\n label: 'Varilux® X Series',\n lensDesign: LensCategoryType.PROGRESSIVE,\n enabled: true,\n downgrade: [`varilux_x_series`, `varilux_e_series`, `varilux_physio_30`],\n subProducts:[\n {id: \"1varilux_x_4D\", label: \"Varilux® X 4D\", index: 1.5,price:0, enabled: true },\n {id: \"2varilux_x_4D\", label: \"Varilux® X 4D\", index: 1.59,price:0, enabled: true },\n {id: \"3varilux_x_4D\", label: \"Varilux® X 4D\", index: 1.6,price:0, enabled: true },\n {id: \"4varilux_x_4D\", label: \"Varilux® X 4D\", index: 1.67,price:0, enabled: true },\n {id: \"5varilux_x_4D\", label: \"Varilux® X 4D\", index: 1.74,price:0, enabled: true },\n {id: \"1varilux_x_design\", label: \"Varilux X Design\", index: 1.5,price:0, enabled: true },\n {id: \"2varilux_x_design\", label: \"Varilux X Design\", index: 1.59,price:0, enabled: true },\n {id: \"3varilux_x_design\", label: \"Varilux X Design\", index: 1.6,price:0, enabled: true },\n {id: \"4varilux_x_design\", label: \"Varilux X Design\", index: 1.67,price:0, enabled: true },\n {id: \"5varilux_x_design\", label: \"Varilux X Design\", index: 1.74,price:0, enabled: true },\n {id: \"1varilux_x_design_short\", label: \"Varilux® X design short\", index: 1.5,price:0, enabled: true },\n {id: \"2varilux_x_design_short\", label: \"Varilux® X design short\", index: 1.59,price:0, enabled: true },\n {id: \"3varilux_x_design_short\", label: \"Varilux® X design short\", index: 1.6,price:0, enabled: true },\n {id: \"4varilux_x_design_short\", label: \"Varilux® X design short\", index: 1.67,price:0, enabled: true },\n {id: \"5varilux_x_design_short\", label: \"Varilux® X design short\", index: 1.74,price:0, enabled: true },\n {id: \"1varilux_x_f-360\", label: \"Varilux® X f-360°\", index: 1.5,price:0, enabled: true },\n {id: \"2varilux_x_f-360\", label: \"Varilux® X f-360°\", index: 1.59,price:0, enabled: true },\n {id: \"3varilux_x_f-360\", label: \"Varilux® X f-360°\", index: 1.6,price:0, enabled: true },\n {id: \"4varilux_x_f-360\", label: \"Varilux® X f-360°\", index: 1.67,price:0, enabled: true },\n {id: \"5varilux_x_f-360\", label: \"Varilux® X f-360°\", index: 1.74,price:0, enabled: true },\n {id: \"1varilux_x_track\", label: \"Varilux® X track™\", index: 1.5,price:0, enabled: true },\n {id: \"2varilux_x_track\", label: \"Varilux® X track™\", index: 1.59,price:0, enabled: true },\n {id: \"3varilux_x_track\", label: \"Varilux® X track™\", index: 1.6,price:0, enabled: true },\n {id: \"4varilux_x_track\", label: \"Varilux® X track™\", index: 1.67,price:0, enabled: true },\n {id: \"5varilux_x_track\", label: \"Varilux® X track™\", index: 1.74,price:0, enabled: true },\n {id: \"1varilux_x_track_f-360\", label: \"Varilux® X track™ f-360°\", index: 1.5,price:0, enabled: true },\n {id: \"2varilux_x_track_f-360\", label: \"Varilux® X track™ f-360°\", index: 1.59,price:0, enabled: true },\n {id: \"3varilux_x_track_f-360\", label: \"Varilux® X track™ f-360°\", index: 1.6,price:0, enabled: true },\n {id: \"4varilux_x_track_f-360\", label: \"Varilux® X track™ f-360°\", index: 1.67,price:0, enabled: true },\n {id: \"5varilux_x_track_f-360\", label: \"Varilux® X track™ f-360°\", index: 1.74,price:0, enabled: true },\n {id: \"1varilux_xclusive_4D\", label: \"Varilux® Xclusive™ 4D\", index: 1.5,price:0, enabled: true },\n {id: \"2varilux_xclusive_4D\", label: \"Varilux® Xclusive™ 4D\", index: 1.59,price:0, enabled: true },\n {id: \"3varilux_xclusive_4D\", label: \"Varilux® Xclusive™ 4D\", index: 1.6,price:0, enabled: true },\n {id: \"4varilux_xclusive_4D\", label: \"Varilux® Xclusive™ 4D\", index: 1.67,price:0, enabled: true },\n {id: \"5varilux_xclusive_4D\", label: \"Varilux® Xclusive™ 4D\", index: 1.74,price:0, enabled: true },\n ],\n smallTitle: 'questionnaires_q_recomm_short_description',\n description: 'questionnaires_q_recomm_long_desc',\n benefits: [\n {\n icon: \"seamless\",\n label: \"pair_1_tab_del_p1__seamless_vision_\",\n type: 1,\n },\n {\n icon: \"sharp-vision-icon\",\n label: \"pair_1_tab_del_p1__instant_sharp\",\n type: 1\n },\n {\n icon: \"effortless-vision\",\n label: \"pair_1_tab_del_p1__effortless_\",\n type: 1\n },\n {\n icon: \"balance\",\n label: \"pair_1_tab_del_p1__balance_when_moving\",\n type: 2\n },\n {\n icon: \"head-move\",\n label: \"pair_1_tab_del_p1_visual_fluidity\",\n type: 2\n\n },\n ]\n },\n {\n id: 'varilux_sunmax',\n label: 'Varilux® SunMax',\n lensDesign: LensCategoryType.PROGRESSIVE,\n enabled: true,\n downgrade: [],\n subProducts: [\n {id: \"1varilux_sunMax\", label: \"Varilux® SunMax\", index: 1.59,price:0, enabled: true },\n {id: \"2varilux_sunMax\", label: \"Varilux® SunMax\", index: 1.6,price:0, enabled: true }\n ],\n smallTitle: 'Lorem ipsum dolor sit amet',\n description: \"Consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum\",\n benefits: [\n {\n icon: \"seamless\",\n label: \"pair_1_tab_del_p1__seamless_vision_\",\n type: 1,\n },\n {\n icon: \"sharp-vision-icon\",\n label: \"pair_1_tab_del_p1__instant_sharp\",\n type: 1\n },\n {\n icon: \"uv-protect\",\n label: \"pair_1_tab_del_p1__harmful\",\n type: 1,\n },\n ]\n },\n {\n id: 'varilux_s_series',\n label: 'Varilux® S™ Series',\n enabled: true,\n lensDesign: LensCategoryType.PROGRESSIVE,\n downgrade: [`varilux_s_series`, `varilux_e_series`, `varilux_physio_30`],\n subProducts: [\n {id: \"1varilux_s_4D\", label: \"Varilux® S™ 4D\", index: 1.5,price:0, enabled: true },\n {id: \"2varilux_s_4D\", label: \"Varilux® S™ 4D\", index: 1.59,price:0, enabled: true },\n {id: \"3varilux_s_4D\", label: \"Varilux® S™ 4D\", index: 1.6,price:0, enabled: true },\n {id: \"4varilux_s_4D\", label: \"Varilux® S™ 4D\", index: 1.67,price:0, enabled: true },\n {id: \"5varilux_s_4D\", label: \"Varilux® S™ 4D\", index: 1.74,price:0, enabled: true },\n {id: \"1varilux_s_design\", label: \"Varilux® S™ design\", index: 1.5,price:0, enabled: true },\n {id: \"2varilux_s_design\", label: \"Varilux® S™ design\", index: 1.59,price:0, enabled: true },\n {id: \"3varilux_s_design\", label: \"Varilux® S™ design\", index: 1.6,price:0, enabled: true },\n {id: \"4varilux_s_design\", label: \"Varilux® S™ design\", index: 1.67,price:0, enabled: true },\n {id: \"5varilux_s_design\", label: \"Varilux® S™ design\", index: 1.74,price:0, enabled: true },\n {id: \"1varilux_s_design_short\", label: \"Varilux® S™ design short\", index: 1.5,price:0, enabled: true },\n {id: \"2varilux_s_design_short\", label: \"Varilux® S™ design short\", index: 1.59,price:0, enabled: true },\n {id: \"3varilux_s_design_short\", label: \"Varilux® S™ design short\", index: 1.6,price:0, enabled: true },\n {id: \"4varilux_s_design_short\", label: \"Varilux® S™ design short\", index: 1.67,price:0, enabled: true },\n {id: \"5varilux_s_design_short\", label: \"Varilux® S™ design short\", index: 1.74,price:0, enabled: true },\n {id: \"1varilux_s_f-360\", label: \"Varilux® S™ f-360°\", index: 1.5,price:0, enabled: true },\n {id: \"2varilux_s_f-360\", label: \"Varilux® S™ f-360°\", index: 1.59,price:0, enabled: true },\n {id: \"3varilux_s_f-360\", label: \"Varilux® S™ f-360°\", index: 1.6,price:0, enabled: true },\n {id: \"4varilux_s_f-360\", label: \"Varilux® S™ f-360°\", index: 1.67,price:0, enabled: true },\n {id: \"5varilux_s_f-360\", label: \"Varilux® S™ f-360°\", index: 1.74,price:0, enabled: true },\n ],\n smallTitle: 'Lorem ipsum dolor sit amet',\n description: \"Consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum\",\n benefits: [\n {\n icon: \"seamless\",\n label: \"pair_1_tab_del_p1__seamless_vision_\",\n type: 1,\n },\n {\n icon: \"sharp-vision-icon\",\n label: \"pair_1_tab_del_p1__instant_sharp\",\n type: 1\n },\n {\n icon: \"effortless-vision\",\n label: \"pair_1_tab_del_p1__effortless_\",\n type: 1\n },\n {\n icon: \"balance\",\n label: \"pair_1_tab_del_p1__balance_when_moving\",\n type: 2\n },\n ]\n },\n {\n id: 'varilux_physio_30',\n label: 'Varilux® Physio® 3.0',\n lensDesign: LensCategoryType.PROGRESSIVE,\n enabled: true,\n downgrade: [ `varilux_physio_30`, `varilux_comfort_max`, `varilux_liberty_30`],\n subProducts: [\n {id: \"1varilux_physio_30\", label: \"Varilux® Physio® 3.0\", index: 1.5,price:0, enabled: true },\n {id: \"2varilux_physio_30\", label: \"Varilux® Physio® 3.0\", index: 1.59,price:0, enabled: true },\n {id: \"3varilux_physio_30\", label: \"Varilux® Physio® 3.0\", index: 1.6,price:0, enabled: true },\n {id: \"4varilux_physio_30\", label: \"Varilux® Physio® 3.0\", index: 1.67,price:0, enabled: true },\n {id: \"5varilux_physio_30\", label: \"Varilux® Physio® 3.0\", index: 1.74,price:0, enabled: true },\n {id: \"1varilux_physio_30_f-360\", label: \"Varilux® Physio® 3.0 f-360°\", index: 1.5,price:0, enabled: true },\n {id: \"2varilux_physio_30_f-360\", label: \"Varilux® Physio® 3.0 f-360°\", index: 1.59,price:0, enabled: true },\n {id: \"3varilux_physio_30_f-360\", label: \"Varilux® Physio® 3.0 f-360°\", index: 1.6,price:0, enabled: true },\n {id: \"4varilux_physio_30_f-360\", label: \"Varilux® Physio® 3.0 f-360°\", index: 1.67,price:0, enabled: true },\n {id: \"5varilux_physio_30_f-360\", label: \"Varilux® Physio® 3.0 f-360°\", index: 1.74,price:0, enabled: true },\n {id: \"1varilux_physio_30_f-360_far_vision\", label: \"Varilux® Physio® 3.0 f-360° Far Vision\", index: 1.5,price:0, enabled: true },\n {id: \"2varilux_physio_30_f-360_far_vision\", label: \"Varilux® Physio® 3.0 f-360° Far Vision\", index: 1.59,price:0, enabled: true },\n {id: \"3varilux_physio_30_f-360_far_vision\", label: \"Varilux® Physio® 3.0 f-360° Far Vision\", index: 1.6,price:0, enabled: true },\n {id: \"4varilux_physio_30_f-360_far_vision\", label: \"Varilux® Physio® 3.0 f-360° Far Vision\", index: 1.67,price:0, enabled: true },\n {id: \"5varilux_physio_30_f-360_far_vision\", label: \"Varilux® Physio® 3.0 f-360° Far Vision\", index: 1.74,price:0, enabled: true },\n {id: \"1varilux_physio_30_f-360_near_vision\", label: \"Varilux® Physio® 3.0 f-360° Near Vision\", index: 1.5,price:0, enabled: true },\n {id: \"2varilux_physio_30_f-360_near_vision\", label: \"Varilux® Physio® 3.0 f-360° Near Vision\", index: 1.59,price:0, enabled: true },\n {id: \"3varilux_physio_30_f-360_near_vision\", label: \"Varilux® Physio® 3.0 f-360° Near Vision\", index: 1.6,price:0, enabled: true },\n {id: \"4varilux_physio_30_f-360_near_vision\", label: \"Varilux® Physio® 3.0 f-360° Near Vision\", index: 1.67,price:0, enabled: true },\n {id: \"5varilux_physio_30_f-360_near_vision\", label: \"Varilux® Physio® 3.0 f-360° Near Vision\", index: 1.74,price:0, enabled: true },\n {id: \"1varilux_physio_30_short\", label: \"Varilux® Physio® 3.0 short\", index: 1.5,price:0, enabled: true },\n {id: \"2varilux_physio_30_short\", label: \"Varilux® Physio® 3.0 short\", index: 1.59,price:0, enabled: true },\n {id: \"3varilux_physio_30_short\", label: \"Varilux® Physio® 3.0 short\", index: 1.6,price:0, enabled: true },\n {id: \"4varilux_physio_30_short\", label: \"Varilux® Physio® 3.0 short\", index: 1.67,price:0, enabled: true },\n {id: \"5varilux_physio_30_short\", label: \"Varilux® Physio® 3.0 short\", index: 1.74,price:0, enabled: true }\n ],\n smallTitle: 'Lorem ipsum dolor sit amet',\n description: \"Consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum\",\n benefits: [\n {\n icon: \"seamless\",\n label: \"pair_1_tab_del_p1__seamless_vision_\",\n type: 1,\n },\n {\n icon: \"sharp-vision-icon\",\n label: \"pair_1_tab_del_p1__instant_sharp\",\n type: 1\n },\n {\n icon: \"effortless-vision\",\n label: \"pair_1_tab_del_p1__effortless_\",\n type: 1\n },\n ]\n },\n {\n id: 'varilux_liberty_30',\n label: 'Varilux® Liberty™ 3.0',\n lensDesign: LensCategoryType.PROGRESSIVE,\n enabled: true,\n downgrade: [],\n subProducts: [\n {id: \"varilux_liberty_30\", label: \"Varilux® Liberty™ 3.0\", index: 1.5,price:0, enabled: true },\n {id: \"varilux_liberty_30\", label: \"Varilux® Liberty™ 3.0\", index: 1.59,price:0, enabled: true },\n {id: \"varilux_liberty_30\", label: \"Varilux® Liberty™ 3.0\", index: 1.6,price:0, enabled: true },\n {id: \"varilux_liberty_30\", label: \"Varilux® Liberty™ 3.0\", index: 1.67,price:0, enabled: true },\n {id: \"varilux_liberty_30_f-360\", label: \"Varilux® Liberty™ 3.0 f-360°\", index: 1.5,price:0, enabled: true },\n {id: \"varilux_liberty_30_f-360\", label: \"Varilux® Liberty™ 3.0 f-360°\", index: 1.59,price:0, enabled: true },\n {id: \"varilux_liberty_30_f-360\", label: \"Varilux® Liberty™ 3.0 f-360°\", index: 1.6,price:0, enabled: true },\n {id: \"varilux_liberty_30_f-360\", label: \"Varilux® Liberty™ 3.0 f-360°\", index: 1.67,price:0, enabled: true },\n {id: \"varilux_liberty_30_short\", label: \"Varilux® Liberty™ 3.0 short\", index: 1.5,price:0, enabled: true },\n {id: \"varilux_liberty_30_short\", label: \"Varilux® Liberty™ 3.0 short\", index: 1.59,price:0, enabled: true },\n {id: \"varilux_liberty_30_short\", label: \"Varilux® Liberty™ 3.0 short\", index: 1.6,price:0, enabled: true },\n {id: \"varilux_liberty_30_short\", label: \"Varilux® Liberty™ 3.0 short\", index: 1.67,price:0, enabled: true },\n ],\n smallTitle: 'Lorem ipsum dolor sit amet',\n description: \"Consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum\",\n benefits: [\n {\n icon: \"seamless\",\n label: \"pair_1_tab_del_p1__seamless_vision_\",\n type: 1,\n },\n ]\n },\n {\n id: 'varilux_e_series',\n label: 'Varilux® E Series',\n enabled: true,\n lensDesign: LensCategoryType.PROGRESSIVE,\n downgrade: [`varilux_e_series`,`varilux_physio_30`, `varilux_comfort_max`],\n subProducts: [\n {id: \"1varilux_e_design\", label: \"Varilux® E design\", index: 1.5,price:0, enabled: true },\n {id: \"2varilux_e_design\", label: \"Varilux® E design\", index: 1.59,price:0, enabled: true },\n {id: \"3varilux_e_design\", label: \"Varilux® E design\", index: 1.6,price:0, enabled: true },\n {id: \"4varilux_e_design\", label: \"Varilux® E design\", index: 1.67,price:0, enabled: true },\n {id: \"5varilux_e_design\", label: \"Varilux® E design\", index: 1.74,price:0, enabled: true },\n {id: \"1varilux_e_design_short\", label: \"Varilux® E design short\", index: 1.5,price:0, enabled: true },\n {id: \"2varilux_e_design_short\", label: \"Varilux® E design short\", index: 1.59,price:0, enabled: true },\n {id: \"3varilux_e_design_short\", label: \"Varilux® E design short\", index: 1.6,price:0, enabled: true },\n {id: \"4varilux_e_design_short\", label: \"Varilux® E design short\", index: 1.67,price:0, enabled: true },\n {id: \"5varilux_e_design_short\", label: \"Varilux® E design short\", index: 1.74,price:0, enabled: true },\n {id: \"1varilux_e_f-360\", label: \"Varilux® E f-360°\", index: 1.5,price:0, enabled: true },\n {id: \"2varilux_e_f-360\", label: \"Varilux® E f-360°\", index: 1.59,price:0, enabled: true },\n {id: \"3varilux_e_f-360\", label: \"Varilux® E f-360°\", index: 1.6,price:0, enabled: true },\n {id: \"4varilux_e_f-360\", label: \"Varilux® E f-360°\", index: 1.67,price:0, enabled: true },\n {id: \"5varilux_e_f-360\", label: \"Varilux® E f-360°\", index: 1.74,price:0, enabled: true },\n ],\n smallTitle: 'Lorem ipsum dolor sit amet',\n description: \"Consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum\",\n benefits: [\n {\n icon: \"seamless\",\n label: \"pair_1_tab_del_p1__seamless_vision_\",\n type: 1,\n },\n {\n icon: \"sharp-vision-icon\",\n label: \"pair_1_tab_del_p1__instant_sharp\",\n type: 1\n },\n {\n icon: \"effortless-vision\",\n label: \"pair_1_tab_del_p1__effortless_\",\n type: 1\n },\n {\n icon: \"balance\",\n label: \"pair_1_tab_del_p1__balance_when_moving\",\n type: 2\n },\n ]\n },\n {\n id: 'varilux_digitime',\n label: 'Varilux® Digitime™',\n complementaryEquipments: [ComplementaryEquipmentType.COMPUTER],\n lensDesign: LensCategoryType.PROGRESSIVE,\n enabled: true,\n downgrade: [`varilux_digitime`, ``, ``],\n subProducts: [\n {id: \"1varilux_digitime_mid\", label: \"Varilux Digitime Mid\", index: 1.5,price:0, enabled: true },\n {id: \"2varilux_digitime_mid\", label: \"Varilux Digitime Mid\", index: 1.59,price:0, enabled: true },\n {id: \"3varilux_digitime_mid\", label: \"Varilux Digitime Mid\", index: 1.6,price:0, enabled: true },\n {id: \"4varilux_digitime_mid\", label: \"Varilux Digitime Mid\", index: 1.67,price:0, enabled: true },\n {id: \"1varilux_digitime_mid_f-360\", label: \"Varilux® Digitime™ Mid f-360°\", index: 1.5,price:0, enabled: true },\n {id: \"2varilux_digitime_mid_f-360\", label: \"Varilux® Digitime™ Mid f-360°\", index: 1.59,price:0, enabled: true },\n {id: \"3varilux_digitime_mid_f-360\", label: \"Varilux® Digitime™ Mid f-360°\", index: 1.6,price:0, enabled: true },\n {id: \"4varilux_digitime_mid_f-360\", label: \"Varilux® Digitime™ Mid f-360°\", index: 1.67,price:0, enabled: true },\n {id: \"1varilux_digitime_mid_plus\", label: \"Varilux® Digitime™ Mid Plus\", index: 1.5,price:0, enabled: true },\n {id: \"2varilux_digitime_mid_plus\", label: \"Varilux® Digitime™ Mid Plus\", index: 1.59,price:0, enabled: true },\n {id: \"3varilux_digitime_mid_plus\", label: \"Varilux® Digitime™ Mid Plus\", index: 1.6,price:0, enabled: true },\n {id: \"4varilux_digitime_mid_plus\", label: \"Varilux® Digitime™ Mid Plus\", index: 1.67,price:0, enabled: true },\n {id: \"1varilux_digitime_near\", label: \"Varilux® Digitime™ Near\", index: 1.5,price:0, enabled: true },\n {id: \"2varilux_digitime_near\", label: \"Varilux® Digitime™ Near\", index: 1.59,price:0, enabled: true },\n {id: \"3varilux_digitime_near\", label: \"Varilux® Digitime™ Near\", index: 1.6,price:0, enabled: true },\n {id: \"4varilux_digitime_near\", label: \"Varilux® Digitime™ Near\", index: 1.67,price:0, enabled: true },\n {id: \"1varilux_digitime_near_f-360\", label: \"Varilux® Digitime™ Near f-360°\", index: 1.5,price:0, enabled: true },\n {id: \"2varilux_digitime_near_f-360\", label: \"Varilux® Digitime™ Near f-360°\", index: 1.59,price:0, enabled: true },\n {id: \"3varilux_digitime_near_f-360\", label: \"Varilux® Digitime™ Near f-360°\", index: 1.6,price:0, enabled: true },\n {id: \"4varilux_digitime_near_f-360\", label: \"Varilux® Digitime™ Near f-360°\", index: 1.67,price:0, enabled: true },\n {id: \"1varilux_digitime_near_plus\", label: \"Varilux® Digitime™ Near Plus\", index: 1.5,price:0, enabled: true },\n {id: \"2varilux_digitime_near_plus\", label: \"Varilux® Digitime™ Near Plus\", index: 1.59,price:0, enabled: true },\n {id: \"3varilux_digitime_near_plus\", label: \"Varilux® Digitime™ Near Plus\", index: 1.6,price:0, enabled: true },\n {id: \"4varilux_digitime_near_plus\", label: \"Varilux® Digitime™ Near Plus\", index: 1.67,price:0, enabled: true },\n {id: \"1varilux_digitime_room\", label: \"Varilux® Digitime™ Room\", index: 1.5,price:0, enabled: true },\n {id: \"2varilux_digitime_room\", label: \"Varilux® Digitime™ Room\", index: 1.59,price:0, enabled: true },\n {id: \"3varilux_digitime_room\", label: \"Varilux® Digitime™ Room\", index: 1.6,price:0, enabled: true },\n {id: \"4varilux_digitime_room\", label: \"Varilux® Digitime™ Room\", index: 1.67,price:0, enabled: true },\n {id: \"1varilux_digitime_room_f-360\", label: \"Varilux® Digitime™ Room f-360°\", index: 1.5,price:0, enabled: true },\n {id: \"2varilux_digitime_room_f-360\", label: \"Varilux® Digitime™ Room f-360°\", index: 1.59,price:0, enabled: true },\n {id: \"3varilux_digitime_room_f-360\", label: \"Varilux® Digitime™ Room f-360°\", index: 1.6,price:0, enabled: true },\n {id: \"4varilux_digitime_room_f-360\", label: \"Varilux® Digitime™ Room f-360°\", index: 1.67,price:0, enabled: true },\n {id: \"1varilux_digitime_room_plus\", label: \"Varilux® Digitime™ Room Plus\", index: 1.5,price:0, enabled: true },\n {id: \"2varilux_digitime_room_plus\", label: \"Varilux® Digitime™ Room Plus\", index: 1.59,price:0, enabled: true },\n {id: \"3varilux_digitime_room_plus\", label: \"Varilux® Digitime™ Room Plus\", index: 1.6,price:0, enabled: true },\n {id: \"4varilux_digitime_room_plus\", label: \"Varilux® Digitime™ Room Plus\", index: 1.67,price:0, enabled: true },\n ],\n smallTitle: 'questionnaires_q_recom_short_desc_var_digi',\n description: 'questionnaires_q_recom_long_desc_var_digi',\n benefits: [\n {\n icon: \"relax-screen\",\n label: \"summary_bene1\",\n type: 1,\n },\n ]\n },\n {\n id: 'varilux_comfort_max',\n label: 'Varilux® Comfort Max',\n enabled: true,\n lensDesign: LensCategoryType.PROGRESSIVE,\n downgrade: [ `varilux_comfort_max`, `varilux_liberty_30`, `spherical_essilor`],\n subProducts: [\n {id: \"1varilux_comfort_max\", label: \"Varilux® Comfort Max\", index: 1.5,price:0, enabled: true },\n {id: \"2varilux_comfort_max\", label: \"Varilux® Comfort Max\", index: 1.59,price:0, enabled: true },\n {id: \"3varilux_comfort_max\", label: \"Varilux® Comfort Max\", index: 1.6,price:0, enabled: true },\n {id: \"4varilux_comfort_max\", label: \"Varilux® Comfort Max\", index: 1.67,price:0, enabled: true },\n {id: \"5varilux_comfort_max\", label: \"Varilux® Comfort Max\", index: 1.74,price:0, enabled: true },\n {id: \"1varilux_comfort_max_f-360\", label: \"Varilux® Comfort Max f-360°\", index: 1.5,price:0, enabled: true },\n {id: \"2varilux_comfort_max_f-360\", label: \"Varilux® Comfort Max f-360°\", index: 1.59,price:0, enabled: true },\n {id: \"3varilux_comfort_max_f-360\", label: \"Varilux® Comfort Max f-360°\", index: 1.6,price:0, enabled: true },\n {id: \"4varilux_comfort_max_f-360\", label: \"Varilux® Comfort Max f-360°\", index: 1.67,price:0, enabled: true },\n {id: \"5varilux_comfort_max_f-360\", label: \"Varilux® Comfort Max f-360°\", index: 1.74,price:0, enabled: true },\n {id: \"1varilux_comfort_max_short\", label: \"Varilux® Comfort Max short\", index: 1.5,price:0, enabled: true },\n {id: \"2varilux_comfort_max_short\", label: \"Varilux® Comfort Max short\", index: 1.59,price:0, enabled: true },\n {id: \"3varilux_comfort_max_short\", label: \"Varilux® Comfort Max short\", index: 1.6,price:0, enabled: true },\n {id: \"4varilux_comfort_max_short\", label: \"Varilux® Comfort Max short\", index: 1.67,price:0, enabled: true },\n {id: \"5varilux_comfort_max_short\", label: \"Varilux® Comfort Max short\", index: 1.74,price:0, enabled: true },\n ],\n smallTitle: 'Lorem ipsum dolor sit amet',\n description: \"Consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum\",\n benefits: [\n {\n icon: \"seamless\",\n label: \"pair_1_tab_del_p1__seamless_vision_\",\n type: 1,\n },\n {\n icon: \"sharp-vision-icon\",\n label: \"pair_1_tab_del_p1__instant_sharp\",\n type: 1\n },\n ]\n },\n {\n id: 'varilux_comfort_30',\n label: 'Varilux® Comfort 3.0',\n enabled: true,\n lensDesign: LensCategoryType.PROGRESSIVE,\n downgrade: [`varilux_comfort_30`, `varilux_liberty_30`, `spherical_essilor`],\n subProducts: [\n {id: \"1varilux_comfort_30\", label: \"Varilux® Comfort 3.0\", index: 1.5,price:0, enabled: true },\n {id: \"2varilux_comfort_30\", label: \"Varilux® Comfort 3.0\", index: 1.59,price:0, enabled: true },\n {id: \"3varilux_comfort_30\", label: \"Varilux® Comfort 3.0\", index: 1.6,price:0, enabled: true },\n {id: \"4varilux_comfort_30\", label: \"Varilux® Comfort 3.0\", index: 1.67,price:0, enabled: true },\n {id: \"1varilux_comfort_30_f-360\", label: \"Varilux® Comfort 3.0 f-360°\", index: 1.5,price:0, enabled: true },\n {id: \"2varilux_comfort_30_f-360\", label: \"Varilux® Comfort 3.0 f-360°\", index: 1.59,price:0, enabled: true },\n {id: \"3varilux_comfort_30_f-360\", label: \"Varilux® Comfort 3.0 f-360°\", index: 1.6,price:0, enabled: true },\n {id: \"4varilux_comfort_30_f-360\", label: \"Varilux® Comfort 3.0 f-360°\", index: 1.67,price:0, enabled: true },\n {id: \"1varilux_comfort_30_short\", label: \"Varilux® Comfort 3.0 short\", index: 1.5,price:0, enabled: true },\n {id: \"2varilux_comfort_30_short\", label: \"Varilux® Comfort 3.0 short\", index: 1.59,price:0, enabled: true },\n {id: \"3varilux_comfort_30_short\", label: \"Varilux® Comfort 3.0 short\", index: 1.6,price:0, enabled: true },\n {id: \"4varilux_comfort_30_short\", label: \"Varilux® Comfort 3.0 short\", index: 1.67,price:0, enabled: true },\n ],\n smallTitle: 'Lorem ipsum dolor sit amet',\n description: \"Consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum\",\n benefits: [\n {\n icon: \"seamless\",\n label: \"pair_1_tab_del_p1__seamless_vision_\",\n type: 1,\n },\n {\n icon: \"sharp-vision-icon\",\n label: \"pair_1_tab_del_p1__instant_sharp\",\n type: 1\n },\n ]\n },\n {\n id: 'varilux_road_pilot_ii',\n label: 'Varilux Road Pilot® II',\n enabled: true,\n lensDesign: LensCategoryType.PROGRESSIVE,\n downgrade: [`varilux_road_pilot_ii`, `essidrive`, ``],\n subProducts: [\n {id: \"varilux_road_pilot_ii\", label: \"Varilux Road Pilot® II\", index: 1.5,price:0, enabled: true },\n {id: \"varilux_road_pilot_ii\", label: \"Varilux Road Pilot® II\", index: 1.6,price:0, enabled: true },\n {id: \"varilux_road_pilot_ii\", label: \"Varilux Road Pilot® II\", index: 1.67,price:0, enabled: true },\n ],\n smallTitle: 'questionnaires_q_recom_short_desc_var_rpii',\n description: \"questionnaires_q_recom_long_desc_var_rpii\",\n benefits: [\n {\n icon: \"adapt-quickly\",\n label: \"summary_bene2\",\n type: 1,\n },\n {\n icon: \"optimize-driving\",\n label: \"summary_bene3\",\n type: 1\n },\n ]\n }\n ]\n },\n {\n id: 'standard_design',\n label: 'Standard Design',\n products: [\n {\n id: 'kids_standard_design',\n label: 'Standard Design Kids',\n enabled: true,\n lensDesign: LensCategoryType.PROGRESSIVE_SV_LENS,\n subProducts: [\n {id: \"1standard_design_kids\" ,label: \"Standard Design Kids\" ,index:1.5 ,price: 20, enabled: true },\n {id: \"2standard_design_kids\" ,label: \"Standard Design Kids\" ,index:1.59 ,price: 20, enabled: true },\n {id: \"3standard_design_kids\" ,label: \"Standard Design Kids\" ,index:1.6 ,price: 20, enabled: true },\n ],\n isKids: true,\n downgrade: [],\n smallTitle: 'Lorem ipsum dolor sit amet',\n description: \"Consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum\"\n },\n {\n id: 'spherical_essilor',\n label: 'Spherical Essilor',\n lensDesign: LensCategoryType.PROGRESSIVE_SV_LENS,\n enabled: true,\n subProducts: [\n {id: \"1spherical_essilor\" ,label: \"Spherical Essilor\" ,index:1.5 ,price: 0, enabled: true },\n {id: \"2spherical_essilor\" ,label: \"Spherical Essilor\" ,index:1.59 ,price: 0, enabled: true },\n {id: \"3spherical_essilor\" ,label: \"Spherical Essilor\" ,index:1.6 ,price: 0, enabled: true },\n {id: \"4spherical_essilor\" ,label: \"Spherical Essilor\" ,index:1.67 ,price: 0, enabled: true },\n ],\n downgrade: [],\n smallTitle: 'Lorem ipsum dolor sit amet',\n description: \"Consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum\"\n },\n {\n id: 'aspherical_essilor',\n label: 'Aspherical Essilor',\n lensDesign: LensCategoryType.PROGRESSIVE_SV_LENS,\n enabled: true,\n subProducts: [\n {id: \"1aspherical_essilor\" ,label: \"Aspherical Essilor\" ,index:1.5 ,price: 0, enabled: true },\n {id: \"2aspherical_essilor\" ,label: \"Aspherical Essilor\" ,index:1.59 ,price: 0, enabled: true },\n {id: \"3aspherical_essilor\" ,label: \"Aspherical Essilor\" ,index:1.6 ,price: 0, enabled: true },\n {id: \"4aspherical_essilor\" ,label: \"Aspherical Essilor\" ,index:1.67 ,price: 0, enabled: true },\n {id: \"5aspherical_essilor\" ,label: \"Aspherical Essilor\" ,index:1.74 ,price: 0, enabled: true },\n ],\n downgrade: [],\n smallTitle: 'Lorem ipsum dolor sit amet',\n description: \"Consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum\"\n },\n ]\n },\n {\n id: 'eyezen',\n label: 'Eyezen',\n background: eyezenCard,\n logo:'eyezen',\n products: [\n {\n id: 'eyezen_start',\n label: 'Eyezen® Start',\n lensDesign: LensCategoryType.SINGLE_VISION,\n enabled: true,\n subProducts: [\n {id: \"1eyezen_start\", label: \"Eyezen® Start\", index: 1.5,price:0, enabled: true },\n {id: \"2eyezen_start\", label: \"Eyezen® Start\", index: 1.59,price:0, enabled: true },\n {id: \"3eyezen_start\", label: \"Eyezen® Start\", index: 1.6,price:0, enabled: true },\n {id: \"4eyezen_start\", label: \"Eyezen® Start\", index: 1.67,price:0, enabled: true },\n {id: \"5eyezen_start\", label: \"Eyezen® Start\", index: 1.74,price:0, enabled: true },\n {id: \"1eyezen_start_f-360\", label: \"Eyezen® Start f-360°\", index: 1.5,price:0, enabled: true },\n {id: \"2eyezen_start_f-360\", label: \"Eyezen® Start f-360°\", index: 1.59,price:0, enabled: true },\n {id: \"3eyezen_start_f-360\", label: \"Eyezen® Start f-360°\", index: 1.6,price:0, enabled: true },\n {id: \"4eyezen_start_f-360\", label: \"Eyezen® Start f-360°\", index: 1.67,price:0, enabled: true },\n {id: \"5eyezen_start_f-360\", label: \"Eyezen® Start f-360°\", index: 1.74,price:0, enabled: true },\n ],\n downgrade: ['eyezen_start' , 'eyezen_boost', 'spherical_essilor'],\n smallTitle: 'questionnaires_q_recom_short_desc_eyes_start',\n description: \"questionnaires_q_recom_long_desc_eyes_start\",\n benefits: [\n {\n icon: \"sharp-vision-icon\",\n label: \"summary_bene5\",\n type: 1,\n },\n {\n icon: \"acuity-near-vision\",\n label: \"pair_1_tab_del_p1_better_acuity_in_near_vision\",\n type: 1,\n },\n {\n icon: \"relax-screen\",\n label: \"summary_bene4\",\n type: 1,\n },\n ]\n },\n {\n id: 'eyezen_boost',\n label: 'Eyezen® Boost',\n enabled: true,\n lensDesign: LensCategoryType.SINGLE_VISION,\n subProducts: [\n {id: \"1eyezen_boost_04\", label: \"Eyezen® Boost 0.4\", index: 1.5,price:0, enabled: true },\n {id: \"2eyezen_boost_04\", label: \"Eyezen® Boost 0.4\", index: 1.59,price:0, enabled: true },\n {id: \"3eyezen_boost_04\", label: \"Eyezen® Boost 0.4\", index: 1.6,price:0, enabled: true },\n {id: \"4eyezen_boost_04\", label: \"Eyezen® Boost 0.4\", index: 1.67,price:0, enabled: true },\n {id: \"5eyezen_boost_04\", label: \"Eyezen® Boost 0.4\", index: 1.74,price:0, enabled: true },\n {id: \"1eyezen_boost_04_f-360\", label: \"Eyezen® Boost 0.4 f-360°\", index: 1.5,price:0, enabled: true },\n {id: \"2eyezen_boost_04_f-360\", label: \"Eyezen® Boost 0.4 f-360°\", index: 1.59,price:0, enabled: true },\n {id: \"3eyezen_boost_04_f-360\", label: \"Eyezen® Boost 0.4 f-360°\", index: 1.6,price:0, enabled: true },\n {id: \"4eyezen_boost_04_f-360\", label: \"Eyezen® Boost 0.4 f-360°\", index: 1.67,price:0, enabled: true },\n {id: \"5eyezen_boost_04_f-360\", label: \"Eyezen® Boost 0.4 f-360°\", index: 1.74,price:0, enabled: true },\n {id: \"1eyezen_boost_06\", label: \"Eyezen® Boost 0.6\", index: 1.5,price:0, enabled: true },\n {id: \"2eyezen_boost_06\", label: \"Eyezen® Boost 0.6\", index: 1.59,price:0, enabled: true },\n {id: \"3eyezen_boost_06\", label: \"Eyezen® Boost 0.6\", index: 1.6,price:0, enabled: true },\n {id: \"4eyezen_boost_06\", label: \"Eyezen® Boost 0.6\", index: 1.67,price:0, enabled: true },\n {id: \"5eyezen_boost_06\", label: \"Eyezen® Boost 0.6\", index: 1.74,price:0, enabled: true },\n {id: \"1eyezen_boost_06_f-360\", label: \"Eyezen® Boost 0.6 f-360°\", index: 1.5,price:0, enabled: true },\n {id: \"2eyezen_boost_06_f-360\", label: \"Eyezen® Boost 0.6 f-360°\", index: 1.59,price:0, enabled: true },\n {id: \"3eyezen_boost_06_f-360\", label: \"Eyezen® Boost 0.6 f-360°\", index: 1.6,price:0, enabled: true },\n {id: \"4eyezen_boost_06_f-360\", label: \"Eyezen® Boost 0.6 f-360°\", index: 1.67,price:0, enabled: true },\n {id: \"5eyezen_boost_06_f-360\", label: \"Eyezen® Boost 0.6 f-360°\", index: 1.74,price:0, enabled: true },\n {id: \"1eyezen_boost_085\", label: \"Eyezen® Boost 0.85\", index: 1.5,price:0, enabled: true },\n {id: \"2eyezen_boost_085\", label: \"Eyezen® Boost 0.85\", index: 1.59,price:0, enabled: true },\n {id: \"3eyezen_boost_085\", label: \"Eyezen® Boost 0.85\", index: 1.6,price:0, enabled: true },\n {id: \"4eyezen_boost_085\", label: \"Eyezen® Boost 0.85\", index: 1.67,price:0, enabled: true },\n {id: \"5eyezen_boost_085\", label: \"Eyezen® Boost 0.85\", index: 1.74,price:0, enabled: true },\n {id: \"1eyezen_boost_085_f-360\", label: \"Eyezen® Boost 0.85 f-360°\", index: 1.5,price:0, enabled: true },\n {id: \"2eyezen_boost_085_f-360\", label: \"Eyezen® Boost 0.85 f-360°\", index: 1.59,price:0, enabled: true },\n {id: \"3eyezen_boost_085_f-360\", label: \"Eyezen® Boost 0.85 f-360°\", index: 1.6,price:0, enabled: true },\n {id: \"4eyezen_boost_085_f-360\", label: \"Eyezen® Boost 0.85 f-360°\", index: 1.67,price:0, enabled: true },\n {id: \"5eyezen_boost_085_f-360\", label: \"Eyezen® Boost 0.85 f-360°\", index: 1.74,price:0, enabled: true },\n {id: \"1eyezen_boost_11\", label: \"Eyezen® Boost 1.1\", index: 1.5,price:0, enabled: true },\n {id: \"2eyezen_boost_11\", label: \"Eyezen® Boost 1.1\", index: 1.59,price:0, enabled: true },\n {id: \"3eyezen_boost_11\", label: \"Eyezen® Boost 1.1\", index: 1.6,price:0, enabled: true },\n {id: \"4eyezen_boost_11\", label: \"Eyezen® Boost 1.1\", index: 1.67,price:0, enabled: true },\n {id: \"5eyezen_boost_11\", label: \"Eyezen® Boost 1.1\", index: 1.74,price:0, enabled: true },\n {id: \"1eyezen_boost_11_f-360\", label: \"Eyezen® Boost 1.1 f-360°\", index: 1.5,price:0, enabled: true },\n {id: \"2eyezen_boost_11_f-360\", label: \"Eyezen® Boost 1.1 f-360°\", index: 1.59,price:0, enabled: true },\n {id: \"3eyezen_boost_11_f-360\", label: \"Eyezen® Boost 1.1 f-360°\", index: 1.6,price:0, enabled: true },\n {id: \"4eyezen_boost_11_f-360\", label: \"Eyezen® Boost 1.1 f-360°\", index: 1.67,price:0, enabled: true },\n {id: \"5eyezen_boost_11_f-360\", label: \"Eyezen® Boost 1.1 f-360°\", index: 1.74,price:0, enabled: true }, \n ],\n downgrade: ['eyezen_boost' , 'eyezen_start', 'spherical_essilor'],\n smallTitle: 'questionnaires_q_recom_short_desc_eyes_start',\n description: \"questionnaires_q_recom_long_desc_eyes_boost\",\n benefits: [\n {\n icon: \"sharp-vision-icon\",\n label: \"summary_bene5\",\n type: 1,\n },\n {\n icon: \"acuity-near-vision\",\n label: \"pair_1_tab_del_p1_better_acuity_in_near_vision\",\n type: 1,\n },\n {\n icon: \"relax-screen\",\n label: \"summary_bene4\",\n type: 1,\n },\n ]\n },\n {\n id: 'eyezen_kids',\n label: 'Eyezen® Kids',\n subProducts: [\n {id: \"1eyezen_kids\" ,label: \"Eyezen® Kids\" ,index:1.5 ,price: 200, enabled: true},\n {id: \"2eyezen_kids\" ,label: \"Eyezen® Kids\" ,index:1.59 ,price: 200, enabled: true},\n {id: \"3eyezen_kids\" ,label: \"Eyezen® Kids\" ,index:1.6 ,price: 200, enabled: true},\n ],\n isKids: true,\n enabled: true,\n downgrade: [\"eyezen_kids\",\"standard_design\",\"\"],\n smallTitle: \"questionnaires_q_recomm_short_desc_eye_kid\",\n description: 'questionnaires_q_recomm_long_desc_eye_kid',\n kidsPrescriptionRange: {\n min: -0.50,\n max: 20\n },\n lensDesign: LensCategoryType.SINGLE_VISION,\n benefits: [\n {\n icon: \"sharp-vision-icon\",\n label: \"summary_bene5\",\n type: 1,\n },\n {\n icon: \"acuity-near-vision\",\n label: \"pair_1_tab_del_p1_better_acuity_in_near_vision\",\n type: 1,\n },\n {\n icon: \"relax-screen\",\n label: \"summary_bene4\",\n type: 1,\n },\n ]\n }\n ]\n },\n {\n id: 'essidrive',\n label: 'Essidrive',\n products: [\n {\n id: 'essidrive',\n label: 'Essidrive',\n enabled: true,\n downgrade: [],\n lensDesign: LensCategoryType.SINGLE_VISION,\n subProducts: [\n {id: \"1essidrive\" ,label: \"Essidrive\" ,index:1.5 ,price: 0, enabled: true},\n {id: \"2essidrive\" ,label: \"Essidrive\" ,index:1.6 ,price: 0, enabled: true},\n {id: \"3essidrive\" ,label: \"Essidrive\" ,index:1.67 ,price: 0, enabled: true},\n {id: \"1essidrive_f-360\" ,label: \"Essidrive f-360\" ,index:1.5 ,price: 0, enabled: true},\n {id: \"2essidrive_f-360\" ,label: \"Essidrive f-360\" ,index:1.6 ,price: 0, enabled: true},\n {id: \"3essidrive_f-360\" ,label: \"Essidrive f-360\" ,index:1.67 ,price: 0, enabled: true},\n\n ],\n smallTitle: 'Lorem ipsum dolor sit amet',\n description: \"Consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum\",\n benefits: [\n {\n icon: \"optimize-driving\",\n label: \"summary_bene3\",\n type: 1,\n },\n {\n icon: \"sharp-vision-icon\",\n label: \"summary_bene5\",\n type: 1,\n },\n ]\n },\n ]\n },\n {\n id: 'stellest',\n label: 'Stellest',\n\n //TEMP\n background: stellestCard2,\n logo:'stellest-logo',\n products: [\n {\n id: 'stellest',\n label: 'Stellest',\n lensDesign: LensCategoryType.MYOPIA,\n subProducts: [\n // {id: \"1stellest\" ,label: \"Stellest\" ,index:1.5 ,price: 200, enabled: true},\n {id: \"2stellest\" ,label: \"Stellest\" ,index:1.59 ,price: 200, enabled: true},\n ],\n isKids: true,\n enabled: true,\n downgrade: ['stellest','eyezen_kids','standard_design'],\n smallTitle: 'questionnaires_q_recomm_short_desc_stell',\n description: 'questionnaires_q_recomm_long_desc_stell',\n kidsPrescriptionRange: {\n min: -20,\n max: -0.75\n },\n benefits: [\n {\n icon: \"control\",\n label: \"summary_bene6\",\n type: 1,\n },\n {\n icon: \"adapt-quickly\",\n label: \"summary_bene7\",\n type: 1,\n },\n ]\n }\n ],\n }\n ]\n },\n {\n id: LensFamilyType.PROTECT,\n label: 'lens_consultation_lc_protect_',\n brands: [\n {\n id: 'xperio',\n label: 'Xperio',\n background: experioCard,\n logo: 'xperio-logo',\n products: [\n {\n id: 'xperio_react',\n label: 'Xperio React',\n price: 0,\n enabled: true,\n smallTitle: 'Lorem ipsum dolor sit amet',\n description: \"Consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum\",\n benefits: [\n {\n icon: \"uv-protect\",\n label: \"pair_1_tab_del_p1__harmful\",\n type: 1,\n },\n {\n icon: \"env-light\",\n label: \"pair_1_tab_del_2_p1_reacts_to_environmental_light\",\n type: 1,\n },\n {\n icon: \"colors\",\n label: \"pair_1_tab_del_p1__available_in_a_range_of_colours\",\n type: 1,\n },\n {\n icon: \"outdoor-sun\",\n label: \"pair_1_tab_del_p1_outdoor_sun_glare_reduc\",\n type: 2,\n },\n ]\n },\n {\n id: 'xperio_mirrors',\n label: 'Xperio Mirrors',\n price: 0,\n enabled: true,\n smallTitle: 'Lorem ipsum dolor sit amet',\n description: \"Consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum\",\n colors: [\n {\n id: \"lensMirrorBronzeShadow\",\n label: \"lens_propo_colors_bronze_shadow\",\n value: \"#33070e\"\n },\n {\n id: \"lensMirrorBronze\",\n label: \"lens_propo_colors_bronze\",\n value: \"#c66a29\"\n },\n {\n id: \"lensMirrorCandy\",\n label: \"lens_propo_colors_candy\",\n value: \"#9d2b49\"\n },\n {\n id: \"lensMirrorForestGreen\",\n label: \"lens_propo_colors_forest_green\",\n value: \"#39721a\"\n },\n {\n id: \"lensMirrorGoldPink\",\n label: \"lens_propo_colors_gold_pink\",\n value: \"#924a35\"\n },\n {\n id: \"lensMirrorGreenShadow\",\n label: \"lens_propo_colors_green_shadow\",\n value: \"#1b160f\"\n },\n {\n id: \"lensMirrorKaki\",\n label: \"lens_propo_colors_kaki\",\n value: \"#59621f\"\n },\n {\n id: \"lensMirrorMauveSilver\",\n label: \"lens_propo_colors_mauve_silver\",\n value: \"#ada5d2\"\n },\n {\n id: \"lensMirrorNewBlue\",\n label: \"lens_propo_colors_new_blue\",\n value: \"#3c8ea9\"\n },\n {\n id: \"lensMirrorNewSilver\",\n label: \"lens_propo_colors_new_silver\",\n value: \"#778fa3\"\n },\n {\n id: \"lensMirrorOceanBlue\",\n label: \"lens_propo_colors_ocean_blue\",\n value: \"#243459\"\n },\n {\n id: \"lensMirrorOrange\",\n label: \"lens_propo_colors_orange\",\n value: \"#7b1d16\"\n },\n {\n id: \"lensMirrorParma\",\n label: \"lens_propo_colors_parma\",\n value: \"#b9adc2\"\n },\n {\n id: \"lensMirrorPinkSilver\",\n label: \"lens_propo_colors_pink_silver\",\n value: \"#c1b4c0\"\n },\n {\n id: \"lensMirrorSilverShadow\",\n label: \"lens_propo_colors_silver_shadow\",\n value: \"#4e4340\"\n },\n {\n id: \"lensMirrorSilver\",\n label: \"lens_propo_colors_silver\",\n value: \"#8b8d92\"\n },\n {\n id: \"lensMirrorSkyBlueSilver\",\n label: \"lens_propo_colors_blue_silver\",\n value: \"#9fb6cf\"\n },\n {\n id: \"lensMirrorViolet\",\n label: \"lens_propo_colors_violet\",\n value: \"#21092f\"\n }\n ],\n benefits: [\n {\n icon: \"uv-protect\",\n label: \"pair_1_tab_del_p1__harmful\",\n type: 1,\n },\n {\n icon: \"colors\",\n label: \"pair_1_tab_del_p1__available_in_a_range_of_colours\",\n type: 1,\n },\n {\n icon: \"outdoor-sun\",\n label: \"pair_1_tab_del_p1_outdoor_sun_glare_reduc\",\n type: 1,\n },\n ]\n },\n {\n id: 'xperio_polarised',\n label: 'Xperio Polarised',\n price: 0,\n enabled: true,\n complementaryEquipments: [ComplementaryEquipmentType.SUN, ComplementaryEquipmentType.DRIVING],\n colors: [\n {\n id: \"lensPolarizedAmber\",\n label: \"lens_propo_colors_amber\",\n value: \"#A52A2A\"\n },\n {\n id: \"lensPolarizedBlueInk\",\n label: \"lens_propo_colors_blue_ink\",\n value: \"#395158\"\n },\n {\n id: \"lensPolarizedBluePurple\",\n label: \"lens_propo_colors_blue_purple\",\n value: \"#6437b8\"\n },\n {\n id: \"lensPolarizedBlueSky\",\n label: \"lens_propo_colors_blue_sky\",\n value: \"#87ceeb\"\n },\n {\n id: \"lensPolarizedBrown\",\n label: \"lens_propo_colors_brown\",\n value: \"#9C703B\"\n },\n {\n id: \"lensPolarizedGrey\",\n label: \"lens_propo_colors_grey\",\n value: \"#808080\"\n },\n {\n id: \"lensPolarizedGreyGreen\",\n label: \"lens_propo_colors_grey_green\",\n value: \"#656255\"\n },\n {\n id: \"lensPolarizedHerbal\",\n label: \"lens_propo_colors_herbal\",\n value: \"#8a8849\"\n },\n {\n id: \"lensPolarizedViolet\",\n label: \"lens_propo_colors_violet\",\n value: \"#6b2d7a\"\n }\n ],\n smallTitle: 'questionnaires_q_recom_short_desc_xpe_pol',\n description: \"questionnaires_q_recom_long_desc_xpe_pol\",\n benefits: [\n {\n icon: \"uv-protect\",\n label: \"pair_1_tab_del_p1__harmful\",\n type: 1,\n },\n {\n icon: \"colors\",\n label: \"pair_1_tab_del_p1__available_in_a_range_of_colours\",\n type: 1,\n },\n {\n icon: \"outdoor-sun\",\n label: \"pair_1_tab_del_p1_outdoor_sun_glare_reduc\",\n type: 1,\n },\n ]\n },\n {\n id: 'xperio_tinted',\n label: 'Xperio Tinted',\n lensDesign: LensProtectType.TINTED,\n price: 0,\n enabled: true,\n smallTitle: 'Lorem ipsum dolor sit amet',\n description: \"Consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum\",\n\n colors: [\n {\n id: \"lensTintedBlack\",\n label: \"lens_propo_colors_black\",\n value: \"#000000\"\n },\n {\n id: \"lensTintedBlueInk\",\n label: \"lens_propo_colors_blue_ink\",\n value: \"#415c80\"\n },\n {\n id: \"lensTintedBrown\",\n label: \"lens_propo_colors_brown\",\n value: \"#6d5a45\"\n },\n {\n id: \"lensTintedBurgundy\",\n label: \"lens_propo_colors_burgundy\",\n value: \"#89676f\"\n },\n {\n id: \"lensTintedGreyGreen\",\n label: \"lens_propo_colors_grey_green\",\n value: \"#3c5854\"\n },\n {\n id: \"lensTintedGrey\",\n label: \"lens_propo_colors_grey\",\n value: \"#4c5d6e\"\n },\n {\n id: \"lensTintedHerbal\",\n label: \"lens_propo_colors_herbal\",\n value: \"#8e8565\"\n },\n {\n id: \"lensTintedNewBrown\",\n label: \"lens_propo_colors_new_brown\",\n value: \"#806b4d\"\n }, \n ],\n benefits: [\n {\n icon: \"uv-protect\",\n label: \"pair_1_tab_del_p1__harmful\",\n type: 1,\n },\n {\n icon: \"colors\",\n label: \"pair_1_tab_del_p1__available_in_a_range_of_colours\",\n type: 1,\n },\n {\n icon: \"outdoor-sun\",\n label: \"pair_1_tab_del_p1_outdoor_sun_glare_reduc\",\n type: 1,\n },\n ]\n },\n ]\n },\n {\n id: 'blueuv_filter_system',\n label: 'BlueUV Filter System',\n background: blueUVCard,\n logo:'BlueUV_FilterSystem',\n \n products: [\n {\n id: 'eye_protect_system',\n label: 'Eye Protect System',\n price: 0,\n enabled: true,\n isKids: true,\n lensDesign: LensProtectType.BLUE_CUT,\n complementaryEquipments:[ComplementaryEquipmentType.COMPUTER],\n smallTitle: 'questionnaires_q_recomm_short_desc_eps',\n description: 'questionnaires_q_recomm_long_desc_eps',\n benefits: [\n {\n icon: \"harmful-light\",\n label: \"pair_1_tab_del_p1__harmf\",\n type: 1,\n },\n {\n icon: \"uv-protect\",\n label: \"pair_1_tab_del_p1__harmful\",\n type: 1,\n },\n {\n icon: \"harmful-light\",\n label: \"pair_1_tab_del_2_p1_transparent_lens\",\n type: 1,\n },\n ]\n },\n {\n id: 'blue_uv_capture',\n label: 'Blue UV Filter System',\n price: 0,\n enabled: true,\n smallTitle: 'Lorem ipsum dolor sit amet',\n description: \"Consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum\",\n benefits: [\n {\n icon: \"harmful-light\",\n label: \"pair_1_tab_del_p1__harmf\",\n type: 1,\n },\n {\n icon: \"uv-protect\",\n label: \"pair_1_tab_del_p1__harmful\",\n type: 1,\n },\n {\n icon: \"harmful-light\",\n label: \"pair_1_tab_del_2_p1_transparent_lens\",\n type: 1,\n },\n ]\n }, \n ]\n },\n {\n id: 'transitions',\n label: 'Transitions',\n background: transitionsCard,\n logo: 'transitions-logo',\n products: [\n {\n id: 'transitions_signature_gen_8',\n label: 'Transitions Gen 8',\n lensDesign: LensProtectType.PHOTOCROMIC,\n complementaryEquipments:[ComplementaryEquipmentType.SUN],\n price: 0,\n enabled: true,\n isKids: true,\n colors: [\n {\n id: \"lensTransitionGreen\",\n label: \"lens_propo_colors_green\",\n value: \"#3F9A49\"\n },\n {\n id: \"lensTransitionGrey\",\n label: \"lens_propo_colors_grey\",\n value: \"#B2B2B6\"\n },\n {\n id: \"lensTransitionAmber\",\n label: \"lens_propo_colors_amber\",\n value: \"#9C703B\"\n },\n {\n id: \"lensTransitionSapphire\",\n label: \"lens_propo_colors_sapphire\",\n value: \"#346297\"\n },\n {\n id: \"lensTransitionEmerald\",\n label: \"lens_propo_colors_emerald\",\n value: \"#046253\"\n },\n {\n id: \"lensTransitionBrown\",\n label: \"lens_propo_colors_brown\",\n value: \"#9E5425\"\n },\n {\n id: \"lensTransitionAmethyst\",\n label: \"lens_propo_colors_amethyst\",\n value: \"#4F3281\"\n }\n ],\n smallTitle: 'questionnaires_q_recom_short_desc_trans_gen_8',\n description: 'questionnaires_q_recom_long_desc_trans_gen_8',\n benefits: [\n {\n icon: \"harmful-light\",\n label: \"pair_1_tab_del_p1__harmf\",\n type: 1,\n },\n {\n icon: \"uv-protect\",\n label: \"pair_1_tab_del_p1__harmful\",\n type: 1,\n },\n {\n icon: \"env-light\",\n label: \"pair_1_tab_del_2_p1_reacts_to_environmental_light\",\n type: 1,\n },\n {\n icon: \"colors\",\n label: \"pair_1_tab_del_p1__available_in_a_range_of_colours\",\n type: 2,\n },\n {\n icon: \"outdoor-sun\",\n label: \"pair_1_tab_del_p1_outdoor_sun_glare_reduc\",\n type: 2,\n },\n ]\n },\n {\n id: 'transitions_xtractive',\n label: 'Transitions XTRActive',\n price: 0,\n enabled: true,\n colors: [\n {\n id: \"lensTransitionGreen\",\n label: \"lens_propo_colors_green\",\n value: \"#3F9A49\"\n },\n {\n id: \"lensTransitionGrey\",\n label: \"lens_propo_colors_grey\",\n value: \"#B2B2B6\"\n },\n {\n id: \"lensTransitionBrown\",\n label: \"lens_propo_colors_brown\",\n value: \"#9E5425\"\n }\n ],\n smallTitle: 'Lorem ipsum dolor sit amet',\n description: \"Consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum\",\n benefits: [\n {\n icon: \"harmful-light\",\n label: \"pair_1_tab_del_p1__harmf\",\n type: 1,\n },\n {\n icon: \"uv-protect\",\n label: \"pair_1_tab_del_p1__harmful\",\n type: 1,\n },\n {\n icon: \"env-light\",\n label: \"pair_1_tab_del_2_p1_reacts_to_environmental_light\",\n type: 1,\n },\n {\n icon: \"colors\",\n label: \"pair_1_tab_del_p1__available_in_a_range_of_colours\",\n type: 2,\n },\n {\n icon: \"outdoor-sun\",\n label: \"pair_1_tab_del_p1_outdoor_sun_glare_reduc\",\n type: 2,\n },\n ]\n },\n {\n id: 'transitions_style_mirrors',\n label: 'Transitions Style Mirrors',\n price: 0,\n enabled: true,\n smallTitle: 'Lorem ipsum dolor sit amet',\n description: \"Consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum\",\n benefits: [\n {\n icon: \"harmful-light\",\n label: \"pair_1_tab_del_p1__harmf\",\n type: 1,\n },\n {\n icon: \"uv-protect\",\n label: \"pair_1_tab_del_p1__harmful\",\n type: 1,\n },\n {\n icon: \"env-light\",\n label: \"pair_1_tab_del_2_p1_reacts_to_environmental_light\",\n type: 1,\n },\n {\n icon: \"colors\",\n label: \"pair_1_tab_del_p1__available_in_a_range_of_colours\",\n type: 2,\n },\n {\n icon: \"outdoor-sun\",\n label: \"pair_1_tab_del_p1_outdoor_sun_glare_reduc\",\n type: 2,\n },\n ]\n },\n ]\n }\n ]\n },\n {\n id: LensFamilyType.ENHANCE,\n label: 'lens_consultation_lc_enhance',\n brands: [\n {\n id: 'crizal',\n label: 'Crizal',\n background: crizalCard,\n logo: 'crizal-logo',\n products: [ \n {\n id: 'crizal_easy',\n label: 'Crizal Easy',\n smallTitle: 'questionnaires_q_recomm_short_desc_criz_eas',\n description: 'questionnaires_q_recomm_long_desc_criz_eas',\n enabled: true,\n price:0,\n isKids: true,\n lensDesign: LensCategoryType.SINGLE_VISION,\n benefits: [\n {\n icon: \"optimal-clarity\",\n label: \"pair_1_tab_del_p1__optimal_clarity\",\n type: 1,\n },\n {\n icon: \"scratch-icon\",\n label: \"pair_1_tab_del_p1__scratch_resistant\",\n type: 1,\n },\n {\n icon: \"smudge-res\",\n label: \"pair_1_tab_del_p1__smudge_resistant\",\n type: 1,\n },\n {\n icon: \"dust-repel\",\n label: \"pair_1_tab_del_p1__dust_repellent\",\n type: 2,\n },\n {\n icon: \"water-repel\",\n label: \"pair_1_tab_del_p1__water_repellent\",\n type: 2,\n },\n {\n icon: \"harmful-light\",\n label: \"pair_1_tab_del_p1__harmful\",\n type: 2,\n },\n ]\n },\n {\n id: 'crizal_forte',\n label: 'Crizal Forte',\n smallTitle: 'Lorem ipsum dolor sit amet',\n description: \"Consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum\",\n enabled: true,\n price:0,\n benefits: [\n {\n icon: \"optimal-clarity\",\n label: \"pair_1_tab_del_p1__optimal_clarity\",\n type: 1,\n },\n {\n icon: \"scratch-icon\",\n label: \"pair_1_tab_del_p1__scratch_resistant\",\n type: 1,\n },\n {\n icon: \"smudge-res\",\n label: \"pair_1_tab_del_p1__smudge_resistant\",\n type: 1,\n },\n {\n icon: \"dust-repel\",\n label: \"pair_1_tab_del_p1__dust_repellent\",\n type: 2,\n },\n {\n icon: \"water-repel\",\n label: \"pair_1_tab_del_p1__water_repellent\",\n type: 2,\n },\n {\n icon: \"uv-protect\",\n label: \"pair_1_tab_del_p1__harmful\",\n type: 2,\n },\n ]\n },\n {\n id: 'crizal_prevencia',\n label: 'Crizal Prevencia',\n complementaryEquipments: [ComplementaryEquipmentType.COMPUTER],\n smallTitle: 'questionnaires_q_recomm_short_desc_cp',\n description: 'questionnaires_q_recomm_long_desc_cp',\n enabled: true,\n price:0,\n isKids: true,\n benefits: [\n {\n icon: \"scratch-icon\",\n label: \"pair_1_tab_del_p1__scratch_resistant\",\n type: 1,\n },\n {\n icon: \"smudge-res\",\n label: \"pair_1_tab_del_p1__smudge_resistant\",\n type: 1,\n },\n {\n icon: \"dust-repel\",\n label: \"pair_1_tab_del_p1__dust_repellent\",\n type: 1,\n },\n {\n icon: \"water-repel\",\n label: \"pair_1_tab_del_p1__water_repellent\",\n type: 2,\n },\n {\n icon: \"uv-protect\",\n label: \"pair_1_tab_del_p1__harmful\",\n type: 2,\n },\n {\n icon: \"harmful-light\",\n label: \"pair_1_tab_del_p1__harmf\",\n type: 2,\n },\n ]\n },\n {\n id: 'crizal_drive',\n label: 'Crizal Drive',\n // complementaryEquipments: [ComplementaryEquipmentType.SUN, ComplementaryEquipmentType.DRIVING],\n smallTitle: 'questionnaires_q_recomm_short_desc_cd',\n description: 'questionnaires_q_recomm_long_desc_cd',\n enabled: true,\n price:0,\n benefits: [\n {\n icon: \"optimal-clarity\",\n label: \"pair_1_tab_del_p1__optimal_clarity\",\n type: 1,\n },\n {\n icon: \"scratch-icon\",\n label: \"pair_1_tab_del_p1__scratch_resistant\",\n type: 1,\n },\n {\n icon: \"smudge-res\",\n label: \"pair_1_tab_del_p1__smudge_resistant\",\n type: 1,\n },\n {\n icon: \"dust-repel\",\n label: \"pair_1_tab_del_p1__dust_repellent\",\n type: 2,\n },\n {\n icon: \"water-repel\",\n label: \"pair_1_tab_del_p1__water_repellent\",\n type: 2,\n },\n {\n icon: \"uv-protect\",\n label: \"pair_1_tab_del_p1__harmful\",\n type: 2,\n },\n ]\n },\n {\n id: 'crizal_aliz',\n label: 'Crizal Alizé',\n smallTitle: '',\n description: \"\",\n enabled: true,\n price:0,\n isKids: true,\n lensDesign: LensCategoryType.MYOPIA,\n benefits: [\n {\n icon: \"optimal-clarity\",\n label: \"pair_1_tab_del_p1__optimal_clarity\",\n type: 1,\n },\n {\n icon: \"scratch-icon\",\n label: \"pair_1_tab_del_p1__scratch_resistant\",\n type: 1,\n },\n {\n icon: \"smudge-res\",\n label: \"pair_1_tab_del_p1__smudge_resistant\",\n type: 1,\n },\n {\n icon: \"dust-repel\",\n label: \"pair_1_tab_del_p1__dust_repellent\",\n type: 2,\n },\n {\n icon: \"water-repel\",\n label: \"pair_1_tab_del_p1__water_repellent\",\n type: 2,\n },\n {\n icon: \"uv-protect\",\n label: \"pair_1_tab_del_p1__harmful\",\n type: 2,\n },\n ]\n },\n {\n id: 'crizal_sapphire',\n label: 'Crizal Sapphire',\n lensDesign: LensEnhanceType.AR,\n complementaryEquipments: [ComplementaryEquipmentType.SUN],\n smallTitle: 'questionnaires_q_recom_short_desc_cri_sapp',\n description: 'questionnaires_q_recom_long_desc_cri_sapp',\n enabled: true,\n price:0,\n isKids: true,\n benefits: [\n {\n icon: \"optimal-clarity\",\n label: \"pair_1_tab_del_p1__optimal_clarity\",\n type: 1,\n },\n {\n icon: \"scratch-icon\",\n label: \"pair_1_tab_del_p1__scratch_resistant\",\n type: 1,\n },\n {\n icon: \"smudge-res\",\n label: \"pair_1_tab_del_p1__smudge_resistant\",\n type: 1,\n },\n {\n icon: \"dust-repel\",\n label: \"pair_1_tab_del_p1__dust_repellent\",\n type: 2,\n },\n {\n icon: \"water-repel\",\n label: \"pair_1_tab_del_p1__water_repellent\",\n type: 2,\n },\n {\n icon: \"uv-protect\",\n label: \"pair_1_tab_del_p1__harmful\",\n type: 2,\n },\n ]\n },\n {\n id: 'crizal_rock',\n label: 'Crizal Rock',\n smallTitle: 'Lorem ipsum dolor sit amet',\n description: \"Consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum\",\n enabled: true,\n price:0,\n benefits: [\n {\n icon: \"optimal-clarity\",\n label: \"pair_1_tab_del_p1__optimal_clarity\",\n type: 1,\n },\n {\n icon: \"scratch-icon\",\n label: \"pair_1_tab_del_p1__scratch_resistant\",\n type: 1,\n },\n {\n icon: \"smudge-res\",\n label: \"pair_1_tab_del_p1__smudge_resistant\",\n type: 1,\n },\n {\n icon: \"dust-repel\",\n label: \"pair_1_tab_del_p1__dust_repellent\",\n type: 2,\n },\n {\n icon: \"water-repel\",\n label: \"pair_1_tab_del_p1__water_repellent\",\n type: 2,\n },\n {\n icon: \"uv-protect\",\n label: \"pair_1_tab_del_p1__harmful\",\n type: 2,\n },\n ]\n },\n {\n id: 'crizal_sun_xprotect',\n label: 'Crizal Sun Xprotect',\n lensDesign: LensEnhanceType.TINTED,\n complementaryEquipments: [ComplementaryEquipmentType.SUN, ComplementaryEquipmentType.DRIVING],\n smallTitle: 'questionnaires_q_recomm_short_desc_cri_sun',\n description: 'questionnaires_q_recomm_long_desc_cri_sun',\n enabled: true,\n price:0,\n benefits: [\n {\n icon: \"optimal-clarity\",\n label: \"pair_1_tab_del_p1__optimal_clarity\",\n type: 1,\n },\n {\n icon: \"scratch-icon\",\n label: \"pair_1_tab_del_p1__scratch_resistant\",\n type: 1,\n },\n {\n icon: \"smudge-res\",\n label: \"pair_1_tab_del_p1__smudge_resistant\",\n type: 1,\n },\n {\n icon: \"dust-repel\",\n label: \"pair_1_tab_del_p1__dust_repellent\",\n type: 2,\n },\n {\n icon: \"water-repel\",\n label: \"pair_1_tab_del_p1__water_repellent\",\n type: 2,\n },\n {\n icon: \"uv-protect\",\n label: \"pair_1_tab_del_p1__harmful\",\n type: 2,\n },\n ]\n },\n ]\n },\n {\n id: 'optifog',\n label: 'Optifog',\n logo: 'optifog-logo',\n background: optifogCard,\n products: [\n {\n id: 'optifog',\n label: 'Optifog',\n smallTitle: 'Lorem ipsum dolor sit amet',\n description: \"Consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum\",\n enabled: true,\n price:0,\n benefits: [\n {\n icon: \"fog-rep\",\n label: \"pair_1_tab_del_p1__fog_repellence\",\n type: 1,\n },\n {\n icon: \"scratch-icon\",\n label: \"pair_1_tab_del_p1__scratch_resistant\",\n type: 1,\n },\n {\n icon: \"uv-protect\",\n label: \"pair_1_tab_del_2_p1_double_sided_uv_protection.\",\n type: 1,\n },\n {\n icon: \"optimal-clarity\",\n label: \"pair_1_tab_del_2_p1_outdoor_sun_glare_reduction\",\n type: 2,\n },\n {\n icon: \"dust-repel\",\n label: \"pair_1_tab_del_p1__dust_repellent\",\n type: 2,\n },\n ]\n },\n ],\n \n },\n ]\n },\n]\n\n\nconst baseAssetURL = (url: string) => {\n return `${settings[settings.environment].demoAssetsUrl}${url}`;\n}\nconst newAssetURL = (url: string) => {\n return `${settings[settings.environment].newAssetsUrl}${url}`;\n}\n\n\nconst LENS_DEMO: iLensDemo[] = [\n {\n demo: 'scooter', //pictos\n demoType: ProductDemoType.SLIDER_VIDEO,\n products: [\n {\n id: 'varilux_x_series',\n label: 'Varilux X Series',\n asset: baseAssetURL('Varilux/03_Varilux X Series/Varilux_Xseries_Trottinette_ESSILOR.mp4'),\n description: ['demo_demo_varilux_xser_l1', 'demo_demo_varilux_xser_l2', 'demo_demo_varilux_xser_l3']\n },\n {\n id: 'standard',\n label: 'packaged_offer_popup_po_popup_standard',\n asset: baseAssetURL('Varilux/03_Varilux X Series/Varilux_Xseries_Trottinette_STANDARD.mp4'),\n }\n ]\n },\n\t{\n\t\tdemo: 'scooter', //pictos for xr to show in product demo\n\t\tdemoType: ProductDemoType.SLIDER_VIDEO,\n\t\tproducts: [\n\t\t {\n\t\t\tid: 'varilux_xr_series',\n\t\t\tlabel: 'Varilux XR Series',\n\t\t\tasset: newAssetURL('Varilux/03_Varilux X Series/Varilux_Xseries_Trottinette_ESSILOR.mp4'),\n\t\t\tdescription: ['demo_demo_varilux_xser_l1', 'demo_demo_varilux_xser_l2', 'demo_demo_varilux_xser_l3']\n\t\t },\n\t\t {\n\t\t\tid: 'standard',\n\t\t\tlabel: 'packaged_offer_popup_po_popup_standard',\n\t\t\tasset: newAssetURL('Varilux/03_Varilux X Series/Varilux_Xseries_Trottinette_STANDARD.mp4'),\n\t\t }\n\t\t]\n\t },\n {\n demo: 'stairs', //pictos\n demoType: ProductDemoType.SLIDER_VIDEO,\n products: [\n {\n id: 'varilux_e_series',\n label: 'Varilux E Series',\n asset: baseAssetURL('Varilux/04_Varilux E Series/Varilux_Eseries_Urban Stairs_ESSILOR.mp4'),\n description: ['demo_demo_varilux_eser_l1','demo_demo_varilux_eser_l2', 'demo_demo_varilux_eser_l3']\n },\n {\n id: 'standard',\n label: 'packaged_offer_popup_po_popup_standard',\n asset: baseAssetURL('Varilux/04_Varilux E Series/Varilux_Eseries_Urban Stairs_STANDARD.mp4'),\n }\n ]\n },\n // {\n // demo: 'in_front_of_my_computer',\n // demoType: ProductDemoType.SLIDER_VIDEO,\n // products: [\n // {\n // id: 'varilux_x_series',\n // label: 'Varilux X Series',\n // asset: xSeriesInFrontOfComputer,\n // description: ['demo_demo_varilux_xser_l1', 'demo_demo_varilux_xser_l2', 'demo_demo_varilux_xser_l3']\n // },\n // {\n // id: 'varilux_e_series',\n // label: 'Varilux E Series',\n // asset: eSeriesInFrontOfComputer,\n // description: ['demo_demo_varilux_eser_l1','demo_demo_varilux_eser_l2', 'demo_demo_varilux_eser_l3']\n // },\n // {\n // id: 'varilux_physio_30',\n // label: 'Varilux Physio 3.0',\n // asset: physioInFrontOfComputer,\n // description: ['demo_demo_varilux_physio_l1','demo_demo_varilux_physio_l2','demo_demo_varilux_physio_l3']\n // },\n // {\n // id: 'varilux_liberty_30',\n // label: 'Varilux Liberty 3.0',\n // asset: libertyInFrontOfComputer,\n // description: ['demo_demo_varilux_lib_l1','demo_demo_varilux_lib_l2']\n // },\n // {\n // id: 'varilux_comfort_max',\n // label: 'Varilux Comfort max',\n // asset: comfortMaxInFrontOfComputer,\n // description: ['demo_demo_varilux_comf_max_l1','demo_demo_varilux_comf_max_l2','demo_demo_varilux_comf_max_l3']\n // },\n // {\n // id: 'varilux_comfort_30',\n // label: 'Varilux Comfort 3.0',\n // asset: comfortInFrontOfComputer,\n // description: ['demo_demo_varilux_c3.0_l1','demo_demo_varilux_c3.0_l2','demo_demo_varilux_c3.0_l3']\n // },\n // {\n // id: 'standard',\n // label: 'Standard progressive lens',\n // asset: standardInFrontOfComputer,\n // },\n // ]\n // },\n {\n demo: 'journalist', //pictos\n demoType: ProductDemoType.SLIDER_VIDEO,\n products: [\n {\n id: 'varilux_comfort_max',\n label: 'Varilux® Comfort Max',\n asset: baseAssetURL('Varilux/06_Varilux Comfort Max/ComfortMax_Journalist_ESSILOR.mp4'),\n description: ['demo_demo_varilux_comf_max_l1','demo_demo_varilux_comf_max_l2','demo_demo_varilux_comf_max_l3']\n },\n {\n id: 'standard',\n label: 'packaged_offer_popup_po_popup_standard',\n asset: baseAssetURL('Varilux/06_Varilux Comfort Max/ComfortMax_Journalist_STANDARD.mp4')\n }\n ]\n },\n {\n demo: 'day',\n demoType: ProductDemoType.SLIDER_VIDEO,\n products: [\n {\n id: 'varilux_road_pilot_ii',\n label: 'Varilux Road Pilot® II',\n asset: baseAssetURL('Varilux/11_Varilux Roadpilot/Varilux_Roadpilot_Jour_ESSILOR.mp4'),\n description: ['demo_demo_varilux_roadp_l1','demo_demo_varilux_roadp_l2','demo_demo_varilux_roadp_l3']\n },\n {\n id: 'standard',\n label: 'packaged_offer_popup_po_popup_standard',\n asset: baseAssetURL('Varilux/11_Varilux Roadpilot/Varilux_Roadpilot_Jour_STANDARD.mp4')\n }\n ]\n },\n {\n demo: 'night', // pictos\n demoType: ProductDemoType.SLIDER_VIDEO,\n products: [\n {\n id: 'varilux_road_pilot_ii',\n label: 'Varilux Road Pilot® II',\n asset: baseAssetURL('Varilux/11_Varilux Roadpilot/Varilux_Roadpilot_Nuit_ESSILOR.mp4'),\n description: ['demo_demo_varilux_roadp_l1','demo_demo_varilux_roadp_l2','demo_demo_varilux_roadp_l3']\n },\n {\n id: 'standard',\n label: 'packaged_offer_popup_po_popup_standard',\n asset: baseAssetURL('Varilux/11_Varilux Roadpilot/Varilux_Roadpilot_Nuit_STANDARD.mp4')\n }\n ]\n },\n {\n demo: 'field-of-vision',\n demoType: ProductDemoType.SLIDER_IMAGE,\n is360: true,\n products: [\n {\n id: 'varilux_x_series',\n label: 'Varilux X Series',\n description: ['demo_demo_varilux_xser_l1', 'demo_demo_varilux_xser_l2', 'demo_demo_varilux_xser_l3'],\n\n drawline: {\n left:{\n blur: xseriesBlur,\n line: xseriesLine\n },\n right:{\n blur: xseriesBlur,\n line: xseriesLine\n }\n }\n },\n {\n id: 'varilux_e_series',\n label: 'Varilux E Series',\n asset: experioCard,\n description: ['demo_demo_varilux_eser_l1','demo_demo_varilux_eser_l2', 'demo_demo_varilux_eser_l3'],\n\n drawline: {\n left:{\n blur: eseriesBlur,\n line: eseriesLine\n },\n right:{\n blur: eseriesBlur,\n line: eseriesLine\n }\n }\n },\n {\n id: 'varilux_physio_30',\n label: 'Varilux Physio 3.0',\n asset: blueUVCard,\n description: ['demo_demo_varilux_physio_l1','demo_demo_varilux_physio_l2','demo_demo_varilux_physio_l3'],\n\n drawline: {\n left:{\n blur: physioBlur,\n line: physioLine\n },\n right:{\n blur: physioBlur,\n line: physioLine\n }\n }\n },\n {\n id: 'varilux_liberty_30',\n label: 'Varilux Liberty 3.0',\n asset: eyezenCard,\n description: ['demo_demo_varilux_lib_l1','demo_demo_varilux_lib_l2'],\n\n drawline: {\n left:{\n blur: libertyBlur,\n line: libertyLine\n },\n right:{\n blur: libertyBlur,\n line: libertyLine\n }\n }\n },\n {\n id: 'varilux_comfort_max',\n label: 'Varilux® Comfort Max',\n asset: crizalCard,\n description: ['demo_demo_varilux_comf_max_l1','demo_demo_varilux_comf_max_l2','demo_demo_varilux_comf_max_l3'],\n\n drawline: {\n left:{\n blur: comformaxBlur,\n line: comformaxLine\n },\n right:{\n blur: comformaxBlur,\n line: comformaxLine\n }\n }\n },\n {\n id: 'varilux_comfort_30',\n label: 'Varilux Comfort 3.0',\n asset: optifogCard,\n description: ['demo_demo_varilux_c3.0_l1','demo_demo_varilux_c3.0_l2','demo_demo_varilux_c3.0_l3'],\n\n drawline: {\n left:{\n blur: comfor3Blur,\n line: comfor3Line\n },\n right:{\n blur: comfor3Blur,\n line: comfor3Line\n }\n }\n },\n {\n id: 'varilux_s_series',\n label: 'Varilux S Series',\n asset: transitionsCard,\n\n drawline: {\n left:{\n blur: sseriesBlur,\n line: sseriesLine\n },\n right:{\n blur: sseriesBlur,\n line: sseriesLine\n }\n }\n },\n {\n id: 'standard',\n label: 'packaged_offer_popup_po_popup_standard',\n\n drawline: {\n left:{\n blur: standardBlur,\n line: standardLine\n },\n right:{\n blur: standardBlur,\n line: standardLine\n }\n }\n },\n ]\n },\n {\n demo: 'benefit',\n demoType: ProductDemoType.DIVIDER_VIDEO,\n products: [\n {\n id: 'varilux_x_series',\n label: 'Varilux X Series',\n asset:newAssetURL('Varilux/13_Varilux%20Benefits/VARILUX_X_NEW_DEMO.mp4'),\n description: ['demo_demo_varilux_xser_l1', 'demo_demo_varilux_xser_l2', 'demo_demo_varilux_xser_l3']\n },\n {\n id: 'standard',\n label: 'packaged_offer_popup_po_popup_standard',\n asset:newAssetURL('Varilux/13_Varilux%20Benefits/VARILUX_X_NEW_DEMO.mp4'),\n description: ['demo_demo_varilux_xser_l1', 'demo_demo_varilux_xser_l2', 'demo_demo_varilux_xser_l3']\n },\n ]\n },\n {\n demo:'competitor',\n demoType:ProductDemoType.SIDE_BY_SIDE_VIDEO,\n products:[\n {\n id: 'varilux_physio_30',\n label: 'Varilux Physio 3.0',\n asset: newAssetURL('Varilux/08_Varilux%20Physio/Varilux_Physio_Demo_New_.mp4'),\n description: ['demo_demo_varilux_physio_l1','demo_demo_varilux_physio_l2','demo_demo_varilux_physio_l3']\n },\n {\n id: 'standard',\n label: 'packaged_offer_popup_po_popup_competitor',\n asset: newAssetURL('Varilux/08_Varilux%20Physio/Varilux_Physio_Demo_New_Competitor.mp4'),\n },\n ]\n },\n {\n demo:'competitor2',\n demoType:ProductDemoType.DIVIDER_VIDEO,\n products:[\n {\n id: 'varilux_liberty_30',\n label: 'Varilux Liberty 3.0',\n asset: newAssetURL('Varilux/14_Varilux%20Liberty/Varilux_Liberty_Demo_New.mp4'),\n description: ['demo_demo_varilux_lib_l1','demo_demo_varilux_lib_l2']\n },\n {\n id: 'standard',\n label: 'packaged_offer_popup_po_popup_competitor',\n asset: newAssetURL('Varilux/14_Varilux%20Liberty/Varilux_Liberty_Demo_New.mp4'),\n },\n ]\n },\n {\n demo: 'stairs_effect', // pictos\n demoType: ProductDemoType.SLIDER_VIDEO,\n products: [\n {\n id: 'varilux_x_series',\n label: 'Varilux X Series',\n asset: baseAssetURL('Varilux/02_Varilux Transversal_2/Varilux_Stairs_Xseries.mp4'),\n description: ['demo_demo_varilux_xser_l1', 'demo_demo_varilux_xser_l2', 'demo_demo_varilux_xser_l3']\n },\n {\n id: 'varilux_s_series',\n label: 'Varilux® S™ Series',\n asset: baseAssetURL('Varilux/02_Varilux Transversal_2/Varilux_Stairs_Sseries.mp4'),\n // description: 'varilux_s_series_desc_key'\n },\n {\n id: 'varilux_physio_30',\n label: 'Varilux Physio 3.0',\n asset: baseAssetURL('Varilux/02_Varilux Transversal_2/Varilux_Stairs_Physio.mp4'),\n description: ['demo_demo_varilux_physio_l1','demo_demo_varilux_physio_l2','demo_demo_varilux_physio_l3']\n },\n {\n id: 'varilux_liberty_30',\n label: 'Varilux Liberty 3.0',\n asset: baseAssetURL('Varilux/02_Varilux Transversal_2/Varilux_Stairs_Liberty.mp4'),\n description: ['demo_demo_varilux_lib_l1','demo_demo_varilux_lib_l2']\n },\n {\n id: 'varilux_comfort_max',\n label: 'Varilux® Comfort Max',\n asset: baseAssetURL('Varilux/02_Varilux Transversal_2/Varilux_Stairs_ComfortMax.mp4'),\n description: ['demo_demo_varilux_comf_max_l1','demo_demo_varilux_comf_max_l2','demo_demo_varilux_comf_max_l3']\n },\n {\n id: 'varilux_comfort_30',\n label: 'Varilux Comfort 3.0',\n asset: baseAssetURL('Varilux/02_Varilux Transversal_2/Varilux_Stairs_Comfort3.mp4'),\n description: ['demo_demo_varilux_c3.0_l1','demo_demo_varilux_c3.0_l2','demo_demo_varilux_c3.0_l3']\n },\n {\n id: 'varilux_e_series',\n label: 'Varilux E Series',\n asset: baseAssetURL('Varilux/02_Varilux Transversal_2/Varilux_Stairs_Eseries.mp4'),\n description: ['demo_demo_varilux_eser_l1','demo_demo_varilux_eser_l2', 'demo_demo_varilux_eser_l3'],\n }, \n {\n id: 'standard',\n label: 'packaged_offer_popup_po_popup_standard',\n asset: baseAssetURL('Varilux/02_Varilux Transversal_2/Varilux_Stairs_STANDARD.mp4'),\n },\n ]\n },\n {\n demo: 'kitchen',\n demoType: ProductDemoType.SIDE_BY_SIDE_VIDEO,\n products: [\n {\n id: 'crizal_rock',\n label: 'Crizal Rock',\n asset: baseAssetURL('Crizal/09_Crizal%20Rock/Crizal_Rock_ESSILOR.mp4'),\n description: ['demo_demo_crizal_rock_l1', 'demo_demo_crizal_rock_l2', 'demo_demo_crizal_rock_l3', 'demo_demo_crizal_rock_l4']\n },\n {\n id: 'standard',\n label: 'packaged_offer_popup_po_popup_standard',\n asset: baseAssetURL('Crizal/09_Crizal%20Rock/Crizal_Rock_STANDARD.mp4')\n }\n ]\n },\n {\n demo: 'family-scene', // pictos\n demoType: ProductDemoType.SEE_THROUGH_VIDEO,\n products: [\n {\n id: 'eye_protect_system',\n label: 'Eye Protect System',\n asset: baseAssetURL('Blue UV Filter System/01_Eye Protect System_1/BlueUVfilter_EPS_Protect_ESSILOR.mp4'),\n description: [\n 'demo_demo_eps_l1',\n 'demo_demo_eps_l2',\n 'demo_demo_eps_l3',\n 'demo_new_sellout_eps4'\n ]\n },\n {\n id: 'standard',\n label: 'packaged_offer_popup_po_popup_standard',\n asset: baseAssetURL('Blue UV Filter System/01_Eye Protect System_1/BlueUVfilter_EPS_Protect_STANDARD.mp4')\n }\n ]\n },\n {\n demo: 'fog-on-pov',\n demoType: ProductDemoType.SLIDER_VIDEO,\n products: [\n {\n id: 'optifog',\n label: 'Optifog',\n asset: baseAssetURL('Optifog/Optifog_ESSILOR.mp4'),\n description: ['demo_demo_optifog_l1','demo_demo_optifog_l2','demo_demo_optifog_l3']\n },\n {\n id: 'standard',\n label: 'packaged_offer_popup_po_popup_standard',\n asset: baseAssetURL('Optifog/Optifog_STANDARD.mp4')\n }\n ]\n },\n\n // CHECK\n {\n demo: 'jungle-video',\n demoType: ProductDemoType.SIDE_BY_SIDE_VIDEO,\n products: [\n {\n id: 'crizal_easy',\n label: 'Crizal Easy',\n asset: baseAssetURL('Crizal/Crizal_Easy/CRIZAL_Easy_Essilor.mp4'),\n description: ['demo_demo_crizal_easy_l1', 'demo_demo_crizal_easy_l2', 'demo_demo_crizal_easy_l3', 'demo_demo_crizal_easy_l4']\n },\n {\n id: 'standard',\n label: 'packaged_offer_popup_po_popup_standard',\n asset: baseAssetURL('Crizal/Crizal_Easy/Crizal_Easy_Standard.mp4')\n }\n ]\n },\n \n {\n demo: 'packshot-frame',\n demoType: ProductDemoType.SIDE_BY_SIDE_VIDEO,\n products: [\n {\n id: 'crizal_sapphire',\n label: 'Crizal Sapphire',\n // asset: baseAssetURL('Crizal/Crizal_Sapphire/Packshot_ESSILOR (1).mp4'),\n asset: baseAssetURL('Crizal/Crizal_Sapphire/CRIZAL_Sapphire_ESSILOR.mp4'),\n description: ['demo_demo_crizal_sapp_l1', 'demo_demo_crizal_sapp_l2', 'demo_demo_crizal_sapp_l3', 'demo_demo_crizal_sapp_l4', 'demo_demo_crizal_sapp_l5']\n },\n {\n id: 'standard',\n label: 'packaged_offer_popup_po_popup_standard',\n // asset: baseAssetURL('Crizal/Crizal_Sapphire/Packshot_STANDARD.mp4')\n asset: baseAssetURL('Crizal/Crizal_Sapphire/CRIZAL_Sapphire_STANDARD.mp4')\n }\n ]\n },\n\n {\n demo: 'playing-video-games', ////pictos\n demoType: ProductDemoType.DIVIDER_VIDEO,\n products: [\n {\n id: 'eye_protect_system',\n label: 'Eye Protect System',\n asset: baseAssetURL('Blue UV Filter System/02_Eye Protect System_2/BlueUVfilter_EPS_Protect_2_ESSILOR.mp4'),\n description: [\n 'demo_demo_eps_l1',\n 'demo_demo_eps_l2',\n 'demo_demo_eps_l3',\n 'demo_new_sellout_eps4'\n ] \n },\n {\n id: 'standard',\n label: 'packaged_offer_popup_po_popup_standard',\n asset: baseAssetURL('Blue UV Filter System/02_Eye Protect System_2/BlueUVfilter_EPS_Protect_2_STANDARD.mp4')\n }\n ]\n },\n\n {\n demo: 'spectrum-of-light', //pictos\n demoType: ProductDemoType.SEE_THROUGH_VIDEO,\n products: [\n {\n id: 'blue_uv_capture',\n label: 'Blue UV Filter System',\n asset: baseAssetURL('Blue UV Filter System/03_Blue UV Capture/BlueUVfilter_BlueUVcapture_ESSILOR.mp4'),\n description: [\n 'demo_new_sellout_blue_uv1',\n 'demo_new_sellout_blue_uv2',\n 'demo_new_sellout_blue_uv3',\n 'demo_new_sellout_blue_uv4'\n ]\n },\n {\n id: 'standard',\n label: 'demo_new_standard_bluecut',\n asset: baseAssetURL('Blue UV Filter System/03_Blue UV Capture/BlueUVfilter_BlueUVcapture_STANDARD.mp4')\n }\n ]\n },\n {\n demo: 'eyezen-in-front-of-computer2',\n demoType: ProductDemoType.SLIDER_VIDEO,\n products: [\n {\n id: 'eyezen_boost',\n label: 'Eyezen® Boost',\n asset: newAssetURL('Eyezen/03_Eyezen Boost/Eyezen_Boost_Essilor2.mp4'),\n description: [\n 'demo_demo_eyezen_b_l1', \n 'demo_demo_eyezen_b_l2', \n 'demo_demo_eyezen_b_l3'\n ]\n },\n {\n id: 'standard',\n label: 'packaged_offer_popup_po_popup_standard',\n asset: newAssetURL('Eyezen/03_Eyezen Boost/Eyezen_Boost_Standard2.mp4')\n }\n ],\n children: [\n {\n demo: 'eyezen-in-front-of-computer-night2',\n parent: 'eyezen-in-front-of-computer3',\n demoType: ProductDemoType.SLIDER_VIDEO,\n compareByDefault: true,\n withSellout: true,\n label: 'Eyezen®',\n products: [\n {\n id: 'eyezen_boost',\n label: 'Eyezen®',\n asset: newAssetURL('Eyezen/01_Eyezen%20Transversal/EYEZEN_Transverse_Essilor2.mp4'),\n description: ['demo_demo_eyezen_b_l1', 'demo_demo_eyezen_b_l2', 'demo_demo_eyezen_b_l3']\n },\n {\n id: 'standard',\n label: 'packaged_offer_popup_po_popup_standard',\n asset: newAssetURL('Eyezen/01_Eyezen%20Transversal/EYEZEN_Transverse_Standard2.mp4'),\n }\n ]\n }\n ]\n },\n {\n demo: 'looking-at-smartphone2',\n demoType: ProductDemoType.SLIDER_VIDEO,\n products: [\n {\n id: 'eyezen_start',\n label: 'Eyezen® Start',\n asset: newAssetURL('Eyezen/02_Eyezen_Start/Eyezen_Start_Essilor2.mp4'),\n description: [\n 'demo_demo_eyezen_start_l1', \n 'demo_demo_eyezen_start_l2', \n 'demo_demo_eyezen_start_l3'\n ]\n },\n {\n id: 'standard',\n label: 'packaged_offer_popup_po_popup_standard',\n asset: newAssetURL('Eyezen/02_Eyezen_Start/Eyezen_Start_Standard2.mp4')\n }\n ],\n\n children: [\n {\n demo: 'looking-at-smartphone-night2',\n parent: 'looking-at-smartphone2',\n compareByDefault: true,\n demoType: ProductDemoType.SLIDER_VIDEO,\n label: 'Eyezen®',\n withSellout: true,\n products: [\n {\n id: 'eyezen_start',\n label: 'Eyezen®',\n asset: newAssetURL('Eyezen/01_Eyezen%20Transversal/EYEZEN_Transverse_Essilor2.mp4'),\n description: ['demo_demo_eyezen_start_l1', 'demo_demo_eyezen_start_l2', 'demo_demo_eyezen_start_l3']\n },\n {\n id: 'standard',\n label: 'packaged_offer_popup_po_popup_standard',\n asset: newAssetURL('Eyezen/01_Eyezen%20Transversal/EYEZEN_Transverse_Standard2.mp4')\n }\n ]\n }\n ]\n },\n\n // {\n // demo: 'eyezen-in-front-of-computer',\n // demoType: ProductDemoType.SLIDER_VIDEO,\n // products: [\n // // {\n // // id: 'eyezen_boost',\n // // label: 'Eyezen® Boost',\n // // asset: baseAssetURL('Eyezen/03_Eyezen Boost/Eyezen_Boost_ESSILOR.mp4'),\n // // description: [\n // // 'demo_demo_eyezen_b_l1', \n // // 'demo_demo_eyezen_b_l2', \n // // 'demo_demo_eyezen_b_l3'\n // // ]\n // // },\n // {\n // id: 'standard',\n // label: 'packaged_offer_popup_po_popup_standard',\n // asset: baseAssetURL('Eyezen/03_Eyezen Boost/Eyezen_Boost_STANDARD.mp4')\n // }\n // ],\n // children: [\n // {\n // demo: 'eyezen-in-front-of-computer-night',\n // parent: 'eyezen-in-front-of-computer',\n // demoType: ProductDemoType.SLIDER_VIDEO,\n // compareByDefault: true,\n // withSellout: true,\n // label: 'Eyezen®',\n // products: [\n // {\n // id: 'eyezen_boost',\n // label: 'Eyezen®',\n // asset: baseAssetURL('Eyezen/02_Eyezen_Start/Eyezen_Start_EYEZEN_NIGHT.mp4'),\n // description: ['demo_demo_eyezen_b_l1', 'demo_demo_eyezen_b_l2', 'demo_demo_eyezen_b_l3']\n // },\n // {\n // id: 'standard',\n // label: 'packaged_offer_popup_po_popup_standard',\n // asset: baseAssetURL('Eyezen/02_Eyezen_Start/Eyezen_Start_STANDARD_NIGHT.mp4'),\n // }\n // ]\n // }\n // ]\n // },\n\n // {\n // demo: 'looking-at-smartphone',\n // demoType: ProductDemoType.SLIDER_VIDEO,\n // products: [\n // // {\n // // id: 'eyezen_start',\n // // label: 'Eyezen® Start',\n // // asset: baseAssetURL('Eyezen/02_Eyezen_Start/Eyezen_Start_EYEZEN.mp4'),\n // // description: [\n // // 'demo_demo_eyezen_start_l1', \n // // 'demo_demo_eyezen_start_l2', \n // // 'demo_demo_eyezen_start_l3'\n // // ]\n // // },\n // {\n // id: 'standard',\n // label: 'packaged_offer_popup_po_popup_standard',\n // asset: baseAssetURL('Eyezen/02_Eyezen_Start/Eyezen_Start_STANDARD.mp4')\n // }\n // ],\n\n // children: [\n // {\n // demo: 'looking-at-smartphone-night',\n // parent: 'looking-at-smartphone',\n // compareByDefault: true,\n // demoType: ProductDemoType.SLIDER_VIDEO,\n // label: 'Eyezen®',\n // withSellout: true,\n // products: [\n // {\n // id: 'eyezen_start',\n // label: 'Eyezen®',\n // asset: baseAssetURL('Eyezen/02_Eyezen_Start/Eyezen_Start_EYEZEN_NIGHT.mp4'),\n // description: ['demo_demo_eyezen_start_l1', 'demo_demo_eyezen_start_l2', 'demo_demo_eyezen_start_l3']\n // },\n // {\n // id: 'standard',\n // label: 'packaged_offer_popup_po_popup_standard',\n // asset: baseAssetURL('Eyezen/02_Eyezen_Start/Eyezen_Start_STANDARD_NIGHT.mp4')\n // }\n // ]\n // }\n // ]\n // },\n\n {\n demo: 'essidrive-day',\n demoType: ProductDemoType.SLIDER_VIDEO,\n products: [\n {\n id: 'essidrive',\n label: 'Essidrive',\n asset: baseAssetURL('Essidrive/Essidrive_Jour_ESSILOR.mp4'),\n description: ['demo_demo_essidrive']\n },\n {\n id: 'standard',\n label: 'packaged_offer_popup_po_popup_standard',\n asset: baseAssetURL('Essidrive/Essidrive_Jour_STANDARD.mp4')\n }\n ]\n },\n\n {\n demo: 'essidrive-night', //pictos\n demoType: ProductDemoType.SLIDER_VIDEO,\n products: [\n {\n id: 'essidrive',\n label: 'Essidrive',\n asset: baseAssetURL('Essidrive/Essidrive_Nuit_ESSILOR.mp4'),\n description: ['demo_demo_essidrive']\n },\n {\n id: 'standard',\n label: 'packaged_offer_popup_po_popup_standard',\n asset: baseAssetURL('Essidrive/Essidrive_Nuit_STANDARD.mp4')\n }\n ]\n },\n\n {\n demo: 'sun-outside',\n demoType: ProductDemoType.SLIDER_VIDEO,\n products: [\n {\n id: 'varilux_sunmax',\n label: 'Varilux® SunMax',\n asset: baseAssetURL('Varilux/12_Varilux SunMax/Varilux_SunMax_BROWN_essilor.mp4'),\n // description : []\n },\n {\n id: 'standard',\n label: 'packaged_offer_popup_po_popup_standard',\n asset: baseAssetURL('Varilux/12_Varilux SunMax/Varilux_SunMax_BROWN_standard.mp4')\n }\n ]\n },\n {\n demo: 'far-vision',\n demoType: ProductDemoType.SLIDER_VIDEO,\n products: [\n {\n id: 'eyezen_kids',\n label: 'Eyezen® Kids',\n asset: baseAssetURL('Eyezen/04_Eyezen Kids/Eyezen Kids - Eyezen Kids lens demo - FV.mp4'),\n description: [\n 'demo_new_sellout_eyezen_kids1',\n 'demo_new_sellout_eyezen_kids2', \n 'demo_new_sellout_eyezen_kids3', \n 'demo_new_sellout_eyezen_kids4',\n 'demo_new_sellout_eyezen_kids5'\n ]\n },\n {\n id: 'standard',\n label: 'packaged_offer_popup_po_popup_standard',\n asset: baseAssetURL('Eyezen/04_Eyezen Kids/Eyezen Kids - STANDARD SV LENS Demo - FV.mp4'),\n\n }\n ]\n },\n\n // no pictos\n // school\n // pool\n // near vision\n\n {\n demo: 'bag-scene',\n demoType: ProductDemoType.VIDEO,\n products: [\n {\n id: 'crizal_sun_xprotect',\n label: 'Crizal Sun',\n asset: baseAssetURL('Crizal/CompanionTool/Scene Videos/BagSceneV2.mp4'),\n description: ['demo_demo_crizal_sun_xp_l1','demo_demo_crizal_sun_xp_l2', 'demo_demo_crizal_sun_xp_l3']\n },\n ]\n },\n {\n demo: 'beach-scene',\n demoType: ProductDemoType.VIDEO,\n products: [\n {\n id: 'crizal_sun_xprotect',\n label: 'Crizal Sun',\n asset: baseAssetURL('Crizal/CompanionTool/Scene Videos/BeachSceneV2.mp4'),\n description: ['demo_demo_crizal_sun_xp_l1','demo_demo_crizal_sun_xp_l2', 'demo_demo_crizal_sun_xp_l3']\n },\n ]\n },\n {\n demo: 'tumble-scene',\n demoType: ProductDemoType.VIDEO,\n products: [\n {\n id: 'crizal_sun_xprotect',\n label: 'Crizal Sun',\n asset: baseAssetURL('Crizal/CompanionTool/Scene Videos/TumbleScene.mp4'),\n description: ['demo_demo_crizal_sun_xp_l1','demo_demo_crizal_sun_xp_l2', 'demo_demo_crizal_sun_xp_l3']\n },\n ]\n },\n {\n demo: 'wiping-scene',\n demoType: ProductDemoType.VIDEO,\n products: [\n {\n id: 'crizal_sun_xprotect',\n label: 'Crizal Sun',\n asset: baseAssetURL('Crizal/CompanionTool/Scene Videos/WipingScene2.mp4'),\n description: ['demo_demo_crizal_sun_xp_l1','demo_demo_crizal_sun_xp_l2', 'demo_demo_crizal_sun_xp_l3']\n },\n ]\n },\n {\n demo: 'near-vision',\n demoType: ProductDemoType.SLIDER_VIDEO,\n products: [\n {\n id: 'eyezen_kids',\n label: 'Eyezen® Kids',\n asset: baseAssetURL('Eyezen/04_Eyezen Kids/Eyezen Kids - Eyezen Kids lens demo - NV.mp4'),\n description: ['demo_demo_eyezen_kids_l1','demo_demo_eyezen_kids_l2', 'demo_demo_eyezen_kids_l3']\n },\n {\n id: 'standard',\n label: 'packaged_offer_popup_po_popup_standard',\n asset: baseAssetURL('Eyezen/04_Eyezen Kids/Eyezen Kids - STANDARD SV LENS Demo - NV.mp4'),\n }\n ]\n },\n {\n demo: 'smartphone',\n demoType: ProductDemoType.SEE_THROUGH_VIDEO,\n products: [\n {\n id: 'crizal_prevencia',\n label: 'Crizal Prevencia',\n // Note: switch with standard on API integration\n asset: baseAssetURL('Crizal/05_Crizal Prevencia/Crizal_Prevencia_STANDARD.mp4'),\n description: ['demo_demo_crizal_prev_l1','demo_demo_crizal_prev_l2','demo_demo_crizal_prev_l3']\n },\n {\n id: 'standard',\n label: 'packaged_offer_popup_po_popup_standard',\n asset: baseAssetURL('Crizal/05_Crizal Prevencia/Crizal_Prevencia_ESSILOR.mp4'),\n\n }\n ]\n },\n {\n demo: 'glare',\n demoType: ProductDemoType.SLIDER_VIDEO,\n products: [\n {\n id: 'crizal_drive',\n label: 'Crizal Drive',\n asset: baseAssetURL('Crizal/06_Crizal Drive/Crizal_drive_Glare_ESSILOR.mp4'),\n description: ['demo_demo__crizal_drive_l1','demo_demo__crizal_drive_l2','demo_demo__crizal_drive_l3','demo_demo__crizal_drive_l4']\n },\n {\n id: 'standard',\n label: 'packaged_offer_popup_po_popup_standard',\n asset: baseAssetURL('Crizal/06_Crizal Drive/Crizal_drive_Glare_STANDARD.mp4')\n }\n ]\n },\n {\n demo: 'reflections',\n demoType: ProductDemoType.SLIDER_VIDEO,\n products: [\n {\n id: 'crizal_drive',\n label: 'Crizal Drive',\n asset: baseAssetURL('Crizal/06_Crizal Drive/Crizal_drive_Reflections_ESSILOR.mp4'),\n description: ['demo_demo__crizal_drive_l1','demo_demo__crizal_drive_l2','demo_demo__crizal_drive_l3','demo_demo__crizal_drive_l4']\n },\n {\n id: 'standard',\n label: 'packaged_offer_popup_po_popup_standard',\n asset: baseAssetURL('Crizal/06_Crizal Drive/Crizal_drive_Reflections_STANDARD.mp4')\n }\n ]\n },\n\n {\n demo: 'room', \n demoType: ProductDemoType.SIDE_BY_SIDE_VIDEO,\n products: [\n {\n id: 'varilux_digitime',\n label: 'demo_var_digi_near',\n asset: baseAssetURL('Varilux/10_Digitime/VARILUX_DIGITIME_Near.mp4'),\n },\n {\n id: 'standard',\n label: \"demo_var_digi__mid\",\n asset: baseAssetURL('Varilux/10_Digitime/VARILUX_DIGITIME_Mid.mp4'),\n },\n {\n id: 'standard1',\n label: \"demo_var_digi__room\",\n asset: baseAssetURL('Varilux/10_Digitime/VARILUX_DIGITIME_Room.mp4'),\n },\n ]\n },\n {\n demo: 'video-advertisement-gen-8', //pictos\n demoType: ProductDemoType.SIDE_BY_SIDE_VIDEO,\n products: [\n {\n id: 'transitions_signature_gen_8',\n label: 'lens_propo_colors_green',\n asset: baseAssetURL('Transitions/green.mp4'),\n description: ['demo_demo_trans__gen_8_l1','demo_demo_trans__gen_8_l2', 'demo_demo_trans__gen_8_l3'],\n colorID: 'lensTransitionGreen'\n },\n {\n id: 'standard',\n label: \"lens_propo_colors_brown\",\n asset: baseAssetURL('Transitions/brown-new.mp4'),\n description: ['demo_demo_trans__gen_8_l1','demo_demo_trans__gen_8_l2', 'demo_demo_trans__gen_8_l3'],\n colorID: 'lensTransitionBrown'\n },\n {\n id: 'standard1',\n label: \"lens_propo_colors_grey\",\n asset: baseAssetURL('Transitions/grey-new.mp4'),\n description: ['demo_demo_trans__gen_8_l1','demo_demo_trans__gen_8_l2', 'demo_demo_trans__gen_8_l3'],\n colorID: 'lensTransitionGrey'\n },\n ]\n },\n {\n demo: 'video-advertisement-gen-8', //pictos\n demoType: ProductDemoType.SIDE_BY_SIDE_VIDEO,\n products: [\n {\n id: 'transitions_signature_gen_8_iconic',\n label: 'lens_propo_colors_green',\n asset: baseAssetURL('Transitions/green.mp4'),\n description: ['demo_demo_trans__gen_8_l1','demo_demo_trans__gen_8_l2', 'demo_demo_trans__gen_8_l3'],\n colorID: 'lensTransitionGreen'\n },\n {\n id: 'standard',\n label: \"lens_propo_colors_brown\",\n asset: baseAssetURL('Transitions/brown-new.mp4'),\n description: ['demo_demo_trans__gen_8_l1','demo_demo_trans__gen_8_l2', 'demo_demo_trans__gen_8_l3'],\n colorID: 'lensTransitionBrown'\n },\n {\n id: 'standard1',\n label: \"lens_propo_colors_grey\",\n asset: baseAssetURL('Transitions/grey-new.mp4'),\n description: ['demo_demo_trans__gen_8_l1','demo_demo_trans__gen_8_l2', 'demo_demo_trans__gen_8_l3'],\n colorID: 'lensTransitionGrey'\n },\n ]\n },\n {\n demo: 'video-advertisement-gen-8', //pictos\n demoType: ProductDemoType.SIDE_BY_SIDE_VIDEO,\n products: [\n {\n id: 'transitions_signature_gen_8_style',\n label: 'lens_propo_colors_green',\n asset: baseAssetURL('Transitions/green.mp4'),\n description: ['demo_demo_trans__gen_8_l1','demo_demo_trans__gen_8_l2', 'demo_demo_trans__gen_8_l3'],\n colorID: 'lensTransitionGreen'\n },\n {\n id: 'standard',\n label: \"lens_propo_colors_brown\",\n asset: baseAssetURL('Transitions/brown-new.mp4'),\n description: ['demo_demo_trans__gen_8_l1','demo_demo_trans__gen_8_l2', 'demo_demo_trans__gen_8_l3'],\n colorID: 'lensTransitionBrown'\n },\n {\n id: 'standard1',\n label: \"lens_propo_colors_grey\",\n asset: baseAssetURL('Transitions/grey-new.mp4'),\n description: ['demo_demo_trans__gen_8_l1','demo_demo_trans__gen_8_l2', 'demo_demo_trans__gen_8_l3'],\n colorID: 'lensTransitionGrey'\n },\n ]\n },\n {\n demo: 'video-advertisement-gen-8', //pictos\n demoType: ProductDemoType.SIDE_BY_SIDE_VIDEO,\n products: [\n {\n id: 'transitions_signature_gen_8_classic',\n label: 'lens_propo_colors_green',\n asset: baseAssetURL('Transitions/green.mp4'),\n description: ['demo_demo_trans__gen_8_l1','demo_demo_trans__gen_8_l2', 'demo_demo_trans__gen_8_l3'],\n colorID: 'lensTransitionGreen'\n },\n {\n id: 'standard',\n label: \"lens_propo_colors_brown\",\n asset: baseAssetURL('Transitions/brown-new.mp4'),\n description: ['demo_demo_trans__gen_8_l1','demo_demo_trans__gen_8_l2', 'demo_demo_trans__gen_8_l3'],\n colorID: 'lensTransitionBrown'\n },\n {\n id: 'standard1',\n label: \"lens_propo_colors_grey\",\n asset: baseAssetURL('Transitions/grey-new.mp4'),\n description: ['demo_demo_trans__gen_8_l1','demo_demo_trans__gen_8_l2', 'demo_demo_trans__gen_8_l3'],\n colorID: 'lensTransitionGrey'\n },\n ]\n },\n {\n demo: 'video-advertisement-gen-8', //pictos\n demoType: ProductDemoType.SIDE_BY_SIDE_VIDEO,\n products: [\n {\n id: 'transitions_classic',\n label: 'lens_propo_colors_green',\n asset: baseAssetURL('Transitions/green.mp4'),\n description: ['demo_demo_trans__gen_8_l1','demo_demo_trans__gen_8_l2', 'demo_demo_trans__gen_8_l3'],\n colorID: 'lensTransitionGreen'\n },\n {\n id: 'standard',\n label: \"lens_propo_colors_brown\",\n asset: baseAssetURL('Transitions/brown-new.mp4'),\n description: ['demo_demo_trans__gen_8_l1','demo_demo_trans__gen_8_l2', 'demo_demo_trans__gen_8_l3'],\n colorID: 'lensTransitionBrown'\n },\n {\n id: 'standard1',\n label: \"lens_propo_colors_grey\",\n asset: baseAssetURL('Transitions/grey-new.mp4'),\n description: ['demo_demo_trans__gen_8_l1','demo_demo_trans__gen_8_l2', 'demo_demo_trans__gen_8_l3'],\n colorID: 'lensTransitionGrey'\n },\n ]\n },\n {\n demo: 'video-advertisement-xtractive', //pictos\n demoType: ProductDemoType.SIDE_BY_SIDE_VIDEO,\n products: [\n {\n id: 'transitions_xtractive',\n label: 'lens_propo_colors_green',\n asset: baseAssetURL('Transitions/XTRActive/3. Grapphite Green/SIMONE_HORIZONTAL_LUC_G.GREEN (3).mp4'),\n description: ['demo_demo_trans__xtra_l1','demo_demo_trans__xtra_l2', 'demo_demo_trans__xtra_l3'],\n colorID: 'lensTransitionGreen'\n },\n {\n id: 'standard',\n label: \"lens_propo_colors_brown\",\n asset: baseAssetURL('Transitions/XTRActive/2. Brown/brown.mp4'),\n description: ['demo_demo_trans__xtra_l1','demo_demo_trans__xtra_l2', 'demo_demo_trans__xtra_l3'],\n colorID: 'lensTransitionBrown'\n },\n {\n id: 'standard1',\n label: \"lens_propo_colors_grey\",\n asset: baseAssetURL('Transitions/XTRActive/1. Grey/grey.mp4'),\n description: ['demo_demo_trans__xtra_l1','demo_demo_trans__xtra_l2', 'demo_demo_trans__xtra_l3'],\n colorID: 'lensTransitionGrey'\n },\n ]\n },\n { // JUMP - TRANSISTIONS NEW GENERATION - CO\n demo: 'video-advertisement-gen-8', //pictos\n demoType: ProductDemoType.VIDEO,\n products: [\n {\n id: 'transitions_xtractive_new_gen',\n label: \"lens_propo_colors_grey\",\n asset: baseAssetURL('Transitions/XTRActive/1. Grey/grey.mp4'),\n description: ['demo_demo_trans__xtra_l1','demo_demo_trans__xtra_l2', 'demo_demo_trans__xtra_l3'], // SHOULD BE CHANGE?\n colorID: 'lensTransitionGrey'\n },\n ]\n },\n { // JUMP - TRANSISTIONS NEW GENERATION - GR\n demo: 'video-advertisement-gen-8', //pictos\n demoType: ProductDemoType.VIDEO,\n products: [\n {\n id: 'transitions_xtractive_new_generation',\n label: \"lens_propo_colors_grey\",\n asset: baseAssetURL('Transitions/XTRActive/1. Grey/grey.mp4'),\n description: ['demo_demo_trans__xtra_l1','demo_demo_trans__xtra_l2', 'demo_demo_trans__xtra_l3'], // SHOULD BE CHANGE?\n colorID: 'lensTransitionGrey'\n },\n ]\n },\n { // JUMP - TRANSISTIONS XTRACTIVE POLARISED\n demo: 'video-advertisement-xtractive', //pictos\n demoType: ProductDemoType.VIDEO,\n products: [\n {\n id: 'transitions_xtractive_polarised',\n label: \"lens_propo_colors_grey\",\n asset: baseAssetURL('Transitions/XTRActive/1. Grey/grey.mp4'),\n description: ['demo_demo_trans__xtra_l1','demo_demo_trans__xtra_l2', 'demo_demo_trans__xtra_l3'], // SHOULD BE CHANGE?\n colorID: 'lensTransitionGrey'\n },\n ]\n },\n {\n demo: 'packshot-of-frame', \n demoType: ProductDemoType.NESTED_DEMO,\n products: [\n {\n demo: 'crizal-sun-grey', \n demoType: ProductDemoType.SLIDER_IMAGE,\n products: [\n {\n id: 'crizal_sun_xprotect',\n label: 'Crizal Sun Grey',\n asset: baseAssetURL('Crizal/CompanionTool/Compare%20Section/Compare%20-%20Grey/WireFrames_With.jpg'),\n },\n {\n id: 'standard',\n label: 'demo_uncoated_lens',\n asset: baseAssetURL('Crizal/CompanionTool/Compare%20Section/Compare%20-%20Grey/WireFrames_Without.jpg'),\n },\n ]\n },\n {\n demo: 'crizal-sun-brown', \n demoType: ProductDemoType.SLIDER_IMAGE,\n products: [\n {\n id: 'crizal_sun_xprotect',\n label: 'Crizal Sun Brown',\n asset: baseAssetURL('Crizal/CompanionTool/Compare%20Section/Compare%20-%20Brown/AcetateFrames_With.jpg'),\n },\n {\n id: 'standard',\n label: 'demo_uncoated_lens',\n asset: baseAssetURL('Crizal/CompanionTool/Compare%20Section/Compare%20-%20Brown/AcetateFrame_Without.jpg'),\n },\n ]\n },\n {\n demo: 'crizal-sun-green', \n demoType: ProductDemoType.SLIDER_IMAGE,\n products: [\n {\n id: 'crizal_sun_xprotect',\n label: 'Crizal Sun Green',\n asset: baseAssetURL('Crizal/CompanionTool/Compare%20Section/Compare%20-%20Green/Tortoise_With.jpg'),\n },\n {\n id: 'standard',\n label: 'demo_uncoated_lens',\n asset: baseAssetURL('Crizal/CompanionTool/Compare%20Section/Compare%20-%20Green/TortoiseFrame_Without.jpg'),\n },\n ]\n }\n ]\n },\n\n {\n demo: 'aesthetic-of-the-frame',\n demoType: ProductDemoType.SLIDER_IMAGE,\n products: [\n {\n id: 'crizal_easy',\n label: 'Crizal Easy',\n asset: baseAssetURL('Crizal/01_Crizal Transversal_1/Crizal_Aesthetic_Easy-Alize-Rock-Forte_paysage.jpg'),\n description: ['demo_demo_crizal_easy_l1', 'demo_demo_crizal_easy_l2', 'demo_demo_crizal_easy_l3', 'demo_demo_crizal_easy_l4']\n },\n {\n id: 'crizal_aliz',\n label: 'Crizal Alize',\n asset: baseAssetURL('Crizal/01_Crizal Transversal_1/Crizal_Aesthetic_Easy-Alize-Rock-Forte_paysage.jpg'),\n description: ['demo_demo__crizal_alize_l1']\n },\n {\n id: 'crizal_rock',\n label: 'Crizal Rock',\n asset: baseAssetURL('Crizal/01_Crizal Transversal_1/Crizal_Aesthetic_Easy-Alize-Rock-Forte_paysage.jpg'),\n description: ['demo_demo_crizal_rock_l1', 'demo_demo_crizal_rock_l2', 'demo_demo_crizal_rock_l3']\n },\n {\n id: 'crizal_forte',\n label: 'Crizal Forte',\n asset: baseAssetURL('Crizal/01_Crizal Transversal_1/Crizal_Aesthetic_Easy-Alize-Rock-Forte_paysage.jpg'),\n description: ['demo_demo_crizal_forte_l1','demo_demo_crizal_forte_l2','demo_demo_crizal_forte_l3']\n \n },\n {\n id: 'crizal_prevencia',\n label: 'Crizal Prevencia',\n asset: baseAssetURL('Crizal/01_Crizal Transversal_1/Crizal_Aesthetic_Prevencia_paysage.jpg'),\n description: ['demo_demo_crizal_prev_l1','demo_demo_crizal_prev_l2','demo_demo_crizal_prev_l3']\n },\n {\n id: 'crizal_sapphire',\n label: 'Crizal Sapphire',\n asset: baseAssetURL('Crizal/01_Crizal Transversal_1/Crizal_Aesthetic_Sapphire_paysage.jpg'),\n description: ['demo_demo_crizal_sapp_l1', 'demo_demo_crizal_sapp_l2', 'demo_demo_crizal_sapp_l3', 'demo_demo_crizal_sapp_l4', 'demo_demo_crizal_sapp_l5']\n \n },\n {\n id: 'standard',\n label: 'packaged_offer_popup_po_popup_standard',\n asset: baseAssetURL('Crizal/01_Crizal Transversal_1/Crizal_Aesthetic_STANDARD_paysage.jpg')\n }\n ]\n },\n ...PRODUCT_LENS_DEMO,\n {\n demo: 'enemies-of-visions', \n demoType: ProductDemoType.NESTED_DEMO_TRANSVERSAL,\n products: [\n {\n demo: 'enemies-of-vision__scratches', \n demoType: ProductDemoType.SLIDER_IMAGE,\n products: [\n {\n id: 'crizal_aliz',\n label: 'Crizal Alize',\n asset: baseAssetURL('Crizal/02_Crizal Transversal_2/Scratch/Crizal_Scratch_Easy-Alize.jpg'),\n },\n {\n id: 'crizal_forte',\n label: 'Crizal Forte',\n asset: baseAssetURL('Crizal/02_Crizal Transversal_2/Scratch/Crizal_Scratch_Forte.jpg'),\n },\n {\n id: 'crizal_prevencia',\n label: 'Crizal Prevencia',\n asset: baseAssetURL('Crizal/02_Crizal Transversal_2/Scratch/Crizal_Scratch_Prevencia.jpg'),\n },\n {\n id: 'crizal_rock',\n label: 'Crizal Rock',\n asset: baseAssetURL('Crizal/02_Crizal Transversal_2/Scratch/Crizal_Scratch_Rock.jpg'),\n },\n {\n id: 'crizal_sapphire',\n label: 'Crizal Sapphire',\n asset: baseAssetURL('Crizal/02_Crizal Transversal_2/Scratch/Crizal_Scratch_Sapphire.jpg'),\n },\n {\n id: 'standard',\n label: 'packaged_offer_popup_po_popup_standard',\n asset: baseAssetURL('Crizal/02_Crizal Transversal_2/Scratch/Crizal_Scratch_STANDARD.jpg'),\n }\n ]\n },\n {\n demo: 'enemies-of-vision__smudges', \n demoType: ProductDemoType.SLIDER_IMAGE,\n products: [\n {\n id: 'crizal_aliz',\n label: 'Crizal Alize',\n asset: baseAssetURL('Crizal/02_Crizal Transversal_2/Smudges/Crizal_Smudge_Easy-Alize.jpg'),\n },\n {\n id: 'crizal_forte',\n label: 'Crizal Forte',\n asset: baseAssetURL('Crizal/02_Crizal Transversal_2/Smudges/Crizal_Smudge_Forte.jpg'),\n },\n {\n id: 'crizal_prevencia',\n label: 'Crizal Prevencia',\n asset: baseAssetURL('Crizal/02_Crizal Transversal_2/Smudges/Crizal_Smudge_Prevencia.jpg'),\n },\n {\n id: 'crizal_rock',\n label: 'Crizal Rock',\n asset: baseAssetURL('Crizal/02_Crizal Transversal_2/Smudges/Crizal_Smudge_Rock.jpg'),\n },\n {\n id: 'crizal_sapphire',\n label: 'Crizal Sapphire',\n asset: baseAssetURL('Crizal/02_Crizal Transversal_2/Smudges/Crizal_Smudge_Sapphire.jpg'),\n },\n {\n id: 'standard',\n label: 'packaged_offer_popup_po_popup_standard',\n asset: baseAssetURL('Crizal/02_Crizal Transversal_2/Smudges/Crizal_Smudge_STANDARD.jpg'),\n }\n ]\n },\n {\n demo: 'enemies-of-vision__glare', \n demoType: ProductDemoType.SLIDER_IMAGE,\n products: [\n {\n id: 'crizal_aliz',\n label: 'Crizal Alize',\n asset: baseAssetURL('Crizal/02_Crizal Transversal_2/Glare/Crizal_Glare_Easy-Alize.jpg'),\n },\n {\n id: 'crizal_forte',\n label: 'Crizal Forte',\n asset: baseAssetURL('Crizal/02_Crizal Transversal_2/Glare/Crizal_Glare_Forte.jpg'),\n },\n {\n id: 'crizal_prevencia',\n label: 'Crizal Prevencia',\n asset: baseAssetURL('Crizal/02_Crizal Transversal_2/Glare/Crizal_Glare_Prevencia.jpg'),\n },\n {\n id: 'crizal_rock',\n label: 'Crizal Rock',\n asset: baseAssetURL('Crizal/02_Crizal Transversal_2/Glare/Crizal_Glare_Rock.jpg'),\n },\n {\n id: 'crizal_sapphire',\n label: 'Crizal Sapphire',\n asset: baseAssetURL('Crizal/02_Crizal Transversal_2/Glare/Crizal_Glare_Sapphire.jpg'),\n },\n {\n id: 'standard',\n label: 'packaged_offer_popup_po_popup_standard',\n asset: baseAssetURL('Crizal/02_Crizal Transversal_2/Glare/Crizal_Glare_STANDARD.jpg'),\n }\n ]\n }, \n {\n demo: 'enemies-of-vision__water', \n demoType: ProductDemoType.SLIDER_VIDEO,\n products: [\n {\n id: 'crizal_aliz',\n label: 'Crizal Alize',\n asset: baseAssetURL('Crizal/02_Crizal Transversal_2/Water/Crizal_Water_Easy-Alize.mp4'),\n },\n {\n id: 'crizal_forte',\n label: 'Crizal Forte',\n asset: baseAssetURL('Crizal/02_Crizal Transversal_2/Water/Crizal_Water_Forte.mp4'),\n },\n {\n id: 'crizal_prevencia',\n label: 'Crizal Prevencia',\n asset: baseAssetURL('Crizal/02_Crizal Transversal_2/Water/Crizal_Water_Prevencia.mp4'),\n },\n {\n id: 'crizal_rock',\n label: 'Crizal Rock',\n asset: baseAssetURL('Crizal/02_Crizal Transversal_2/Water/Crizal_Water_Rock.mp4'),\n },\n {\n id: 'crizal_sapphire',\n label: 'Crizal Sapphire',\n asset: baseAssetURL('Crizal/02_Crizal Transversal_2/Water/Crizal_Water_Sapphire.mp4'),\n },\n {\n id: 'standard',\n label: 'packaged_offer_popup_po_popup_standard',\n asset: baseAssetURL('Crizal/02_Crizal Transversal_2/Water/Crizal_Water_STANDARD.mp4'),\n }\n ]\n }, \n {\n demo: 'enemies-of-vision__dust', \n demoType: ProductDemoType.SLIDER_IMAGE,\n products: [\n {\n id: 'crizal_aliz',\n label: 'Crizal Alize',\n asset: baseAssetURL('Crizal/02_Crizal Transversal_2/Dust/Crizal_Dust_Easy-Alize.jpg'),\n },\n {\n id: 'crizal_forte',\n label: 'Crizal Forte',\n asset: baseAssetURL('Crizal/02_Crizal Transversal_2/Dust/Crizal_Dust_Forte.jpg'),\n },\n {\n id: 'crizal_prevencia',\n label: 'Crizal Prevencia',\n asset: baseAssetURL('Crizal/02_Crizal Transversal_2/Dust/Crizal_Dust_Prevencia.jpg'),\n },\n {\n id: 'crizal_rock',\n label: 'Crizal Rock',\n asset: baseAssetURL('Crizal/02_Crizal Transversal_2/Dust/Crizal_Dust_Rock.jpg'),\n },\n {\n id: 'crizal_sapphire',\n label: 'Crizal Sapphire',\n asset: baseAssetURL('Crizal/02_Crizal Transversal_2/Dust/Crizal_Dust_Sapphire.jpg'),\n },\n {\n id: 'standard',\n label: 'packaged_offer_popup_po_popup_standard',\n asset: baseAssetURL('Crizal/02_Crizal Transversal_2/Dust/Crizal_Dust_Standard.jpg'),\n }\n ]\n }, \n ]\n }\n ]\n\nexport {\n FAMILIES,\n BRANDS,\n TEMPORARY_PRODUCT_LIST,\n LENS_DEMO\n}\nexport default PRODUCTS;\n\n\n","enum LensPairType {\n PAIR1 = 'pair1',\n PAIR2 = 'pair2'\n}\n\nexport default LensPairType;","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { LENS_DEMO, TEMPORARY_PRODUCT_LIST } from '../../constants/products.constants';\nimport iLensDemo from '../../interface/lens-demo';\nimport iProductBrand from '../../interface/product-brand.interface';\nimport iProductDemo from '../../interface/product-demo';\nimport iProductDownloadInfo from '../../interface/product-download-info.interface';\nimport iProductFamily from '../../interface/product-family.interface';\nimport iProduct from '../../interface/product.inteface';\nimport ProductDemoType from '../../types/product-demo.type';\nimport DemoDownloadType from '../../types/product-download.type';\nimport iProductsStore from '../interface/products-store.interface';\nimport iRootState from '../interface/root-state.interface';\n\nconst initialState: iProductsStore = {\n isOpen: false,\n downloadStatus: DemoDownloadType.WAITING,\n downloadCountText: '',\n demoDownloadStatus: {},\n preloadedProductDemos: [],\n view: 'selection',\n temporaryProductList: TEMPORARY_PRODUCT_LIST,\n lensDemo: LENS_DEMO,\n enabledProducts: [], \n openBrand: '', // JUMP - CAN BE USED TO TARGET TO ONLY SHOW THE XR DEMO IN VARILUX PRODUCTS,\n selectedProduct: '',\n isQrCodeOpen: false,\n}\n\nconst productsSlice = createSlice({\n name: 'products',\n initialState,\n reducers: {\n open: (state, action: PayloadAction) => ({...state, isOpen: action.payload }),\n changeDownloadStatus: (state, action: PayloadAction) => ({...state, downloadStatus: action.payload }),\n changeDownloadCount: (state, action: PayloadAction) => ({...state, downloadCountText: action.payload }),\n updateDownloadStatus: (state, action: PayloadAction<{\n brandId: string,\n info: iProductDownloadInfo\n }>) => {\n const current = state.demoDownloadStatus || {};\n return {\n ...state,\n demoDownloadStatus: {\n ...current,\n [action.payload.brandId]: action.payload.info\n }\n }\n },\n resetDownloadPendingStatus: (state) => {\n const entries = Object.entries(state.demoDownloadStatus);\n let newState = {};\n entries.forEach(([key, value]) => {\n const newStatus = value.status === DemoDownloadType.COMPLETED ?\n DemoDownloadType.COMPLETED :\n DemoDownloadType.WAITING;\n newState = {\n ...newState,\n [key]: {\n ...value,\n status: newStatus\n }\n }\n });\n\n return {\n ...state,\n demoDownloadStatus: newState\n }\n },\n productPreloadComplete: (state, action: PayloadAction) => {\n const currentList = state.preloadedProductDemos || [];\n const found = currentList.includes(action.payload); \n return {\n ...state,\n preloadedProductDemos: found ? state.preloadedProductDemos : [\n ...currentList,\n action.payload\n ],\n // JUMP\n selectedProduct: action.payload\n }\n },\n // JUMP\n clearSelectedProduct: (state) => {\n return {...state, selectedProduct: ''}\n },\n changeView: (state, action: PayloadAction<'selection' | 'demo'>) => ({...state, view: action.payload }),\n selectBrandTodemo: (state, action: PayloadAction) => ({...state, brandToDemo: action.payload}),\n \n openBrandCard: (state, action: PayloadAction) => ({\n ...state, \n openBrand: state.openBrand === action.payload ? '' : action.payload\n }),\n \n selectProductTodemo: (state, action: PayloadAction) => ({...state, productToDemo: action.payload}),\n selectProductToCompare: (state, action: PayloadAction) => ({...state, productToCompare: action.payload}),\n updateProductList: (state, action: PayloadAction) => {\n\n const products = action.payload;\n\n // consolidate enabled product ids\n let enabledProducts: string[] = [];\n products.forEach((family: any) => {\n family.brands.forEach((brand: any) => {\n brand.products.forEach((product: any) => {\n if(product.enabled){\n enabledProducts.push(product.id);\n }\n });\n });\n });\n\n return {\n ...state,\n temporaryProductList: products,\n enabledProducts: enabledProducts\n }\n },\n\n attachedProductDemo: (state, action: PayloadAction<{\n demos: iLensDemo[],\n productList?: any[]\n }>) => {\n const {productList, demos} = action.payload\n const arrayOfProductWithId = []\n const arrayOfXperioAndTransitions = ['xperio_mirrors',\n 'xperio_polarised',\n 'xperio_tinted',\n 'transitions_signature_gen_8',\n 'transitions_signature_gen_8_iconic',\n 'transitions_signature_gen_8_style',\n 'transitions_signature_gen_8_classic',\n 'transitions_classic',\n 'transitions_xtractive',\n 'transitions_xtractive_mirror',\n 'xperio_tinted_mirrors',\n 'transitions_style_mirrors',\n 'xperio_polarised_mirrors'\n ]\n //appending the label and id to arrayOfProductWithId\n const labelFromTemporaryProductList = state.temporaryProductList.forEach( (family:any) => {\n family.brands.forEach((brands:any)=>{\n brands.products.forEach((product:any)=>{\n arrayOfProductWithId.push(\n {\n id:product.id,\n label:product.label\n })\n })\n })\n })\n const getProductLabelById = (productId:string, product:any) => {\n const products = ['standard', 'xperio_polarised', 'varilux_digitime']\n if(productId && products.includes(productId) || productId && productId.includes('xperio_tinted'))return product.label\n const foundProductId = arrayOfProductWithId.find( (product:any) => product.id === productId)\n return foundProductId?.label\n }\n\n const getProductDemo = (id: string, label: string) => {\n return demos.filter( demo => {\n if([\n ProductDemoType.NESTED_DEMO_TRANSVERSAL,\n ProductDemoType.NESTED_DEMO\n ].includes(demo.demoType)){\n let foundCount = 0;\n demo.products.forEach( (lensDemo) => {\n const found = ((lensDemo as iLensDemo).products as iProductDemo[]).filter( p => p.id === id);\n if(found.length > 0)foundCount += 1;\n })\n return foundCount > 0;\n }\n const found = (demo.products as iProductDemo[]).filter(product => product.id === id);\n return found.length > 0;\n })\n // Note: replace the hardcoded label\n // put the product label from API\n .map( p => ({\n ...p,\n label,\n products: p.products.map( (x:any) => {\n if(!arrayOfProductWithId.length)return x;\n if(x.id && (x.id.includes(\"standard\") || arrayOfXperioAndTransitions.includes(x.id))) return x;\n const isWithSubProducts = !!x.products;\n return { \n ...x,\n label:getProductLabelById(x.id, x),\n //Note: get sub products label\n ...(\n isWithSubProducts ? {\n products: x.products\n .map( (sb:any) => {\n return {\n ...sb, \n label: getProductLabelById(sb.id, sb)\n }\n })\n } : {}\n )\n }\n\n })\n }));\n }\n\n const newState = (state.temporaryProductList || productList ).map((family: iProductFamily) => (\n { ...family, brands: family.brands.map((brand: iProductBrand) => ({\n ...brand, products: brand.products.map((p: iProduct) => ({\n ...p,\n demo: getProductDemo(p.id, p.label)\n }))\n }))\n }\n ));\n\n return {\n ...state,\n temporaryProductList: newState\n }\n },\n\n reset: (state) => ({\n ...state,\n brandToDemo: undefined,\n productToDemo: undefined,\n productToCompare: undefined,\n isOpen: false,\n view: 'selection',\n lensDemo: LENS_DEMO,\n demoDownloadStatus: state.demoDownloadStatus ? state.demoDownloadStatus : {},\n openBrand: '',\n selectedProduct: ''\n }),\n openQrCode: (state, action: PayloadAction) => ({...state, isQrCodeOpen: action.payload}),\n }\n});\n\nexport const getProducts = (state:iRootState) => state.products;\nexport default productsSlice;\n","import iLensConsultationType from \"../interface/lens-consultation-type.interface\";\n\nconst lensConsultationData: iLensConsultationType[] = [\n {\n type: 'correct',\n label: 'Correct',\n brands: [\n {\n value: \"varilux\",\n label: \"Varilux\",\n products: [\n {\n value: \"varilux_x_series\",\n label: \"Varilux® X Series\",\n subProducts: [\n {\n value: \"varilux_x_design\",\n label: \"Varilux® X design\",\n }\n ],\n packageOffersDowngrade: [\n {\n value: \"varilux_x_design\",\n label: \"Varilux® X design\"\n },\n {\n value: \"varilux_x_design_short\",\n label: \"Varilux® X design short\"\n },\n {\n value: 'varilux_xclusive_4d',\n label: 'Varilux® Xclusive™ 4D'\n }\n ]\n },\n {\n value: \"varilux_digitime\",\n label: \"Varilux® Digitime™\",\n subProducts: [\n {\n value: \"varilux_digitime_mid\",\n label: \"Varilux® Digitime™ Mid\"\n }\n ],\n packageOffersDowngrade: [\n {\n value: \"varilux_digitime_mid\",\n label: \"Varilux® Digitime™ Mid\"\n },\n {\n value: 'varilux_digitime_room',\n label: 'Varilux® Digitime™ Room'\n },\n {\n value: 'varilux_digitime_near_plus',\n label: 'Varilux® Digitime™ Near Plus'\n }\n ]\n }\n ]\n },\n {\n value: \"eyezen\",\n label: \"Eyezen\",\n products: [\n {\n value: \"eyezen_start\",\n label: \"Eyezen® Start\",\n subProducts: [\n {\n value: \"eyezen_start_f-360\",\n label: \"Eyezen® Start f-360°\"\n }\n ],\n packageOffersDowngrade: [\n {\n value: \"eyezen_start_f-360\",\n label: \"Eyezen® Start f-360°\"\n },\n {\n value: '',\n label: 'Eyezen® Boost 0.4'\n },\n {\n value: '',\n label: 'Eyezen® Boost 0.4 f-360°'\n }\n ]\n },\n {\n value: \"eyezen_boost\",\n label: \"Eyezen® Boost\",\n subProducts: [\n {\n value: \"eyezen_boost_0.4\",\n label: \"Eyezen® Boost 0.4\"\n }\n ],\n packageOffersDowngrade: [\n {\n value: \"eyezen_boost_0.4\",\n label: \"Eyezen® Boost 0.4\"\n },\n {\n value: '',\n label: 'Eyezen® Boost 0.4 f-360°'\n },\n {\n value: '',\n label: 'Eyezen® Boost 0.6'\n }\n ]\n }\n ]\n }\n ]\n },\n {\n type: 'protect',\n label: 'Protect',\n brands: [\n {\n value: 'transitions',\n label: 'Transitions',\n products: [\n {\n value: 'transitions',\n label: 'Transitions',\n subProducts: [\n {\n value: 'transitions_gen_8',\n label: 'Transitions Gen 8',\n },\n {\n value: 'transitions_xtractive',\n label: 'Transitions XTRActive',\n }\n ],\n packageOffersDowngrade: [\n {\n value: 'transitions_gen_8',\n label: 'Transitions Gen 8',\n },\n {\n value: '',\n label: 'Transitions XTRActive'\n },\n {\n value: '',\n label: 'Transitions Style Mirrors'\n }\n ]\n }\n ]\n },\n {\n value: 'experio',\n label: 'Xperio',\n products: [\n {\n value: 'mirror',\n label: 'Mirror',\n subProducts: [\n {\n value: 'mirror_gen_8',\n label: 'Mirror Gen 8',\n },\n {\n value: 'mirror_xtractive',\n label: 'Mirror XTRActive',\n }\n ],\n packageOffersDowngrade: [\n {\n value: 'polarized_gen_8',\n label: 'Polarized Gen 8',\n },\n {\n value: '',\n label: 'Xperio Tinted'\n },\n {\n value: '',\n label: 'Xperio Tinted'\n }\n ]\n },\n {\n value: 'polarized',\n label: 'Polarized',\n subProducts: [\n {\n value: 'polarized_gen_8',\n label: 'Polarized Gen 8',\n },\n {\n value: 'polarized_xtractive',\n label: 'Polarized XTRActive',\n }\n ],\n packageOffersDowngrade: [\n {\n value: 'polarized_gen_8',\n label: 'Polarized Gen 8',\n },\n {\n value: '',\n label: 'Xperio Tinted'\n },\n {\n value: '',\n label: 'Xperio Tinted'\n }\n ]\n },\n {\n value: 'tinted',\n label: 'Tinted',\n subProducts: [\n {\n value: 'tinted_gen_8',\n label: 'Tinted Gen 8',\n },\n {\n value: 'tinted_xtractive',\n label: 'Tinted XTRActive',\n }\n ],\n packageOffersDowngrade: [\n {\n value: 'polarized_gen_8',\n label: 'Polarized Gen 8',\n },\n {\n value: '',\n label: 'Xperio Tinted'\n },\n {\n value: '',\n label: 'Xperio Tinted'\n }\n ]\n },\n ]\n }\n ]\n },\n {\n type: 'enhance',\n label: 'Enhance',\n brands: [\n {\n value: 'crizal',\n label: 'Crizal',\n products: [\n {\n value: 'crizal',\n label: 'Crizal',\n subProducts: [\n {\n value: 'crizal_sapphire',\n label: 'Crizal Sapphire',\n },\n {\n value: 'crizal_prevencia',\n label: 'Crizal Prevencia',\n },\n {\n value: 'crizal_sun_xprotect',\n label: 'Crizal Sun Xprotect',\n }\n ],\n packageOffersDowngrade: [\n {\n value: 'crizal_sapphire',\n label: 'Crizal Sapphire',\n },\n {\n value: '',\n label: 'Crizal Rock'\n },\n {\n value: '',\n label: 'Crizal Sun UV'\n }\n ]\n }\n ]\n },\n {\n value: 'eyezen',\n label: 'Eyezen',\n products: [\n {\n value: 'crizal',\n label: 'Crizal',\n subProducts: [\n {\n value: 'crizal_easy_uv',\n label: 'Crizal Easy UV',\n }\n ],\n packageOffersDowngrade: [\n {\n value: 'crizal_sun_xprotect',\n label: 'Crizal Sun Xprotect',\n },\n {\n value: '',\n label: 'Optifog'\n },\n {\n value: '',\n label: 'Optifog'\n }\n ]\n }\n ]\n }\n ]\n }\n];\n\nexport default lensConsultationData;","const pricingBreakdown = {\n currency: '$',\n summaryTotal: 0,\n deliveryTotal: 0,\n isValidated: false,\n pair1: {\n enabled: true,\n categoryLens: 'Sun Vision',\n summaryPrice: 0,\n deliveryPrice: 0,\n discount: 0,\n discountPercentage: 0,\n lensThickness: 0,\n measures: 0,\n price: 0,\n correctPrice: 0,\n protectPrice: 0,\n protect2Price: 0,\n enhancePrice: 0,\n hasNocombi: false\n },\n pair2: {\n enabled: true,\n categoryLens: 'Sun Vision',\n summaryPrice: 0,\n deliveryPrice: 0,\n discount: 0,\n discountPercentage: 0,\n lensThickness: 0,\n measures: 0,\n price: 0,\n correctPrice: 0,\n protectPrice: 0,\n protect2Price: 0,\n enhancePrice: 0,\n hasNocombi: false\n }\n}\n\nexport default pricingBreakdown;","enum NeedExplorerViewType {\n INTRO,\n QUESTIONNAIRE,\n GENERAL_CHECKPOINT,\n FINISHED,\n ANAMNESIS\n}\n\nexport default NeedExplorerViewType;","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { float } from 'html2canvas/dist/types/css/property-descriptors/float';\nimport lensConsultationData from '../../constants/lens-consultation-data.constants';\nimport pricingBreakdown from '../../constants/pricing-breakdown';\nimport iLensColor from '../../interface/lens-color.inteface';\nimport iLensConsultationBrand from '../../interface/lens-consultation-brand.interface';\nimport iLensConsultationType from '../../interface/lens-consultation-type.interface';\nimport iLensRecommendationPair from '../../interface/lens-recommendaiton-pair.interface';\nimport iPriceBreakdown from '../../interface/price-breakdown.interface';\nimport iProductBrand from '../../interface/product-brand.interface';\nimport iProductFamily from '../../interface/product-family.interface';\nimport iProduct from '../../interface/product.inteface';\nimport iSubProduct from '../../interface/sub-product.inteface';\nimport LensFamilyType from '../../types/lens-family.type';\nimport LensPairType from '../../types/lens-pair.type';\nimport iLensConsultationStore from '../interface/lens-consultation-store.interface';\nimport iRootState from '../interface/root-state.interface';\n\n\nconst initialState: iLensConsultationStore = {\n activePair: LensPairType.PAIR1,\n isLensThickness: false,\n data: lensConsultationData,\n sliderPage: 0,\n lensType: null,\n lensRecommendation: {},\n storedLensRecommendation: {},\n isValidated: false,\n selectedProtect : {},\n lensProducts: {\n correct: {\n product: null,\n subProduct: null\n },\n protect: {\n product: null,\n subProduct: null\n },\n enhance: {\n product: null,\n subProduct: null\n }\n },\n breakdown: pricingBreakdown,\n family:'',\n sliderPageTwo:0,\n temporaryByPassProduct: ''\n}\n\nconst lensConsultationSlice = createSlice({\n name: 'lensConsultation',\n initialState,\n reducers: {\n setSliderPage: (state, action: PayloadAction) => ( {...state, sliderPage: action.payload} ),\n selectLensType: (state, action: PayloadAction) => ( {...state, lensType: action.payload} ),\n selectLensBrand: (state, action: PayloadAction) => ( {...state, lensBrand: action.payload} ),\n selectLensProduct: (state, action: PayloadAction) => ( {...state, lensProducts: action.payload} ),\n setPrefilledDataFromNeedExplorer: (state, action: PayloadAction) => ( {...state, lensRecommendation: action.payload} ),\n setPrefilledDataFromNeedExplorerStored: (state, action: PayloadAction) => ( {...state, storedLensRecommendation: action.payload} ),\n \n changePair: (state, action: PayloadAction) => ( {...state, activePair: action.payload} ), \n setIsLensThickness: (state, action: PayloadAction) => ( {...state, isLensThickness: action.payload} ), \n validate: (state, action: PayloadAction) => ({\n ...state, \n isValidated: action.payload,\n dateValidated: new Date().toISOString()\n }), \n \n removeProduct: (state, action: PayloadAction<{\n lensFamily: LensFamilyType,\n index?: number\n }>) => {\n const { lensFamily, index } = action.payload;\n\n const currentActivePair: any = state.lensRecommendation && \n state.lensRecommendation[state.activePair] ? \n state.lensRecommendation[state.activePair] : null; \n\n let newFamilyState = null;\n\n if(lensFamily === LensFamilyType.PROTECT){\n const currentProtects = currentActivePair[lensFamily];\n newFamilyState = currentProtects.filter( (item: any, i: number) => index !== i);\n }\n\n const newState = {\n ...state,\n lensRecommendation: {\n ...state.lensRecommendation,\n [state.activePair]: {\n ...currentActivePair,\n [lensFamily]: newFamilyState\n }\n },\n validOnEPROM: {\n ...state.validOnEPROM,\n [state.activePair]: true\n }\n }\n return {\n ...state, \n ...newState,\n }\n }, \n selectProduct: (state, action: PayloadAction<{\n lensFamily: LensFamilyType,\n brand?: iProductBrand,\n product?: iProduct,\n subProduct?: iSubProduct,\n manual?: boolean,\n pair?: LensPairType\n }>) => {\n const { lensFamily, brand, product, subProduct, manual } = action.payload;\n const isManual = (manual === null) || (manual === undefined) ? true : manual;\n const pair = action.payload.pair || state.activePair;\n\n const currentActivePair: any = state.lensRecommendation && \n state.lensRecommendation[pair] ? \n state.lensRecommendation[pair] : {};\n\n const currentLensFamily = currentActivePair[lensFamily] || [];\n \n let newLensFamily: any = null;\n\n if(lensFamily === LensFamilyType.CORRECT) {\n newLensFamily = product ? { brand, product, subProduct } : null;\n }else if(lensFamily === LensFamilyType.ENHANCE) {\n newLensFamily = product ? { brand, product } : null;\n }else {\n if(!product){\n newLensFamily = null\n } else {\n newLensFamily = isManual ? [...currentLensFamily, { brand, product }] : [{ brand, product }]\n }\n }\n\n const newState = {\n ...state,\n lensRecommendation: {\n ...state.lensRecommendation,\n [pair]: {\n ...currentActivePair,\n [lensFamily]: newLensFamily\n }\n }\n }\n return {\n ...state, \n ...newState,\n }\n }, \n saveSelectProtect: (state, action: PayloadAction)=>{\n // const currentActivePair: any = state.lensRecommendation && \n // state.lensRecommendation[state.activePair] ? \n // state.lensRecommendation[state.activePair] : {};\n const newState = {\n ...state,\n selectedProtect: {\n ...state.selectedProtect,\n [state.activePair]: action.payload\n }\n \n }\n return {\n ...state,\n ...newState\n }\n },\n selectProductFamily: (state, action: PayloadAction) => ( {...state, productFamily: action.payload} ),\n selectProductBrand: (state, action: PayloadAction) => ( {...state, productBrand: action.payload} ), \n setProtectColor: (state, action: PayloadAction<{\n color:iLensColor,\n index: number,\n }>) => {\n const currentActivePair: any = state.lensRecommendation && \n state.lensRecommendation[state.activePair] ? \n state.lensRecommendation[state.activePair] : {};\n \n const newState = {\n ...state,\n lensRecommendation: {\n ...state.lensRecommendation,\n [state.activePair]: {\n ...currentActivePair,\n protect: currentActivePair.protect.map( (x: any, index: number) => {\n if(index === action.payload.index) {\n return {\n ...x,\n color: action.payload.color,\n }\n }\n return x;\n })\n }\n }\n }\n\n return { ...state, ...newState }\n }, \n saveLensRecommendationDataFromStore: (state , action: PayloadAction<{\n pair1?: iLensRecommendationPair,\n pair2?: iLensRecommendationPair\n }>) => ({\n ...state,\n lensRecommendation: action.payload\n }),\n resetData: (state) => ({\n ...state, ...initialState, \n breakdown:state.breakdown,\n lensRecommendation: undefined,\n validOnEPROM: {},\n showWarning:false\n }),\n sessionStart: (state, action: PayloadAction) => ({...state, sessionStart: action.payload }),\n \n //BREAKDOWN\n setBreakdown: (state, action: PayloadAction) => ( {\n ...state, \n breakdown: action.payload\n }),\n\n //CURRENCY\n setCurrency: (state, action: PayloadAction) => ( {\n ...state, \n breakdown: {\n ...state.breakdown,\n currency: action.payload\n }\n }),\n setValidOnEPROM: (state, action: PayloadAction) => ({\n ...state,\n validOnEPROM: {\n ...(state.validOnEPROM || {}),\n [state.activePair]: action.payload\n }\n }),\n setFamily: (state, action: PayloadAction) => ({\n ...state,\n family: action.payload\n }),\n clearSecondPair: (state, action: PayloadAction) => ({\n ...state,\n lensRecommendation:{\n ...state.lensRecommendation,\n pair2: !action.payload ? undefined : state.lensRecommendation?.pair2\n },\n showDialogue:!action.payload,\n showWarning:action.payload\n }),\n setShowDialogue: (state, action: PayloadAction) => ({\n ...state,\n showDialogue:action.payload\n }),\n setShowWarning: (state, action: PayloadAction) => ({\n ...state,\n showWarning:action.payload\n }),\n setByPassXR: (state, action: PayloadAction) => {\n return {\n ...state,\n temporaryByPassProduct: action.payload\n }\n }\n }\n});\n\nexport const getLensConsultation = (state:iRootState) => state.lensConsultation;\nexport default lensConsultationSlice;","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport iMeasurementDataOne from '../../interface/measurement-one-data.inteface';\nimport iMeasurementDataThree from '../../interface/measurement-three-data.inteface';\nimport iMeasurementDataTwo from '../../interface/measurement-two-data.inteface';\nimport iMeasureStore from '../interface/measure-store.interface';\nimport iRootState from '../interface/root-state.interface';\n\n\nconst initialState: iMeasureStore = {\n view: 'measure',\n step: 0,\n activeDataIndex: 0,\n measurementData: {\n one: [],\n two: [],\n three: []\n },\n isSavePairData: 0,\n isIvsGenerated: false\n}\n\nconst measureSlice = createSlice({\n name: 'measure',\n initialState,\n reducers: {\n changeView: (state, action: PayloadAction<'measure' | 'data'>) => ( {...state, view: action.payload} ),\n changeStep: (state, action: PayloadAction) => ( {...state, step: action.payload} ),\n saveMeasureData: (state, action: PayloadAction<{\n data: iMeasurementDataOne | iMeasurementDataTwo | iMeasurementDataThree,\n key: 'one' | 'two' | 'three'\n }>) => {\n const {key, data} = action.payload;\n\n if(!state.measurementData[key][state.activeDataIndex]) {\n return {\n ...state,\n measurementData: {\n ...state.measurementData,\n [key]: [\n ...state.measurementData[key],\n data as any\n ]\n }\n };\n }\n\n return {\n ...state,\n measurementData: {\n ...state.measurementData,\n [key]: [\n ...state.measurementData[key].map( (x: any,i: number) => {\n if(i === state.activeDataIndex) {\n return data;\n }\n return x;\n })\n ]\n }\n };\n },\n saveFrametraceMeasure: (state, action: PayloadAction) => ({\n ...state, measurementData: action.payload\n }),\n addPair: (state) => ( {...state, activeDataIndex: state.activeDataIndex + 1} ),\n editPair: (state, action: PayloadAction) => ( {...state, activeDataIndex: action.payload} ),\n resetData: (state) => ( {...state, ...initialState} ),\n\n saveMeasureFromStore: (state, action: PayloadAction) => ( {\n ...state,\n measurementData: action.payload\n }),\n savePairData: (state, action: PayloadAction) => ({...state, isSavePairData: action.payload}),\n sessionStart: (state, action: PayloadAction) => ({\n ...state,\n sessionStart: action.payload\n }),\n generateIvs: (state, action:PayloadAction) => ({...state, isIvsGenerated:action.payload\n })\n }\n});\n\nexport const getMeasure = (state:iRootState) => state.measure;\nexport default measureSlice;\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport iMyCompanionStore from '../interface/mycompanion-store.interface';\nimport iRootState from '../interface/root-state.interface';\nimport iProductBrand from '../../interface/product-brand.interface';\nimport iProduct from '../../interface/product.inteface';\nimport iSubProduct from '../../interface/sub-product.inteface';\nimport LensFamilyType from '../../types/lens-family.type';\nimport iProductFamily from '../../interface/product-family.interface';\nimport { lensThickness, discount } from '../../constants/my-companion.constants';\nimport iLensThicknessSetting from '../../interface/lens-thickness-setting';\nimport iDiscountSetting from '../../interface/discount-setting';\n\nconst initialState: iMyCompanionStore = {\n isPriceOff: true,\n essilorRecommend: false,\n category: 'correct',\n tempLensThicknessSettings: lensThickness,\n tempDiscountSettings: discount,\n configUpdatedAt: ''\n}\n\nconst myCompanionSlice = createSlice({\n name: 'mycompanion',\n initialState,\n reducers: {\n offPrice: (state, action: PayloadAction) => ( {...state, isPriceOff: action.payload} ),\n offEssilorRecommended: (state, action: PayloadAction) => ( {...state, essilorRecommend: action.payload} ),\n selectCategory: (state, action: PayloadAction) => ( {...state, category: action.payload} ),\n selectPrice: (state, action: PayloadAction) => ( {...state, data: action.payload} ),\n setProductList: (state, action: PayloadAction) => ({...state, productList: action.payload}),\n\n setLensThicknessSettings: (state, action: PayloadAction) => {\n return {\n ...state,\n tempLensThicknessSettings: action.payload\n }\n },\n setDiscountSettings: (state, action: PayloadAction) => {\n return {\n ...state,\n tempDiscountSettings: action.payload\n }\n },\n enableDisabledLensThicknessSetting: (state, action: PayloadAction) => {\n return {\n ...state,\n tempLensThicknessSettings: state.tempLensThicknessSettings.map( x => {\n if(x.value === action.payload.value) {\n return { ...x, enabled: !x.enabled}\n }\n return x;\n })\n }\n },\n enableAmountBtn: (state, action: PayloadAction) => {\n return {\n ...state,\n tempDiscountSettings: state.tempDiscountSettings.map( x => {\n if(x.value === action.payload.value) {\n return {\n ...x,\n amountEnabled: !x.amountEnabled,\n discountEnabled: !action.payload.discountEnabled\n }\n }\n return x;\n })\n }\n },\n enableDiscountBtn: (state, action: PayloadAction) => {\n return {\n ...state,\n tempDiscountSettings: state.tempDiscountSettings.map( x => {\n if(x.value === action.payload.value) {\n return {\n ...x,\n discountEnabled: !x.discountEnabled,\n amountEnabled: !action.payload.amountEnabled\n }\n }\n return x;\n })\n }\n },\n\n enableDisabledDiscountSettings: (state, action: PayloadAction) => {\n return {\n ...state,\n tempDiscountSettings: state.tempDiscountSettings.map( x => {\n if(x.value === action.payload.value) {\n return { ...x, enabled: !x.enabled}\n }\n return x;\n })\n }\n },\n\n updateDiscountPair: (state, action: PayloadAction<{\n value: string,\n newPrice: number,\n isAmount: boolean | undefined\n }>) => {\n return {\n ...state,\n tempDiscountSettings: state.tempDiscountSettings.map(( x, i )=> {\n if(i > 0){\n if(x.value === action.payload.value) {\n return {\n ...x,\n discountAmount: action.payload.isAmount ? action.payload.newPrice : x.discountAmount,\n discountPercentage: action.payload.isAmount ? x.discountPercentage : action.payload.newPrice,\n }\n }\n return x;\n }\n return x;\n })\n }\n },\n\n updatePriceLensThicknessSetting: (state, action: PayloadAction<{\n value: number,\n newPrice: number\n }>) => {\n return {\n ...state,\n tempLensThicknessSettings: state.tempLensThicknessSettings.map( x => {\n if(x.value === action.payload.value) {\n return { ...x, price: action.payload.newPrice}\n }\n return x;\n })\n }\n },\n updateBrandProductPrices: (state, action: PayloadAction<{\n familyId: string,\n brandId: string,\n newPrice: number\n }>) => {\n const {familyId, brandId, newPrice} = action.payload;\n const newState = state.productList.map( (family: iProductFamily) => {\n if(family.id === familyId){\n return {\n ...family,\n brands: family.brands.map( brand => {\n if(brand.id === brandId){\n return {\n ...brand,\n products: brand.products.map( product => ({\n ...product,\n price: newPrice\n }))\n }\n }\n return brand;\n })\n }\n }\n return family;\n });\n\n return {\n ...state,\n productList: newState\n }\n },\n updateProductSubProductsPrices: (state, action: PayloadAction<{\n familyId: string,\n brandId: string,\n productId: string,\n newPrice: number\n }>) => {\n const {familyId, brandId, productId, newPrice} = action.payload;\n const newState = state.productList.map( (family: iProductFamily) => {\n if(family.id === familyId){\n return {\n ...family,\n brands: family.brands.map( brand => {\n if(brand.id === brandId){\n return {\n ...brand,\n products: brand.products.map( product => {\n if(product.id === productId){\n return {\n ...product,\n subProducts: product.subProducts?.map( x => ({\n ...x,\n price: newPrice\n }))\n }\n }\n\n return product;\n })\n }\n }\n return brand;\n })\n }\n }\n return family;\n });\n\n return {\n ...state,\n productList: newState\n }\n },\n enableDisableProduct: (state, action: PayloadAction<{\n family: LensFamilyType,\n brand: iProductBrand,\n product: iProduct,\n subProduct?: iSubProduct\n }>) => {\n\n const lensFamily = state.productList.map( (family:iProductFamily) => {\n if(family.id === action.payload.family) {\n return {\n ...family,\n brands: family.brands.map( brand => {\n if(brand.id === action.payload.brand.id) {\n return {\n ...brand,\n products: brand.products.map( product => {\n if(product.id === action.payload.product.id) {\n\n // PRODUCT\n if(!action.payload.subProduct) {\n return {\n ...product,\n enabled: !product.enabled,\n subProducts: !product.subProducts ? null : product.subProducts.map( x => ({ ...x, enabled: !product.enabled }))\n }\n }\n\n //SUB PRODUCT\n return {\n ...product,\n enabled: !action.payload.subProduct.enabled ? true : product.enabled,\n subProducts: product.subProducts?.map( subProduct => {\n if(subProduct.label === action.payload.subProduct?.label) {\n return { ...subProduct, enabled: !subProduct.enabled }\n }\n return subProduct;\n })\n }\n\n }\n return product;\n })\n }\n }\n return brand;\n })\n }\n }\n return family;\n })\n return {...state, productList: lensFamily};\n },\n\n updateProductPrice: (state, action: PayloadAction<{\n family: LensFamilyType,\n brand: iProductBrand,\n product: iProduct,\n subProduct?: iSubProduct,\n newPrice: number\n }>) => {\n\n const lensFamily = state.productList.map( (family:iProductFamily) => {\n if(family.id === action.payload.family) {\n return {\n ...family,\n brands: family.brands.map( brand => {\n if(brand.id === action.payload.brand.id) {\n return {\n ...brand,\n products: brand.products.map( product => {\n if(product.id === action.payload.product.id) {\n\n // PRODUCT\n if(!action.payload.subProduct) {\n return { ...product, price: action.payload.newPrice }\n }\n\n //SUB PRODUCT\n return {\n ...product,\n subProducts: product.subProducts?.map( subProduct => {\n if(subProduct.label === action.payload.subProduct?.label) {\n return { ...subProduct, price: action.payload.newPrice }\n }\n return subProduct;\n })\n }\n\n }\n return product;\n })\n }\n }\n return brand;\n })\n }\n }\n return family;\n })\n return {...state, productList: lensFamily};\n },\n\n\n saveMyCompannionData: (state, action: PayloadAction) => ( {\n ...state,\n ...action.payload\n }),\n\n saveConfigurationData: (state, action: PayloadAction) => ({\n ...state,\n productList: action.payload.product_selected,\n tempDiscountSettings: action.payload.pricing_discount,\n configUpdatedAt: action.payload.updated_at,\n tempLensThicknessSettings: action.payload.lens_thickness\n })\n },\n\n\n});\n\nexport const getMyCompanion = (state:iRootState) => state.myCompanion;\nexport default myCompanionSlice;\n","import iNeedExplorerCategory from \"../interface/need-explorer-category.interface\";\n\n\nconst GeneralCategory:iNeedExplorerCategory = {\n id: '1',\n category: 'questionnaires_q_general',\n questions: [\n {\n id: '1.1',\n question: 'general_q_gen_gender',\n kind: 'need_explorer_single_choice_question',\n type:'CHOICE_LIST',\n options: [\n { value: '1.1.1', label: 'general_q_gen_female' },\n { value: '1.1.2', label: 'general_q_gen_male' },\n { value: '1.1.3', label: 'lens_consultation_question_other' }\n ],\n isAnswered: false\n },\n {\n id: '1.2',\n question: 'need_explorer_age',\n kind: 'need_explorer_single_choice_question',\n type:'CHOICE_LIST',\n options: [\n { value: '1.2.1', label: 'general_q_gen_age_18-34' },\n { value: '1.2.2', label: 'general_q_gen_age_35-39' },\n { value: '1.2.3', label: 'general_q_gen_age_40-50' },\n { value: '1.2.4', label: 'general_q_gen_age_51-64' },\n { value: '1.2.5', label: 'general_q_gen_age_65+' }\n ],\n isAnswered: false\n },\n {\n id: '1.3',\n question: 'general_q__gen_vision_solution',\n kind: 'need_explorer_multiple_choice_question',\n type:'CHOICE_BOX_IMAGE',\n options: [\n {\n value: '1.3.1',\n label: 'general_q_gen_contact_lenses',\n image: 'gen_eyes'\n },\n {\n value: '1.3.2',\n label: 'general_q_gen_eyeglasses',\n image: 'gen_eyeglasses'\n },\n {\n value: '1.3.3',\n label: 'general_q_gen_no_lenses_or_contact_lenses',\n image: 'gen_stop',\n type: 'clear'\n }\n ],\n canSelectMultiple: true,\n isAnswered: false\n },\n {\n id: '1.4',\n question: 'general_q_gen__distances_do_you_see_less_clearly',\n kind: 'need_explorer_single_choice_question',\n type:'CHOICE_BOX_IMAGE',\n options: [\n {\n value: '1.4.1',\n label: 'general_q_gen_nearby',\n image: 'gen_nearby'\n },\n {\n value: '1.4.2',\n label: 'general_q_gen_computer_distances',\n image: 'gen_distance'\n },\n {\n value: '1.4.3',\n label: 'general_q_gen_far_away',\n image: 'gen_far_away'\n }\n ],\n isAnswered: false\n },\n {\n id: '1.5',\n question: 'general_q_gen_reason_for_your_consultation',\n kind: 'need_explorer_multiple_choice_question',\n type:'CHOICE_LIST',\n options: [\n { value: '1.5.1', label: 'general_q_gen_i_want_new_spectacles' },\n { value: '1.5.2', label: 'general_q_gen__eye_exam' },\n { value: '1.5.3', label: 'general_q_gen__viewing_at_short_distances' },\n { value: '1.5.4', label: 'general_q_gen_viewing_my_computer_screen' },\n { value: '1.5.5', label: 'general_q_gen_looking_for_multimedia_lenses' },\n { value: '1.5.6', label: 'general_q_gen_dont_see_sharp_at_long_distances' },\n { value: '1.5.7', label: 'general_q_gen_have_dry_and_tired_eyes' },\n { value: '1.5.8', label: 'general_q_gen_want_sun_lenses' },\n { value: '1.5.9', label: 'general_q_gen_want_contact_lenses' },\n ],\n canSelectMultiple: true,\n isAnswered: false\n },\n {\n id: '1.6',\n question: 'general_q_gen_rank_your_daily_life_activities',\n kind: 'need_explorer_rank_question',\n type: 'DRAG_AND_DROP_SORTER',\n options: [\n {\n value: '1.6.1',\n label: 'general_q_gen_screen_usage',\n image: 'gen_drag_screen'\n },\n {\n value: '1.6.2',\n label: 'general_q_gen_daily_mobility',\n image: 'gen_drag_daily'\n },\n {\n value: '1.6.3',\n label: 'questionnaires_q_outdoor_activities',\n image: 'gen_drag_outdoor'\n },\n {\n value: '1.6.4',\n label: 'questionnaires_q_indoor',\n image: 'gen_drag_indoor'\n }\n ],\n answer: [],\n isAnswered: false\n },\n {\n id: '1.7',\n question: \"general_q_gen_spend_each_day_on_the_following_activities\",\n kind: 'need_explorer_duration_question',\n type: 'SLIDER_GROUP',\n sliders: [\n { key: '1.7.1', label: 'general_q_gen_spend_watching_digital_screens_', min: 0, max: 10, minValue: 1},\n { key: '1.7.2', label: 'general_q_gen_hours_do_you_drive_in_traffic', min: 0, max: 10 , minValue: 1},\n { key: '1.7.3', label: 'general_q_gen_hours_spend_indoor_activities_', min: 0, max: 10, minValue: 1},\n { key: '1.7.4', label: 'general_q_gen_spend_on_outdoor_activities_', min: 0, max: 10, minValue: 1}\n ],\n answer: [\n 1,1,1,1\n ],\n isAnswered: false\n },\n {\n id: '1.8',\n question: 'general_q_gen_participate__activities',\n kind: 'need_explorer_multiple_choice_question',\n type: 'CHOICE_BOX_IMAGE',\n options: [\n {\n value: '1.8.1',\n label:'general_q_gen_active_play_with_children_and/or_pets',\n image:'gen_woman_children'\n },\n {\n value: '1.8.2',\n label:'general_q_gen_team_sports_',\n image:'running',\n },\n {\n value: '1.8.3',\n label:'general_q_gen_work_or_hobbies',\n image:'gen_expose'\n\n },\n {\n value: '1.8.4',\n label:'general_q_gen_outdoor_activities',\n image:'running-solo'\n }\n ],\n canSelectMultiple: true,\n isAnswered: false\n },\n {\n id: '1.9',\n question: 'general_q_gen_experience_following',\n kind: 'need_explorer_multiple_choice_question',\n type:'CHOICE_BOX_IMAGE',\n options: [\n {\n value: '1.9.1',\n label: 'general_q_gen_discomfort_from_glare_',\n image: 'gen_discomfort'\n },\n {\n value: '1.9.2',\n label: 'general_q_gen_eyeglass_lenses_that_smudge_easily',\n image: 'gen_smudge'\n },\n {\n value: '1.9.3',\n label: 'general_q_gen_eyeglass_lenses_that_scratch_easily',\n image: 'gen_scratch_glasses'\n },\n {\n value: '1.9.4',\n label: \"general_q_gen_exposure_to_dirt_rain_and_wind\",\n image: 'gen_rain'\n }\n ],\n canSelectMultiple: true,\n isAnswered: false\n },\n ]\n}\n\nconst ScreenUsageCategory:iNeedExplorerCategory = {\n id: '2',\n category: 'questionnaires_q_screen_usage',\n questions: [\n {\n id: '2.1',\n question: 'screen_usage_q_sc_which_screens_',\n kind: 'need_explorer_multiple_choice_question',\n type: 'CHOICE_LIST',\n options: [\n { value: '2.1.1', label: 'screen_usage_q_sc_smartwatch', simpleIcon: 'watch' },\n { value: '2.1.2', label: 'screen_usage_q_sc_digital_camera', simpleIcon: 'cam' },\n { value: '2.1.3', label: 'screen_usage_q_sc_smartphone', simpleIcon: 'mobile' },\n { value: '2.1.4', label: 'screen_usage_q_sc_navigation', simpleIcon: 'map' },\n { value: '2.1.5', label: 'screen_usage_q_sc_e-reader', simpleIcon: 'ereader' },\n { value: '2.1.6', label: 'screen_usage_q_sc_tablet', simpleIcon: 'tablet' },\n { value: '2.1.7', label: 'screen_usage_q_sc_laptop', simpleIcon: 'laptop' },\n { value: '2.1.8', label: 'screen_usage_q_sc_desktop', simpleIcon: 'computer2' },\n { value: '2.1.9', label: 'screen_usage_q_sc_tv', simpleIcon: 'tv' },\n { value: '2.1.10', label: 'screen_usage_q_sc_digiboard', simpleIcon: 'digiboard' },\n ],\n canSelectMultiple: true,\n isAnswered: false\n },\n {\n id: '2.2',\n question: 'screen_usage_q_sc_how_many_hours_per_day_on_average_screen',\n kind: 'need_explorer_duration_question',\n subQuestion: '',\n type: 'DIAL',\n dial: {\n label: 'need_explorer_hr_per_day',\n min: 0,\n max: 10\n },\n answer: 0,\n isAnswered: false\n },\n {\n id: '2.3',\n question: 'screen_usage_q_sc_do_one_or_more_of_the_following_',\n kind: 'need_explorer_multiple_choice_question',\n type:'CHOICE_BOX_IMAGE',\n options: [\n { value: '2.3.1', label: 'screen_usage_q_sc_work_at_a_desk', image: 'gen_multiple_screen' },\n { value: '2.3.2', label: 'screen_usage_q_sc_regularly_use_my_desk_', image: 'gen_discussion' },\n { value: '2.3.3', label: 'screen_usage_q_sc_besides_working_at_my_desk', image: 'gen_meetings' }\n ],\n canSelectMultiple: true,\n isAnswered: false\n },\n {\n id: '2.4',\n question: 'screen_usage_q_sc_do_you_regularly_experience_discomforts',\n kind: 'need_explorer_multiple_choice_question',\n type: 'CHOICE_LIST',\n options: [\n { value: '2.4.1', label: 'screen_usage_q_sc_stinging_eyes', simpleIcon: 'sting' },\n { value: '2.4.2', label: 'screen_usage_q_sc_often_squeeze_eyes', simpleIcon: 'often' },\n { value: '2.4.3', label: 'screen_usage_q_sc_tired_eyes', simpleIcon: 'tired' },\n { value: '2.4.4', label: 'screen_usage_q_sc_running_eyes', simpleIcon: 'running' },\n { value: '2.4.5', label: 'screen_usage_q_sc_red/irritated_eyes', simpleIcon: 'irritated' },\n { value: '2.4.6', label: 'screen_usage_q_sc_dry_eyes', simpleIcon: 'dry' },\n { value: '2.4.7', label: 'screen_usage_q_sc_neck_and_shoulder_pain', simpleIcon: 'neckpain' },\n { value: '2.4.8', label: 'screen_usage_q_sc_headache', simpleIcon: 'headache' },\n { value: '2.4.9', label: 'screen_usage_q_sc_backache', simpleIcon: 'backpain' },\n { value: '2.4.10', label: 'screen_usage_q_sc_problems_with_focussing', simpleIcon: 'focus' },\n ],\n canSelectMultiple: true,\n isAnswered: false\n },\n ]\n}\n\nconst TransportsCategory: iNeedExplorerCategory = {\n id: '3',\n category: 'questionnaires_q_transports',\n questions: [\n {\n id: '3.1',\n question: 'daily_mobility_q_sc__transport_',\n kind: 'need_explorer_multiple_choice_question',\n subQuestion: 'need_explorer_proceed',\n type: 'CHOICE_BOX_IMAGE',\n options: [\n { value: '3.1.1', label: 'daily_mobility_q_sc_bicycle', image: 'bike'},\n { value: '3.1.2', label: 'daily_mobility_q_sc_scooter', image: 'scooter'},\n { value: '3.1.3', label: 'daily_mobility_q_sc_motorcycle', image: 'motor'},\n { value: '3.1.4', label: 'daily_mobility_q_sc_car', image: 'gen_man_truck'},\n { value: '3.1.5', label: 'daily_mobility_q_sc_coach,_truck_or_van', image: 'gen_bus_driver'},\n { value: '3.1.6', label: 'indoor_activities_q_ic_discomforts_neither_of_these', image: 'gen_stop', type: 'clear' }\n ],\n answer: [],\n canSelectMultiple: true,\n isAnswered: false\n },\n {\n id: '3.2',\n question: 'daily_mobility_q_sc_drive_on_a_daily_basis',\n kind: 'need_explorer_duration_question',\n type: 'DIAL',\n dial: {\n label: 'need_explorer_hr_per_day',\n min: 0,\n max: 10\n },\n answer: 0,\n isAnswered: false\n },\n {\n id: '3.3',\n question: 'daily_mobility_q_sc_reason_drive',\n kind: 'need_explorer_multiple_choice_question',\n type: 'CHOICE_LIST',\n options: [\n { value: '3.3.1', label: 'daily_mobility_q_sc_private_/_recreational'},\n { value: '3.3.2', label: 'daily_mobility_q_sc_home-job_traffic'},\n { value: '3.3.3', label: 'daily_mobility_q_sc_professional_for_business_purposes'}\n ],\n canSelectMultiple: true,\n isAnswered: false\n },\n {\n id: '3.4',\n question: 'daily_mobility_q_sc_navigation_system',\n kind: 'need_explorer_single_choice_question',\n type: 'CHOICE_LIST',\n options: [\n { value: '3.4.1', label: 'daily_mobility_q_sc_yes'},\n { value: '3.4.2', label: 'daily_mobility_q_sc_no'}\n ],\n isAnswered: false\n },\n {\n id: '3.5',\n question: 'daily_mobility_q_sc__drive_in_the_morning_in_the_dark',\n kind: 'need_explorer_single_choice_question',\n type: 'CHOICE_LIST',\n options: [\n { value: '3.5.1', label: 'daily_mobility_q_sc_drive_yes'},\n { value: '3.5.2', label: 'daily_mobility_q_sc_drive_no'}\n ],\n isAnswered: false\n },\n {\n id: '3.6',\n question: 'daily_mobility_q_sc_inconveniences',\n kind: 'need_explorer_multiple_choice_question',\n type: 'CHOICE_BOX_IMAGE',\n options: [\n { value: '3.6.1', label: 'daily_mobility_q_sc_inconv_bright_sunlight', image: 'gen_brightlight' },\n { value: '3.6.2', label: 'daily_mobility_q_sc_inconv_low_sunlight', image: 'gen_lowlight' },\n { value: '3.6.3', label: 'daily_mobility_q_sc_inconv_reduced_sight_in_the_dark', image: 'gen_reduced_dark' },\n { value: '3.6.4', label: 'daily_mobility_q_sc_inconv_changing_light_circumstances', image: 'gen_changing_light' },\n { value: '3.6.5', label: 'daily_mobility_q_sc_inconv_dazzlement_by_glare', image: 'gen_glare' },\n { value: '3.6.6', label: 'daily_mobility_q_sc_inconv_head_lights_by_opposing_traffic', image: 'gen_headlights' },\n ],\n canSelectMultiple: true,\n isAnswered: false\n }\n ]\n}\n\nconst OutdoorActivities: iNeedExplorerCategory = {\n id: 4,\n category: 'questionnaires_q_outdoor_activities',\n questions: [\n {\n id: '4.1',\n question: 'outdoor_activities_q_oc_focus_outdoor_activities',\n kind: 'need_explorer_multiple_choice_question',\n type: 'CHOICE_BOX_IMAGE',\n options: [\n { value: '4.1.1', label: 'outdoor_activities_q_oc_focus_outdoor_act_tasks_within_arms_reach', image: 'gen_multitask' },\n { value: '4.1.2', label: 'outdoor_activities_q_oc_focus_outdoor_act_precision_', image: 'gen_precision_task' },\n { value: '4.1.3', label: 'outdoor_activities_q_oc_focus_outdoor_tasks_at_short_distance', image: 'gen_electrician' },\n { value: '4.1.4', label: 'outdoor_activities_q_oc_focus_outdoor_far_distances_during_your_work', image: 'gen_farsighted' }\n ],\n canSelectMultiple: true,\n isAnswered: false\n },\n {\n id: '4.2',\n question: 'outdoor_activities_q_oc__outdoors',\n kind: 'need_explorer_multiple_choice_question',\n type: 'CHOICE_LIST',\n options: [\n { value: '4.2.1', label: 'outdoor_activities_q_oc_walking'},\n { value: '4.2.2', label: 'outdoor_activities_q_oc_outdoor_sports_1'},\n { value: '4.2.3', label: 'outdoor_activities_q_oc_riding_a_bicylcle'},\n { value: '4.2.4', label: 'outdoor_activities_q_oc_diy_/_doing_odd_jobs'},\n { value: '4.2.5', label: 'outdoor_activities_q_oc_gardening'},\n { value: '4.2.6', label: 'outdoor_activities_q_oc_sun_bathing'},\n { value: '4.2.7', label: 'outdoor_activities_q_oc_reading_in_the_sun'}\n ],\n canSelectMultiple: true,\n isAnswered: false\n },\n {\n id: '4.3',\n question: 'outdoor_activities_q_oc_time_spend_outdoors_per_day',\n kind: 'need_explorer_duration_question',\n type: 'DIAL',\n dial: {\n label: 'need_explorer_hr_per_day',\n min: 0,\n max: 10\n },\n answer: 0,\n isAnswered: false\n },\n {\n id: '4.4',\n question: 'outdoor_activities_q_oc_outdoor_sports_2',\n kind: 'need_explorer_rank_question',\n type: 'DRAG_AND_DROP_SORTER',\n options: [\n {\n value: '4.4.1',\n label: 'outdoor_activities_q_oc_outdoor_sports__coordination',\n image: 'gen_drag_quick_eye'\n },\n {\n value: '4.4.2',\n label: 'outdoor_activities_q_oc_outdoor_sports_breaking_your_glasses',\n image: 'gen_drag_high_risk'\n },\n {\n value: '4.4.3',\n label: 'outdoor_activities_q_oc_outdoor_sports_fast_response_times',\n image: 'gen_fast_response'\n },\n {\n value: '4.4.4',\n label: 'outdoor_activities_q_oc_outdoor_sports_high_level_of_precision',\n image: 'gen_drag_kitchen'\n }\n ],\n answer: [],\n isAnswered: false\n },\n {\n id: '4.5',\n question: 'outdoor_activities_q_oc__holiday_destinations',\n kind: 'need_explorer_duration_question',\n type: 'DURATION_GROUP',\n durations: [\n {\n key: '4.5.1',\n label: 'outdoor_activities_q_oc__holiday_destinations_beach',\n min: 0,\n max: 10,\n minValue: 0,\n image: 'gen_slide_holidays'\n },\n {\n key: '4.5.2',\n label: 'outdoor_activities_q_oc__holiday_destinations_snow',\n min: 0,\n max: 10,\n minValue: 0,\n image: 'gen_slide_winter'\n },\n {\n key: '4.5.3',\n label: 'outdoor_activities_q_oc__holiday_destinations_water',\n min: 0,\n max: 10,\n minValue: 0,\n image: 'gen_slide_waterside'\n },\n {\n key: '4.5.4',\n label: 'outdoor_activities_q_oc__holiday_destinations_nature',\n min: 0,\n max: 10,\n minValue: 0,\n image: 'gen_slide_nature'\n },\n {\n key: '4.5.5',\n label: 'outdoor_activities_q_oc__holiday_destinations_mountains',\n min: 0,\n max: 10,\n minValue: 0,\n image: 'gen_slide_climbing'\n },\n {\n key: '4.5.6',\n label: 'outdoor_activities_q_oc__holiday_destinations_city_trips',\n min: 0,\n max: 10,\n minValue: 0,\n image: 'gen_slide_urban'\n }\n ],\n answer: [\n 1,1,1,1,1,1\n ],\n isAnswered: false\n },\n {\n id: '4.6',\n question: 'outdoor_activities_q_oc__spare_glasses',\n kind: 'need_explorer_single_choice_question',\n type: 'CHOICE_LIST',\n options: [\n { value: '4.6.1', label: 'outdoor_activities_q_oc__spare_glasses_yes'},\n { value: '4.6.2', label: 'outdoor_activities_q_oc__spare_glasses_no'}\n ],\n isAnswered: false\n },\n {\n id: '4.7',\n question: 'outdoor_activities_q_oc__outdoor_activities',\n kind: 'need_explorer_multiple_choice_question',\n type: 'CHOICE_LIST',\n options: [\n { value: '4.7.1', label: 'outdoor_activities_q_oc__outdoor_activities_smudge'},\n { value: '4.7.2', label: 'outdoor_activities_q_oc__outdoor_activities__circumstances'},\n { value: '4.7.3', label: 'outdoor_activities_q_oc__outdoor_activities_dazzlement'},\n { value: '4.7.4', label: 'outdoor_activities_q_oc__outdoor_activities_fogged_lenses'},\n { value: '4.7.5', label: 'outdoor_activities_q_oc__outdoor_activities_perspiration_'},\n { value: '4.7.6', label: 'outdoor_activities_q_oc__outdoor_activities_reflections_'},\n { value: '4.7.7', label: 'outdoor_activities_q_oc__outdoor_activities_rain_drops'},\n { value: '4.7.8', label: 'outdoor_activities_q_oc__outdoor_activities_wind'},\n { value: '4.7.9', label: 'outdoor_activities_q_oc__outdoor_activities_shining_surfaces'}\n ],\n canSelectMultiple: true,\n isAnswered: false\n },\n ]\n}\n\nconst IndoorCategory: iNeedExplorerCategory = {\n id: 5,\n category: 'questionnaires_q_indoor',\n questions: [\n {\n id: '5.1',\n question: 'indoor_activities_q_ic_indoor_activities',\n kind: 'need_explorer_duration_question',\n type: 'SLIDER_GROUP',\n sliders: [\n { key: '5.1.1', label: 'indoor_activities_q_ic__computer_activities', min: 0, max: 10, minValue: 1},\n { key: '5.1.2', label: 'indoor_activities_q_ic__reading', min: 0, max: 10 , minValue: 1},\n { key: '5.1.3', label: 'indoor_activities_q_ic__television_or_movies', min: 0, max: 10, minValue: 1},\n { key: '5.1.4', label: 'indoor_activities_q_ic__sewing_/_stitching', min: 0, max: 10, minValue: 1},\n { key: '5.1.5', label: 'indoor_activities_q_ic__music', min: 0, max: 10, minValue: 1},\n { key: '5.1.6', label: 'indoor_activities_q_ic__painting', min: 0, max: 10 , minValue: 1},\n { key: '5.1.7', label: 'indoor_activities_q_ic__cooking', min: 0, max: 10, minValue: 1},\n { key: '5.1.8', label: 'indoor_activities_q_ic__diy', min: 0, max: 10, minValue: 1},\n { key: '5.1.9', label: 'indoor_activities_q_ic__beauty_care', min: 0, max: 10, minValue: 1},\n { key: '5.1.10', label: 'indoor_activities_q_ic__indoor_sports', min: 0, max: 10 , minValue: 1}\n ],\n answer: [\n 1,1,1,1,1,1,1,1,1,1\n ],\n isAnswered: false\n },\n {\n id: '5.2',\n question: 'indoor_activities_q_ic_discomforts_during_your_indoor_activities',\n kind: 'need_explorer_multiple_choice_question',\n type: 'CHOICE_BOX_IMAGE',\n options: [\n {\n value: '5.2.1',\n label: 'indoor_activities_q_ic_discomforts_smudge',\n image: 'gen_smudge_dust_grease'\n },\n {\n value: '5.2.2',\n label: 'indoor_activities_q_ic_discomforts_changing_light_circumstances',\n image: 'gen_light_circumstances'\n },\n {\n value: '5.2.3',\n label: 'indoor_activities_q_ic_discomforts_neither_of_these',\n image: 'gen_stop',\n type: 'clear'\n }\n ],\n canSelectMultiple: true,\n isAnswered: false\n }\n ]\n}\n\nconst neddExplorerQuestionaires: iNeedExplorerCategory[] = [\n GeneralCategory,\n ScreenUsageCategory,\n TransportsCategory,\n OutdoorActivities,\n IndoorCategory\n];\n\nexport default neddExplorerQuestionaires;\n","enum AgeCategoryType {\n KIDS = 'kids',\n YOUNG_ADULT = 'young_adult',\n ADULT = 'adult',\n BOTH = 'both',\n PRODUCT_YOUNG_ADULT = 'adults__young_adults'\n}\n\nexport default AgeCategoryType","import iNeedExplorerCategory from \"../interface/need-explorer-category.interface\";\n\n\nconst ChildrenCategory:iNeedExplorerCategory = {\n id: '6',\n category: 'need_explorer_qest_kids_chil',\n questions: [\n {\n id: '6.1',\n question: 'for_kids_q_kids_age',\n kind: 'need_explorer_single_choice_question',\n type:'CHOICE_BOX',\n options: [\n { value: '6.1.1', label: 'for_kids_q_kids_age_4-6' },\n { value: '6.1.2', label: 'for_kids_q_kids_age_6-8' },\n { value: '6.1.3', label: 'for_kids_q_kids_age_8-10' },\n { value: '6.1.4', label: 'for_kids_q_kids_age_10-12' },\n { value: '6.1.5', label: 'for_kids_q_kids_age_12-14' },\n { value: '6.1.6', label: 'for_kids_q_kids_age_14-16' },\n { value: '6.1.7', label: 'for_kids_q_kids_age+16' }\n ],\n isAnswered: false\n },\n {\n id: '6.2',\n question: 'for_kids_q_kids_clear_vision',\n kind: 'need_explorer_multiple_choice_question',\n subQuestion: 'need_explorer__traff_participation_6',\n type: 'CHOICE_BOX_IMAGE',\n options: [\n {\n value: '6.2.1',\n label:'for_kids_q_kids_clear_vision_blackboard',\n image:'board0'\n },\n {\n value: '6.2.2',\n label:'for_kids_q_kids_clear_vision_reading_',\n image:'reading-book',\n },\n {\n value: '6.2.3',\n label:'for_kids_q_kids_clear_vision_tablet',\n image:'tablet-use'\n },\n {\n value: '6.2.4',\n label:'for_kids_q_kids_outdoor_activities',\n image:'outdoor-activities-image'\n }\n ],\n answer: [{\n value: '6.2.5',\n label:'None',\n image:'white-bg'\n }],\n canSelectMultiple: true,\n isAnswered: false\n },\n {\n id: '6.3',\n question: 'for_kids_q_kids_board_at_school',\n kind: 'need_explorer_multiple_choice_question',\n type:'CHOICE_BOX_IMAGE',\n options: [\n { value: '6.3.1', label: 'for_kids_q_kids_board_at_school_sharp', image:'board0'},\n { value: '6.3.2', label: 'for_kids_q_kids_board_at_school_blurred_vision-low', image:'board1' },\n { value: '6.3.3', label: 'for_kids_q_kids_board_at_school_blurred_vision-medium', image:'board2' },\n { value: '6.3.4', label: 'for_kids_q_kids_board_at_school_blurred_vision-high', image:'board3' }\n ],\n canSelectMultiple: false,\n isAnswered: false\n },\n {\n id: '6.4',\n question: 'for_kids_q_kids_score_you_vision_',\n kind: 'need_explorer_single_choice_question',\n // type: 'SLIDER_GROUP',\n // sliders: [\n // { key: '6.4.1', label: '', min: 0, max: 6, minValue: 1},\n // ],\n // answer: [1]\n type: 'CHOICE_BOX_KIDS',\n options: [\n { value: '6.4.1', label: 'for_kids_q_kids_score_you_vision__1'},\n { value: '6.4.2', label: 'for_kids_q_kids_score_you_vision__2'},\n { value: '6.4.3', label: 'for_kids_q_kids_score_you_vision__3'},\n { value: '6.4.4', label: 'for_kids_q_kids_score_you_vision__4'},\n { value: '6.4.5', label: 'for_kids_q_kids_score_you_vision__5'},\n { value: '6.4.6', label: 'for_kids_q_kids_score_you_vision__6'}\n ],\n isAnswered: false\n },\n {\n id: '6.5',\n question: 'for_kids_q_kids_mcq-complaints',\n kind: 'need_explorer_multiple_choice_question',\n type:'CHOICE_IMAGE_KIDS',\n options: [\n { value: '6.5.1', label: 'for_kids_q_kids_mcq-complaints_headaches', icon: 'headaches'},\n { value: '6.5.2', label: 'for_kids_q_kids_mcq-complaints_tired_eyes', icon: 'tiredEyes'},\n { value: '6.5.3', label: 'for_kids_q_kids_mcq-complaints_blinking_excessively', icon: 'blinkingExcessively'},\n { value: '6.5.4', label: 'for_kids_q_kids_mcq-complaints_squinting', icon: 'squinting'},\n { value: '6.5.5', label: 'for_kids_q_kids_mcq-complaints_rubbing_eyes', icon: 'rubbingEyes'}\n ],\n isAnswered: false,\n canSelectMultiple: true\n },\n ]\n}\n\nconst ParentsCategory:iNeedExplorerCategory = {\n id: '7',\n category: 'need_explorer_qest_kids_par',\n questions: [\n {\n id: '7.1',\n question: 'for_parent_q_kids_myopic',\n kind: 'need_explorer_multiple_choice_question',\n type:'CHOICE_BOX',\n options: [\n { value: '7.1.1', label: 'for_parent_q_kids_myopic_mother' },\n { value: '7.1.2', label: 'for_parent_q_kids_myopic_father' },\n { value: '7.1.3', label: 'for_parent_q_kids_myopic_brother(s)' },\n { value: '7.1.4', label: 'for_parent_q_kids_myopic_sister(s)' },\n { value: '7.1.5', label: 'need_explorer_no_one' }\n ],\n canSelectMultiple: true,\n isAnswered: false\n },\n {\n id: '7.2',\n question: 'for_parent_q_kids_squint_eyes',\n kind: 'need_explorer_single_choice_question',\n type:'CHOICE_BOX',\n options: [\n { value: '7.2.1', label: 'for_parent_q_kids_squint_eyes_yes' },\n { value: '7.2.2', label: 'for_parent_q_kids_squint_eyes_no' }\n ],\n isAnswered: false\n },\n {\n id: '7.3',\n question: 'for_parent_q_kids_outdoors_per_day',\n kind: 'need_explorer_duration_question',\n type: 'DIAL',\n dial: {\n label: 'need_explorer_hours',\n min: 0,\n max: 6,\n },\n answer: 0,\n isAnswered: false\n },\n {\n id: '7.4',\n question: 'for_parent_q_kids_near_work',\n kind: 'need_explorer_duration_question',\n type: 'DIAL',\n dial: {\n label: 'need_explorer_hours',\n min: 0,\n max: 6,\n },\n answer: 0,\n isAnswered: false\n },\n {\n id: '7.5',\n question: 'for_parent_q_kids_mcq-childs_complaints',\n kind: 'need_explorer_multiple_choice_question',\n type:'CHOICE_IMAGE_KIDS',\n options: [\n { value: '7.5.1', label: 'for_parent_q_kids_mcq-childs_complaints_headaches', icon: 'headaches'},\n { value: '7.5.2', label: 'for_parent_q_kids_mcq-childs_complaints_tired_eyes', icon: 'tiredEyes'},\n { value: '7.5.3', label: 'for_parent_q_kids_mcq-childs_complaints_blinking_excessively', icon: 'blinkingExcessively'},\n { value: '7.5.4', label: 'for_parent_q_kids_mcq-childs_complaints_squinting', icon: 'squinting'},\n { value: '7.5.5', label: 'for_parent_q_kids_mcq-childs_complaints_rubbing_eyes', icon: 'rubbingEyes'}\n ],\n canSelectMultiple: true,\n isAnswered: false\n },\n ]\n}\n\nconst needExplorerKidsQuestionaires: iNeedExplorerCategory[] = [\n ChildrenCategory,\n ParentsCategory\n];\n\nexport default needExplorerKidsQuestionaires;\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport iNeedExplorerStore from '../interface/need-explorer-store.interface';\nimport iRootState from '../interface/root-state.interface';\nimport neddExplorerQuestionaires from '../../constants/need-explorer-questionaires.contants';\nimport NeedExplorerViewType from '../../types/need-explorer-view.type';\nimport iQuestionOption from '../../interface/question-option.interface';\nimport iNeedExplorerQuestion from '../../interface/need-explorer-question.interface';\nimport iNeedExplorerCategory from '../../interface/need-explorer-category.interface';\nimport needExplorerKidsQuestionaires from '../../constants/need-explorer-kids-questionaires.contants';\n\nconst initialState: iNeedExplorerStore = {\n view: NeedExplorerViewType.INTRO,\n categoryStep: 0,\n questionStep: 0,\n questions: neddExplorerQuestionaires,\n activeCategory: neddExplorerQuestionaires[0],\n activeQuestion: neddExplorerQuestionaires[0].questions[0],\n isGeneralDone: false,\n isExtraDone: false,\n answers: [],\n showSaved: false,\n\n}\n\nconst needExplorerSlice = createSlice({\n name: 'needExplorer',\n initialState,\n reducers: {\n changeInitialStateToKids: (state) => ( {\n ...state,\n questions: needExplorerKidsQuestionaires,\n activeCategory: needExplorerKidsQuestionaires[0],\n activeQuestion: needExplorerKidsQuestionaires[0].questions[0]\n }),\n changeView: (state, action: PayloadAction) => ( {...state, view: action.payload }),\n nextQuestion: (state) => {\n let newQuestionStep = state.questionStep + 1;\n let newCategoryStep = state.categoryStep;\n let categories = state.questions;\n const isLastQuestionOfCategory = state.questions[state.categoryStep].questions.length === (state.questionStep + 1);\n const isLastCategory = (state.categoryStep + 1) === state.questions.length;\n let generalDone = false\n\n //NOTE: IF THE CURRENT QUESTION IS THE LAST QUESTION OF THE CATEGORY\n if( isLastQuestionOfCategory ) {\n // Update Category status isComplete to true\n categories = state.questions.map( category => {\n if(category.id === state.activeCategory.id) {\n return { ...category, isComplete: true };\n }\n return category;\n });\n // RESET question to 0 and increment Category Step\n newQuestionStep = 0;\n // If last category reset category to 0\n // otherwise increment by 1\n newCategoryStep = isLastCategory ? 0 : state.categoryStep + 1;\n\n // Checks if the general category has been passed\n generalDone = state.categoryStep + 1 > 0\n }\n\n const appendAnswerOnToQuestion = (\n categoryQuestions: iNeedExplorerQuestion[],\n answer: iQuestionOption | iQuestionOption[] | string | number | number[] | undefined\n ) => {\n return categoryQuestions.map(q => {\n if(q.id === state.activeQuestion.id) return { \n ...q,\n answer,\n categoryIndex: state.categoryStep,\n questionIndex: state.questionStep,\n isAnswered: true\n }\n return q;\n });\n }\n const categoriesWithAnswer = categories.map(cat => {\n if(cat.id === state.activeCategory.id) {\n return {\n ...cat,\n questions: appendAnswerOnToQuestion(cat.questions, state.activeQuestion.answer)\n }\n }\n return cat;\n });\n\n return {\n ...state,\n questionStep: newQuestionStep,\n categoryStep: newCategoryStep,\n activeCategory: state.questions[newCategoryStep],\n activeQuestion: state.questions[newCategoryStep].questions[newQuestionStep],\n questions: categoriesWithAnswer,\n // Once the general category has been passed then the isGeneralDone state will always be true\n isGeneralDone: state.isGeneralDone ? true : generalDone\n }\n },\n previousQuestion: (state) => {\n const prevStep = state.questionStep - 1;\n return {\n ...state,\n questionStep: prevStep,\n activeQuestion: state.questions[state.categoryStep].questions[prevStep]\n }\n },\n questionaireFromStart: (state) => ({\n ...state,\n questionStep: 0,\n categoryStep: 0,\n activeCategory: state.questions[0],\n activeQuestion: state.questions[0].questions[0]\n }),\n answerQuestion: (state, action: PayloadAction<{\n answer: string | iQuestionOption | iQuestionOption[] | number | number[],\n category: number,\n question: number}>) => {\n\n // const appendAnswerOnQuestion = (\n // categoryQuestions: iNeedExplorerQuestion[],\n // answer: iQuestionOption | iQuestionOption[] | string\n // ) => {\n // return categoryQuestions.map(q => {\n // if(q.id === state.activeQuestion.id) return { ...q, answer }\n // return q;\n // });\n // }\n\n // const newQuestionsState = state.questions.map( category => {\n // if(category.id === state.activeCategory.id) {\n // return {\n // ...category,\n // questions: appendAnswerOnQuestion(category.questions, action.payload)\n // };\n // }\n // return category;\n // });\n\n return {\n ...state,\n // questions: newQuestionsState,\n activeQuestion: {\n ...state.activeQuestion,\n answer: action.payload.answer,\n categoryIndex: action.payload.category,\n questionIndex: action.payload.question\n }\n }\n },\n gotoCategory: (state, action: PayloadAction<{category: iNeedExplorerCategory, index: number}>) => ( {\n ...state,\n activeCategory: action.payload.category,\n activeQuestion: action.payload.category.questions[0],\n categoryStep: action.payload.index,\n questionStep: 0\n } ),\n gotoQuestion: (state, action: PayloadAction<{category: number, question: number}>) => ( {\n ...state,\n questionStep: action.payload.question,\n categoryStep: action.payload.category,\n activeCategory: state.questions[action.payload.category],\n activeQuestion: state.questions[action.payload.category].questions[action.payload.question]\n } ),\n\n\n resetData: (state) => ({\n ...state,\n ...initialState\n }),\n setShowSaved: (state, action: PayloadAction) => ( { ...state, showSaved: action.payload } ),\n setData: (state, action: PayloadAction) => ( {...state, ...action.payload }),\n populateSelectedModal: (state, action: PayloadAction) => ( {...state, selectedId: action.payload} ),\n populateSelectedModalSignificance: (state, action: PayloadAction) => ( {...state, significance: action.payload} ),\n populateSelectedModalLens: (state, action: PayloadAction) => ( {...state, selectedLens: action.payload} ),\n populateSelectedModalLensIcon: (state, action: PayloadAction) => ( {...state, selectedLensIcon: action.payload} ),\n setIsExtraDone: (state, action: PayloadAction) => ( {...state, isExtraDone: action.payload} ),\n setFinalAnswers: (state, action: PayloadAction) => ( {...state, answers: action.payload} ),\n generalQuestionSessionStart: (state, action: PayloadAction) => ( {...state, generalQuestionSessionStart: action.payload} ),\n moreQuestionSessionStart: (state, action: PayloadAction) => ( {...state, moreQuestionSessionStart: action.payload} ),\n\n }\n});\n\nexport const getNeedExplorer = (state:iRootState) => state.needExplorer;\nexport default needExplorerSlice;\n","enum PrecisionType {\n STANDARD = 'standard',\n AVA = 'ava'\n}\n\nexport default PrecisionType;","import iLensProposalField from \"../interface/lens-proposal-field.interface\";\nimport AgeCategoryType from \"../types/age-category.type\";\nimport ComplementaryEquipmentType from \"../types/complementary-equipment.type\";\nimport LensCategoryType from \"../types/lens-category.type\";\nimport LensEnhanceType from \"../types/lens-enhance.type\";\nimport LensFamilyType from \"../types/lens-family.type\";\nimport LensProtectType from \"../types/lens-protect.type\";\n\nconst GENERAL_EQUIPMENTS: iLensProposalField[] = [\n {\n field: LensFamilyType.CORRECT,\n label: 'prescription_rx_correct',\n required: true,\n options: [\n {\n label: 'prescription_rx_progressive',\n value: LensCategoryType.PROGRESSIVE,\n ageCategories: [\n AgeCategoryType.ADULT,\n AgeCategoryType.YOUNG_ADULT\n ]\n },\n {\n label: 'prescription_rx_single_vision',\n value: LensCategoryType.SINGLE_VISION\n },\n {\n label: 'prescription_rx_personalized',\n value: LensCategoryType.PERSONALIZED,\n ageCategories: [\n AgeCategoryType.ADULT,\n AgeCategoryType.YOUNG_ADULT\n ]\n },\n {\n label: 'prescription_rx_myopia_control_',\n value: LensCategoryType.MYOPIA,\n ageCategories: [\n AgeCategoryType.KIDS\n ]\n }\n ]\n },\n {\n field: LensFamilyType.PROTECT,\n label: 'prescription_rx_protect',\n options: [\n {\n label: 'prescription_rx_blue_cut',\n value: LensProtectType.BLUE_CUT\n },\n {\n label: 'prescription_rx_photochromic',\n value: LensProtectType.PHOTOCROMIC\n },\n {\n label: 'prescription_rx_tinted_lens',\n value: LensProtectType.TINTED,\n }\n ]\n },\n {\n field: LensFamilyType.ENHANCE,\n label: 'prescription_rx_enhance',\n options: [\n {\n label: 'prescription_rx_ar_lens',\n value: LensEnhanceType.AR\n }\n ]\n }\n];\n\nconst COMPLEMENTARY_EQUIPMENTS:iLensProposalField[] = [\n {\n field: 'complementaryEquipment',\n options: [\n {\n label: 'prescription_rx_driving',\n value: ComplementaryEquipmentType.DRIVING,\n ageCategories: [\n AgeCategoryType.ADULT,\n AgeCategoryType.YOUNG_ADULT\n ]\n },\n {\n label: 'prescription_rx_computer',\n value: ComplementaryEquipmentType.COMPUTER\n },\n {\n label: 'prescription_rx_sun',\n value: ComplementaryEquipmentType.SUN\n }\n ]\n }\n]\n\nlet currentCountry: string = localStorage.getItem(\"country\") !== null ? (localStorage.getItem(\"country\") as string) : (localStorage.getItem(\"country\") as string)\nconst countryWithXR: string[] = [\"ro\", \"de\", \"pt\", \"bg\", \"gb\", \"es\", \"be\", 'sl', 'hr', 'gr', \"ph\"]\nlet isXrEnable: boolean = countryWithXR.includes(currentCountry) \nconst RX_LENS_RECOMMENDATIONS: any = {\n adult: {\n pair1: {\n correct: [\n {\n category: LensCategoryType.PROGRESSIVE,\n product: isXrEnable ? \"varilux_xr_series\" : \"varilux_x_series\"\n // product: \"varilux_x_series\"\n },\n {\n category: LensCategoryType.SINGLE_VISION,\n product: 'eyezen_start'\n }\n ],\n protect: [\n {\n category: LensProtectType.BLUE_CUT,\n product: 'eye_protect_system'\n },\n {\n category: LensProtectType.PHOTOCROMIC,\n product: 'transitions_signature_gen_8'\n },\n {\n category: LensProtectType.TINTED,\n product: 'xperio_tinted'\n }\n ],\n enhance: [\n {\n category: LensEnhanceType.AR,\n product: 'crizal_sapphire'\n },\n {\n category: LensProtectType.TINTED,\n product: 'crizal_sun_xprotect'\n },\n ]\n },\n\n pair2: {\n correct: [\n {\n category: LensCategoryType.SINGLE_VISION,\n equipment: ComplementaryEquipmentType.COMPUTER,\n product: 'eyezen_start'\n },\n {\n category: LensCategoryType.PROGRESSIVE,\n equipment: ComplementaryEquipmentType.COMPUTER,\n product: 'varilux_digitime'\n }\n ],\n protect: [\n {\n equipment: ComplementaryEquipmentType.COMPUTER,\n product: 'eye_protect_system'\n },\n {\n equipment: ComplementaryEquipmentType.SUN,\n product: 'xperio_polarised'\n },\n {\n equipment: ComplementaryEquipmentType.DRIVING,\n product: 'xperio_polarised'\n }\n ],\n enhance: [\n {\n equipment: ComplementaryEquipmentType.COMPUTER,\n product: 'crizal_prevencia'\n },\n {\n equipment: ComplementaryEquipmentType.SUN,\n product: ['crizal_sun_xprotect', 'crizal_forte']\n },\n {\n equipment: ComplementaryEquipmentType.DRIVING,\n product: ['crizal_sun_xprotect', 'crizal_drive']\n }\n ]\n }\n },\n kids: {\n pair1: {\n correct:[\n {\n category: LensCategoryType.SINGLE_VISION,\n product: 'eyezen_kids'\n },\n {\n category: LensCategoryType.MYOPIA,\n product: 'stellest'\n },\n ],\n protect:[\n {\n category: LensCategoryType.SINGLE_VISION,\n product: 'eye_protect_system'\n },\n {\n category: LensProtectType.PHOTOCROMIC,\n product: 'transitions_signature_gen_8'\n },\n ],\n enhance:[\n {\n category: LensCategoryType.MYOPIA,\n product: 'crizal_aliz'\n },\n {\n category: LensCategoryType.SINGLE_VISION,\n product: 'crizal_easy'\n },\n ]\n },\n pair2: {\n correct: [\n {\n product: 'eyezen_kids'\n },\n ],\n protect: [\n {\n equipment: ComplementaryEquipmentType.COMPUTER,\n product: 'eye_protect_system'\n },\n {\n equipment: ComplementaryEquipmentType.SUN,\n product: 'transitions_signature_gen_8'\n },\n ],\n enhance: [\n {\n equipment: ComplementaryEquipmentType.COMPUTER,\n product: 'crizal_prevencia'\n },\n {\n equipment: ComplementaryEquipmentType.SUN,\n product: 'crizal_sapphire'\n },\n ]\n }\n }\n}\nconst RX_LENS_RECOMMENDATIONS_WITH_XR: any = {\n adult: {\n pair1: {\n correct: [\n {\n category: LensCategoryType.PROGRESSIVE,\n product: \"varilux_xr_series\",\n },\n {\n category: LensCategoryType.SINGLE_VISION,\n product: 'eyezen_start'\n }\n ],\n protect: [\n {\n category: LensProtectType.BLUE_CUT,\n product: 'eye_protect_system'\n },\n {\n category: LensProtectType.PHOTOCROMIC,\n product: 'transitions_signature_gen_8'\n },\n {\n category: LensProtectType.TINTED,\n product: 'xperio_tinted'\n }\n ],\n enhance: [\n {\n category: LensEnhanceType.AR,\n product: 'crizal_sapphire'\n },\n {\n category: LensProtectType.TINTED,\n product: 'crizal_sun_xprotect'\n },\n ]\n },\n\n pair2: {\n correct: [\n {\n category: LensCategoryType.SINGLE_VISION,\n equipment: ComplementaryEquipmentType.COMPUTER,\n product: 'eyezen_start'\n },\n {\n category: LensCategoryType.PROGRESSIVE,\n equipment: ComplementaryEquipmentType.COMPUTER,\n product: 'varilux_digitime'\n }\n ],\n protect: [\n {\n equipment: ComplementaryEquipmentType.COMPUTER,\n product: 'eye_protect_system'\n },\n {\n equipment: ComplementaryEquipmentType.SUN,\n product: 'xperio_polarised'\n },\n {\n equipment: ComplementaryEquipmentType.DRIVING,\n product: 'xperio_polarised'\n }\n ],\n enhance: [\n {\n equipment: ComplementaryEquipmentType.COMPUTER,\n product: 'crizal_prevencia'\n },\n {\n equipment: ComplementaryEquipmentType.SUN,\n product: ['crizal_sun_xprotect', 'crizal_forte']\n },\n {\n equipment: ComplementaryEquipmentType.DRIVING,\n product: ['crizal_sun_xprotect', 'crizal_drive']\n }\n ]\n }\n },\n kids: {\n pair1: {\n correct:[\n {\n category: LensCategoryType.SINGLE_VISION,\n product: 'eyezen_kids'\n },\n {\n category: LensCategoryType.MYOPIA,\n product: 'stellest'\n },\n ],\n protect:[\n {\n category: LensCategoryType.SINGLE_VISION,\n product: 'eye_protect_system'\n },\n {\n category: LensProtectType.PHOTOCROMIC,\n product: 'transitions_signature_gen_8'\n },\n ],\n enhance:[\n {\n category: LensCategoryType.MYOPIA,\n product: 'crizal_aliz'\n },\n {\n category: LensCategoryType.SINGLE_VISION,\n product: 'crizal_easy'\n },\n ]\n },\n pair2: {\n correct: [\n {\n product: 'eyezen_kids'\n },\n ],\n protect: [\n {\n equipment: ComplementaryEquipmentType.COMPUTER,\n product: 'eye_protect_system'\n },\n {\n equipment: ComplementaryEquipmentType.SUN,\n product: 'transitions_signature_gen_8'\n },\n ],\n enhance: [\n {\n equipment: ComplementaryEquipmentType.COMPUTER,\n product: 'crizal_prevencia'\n },\n {\n equipment: ComplementaryEquipmentType.SUN,\n product: 'crizal_sapphire'\n },\n ]\n }\n }\n}\n\nconst RX_LENS_RECOMMENDATIONS_RUSSIA: any = {\n adult: {\n pair1: {\n correct: [\n {\n category: LensCategoryType.PROGRESSIVE,\n product: 'varilux_comfort_max'\n },\n {\n category: LensCategoryType.SINGLE_VISION,\n product: 'eyezen_start'\n }\n ],\n protect: [\n {\n category: LensProtectType.BLUE_CUT,\n product: 'eye_protect_system'\n },\n {\n category: LensProtectType.PHOTOCROMIC,\n product: 'transitions_signature_gen_8'\n },\n {\n category: LensProtectType.TINTED,\n product: 'xperio_tinted'\n }\n ],\n enhance: [\n {\n category: LensEnhanceType.AR,\n product: 'crizal_sapphire'\n },\n {\n category: LensProtectType.TINTED,\n product: 'crizal_sun_xprotect'\n },\n ]\n },\n\n pair2: {\n correct: [\n {\n category: LensCategoryType.SINGLE_VISION,\n equipment: ComplementaryEquipmentType.COMPUTER,\n product: 'eyezen_start'\n },\n {\n category: LensCategoryType.PROGRESSIVE,\n equipment: ComplementaryEquipmentType.COMPUTER,\n product: 'varilux_comfort_max'\n }\n ],\n protect: [\n {\n equipment: ComplementaryEquipmentType.COMPUTER,\n product: 'eye_protect_system'\n },\n {\n equipment: ComplementaryEquipmentType.SUN,\n product: 'xperio_polarised'\n },\n {\n equipment: ComplementaryEquipmentType.DRIVING,\n product: 'xperio_polarised'\n }\n ],\n enhance: [\n {\n equipment: ComplementaryEquipmentType.COMPUTER,\n product: 'crizal_prevencia'\n },\n {\n equipment: ComplementaryEquipmentType.SUN,\n product: ['crizal_sun_xprotect', 'crizal_forte']\n },\n {\n equipment: ComplementaryEquipmentType.DRIVING,\n product: ['crizal_sun_xprotect', 'crizal_drive']\n }\n ]\n }\n },\n kids: {\n pair1: {\n correct:[\n {\n category: LensCategoryType.SINGLE_VISION,\n product: 'eyezen_kids'\n },\n {\n category: LensCategoryType.MYOPIA,\n product: 'stellest'\n },\n ],\n protect:[\n {\n category: LensCategoryType.SINGLE_VISION,\n product: 'eye_protect_system'\n },\n {\n category: LensProtectType.PHOTOCROMIC,\n product: 'transitions_signature_gen_8'\n },\n ],\n enhance:[\n {\n category: LensCategoryType.MYOPIA,\n product: 'crizal_aliz'\n },\n {\n category: LensCategoryType.SINGLE_VISION,\n product: 'crizal_easy'\n },\n ]\n },\n pair2: {\n correct: [\n {\n product: 'eyezen_kids'\n },\n ],\n protect: [\n {\n equipment: ComplementaryEquipmentType.COMPUTER,\n product: 'eye_protect_system'\n },\n {\n equipment: ComplementaryEquipmentType.SUN,\n product: 'transitions_signature_gen_8'\n },\n ],\n enhance: [\n {\n equipment: ComplementaryEquipmentType.COMPUTER,\n product: 'crizal_prevencia'\n },\n {\n equipment: ComplementaryEquipmentType.SUN,\n product: 'crizal_sapphire'\n },\n ]\n }\n }\n}\n\n\nexport {\n GENERAL_EQUIPMENTS,\n COMPLEMENTARY_EQUIPMENTS,\n RX_LENS_RECOMMENDATIONS,\n RX_LENS_RECOMMENDATIONS_RUSSIA,\n RX_LENS_RECOMMENDATIONS_WITH_XR\n}\n","enum PrescriptionViewType {\n PRESCRIPTION = 'prescription',\n LENSPROPOSAL = 'lens-proposal'\n}\n\nexport default PrescriptionViewType;","enum DiscoveryView {\n INTRO = 'intro',\n STEPS = 'steps',\n LENS = 'lens',\n EXIT = 'exit'\n}\n\nexport default DiscoveryView;","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { COMPLEMENTARY_EQUIPMENTS, GENERAL_EQUIPMENTS } from '../../constants/prescription-lens-proposal.constants';\nimport iLensProposalField from '../../interface/lens-proposal-field.interface';\nimport iPrescriptionData from '../../interface/prescription-data.interface';\nimport LensProposalEquipmentType from '../../types/lens-proposal-section.type';\nimport PrecisionType from '../../types/precision.type';\nimport PrescriptionViewType from '../../types/prescription-view.type';\nimport iPrescriptionStore from '../interface/prescription-store.interface';\nimport iRootState from '../interface/root-state.interface';\n\n\nconst initialState: iPrescriptionStore = {\n view: PrescriptionViewType.PRESCRIPTION,\n isValidPrescription: false,\n\n tempGeneralEquipment: GENERAL_EQUIPMENTS,\n tempComplementaryEquipment: COMPLEMENTARY_EQUIPMENTS,\n tempPrescriptionData: {\n precision: PrecisionType.STANDARD,\n values: {\n sphere: { od: undefined, os: undefined },\n cylinder: { od: undefined, os: undefined },\n axis: { od: undefined, os: undefined },\n addition: undefined\n }\n },\n valueSign: {\n sphere: '',\n cylinder: ''\n },\n temporaryData: {}\n}\n\nconst prescriptionSlice = createSlice({\n name: 'prescription',\n initialState,\n reducers: {\n changeView: (state, action: PayloadAction) => ({...state, view: action.payload}) ,\n saveTemporaryLensEquipment: (\n state,\n action: PayloadAction<{general:iLensProposalField[], complementary:iLensProposalField[]}>) =>\n {\n const { general, complementary } = action.payload;\n return {\n ...state,\n tempGeneralEquipment: general,\n tempComplementaryEquipment: complementary\n }\n },\n updateLensEquipment: (\n state,\n action: PayloadAction<{data:iLensProposalField[], equipment: LensProposalEquipmentType}>) =>\n {\n const { data, equipment } = action.payload;\n const capitalizedEquipment = equipment.charAt(0).toUpperCase() + equipment.slice(1);\n\n const storeProperty = `temp${capitalizedEquipment}Equipment`;\n return {...state, [storeProperty]: data}\n },\n validPrescription: (state, action: PayloadAction) => ({...state, isValidPrescription: action.payload }),\n\n setPrescriptionPrecision: (state, action: PayloadAction) => {\n return {\n ...state,\n tempPrescriptionData: {\n ...state.tempPrescriptionData,\n precision: action.payload\n }\n }\n },\n saveTempPrescriptionData: (state, action: PayloadAction) => ( {\n ...state,\n tempPrescriptionData: {\n ...state.tempPrescriptionData,\n values: action.payload.values\n }\n }),\n saveValueSign: (state, action: PayloadAction<{presicription: string, sign: string}>) =>{\n let newState:any;\n if(action.payload.presicription === 'sphere') {\n newState = {\n ...state.valueSign,\n sphere: action.payload.sign\n }\n }\n else if (action.payload.presicription === 'cylinder') {\n newState = {\n ...state.valueSign,\n cylinder: action.payload.sign\n }\n }\n return{\n ...state,\n valueSign: newState\n }\n },\n setTemporaryData: (state, action) => {\n return {\n ...state,\n temporaryData: action.payload\n }\n },\n\n resetData: (state) => ({\n ...state,\n ...initialState\n })\n }\n});\n\nexport const getPrescription = (state:iRootState) => state.prescription;\nexport default prescriptionSlice;\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport iLensThicknessCalculation from '../../interface/lens-thickness-calculation';\nimport LensPairType from '../../types/lens-pair.type';\nimport iLensThicknessStore from '../interface/lens-thickness-store.interface';\nimport iRootState from '../interface/root-state.interface';\n\nconst initialState: iLensThicknessStore = {\n view: 'controls',\n tempBaseLensThicknessCalculation: {\n pair1: undefined,\n pair2: undefined\n },\n tempLensThicknessCalculation: {\n pair1: undefined,\n pair2: undefined\n },\n error:'',\n sliderValue: 0,\n sliderCount: 0,\n}\n\nconst lensThicknessSlice = createSlice({\n name: 'lensThickness',\n initialState,\n reducers: {\n changeView: (state, action: PayloadAction<'controls' | 'prescription'>) => ( {...state, view: action.payload} ),\n changePair: (state, action: PayloadAction) => ( {...state, activePair: action.payload} ),\n setLensThickness: (state, action: PayloadAction<{\n pair1: number,\n pair2: number\n }>) => {\n return {\n ...state,\n tempLensThickness: action.payload\n }\n },\n\n saveBaseLensThickness: (state, action: PayloadAction<{\n pair: LensPairType,\n data: iLensThicknessCalculation | undefined\n }>) => ({\n ...state,\n tempBaseLensThicknessCalculation: {\n ...state.tempBaseLensThicknessCalculation,\n [action.payload.pair]: action.payload.data\n }\n }),\n saveLensThicknessDifference: (state, action: PayloadAction<{\n pair: LensPairType,\n data: iLensThicknessCalculation | undefined\n }>) => ({\n ...state,\n tempLensThicknessCalculation: {\n ...state.tempLensThicknessCalculation,\n [action.payload.pair]: action.payload.data\n }\n }),\n clearLensThicknessCalculationData: (state) => ({\n ...state,\n tempBaseLensThicknessCalculation: { pair1: undefined, pair2: undefined },\n tempLensThicknessCalculation: { pair1: undefined, pair2: undefined }\n }),\n setLensThicknessOnePair: (state, action: PayloadAction<{\n value: number | null,\n pair: LensPairType\n }>) => {\n const { pair, value } = action.payload;\n return {\n ...state,\n tempLensThickness: {\n ...state.tempLensThickness,\n [pair]: value\n }\n }\n }, \n resetData: (state) => ({...state, ...initialState, tempLensThickness: undefined}),\n changeError: (state, action: PayloadAction<'lensThickness' | 'prescription' | ''>) => ({...state, error: action.payload}),\n setSliderValue: (state, action: PayloadAction) => ({...state, sliderValue: action.payload}),\n setSliderCount: (state, action: PayloadAction) => void({...state, sliderCount: state.sliderCount+=action.payload}),\n updateBaseLens: (state, action) => ({\n ...state,\n tempBaseLensThicknessCalculation: action.payload\n }),\n updateLensDifference: (state, action) => ({\n ...state,\n tempLensThicknessCalculation: action.payload\n })\n\n \n }\n});\n\nexport const getlensThickness = (state:iRootState) => state.lensThickness;\nexport default lensThicknessSlice;","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport lensConsultationData from '../../constants/lens-consultation-data.constants';\nimport { discount, lensThickness } from '../../constants/my-companion.constants';\nimport neddExplorerQuestionaires from '../../constants/need-explorer-questionaires.contants';\nimport pricingBreakdown from '../../constants/pricing-breakdown';\nimport iAgeCategory from '../../interface/age-category.interface';\nimport iLensProposalField from '../../interface/lens-proposal-field.interface';\nimport iLensRecommendationPair from '../../interface/lens-recommendaiton-pair.interface';\nimport iLensThicknessCalculation from '../../interface/lens-thickness-calculation';\nimport iPrescriptionData from '../../interface/prescription-data.interface';\nimport iPriceBreakdown from '../../interface/price-breakdown.interface';\nimport LensPairType from '../../types/lens-pair.type';\nimport NeedExplorerViewType from '../../types/need-explorer-view.type';\nimport PrecisionType from '../../types/precision.type';\nimport iMeasureStore from '../interface/measure-store.interface';\nimport iMyCompanionStore from '../interface/mycompanion-store.interface';\nimport iNeedExplorerStore from '../interface/need-explorer-store.interface';\nimport iRootState from '../interface/root-state.interface';\nimport summaryStore from '../interface/summary.interface';\nimport iUserStore from '../interface/user-store.interface';\n\nconst initialState: iUserStore = {\n prescription: {\n precision: PrecisionType.STANDARD,\n values: {\n sphere: { od: undefined, os: undefined },\n cylinder: { od: undefined, os: undefined },\n axis: { od: undefined, os: undefined },\n addition: undefined\n }\n },\n needExplorer: {\n view: NeedExplorerViewType.INTRO,\n categoryStep: 0,\n questionStep: 0,\n questions: neddExplorerQuestionaires,\n activeCategory: neddExplorerQuestionaires[0],\n activeQuestion: neddExplorerQuestionaires[0].questions[0],\n isGeneralDone: false,\n isExtraDone: false,\n answers: [],\n showSaved: false,\n\n },\n lensConsultation: {\n activePair: LensPairType.PAIR1,\n isLensThickness: false,\n data: lensConsultationData,\n sliderPage: 0,\n sliderPageTwo:0,\n lensType: null,\n lensProducts: {\n correct: {\n product: null,\n subProduct: null\n },\n protect: {\n product: null,\n subProduct: null\n },\n enhance: {\n product: null,\n subProduct: null\n }\n },\n isValidated: false,\n breakdown: pricingBreakdown\n },\n measures: {\n one: [],\n two: [],\n three: []\n },\n summaryList1: [],\n summaryList2: [],\n\n}\n\nconst userSlice = createSlice({\n name: 'user',\n initialState,\n reducers: {\n setId: (state, action: PayloadAction) => ( {...state, id: action.payload} ),\n setUserData: (state, action: PayloadAction) => ( {...state, ...action.payload} ),\n clearUserState: () => ({\n ...initialState\n }),\n setAgeCategory: (state, action: PayloadAction<{\n id: string,\n ageCategory: iAgeCategory\n }>) => ({\n ...state,\n id: action.payload.id,\n ageCategory: action.payload.ageCategory\n }),\n\n\n //PRESCRIPTION\n savePrescriptionData: (state, action: PayloadAction) => ( {\n ...state,\n prescription: action.payload\n }),\n saveLensEquipment: (\n state,\n action: PayloadAction<{general:iLensProposalField[], complementary:iLensProposalField[]}>) =>\n {\n return {\n ...state,\n generalEquipment: action.payload.general,\n complementaryEquipment: action.payload.complementary\n }\n },\n\n //MEASURES\n saveMeasuresData: (state, action: PayloadAction) => ( {\n ...state,\n measures: action.payload\n }),\n saveFrametraceMeasure: (state, action: PayloadAction) => ({\n ...state, measures: action.payload\n }),\n //SUMMARY\n saveSummary1: (state, action: PayloadAction) => ( {\n ...state,\n summaryList1: action.payload\n }),\n saveSummary2: (state, action: PayloadAction) => ( {\n ...state,\n summaryList2: action.payload\n }),\n\n //NEEDEXPLORER\n saveNeedExplorerData: (state, action: PayloadAction) => ( {\n ...state,\n needExplorer: action.payload\n }),\n\n //LENS CONSULTATION\n savePrefilledData: (state, action: PayloadAction) => ( {\n ...state,\n lensConsultation: action.payload\n }),\n\n saveLensThickness: (state , action: PayloadAction<{\n pair1?: number,\n pair2?: number\n }>) => ({\n ...state,\n lensThickness: action.payload\n }),\n\n saveLensRecommendationData: (state , action: PayloadAction<{\n pair1?: iLensRecommendationPair,\n pair2?: iLensRecommendationPair\n }>) => ({\n ...state,\n lensRecommendation: action.payload\n }),\n\n sessionStart: (state, action: PayloadAction) => ({\n ...state,\n sessionStart: action.payload\n }),\n\n createdDate: (state, action: PayloadAction) => ({\n ...state,\n createdDate: action.payload\n }),\n\n //MY COMPANNION\n saveMyCompannionData: (state, action: PayloadAction) => ( {\n ...state,\n myCompannion: action.payload\n }),\n\n //BREAKDOWN\n setBreakdown: (state, action: PayloadAction) => ( {\n ...state,\n breakdown: action.payload\n }),\n }\n});\n\nexport const getUser = (state:iRootState) => state.user;\nexport default userSlice;\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport iOption from '../../interface/option.interface';\nimport EnvironmentType from '../../types/environment.type';\nimport iEducationStore from '../interface/education-store.interface';\nimport iRootState from '../interface/root-state.interface';\n\n\nconst initialState: iEducationStore = {\n view: {\n value: 'landing',\n label: 'my_practice_my_educ'\n },\n isControlsOpen: true,\n isItemEnabled: false,\n isLensEnabled: false,\n environment: undefined\n}\n\nconst educationSlice = createSlice({\n name: 'education',\n initialState,\n reducers: {\n changeView: (state, action: PayloadAction) => ({\n ...state, \n view: action.payload,\n isControlsOpen: true\n }),\n toggleControls: (state) => ({...state, isControlsOpen: !state.isControlsOpen}),\n toggleItemControl: (state) => ({...state, isItemEnabled: !state.isItemEnabled}),\n toggleLensControl: (state) => ({...state, isLensEnabled: !state.isLensEnabled}),\n resetState: (state) => ({...state, ...initialState}),\n setEnvironment: (state, action: PayloadAction) => ({\n ...state, \n environment: action.payload\n }),\n sessionStart: (state, action: PayloadAction) => ({\n ...state, \n sessionStart: action.payload\n }),\n }\n});\n\nexport const getEducation = (state:iRootState) => state.education;\nexport default educationSlice;","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport iDeliveryStore from '../interface/delivery-store.interface';\nimport iRootState from '../interface/root-state.interface';\n\n\nconst initialState: iDeliveryStore = {\n activeSection: 'prescription',\n scrollView: '',\n isShowSummaryDetails: false,\n\n isWithInteraction: false\n}\n\nconst deliverySlice = createSlice({\n name: 'delivery',\n initialState,\n reducers: {\n setActiveSection: (state, action: PayloadAction) => ({\n ...state, \n activeSection: action.payload\n }),\n scrollToView: (state, action: PayloadAction) => ({\n ...state, scrollView: action.payload\n }),\n showSummaryDetails: (state, action: PayloadAction) => {\n\n const timeStamp = state.validatedTimestamp || new Date().toISOString();\n\n\n return {\n ...state, \n isShowSummaryDetails: action.payload,\n isWithInteraction: true,\n validatedTimestamp: timeStamp\n }\n },\n validate: (state) => {\n const timeStamp = state.validatedTimestamp || new Date().toISOString();\n\n return {\n ...state,\n isShowSummaryDetails: true,\n activeSection: 'vision_test',\n scrollView:'vision_test',\n isWithInteraction: true,\n validatedTimestamp: timeStamp\n }\n },\n clearValidatedTimestamp: (state) => {\n return {\n ...state,\n validatedTimestamp: undefined\n }\n },\n reset: (state) => ({\n ...state,\n ...initialState\n })\n }\n});\n\nexport const getDelivery = (state:iRootState) => state.delivery;\nexport default deliverySlice;","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport iLensDemo from '../../interface/lens-demo';\nimport iProductBrand from '../../interface/product-brand.interface';\nimport iProductDemo from '../../interface/product-demo';\nimport iProduct from '../../interface/product.inteface';\nimport iRoute from '../../interface/route.interface';\nimport LensFamilyType from '../../types/lens-family.type';\nimport iProductDemoStore from '../interface/product-demo-store.interface';\nimport iRootState from '../interface/root-state.interface';\n\nconst initialState: iProductDemoStore = {\n productDescription: null,\n syncVideoPlayFlag: 0,\n\n isControlsDisabled: false,\n isCompareEnabled: false,\n lensFamily: LensFamilyType.CORRECT,\n triggerCenter: 0,\n enableDrawLine: true,\n seeThroughActivated: false,\n qrPopup:false\n}\n\nconst productDemoSlice = createSlice({\n name: 'productDemo',\n initialState,\n reducers: {\n changeDemoType: (state, action: PayloadAction) => ({...state, demoType: action.payload }),\n setSubDemoType: (state, action: PayloadAction) => ({...state, subDemoType: action.payload }),\n setProductDescription: (state, action: PayloadAction) => ({...state, productDescription: action.payload}),\n disableControls: (state, action: PayloadAction) => ({...state, isControlsDisabled: action.payload}),\n enableCompare: (state, action: PayloadAction) => ({...state, isCompareEnabled: action.payload}),\n selectLensFamily: (state, action: PayloadAction) => ({...state, lensFamily: action.payload}),\n\n setActiveProductDemo: (state, action: PayloadAction) => ({...state, activeProductDemo: action.payload}),\n setActiveCompareProductDemo: (state, action: PayloadAction) => ({...state, activeCompareProductDemo: action.payload}), \n updateVideoPlayFlag: (state, action: PayloadAction) => {\n const newValue = null === action.payload ? state.syncVideoPlayFlag + 1 : action.payload;\n return {...state, syncVideoPlayFlag: newValue}\n },\n\n setRecommendationDemo: (state, action: PayloadAction<{\n correct?: iProduct,\n protect?: iProduct,\n enhance?: iProduct,\n }>) => {\n return {...state, recommendationDemo: action.payload}\n },\n setRecommendationDemoBrands: (state, action: PayloadAction<{\n correct?: iProductBrand,\n protect?: iProductBrand,\n enhance?: iProductBrand,\n }>) => {\n return {...state, recommendationDemoBrand: action.payload}\n },\n setDemoFrom: (state, action: PayloadAction) => ({...state, demoFrom: action.payload}),\n triggerCenter: (state) => ({\n ...state, \n triggerCenter: state.triggerCenter + 1\n }),\n toggleDrawLine: (state, action: PayloadAction) => ({\n ...state, \n enableDrawLine: action.payload\n }),\n activateSeeThrough: (state, action: PayloadAction) => ({...state, seeThroughActivated: action.payload }),\n openQrPopup: (state, action: PayloadAction) => ({...state, qrPopup: action.payload }),\n\n }\n});\n\nexport const getProductDemo = (state:iRootState) => state.productDemo;\nexport default productDemoSlice;","\nimport axios from 'axios';\nimport html2canvas from 'html2canvas';\nimport jsPDF from 'jspdf';\nimport { renderToString } from 'react-dom/server';\nimport needExplorerKidsQuestionaires from '../constants/need-explorer-kids-questionaires.contants';\nimport neddExplorerQuestionaires from '../constants/need-explorer-questionaires.contants';\nimport productLogic from '../constants/product-logic.constants';\nimport iProductFamily from '../interface/product-family.interface';\nimport iSubProduct from '../interface/sub-product.inteface';\nimport iProductCombi from '../store/interface/product-combi.interface';\n\nconst high_questions_indexes = [2,3,7,8,11,12,14,14,20,21,22,24,26,28,29]\nconst low_questions_indexes = [0,1,4,5,6,9,10,13,15,17,18,19,23,25,27]\nconst general_question_indeces = [0,1,2,3,9,10,11,12,17,18,19,20,21,22]\n\nconst low_answer_ids = ['1.2.1','1.2.2']\n\nconst correct_indexes = { start: 0, end: 8 };\nconst protect_indexes = { start: 9, end: 16 };\nconst enhance_indexes = { start: 17, end: 29 };\n\nconst product_ids1 = // for all country\n[\n`varilux_x_series`,\n`varilux_digitime`,\n`eyezen_start`,\n`eyezen_boost`,\n`varilux_x_series`,\n`varilux_digitime`,\n`varilux_road_pilot_ii`,\n`eyezen_start`,\n`spherical_essilor`,\n`transitions_signature_gen_8`,\n`xperio_polarised`,\n`transitions_signature_gen_8`,\n`xperio_polarised`,\n`transitions_signature_gen_8`,\n`transitions_signature_gen_8`,\n`xperio_polarised`,\n`xperio_polarised`,\n`crizal_sapphire`,\n`crizal_prevencia`,\n`crizal_sun_xprotect`,\n`crizal_sapphire`,\n`crizal_prevencia`,\n`crizal_sun_xprotect`,\n`crizal_prevencia`,\n`crizal_prevencia`,\n`crizal_drive`,\n`crizal_drive`,\n`crizal_sapphire`,\n`crizal_sapphire`,\n`one_five_nine`]\n\nconst product_ids2 = // for russia ONLY\n[`varilux_comfort_max`,\n`varilux_comfort_max`,\n`eyezen_start`,\n`eyezen_boost`,\n`varilux_comfort_max`,\n`varilux_comfort_max`,\n`varilux_comfort_max`,\n`eyezen_start`,\n`spherical_essilor`,\n`transitions_signature_gen_8`,\n`xperio_polarised`,\n`transitions_signature_gen_8`,\n`xperio_polarised`,\n`transitions_signature_gen_8`,\n`transitions_signature_gen_8`,\n`xperio_polarised`,\n`xperio_polarised`,\n`crizal_sapphire`,\n`crizal_prevencia`,\n`crizal_sun_xprotect`,\n`crizal_sapphire`,\n`crizal_prevencia`,\n`crizal_sun_xprotect`,\n`crizal_prevencia`,\n`crizal_prevencia`,\n`crizal_drive`,\n`crizal_drive`,\n`crizal_sapphire`,\n`crizal_sapphire`,\n`one_five_nine`]\n\nconst product_ids3 = // for countries with varilux XR\n[\n`varilux_xr_series`,\n`varilux_x_series`,\n`varilux_digitime`,\n`eyezen_start`,\n`eyezen_boost`,\n`varilux_x_series`,\n`varilux_digitime`,\n`varilux_road_pilot_ii`,\n`eyezen_start`,\n// `spherical_essilor`,\n`transitions_signature_gen_8`,\n`xperio_polarised`,\n`transitions_signature_gen_8`,\n`xperio_polarised`,\n`transitions_signature_gen_8`,\n`transitions_signature_gen_8`,\n`xperio_polarised`,\n`xperio_polarised`,\n`crizal_sapphire`,\n`crizal_prevencia`,\n`crizal_sun_xprotect`,\n`crizal_sapphire`,\n`crizal_prevencia`,\n`crizal_sun_xprotect`,\n`crizal_prevencia`,\n`crizal_prevencia`,\n`crizal_drive`,\n`crizal_drive`,\n`crizal_sapphire`,\n`crizal_sapphire`,\n`one_five_nine`]\n\nconst brand_ids =\n[`varilux`,\n`varilux`,\n`eyezen`,\n`eyezen`,\n`varilux`,\n`varilux`,\n`varilux`,\n`eyezen`,\n`standard_design`,\n`transitions`,\n`xperio`,\n`transitions`,\n`xperio`,\n`transitions`,\n`transitions`,\n`xperio`,\n`xperio`,\n`crizal`,\n`crizal`,\n`crizal`,\n`crizal`,\n`crizal`,\n`crizal`,\n`crizal`,\n`crizal`,\n`crizal`,\n`crizal`,\n`crizal`,\n`none`]\n\n// select array with xr when xr products is available to the given country\nconst setProductId = (country?: string) => {\n const countriesWithXr = [\"ro\", \"de\", \"pt\", \"bg\", \"gb\", \"es\", \"be\", 'sl', 'hr', \"gr\", \"ph\"] // countries codes with xr (refer to backoffice)\n \n if (country && country === \"ru\") {\n return product_ids2\n } else if (country && countriesWithXr.includes(country)) {\n return product_ids3\n } else {\n return product_ids1\n }\n}\n\n// DECISION TREE\nexport const evaluateDecisionTree = (\n currentNeedExplorerData: any,\n isGeneral: boolean,\n pl: iProductFamily,\n country?:string\n ) => {\n // const isRussia = country && country === 'ru'\n // const isXseriesAvailable = getProductInfo(pl).products.find((prd:any) => prd.id === product_ids1[0]) !== undefined\n const product_ids = setProductId(country)\n\tconsole.log(country)\n\n if(isGeneral){\n //(1) get general question ANSWER_IDS\n const ANSWER_IDS = getAnswerIds(currentNeedExplorerData.questions[0].questions)\n console.log('ANSWER IDS: ', ANSWER_IDS)\n\n //(1.1) check if age is LOW\n let isAgeLow = ANSWER_IDS.includes(low_answer_ids[0]) || ANSWER_IDS.includes(low_answer_ids[1])\n console.log('AGE: ', isAgeLow ? 'LOW' : 'HIGH')\n\n //(2) get GENERAL_PRODUCT_LOGIC_MATRIX for general\n const GENERAL_PRODUCT_LOGIC_MATRIX = productLogic.filter((q:any) => q.answerId[0] === '1')\n console.log('GENERAL PRODUCT: ', GENERAL_PRODUCT_LOGIC_MATRIX)\n\n //(3) filter the GENERAL_PRODUCT_LOGIC_MATRIX with ANSWER_IDS\n let ANSWER_MATRIX = []\n for (var i = 0; i < ANSWER_IDS.length; i++) {\n var item = GENERAL_PRODUCT_LOGIC_MATRIX.find(m => m.answerId === ANSWER_IDS[i]);\n ANSWER_MATRIX.push(item)\n }\n const REFERENCE = ANSWER_MATRIX\n console.log('ANSWER MATRIX: ', ANSWER_MATRIX)\n\n //(3.1) Apply Special Questions Multiplier in DRAG_AND_DROP_SORTER\n ANSWER_MATRIX = ApplyDragDropSorterMultiplier(ANSWER_MATRIX)\n console.log('APPLY MULTIPLIER: ', ANSWER_MATRIX)\n\n //(4) Add ANSWER_MATRIX\n const MATRIX_SUM = AddMatrixValues(ANSWER_MATRIX)\n console.log('SUM: ',MATRIX_SUM)\n\n //(5) change values of high_indexes to 0 if AGE is LOW (>40)\n const AGE_INDEXES = isAgeLow ? low_questions_indexes : high_questions_indexes\n AGE_INDEXES.map((i: any, j:any) => { MATRIX_SUM[i] = 0 })\n console.log('REPLENISH AGE: ',MATRIX_SUM)\n\n //(6) evaluate highest index per category of current MATRIX_SUM and cut 1.59\n MATRIX_SUM.pop()\n const HIGHEST_SCORE_INDECES = getHighestScorePerCategory(MATRIX_SUM)\n\n //(7) match indexes to product_ids\n const { pair1, pair2 } = HIGHEST_SCORE_INDECES\n\n // (7.1) SPECIAL SCENARIO: When Xperio is recommended in PROTECT, Crizal Sun Xprotect must be chosen in ENHANCE\n let isXperio = brand_ids[pair1.protect+protect_indexes.start] === 'xperio'\n\n //(8) Apply product data stucture find product via id\n\n const TEMP = {\n pair1: {\n correct: {\n brand: fetchBrandDetailsViaId(brand_ids[pair1.correct], pl),\n product: fetchProductDetailsViaId(product_ids[pair1.correct], pl),\n subProduct: fetchSubProductDetailsViaProductId(product_ids[pair1.correct], pl),\n significantAnswers: getAnswerIDwithSignificantAnswers(pair1.correct, REFERENCE)\n },\n protect: [{\n brand: fetchBrandDetailsViaId(brand_ids[pair1.protect+protect_indexes.start], pl),\n product: fetchProductDetailsViaId(product_ids[pair1.protect+protect_indexes.start], pl),\n significantAnswers: getAnswerIDwithSignificantAnswers(pair1.protect+protect_indexes.start, REFERENCE)\n }],\n enhance: isXperio ? {\n brand: fetchBrandDetailsViaId('crizal', pl),\n product: fetchProductDetailsViaId('crizal_sun_xprotect', pl),\n significantAnswers: getAnswerIDwithSignificantAnswers(pair1.enhance+enhance_indexes.start, REFERENCE)\n } : {\n brand: fetchBrandDetailsViaId(brand_ids[pair1.enhance+enhance_indexes.start], pl),\n product: fetchProductDetailsViaId(product_ids[pair1.enhance+enhance_indexes.start], pl),\n significantAnswers: getAnswerIDwithSignificantAnswers(pair1.enhance+enhance_indexes.start, REFERENCE)\n },\n },\n pair2: {\n correct: {\n brand: fetchBrandDetailsViaId(brand_ids[pair2.correct], pl),\n product: fetchProductDetailsViaId(product_ids[pair2.correct], pl),\n subProduct: fetchSubProductDetailsViaProductId(product_ids[pair2.correct], pl),\n significantAnswers: getAnswerIDwithSignificantAnswers(pair2.correct, REFERENCE)\n },\n protect: [{\n brand: fetchBrandDetailsViaId(brand_ids[pair2.protect+protect_indexes.start], pl),\n product: fetchProductDetailsViaId(product_ids[pair2.protect+protect_indexes.start], pl),\n significantAnswers: getAnswerIDwithSignificantAnswers(pair2.protect+protect_indexes.start, REFERENCE)\n }],\n enhance: isXperio ? {\n brand: fetchBrandDetailsViaId('crizal', pl),\n product: fetchProductDetailsViaId('crizal_sun_xprotect', pl),\n significantAnswers: getAnswerIDwithSignificantAnswers(pair1.enhance+enhance_indexes.start, REFERENCE)\n } : {\n brand: fetchBrandDetailsViaId(brand_ids[pair2.enhance+enhance_indexes.start], pl),\n product: fetchProductDetailsViaId(product_ids[pair2.enhance+enhance_indexes.start], pl),\n significantAnswers: getAnswerIDwithSignificantAnswers(pair2.enhance+enhance_indexes.start, REFERENCE)\n }\n },\n answers: ANSWER_IDS\n }\n\n return TEMP\n }else{\n //(1) get all answers from general and category question ANSWER_IDS\n const allAnswers = [\n ...currentNeedExplorerData.questions[0].questions,\n ...currentNeedExplorerData.questions[1].questions,\n ...currentNeedExplorerData.questions[2].questions,\n ...currentNeedExplorerData.questions[3].questions,\n ...currentNeedExplorerData.questions[4].questions\n ]\n\n console.log('ALL ANSWERS: ', allAnswers)\n\n let ANSWER_IDS = getAnswerIds(allAnswers)\n console.log('ANSWER IDS: ', ANSWER_IDS)\n\n //(1.0) Special Scenario: If the user choose anything between 3.1.1 to 3.1.5, remove 3.1.6\n ANSWER_IDS = selectedNone(ANSWER_IDS)\n console.log('ANSWER IDS (clean): ', ANSWER_IDS)\n\n //(1.1) check if age is LOW\n let isAgeLow = ANSWER_IDS.includes(low_answer_ids[0]) || ANSWER_IDS.includes(low_answer_ids[1])\n console.log('AGE: ', isAgeLow ? 'LOW' : 'HIGH')\n\n //(2) get ALL_PRODUCT_LOGIC_MATRIX for general and extra\n const ALL_PRODUCT_LOGIC_MATRIX = productLogic\n console.log('ALL PRODUCT: ', ALL_PRODUCT_LOGIC_MATRIX)\n\n //(3) filter the ALL_PRODUCT_LOGIC_MATRIX with ANSWER_IDS\n let ANSWER_MATRIX = []\n for (var i = 0; i < ANSWER_IDS.length; i++) {\n var item = ALL_PRODUCT_LOGIC_MATRIX.find(m => m.answerId === ANSWER_IDS[i]);\n ANSWER_MATRIX.push(item)\n }\n const REFERENCE = ANSWER_MATRIX\n console.log('ANSWER MATRIX: ', ANSWER_MATRIX)\n\n //(3.1) Apply Special Questions Multiplier in DRAG_AND_DROP_SORTER\n ANSWER_MATRIX = ApplyDragDropSorterMultiplier(ANSWER_MATRIX)\n console.log('APPLY MULTIPLIER: ', ANSWER_MATRIX)\n\n //(4) Add ANSWER_MATRIX\n const MATRIX_SUM = AddMatrixValues(ANSWER_MATRIX)\n console.log('SUM: ',MATRIX_SUM)\n\n //(5) change values of high_indexes to 0 if AGE is LOW (>40)\n const AGE_INDEXES = isAgeLow ? low_questions_indexes : high_questions_indexes\n AGE_INDEXES.map((i: any, j:any) => { MATRIX_SUM[i] = 0 })\n console.log('REPLENISH AGE: ',MATRIX_SUM)\n\n //(6) change values of general questions to 0 if the user finished the extra questions\n general_question_indeces.map((i: any, j:any) => { MATRIX_SUM[i] = 0 })\n console.log('REPLENISH GEN QUESTIONS: ', MATRIX_SUM)\n\n //(7) evaluate highest index per category of current MATRIX_SUM and cut 1.59\n MATRIX_SUM.pop()\n const HIGHEST_SCORE_INDECES = getHighestScorePerCategory(MATRIX_SUM)\n\n //(8) match indexes to product_ids\n const { pair1, pair2 } = HIGHEST_SCORE_INDECES\n\n // (8.1) SPECIAL SCENARIO: When Xperio is recommended in PROTECT, Crizal Sun Xprotect must be chosen in ENHANCE\n let isXperio = brand_ids[pair1.protect+protect_indexes.start] === 'xperio'\n\n //(9) Apply product data stucture find product via id\n\n const TEMP = {\n pair1: {\n correct: {\n brand: fetchBrandDetailsViaId(brand_ids[pair1.correct], pl),\n product: fetchProductDetailsViaId(product_ids[pair1.correct], pl),\n subProduct: fetchSubProductDetailsViaProductId(product_ids[pair1.correct], pl),\n significantAnswers: getAnswerIDwithSignificantAnswers(pair1.correct, REFERENCE)\n },\n protect: [{\n brand: fetchBrandDetailsViaId(brand_ids[pair1.protect+protect_indexes.start], pl),\n product: fetchProductDetailsViaId(product_ids[pair1.protect+protect_indexes.start], pl),\n significantAnswers: getAnswerIDwithSignificantAnswers(pair1.protect+protect_indexes.start, REFERENCE)\n }],\n enhance: isXperio ? {\n brand: fetchBrandDetailsViaId('crizal', pl),\n product: fetchProductDetailsViaId('crizal_sun_xprotect', pl),\n significantAnswers: getAnswerIDwithSignificantAnswers(pair1.enhance+enhance_indexes.start, REFERENCE)\n } : {\n brand: fetchBrandDetailsViaId(brand_ids[pair1.enhance+enhance_indexes.start], pl),\n product: fetchProductDetailsViaId(product_ids[pair1.enhance+enhance_indexes.start], pl),\n significantAnswers: getAnswerIDwithSignificantAnswers(pair1.enhance+enhance_indexes.start, REFERENCE)\n },\n },\n pair2: {\n correct: {\n brand: fetchBrandDetailsViaId(brand_ids[pair2.correct], pl),\n product: fetchProductDetailsViaId(product_ids[pair2.correct], pl),\n subProduct: fetchSubProductDetailsViaProductId(product_ids[pair2.correct], pl),\n significantAnswers: getAnswerIDwithSignificantAnswers(pair2.correct, REFERENCE)\n },\n protect: [{\n brand: fetchBrandDetailsViaId(brand_ids[pair2.protect+protect_indexes.start], pl),\n product: fetchProductDetailsViaId(product_ids[pair2.protect+protect_indexes.start], pl),\n significantAnswers: getAnswerIDwithSignificantAnswers(pair2.protect+protect_indexes.start, REFERENCE)\n }],\n enhance: isXperio ? {\n brand: fetchBrandDetailsViaId('crizal', pl),\n product: fetchProductDetailsViaId('crizal_sun_xprotect', pl),\n significantAnswers: getAnswerIDwithSignificantAnswers(pair1.enhance+enhance_indexes.start, REFERENCE)\n } : {\n brand: fetchBrandDetailsViaId(brand_ids[pair2.enhance+enhance_indexes.start], pl),\n product: fetchProductDetailsViaId(product_ids[pair2.enhance+enhance_indexes.start], pl),\n significantAnswers: getAnswerIDwithSignificantAnswers(pair2.enhance+enhance_indexes.start, REFERENCE)\n }\n },\n answers: ANSWER_IDS\n }\n\n return TEMP\n }\n}\n\nexport const getAnswerIDwithSignificantAnswers = (index: number, answerMatrix: any) => {\n console.log('answerMatrix', answerMatrix)\n console.log('index', index)\n\n const filtered = answerMatrix.filter((am: any) => {\n return am && am.scoreMatrix[index] !== 0\n })\n\n console.log('filtered', filtered)\n\n return filtered\n}\n\nexport const fetchSubProductDetailsViaProductId = (id: string | undefined, pl: iProductFamily) => {\n const allProducts = getProductInfo(pl).products\n const subProducts = allProducts\n .filter((a:any) => a.id === id && a.enabled)\n .map((a:any) => a.subProducts)\n if(subProducts && subProducts[0] && subProducts[0].length > 0){\n let uniqueSubProduct = getUniqueSubProducts(subProducts[0], true);\n\n if(uniqueSubProduct.length === 1){\n return uniqueSubProduct[0]\n }\n }\n\n return null\n}\n\nexport const fetchSubProductDetailsViaSubProductId = (id: string | undefined, pl: iProductFamily) => {\n const allSubProducts = getProductInfo(pl).subProducts\n\n const getSubProductFromId = allSubProducts.filter((a:any) => a.id === id)\n\n return getSubProductFromId ? { price: 0, ...getSubProductFromId[0] } : { price: 0 }\n}\n\nexport const fetchProductDetailsViaId = (id: string | undefined, pl: iProductFamily) => {\n const allProducts = getProductInfo(pl).products\n const getProductFromId = allProducts.filter((a:any) => a.id === id && a.enabled)\n\n return getProductFromId ? { subProducts: [{ id: '', label :'', price: 0, code: '', index: 0}], price: 0, ...getProductFromId[0] } : { subProducts: [{ id: '', label :'', price: 0, code: '', index: 0}], price: 0 }\n}\n\nexport const fetchBrandDetailsViaProductId = (id: string | undefined, pl: iProductFamily) => {\n const allBrands = getProductInfo(pl).brands\n const brand = allBrands.filter((a:any) => {\n let hasId = false\n\n a.products.map((p:any)=>{\n if(p.id === id){\n hasId = true\n return\n }\n })\n\n return hasId ? a : false\n })\n\n return brand.length > 0 ? brand[0] : {}\n}\n\nexport const fetchBrandDetailsViaId = (id: string, pl: iProductFamily) => {\n const allBrands = getProductInfo(pl).brands\n\n const getBrandFromId = allBrands.filter((a:any) => a.id === id && a.enabled)\n\n return getBrandFromId[0]\n}\n\nexport const getProductInfo = (productList: iProductFamily) => {\n let products = [];\n let subProducts = [];\n let brands = [];\n\n //correct, protect, enhance products in one layer\n if(Array.isArray(productList)){\n productList.map((l:any) => {\n l.brands.map((brand:any) => {\n brands.push(brand)\n brand.products.map((b:any) => {\n products.push(b)\n if(Array.isArray(b.subProducts)){\n b.subProducts.map((s:any) => {\n subProducts.push(s)\n })\n }\n })\n })\n })\n }\n\n return {\n products: products,\n brands: brands,\n subProducts: subProducts\n }\n}\n\nexport const getAnswerIds = (data: any) => {\n var answerIDs = [];\n\n // DRAG_AND_DROP_SORTER Selections\n data\n .filter((q:any) => q.type === 'DRAG_AND_DROP_SORTER')\n .map((a:any) => {\n a.answer.map((v: any) => { answerIDs.push(v.value) } )\n })\n\n // DIAL Selections\n var dialAnswers: { answer: number, qid: string }[] = []\n\n data\n .filter((q:any) => q.type === 'DIAL')\n .map((a:any) => { dialAnswers.push({answer: a.answer, qid: a.id}) })\n\n answerIDs = dialLogic(dialAnswers, answerIDs)\n\n // Single Selections\n data\n .filter((q:any) => { return !q.canSelectMultiple })\n .filter((q:any) => q.type !== 'SLIDER_GROUP')\n .filter((q:any) => q.type !== 'DRAG_AND_DROP_SORTER')\n .filter((q:any) => q.type !== 'DIAL')\n .filter((q:any) => q.answer !== undefined)\n .map((q:any) => { answerIDs.push(q.answer.value) })\n\n // Multiple Selections\n data\n .filter((q:any) => { return q.canSelectMultiple })\n .filter((q:any) => q.type !== 'SLIDER_GROUP')\n .filter((q:any) => q.type !== 'DRAG_AND_DROP_SORTER')\n .filter((q:any) => q.type !== 'DIAL')\n .filter((q:any) => q.answer !== undefined)\n .map((a:any) => {\n a.answer.map((v: any) => { answerIDs.push(v.value) } )\n })\n\n return answerIDs\n}\n\nconst selectedNone = (ANSWER_IDS:any) => {\n let has = false\n\n ANSWER_IDS.map((a:any) => {\n if(a === '3.1.1' || a === '3.1.2' || a === '3.1.3' || a === '3.1.4' || a === '3.1.5'){\n has = true\n }\n })\n\n return has ? ANSWER_IDS.filter((a:any) => a!== '3.1.6') : ANSWER_IDS\n}\n\nconst dialLogic = (dialAnswers:any, answerIDs:any) => {\n dialAnswers.map((a:any) => {\n const { answer, qid } = a\n let ans = ''\n\n switch(qid){\n case '7.3' : { ans = answer === 0 || answer === 1 ? '7.3.1' :\n answer === 2 || answer === 3 ? '7.3.2' :\n answer === 4 || answer === 5 ? '7.3.3' : '7.3.4' } break;\n case '7.4' : { ans = answer === 0 || answer === 1 ? '7.4.1' :\n answer === 2 || answer === 3 ? '7.4.2' :\n answer === 4 || answer === 5 ? '7.4.3' : '7.4.4' } break;\n case '2.2' : { ans = answer === 0 || answer === 1 ? '0.0.0' : '2.2.1' } break;\n case '4.3' : { ans = answer === 0 || answer === 1 ? '0.0.0' : '4.3.1' } break;\n case '3.2' : { ans = answer === 0 || answer === 1 ? '0.0.0' : '3.2.1' } break;\n default: return ''\n }\n\n answerIDs.push(ans)\n })\n\n return answerIDs\n}\n\nexport const getHighestScorePerCategory = (\n sumMatrix: any\n) => {\n // Get the highest score for Correct Category\n const correctScores = sumMatrix.filter((x:any, i: number) => { return i < correct_indexes.end+1 })\n const indeces_correct = GetFirstSecondHighestIndex(correctScores)\n console.log('CORRECT: ', correctScores)\n\n // // Get the highest score for Protect Category\n const protectScores = sumMatrix.filter((x:any, i: number) => { return i >= protect_indexes.start && i <= protect_indexes.end })\n const indeces_protect = GetFirstSecondHighestIndex(protectScores)\n console.log('PROTECT: ', protectScores)\n\n // // Get the highest score for Enhance Category\n const enhanceScores = sumMatrix.filter((x:any, i: number) => { return i >= enhance_indexes.start && i <= enhance_indexes.end })\n const indeces_enhance = GetFirstSecondHighestIndex(enhanceScores)\n console.log('ENHANCE: ', enhanceScores)\n\n return {\n pair1:{\n correct: indeces_correct.first,\n protect: indeces_protect.first,\n enhance: indeces_enhance.first\n },\n pair2: {\n correct: indeces_correct.second,\n protect: indeces_protect.second,\n enhance: indeces_enhance.second\n }\n }\n}\n\nexport const AddMatrixValues = (matrix: any) => {\n console.log(matrix)\n return matrix.reduce((r:any, a:any) => a.map((b:any, i:any) => (r[i] || 0) + b), []);\n}\n\nexport const GetFirstSecondHighestIndex = (inp: any) => {\n var outp = new Array();\n for (var i = 0; i < inp.length; i++) {\n outp.push(i);\n if (outp.length > 2) {\n outp.sort(function(a, b) { return inp[b] - inp[a]; });\n outp.pop();\n }\n }\n return {\n first:outp[0],\n second:outp[1]\n }\n}\n\nexport const ApplyDragDropSorterMultiplier = (am: any) => {\n // get all 1.6, 4.4\n let rank_answers_1_6 = am.filter((q:any) => { return q &&(`${q.answerId[0]}.${q.answerId[2]}` === '1.6')})\n let rank_answers_4_4 = am.filter((q:any) => { return q && (`${q.answerId[0]}.${q.answerId[2]}` === '4.4')})\n\n console.log('--rank_answers_1_6', rank_answers_1_6)\n console.log('--rank_answers_4_4', rank_answers_4_4)\n\n // cut 1.6, 4.4 answers\n let cut_ranking_answers = am\n .filter((q:any) => { return q && (`${q.answerId[0]}.${q.answerId[2]}` !== '1.6')})\n .filter((q:any) => { return q && (`${q.answerId[0]}.${q.answerId[2]}` !== '4.4')})\n\n console.log('--cut_ranking_answers', cut_ranking_answers)\n\n // reverse to get the highest multiplier\n rank_answers_1_6.reverse()\n rank_answers_4_4.reverse()\n\n // multiply the index to each of the matrix\n const answers_multiplied_1_6 = rank_answers_1_6.map((i: any, j:any) => {\n const multiplied = i.scoreMatrix.map((k: any) => {\n return k*j\n })\n\n return {\n answerId: i.answerId,\n scoreMatrix: multiplied\n }\n })\n\n // multiply the index to each of the matrix\n const answers_multiplied_4_4 = rank_answers_4_4.map((i: any, j:any) => {\n const multiplied = i.scoreMatrix.map((k: any) => {\n return k*j\n })\n\n return {\n answerId: i.answerId,\n scoreMatrix: multiplied\n }\n })\n\n console.log('--answers_multiplied_1_6', answers_multiplied_1_6)\n console.log('--answers_multiplied_4_4', answers_multiplied_4_4)\n\n const newAnswerMatrix = [...cut_ranking_answers, ...answers_multiplied_1_6, ...answers_multiplied_4_4]\n\n return newAnswerMatrix.map((i: any) => {\n return i.scoreMatrix\n })\n}\n\nconst getUniqueSubProducts = (subProducts: iSubProduct[], isLowestIndex = false): iSubProduct[] => {\n const unique: string[] = []\n const uniqueSubProducts = subProducts.filter((p: iSubProduct) => {\n if(unique.includes(p.label))return false;\n unique.push(p.label);\n return true;\n });\n if(!isLowestIndex) return uniqueSubProducts;\n // get the subproducts with lowest index\n const lowestIndex:iSubProduct[] = []\n uniqueSubProducts.forEach( x => {\n const sortSubProducts = subProducts.filter( p => p.label === x.label).sort(function(a,b){\n return a.index - b.index;\n });\n lowestIndex.push(sortSubProducts[0]);\n });\n return lowestIndex;\n}\n\nexport const getAnswerDetails = (isKids: boolean, answers: string[]) => {\n let age = ''\n\n if(isKids){\n //AGE\n const allAnswers = getAllAnswersInOneLayer(needExplorerKidsQuestionaires)\n const kidsAge_allAnswer = allAnswers.filter((a:any)=>{\n return a.value === '6.1.1' || a.value === '6.1.2' || a.value === '6.1.3' || a.value === '6.1.4' || a.value === '6.1.5' || a.value === '6.1.6' || a.value === '6.1.7'\n })\n const kidsAge_answer = answers.filter((a:any)=>{ return a[0] === '6' && a[2] === '1' })\n const selectedAge = kidsAge_allAnswer.filter((a:any)=>{ return a.value === kidsAge_answer[0] })\n\n age = selectedAge.length > 0 ? selectedAge[0].label.replace(\"
\",\"\") : ''\n }else{\n //AGE\n const allAnswers = getAllAnswersInOneLayer(neddExplorerQuestionaires)\n const adultAge_allAnswer = allAnswers.filter((a:any)=>{\n return a.value === '1.2.1' || a.value === '1.2.2' || a.value === '1.2.3' || a.value === '1.2.4' || a.value === '1.2.5'\n })\n const adultAge_answer = answers.filter((a:any)=>{ return a && (a[0] === '1' && a[2] === '2') })\n const selectedAge = adultAge_allAnswer.filter((a:any)=>{ return a.value === adultAge_answer[0] })\n\n age = selectedAge.length > 0 ? selectedAge[0].label.replace(\"
\",\"\") : ''\n }\n\n return {\n age: age\n }\n}\n\nconst getAllAnswersInOneLayer = (arr: any) => {\n let allAnswers = new Array()\n\n arr.map((q:any)=>{\n q.questions.map((qq:any)=>{\n if(qq.options && Array.isArray(qq.options)){\n qq.options.map((o:any) => {\n allAnswers.push(o)\n })\n }\n })\n })\n\n return allAnswers\n}\n\n// OTHERS\n\nexport enum SummaryExportType {\n QRCODE = 'qrcode',\n PRINT = 'print',\n EMAIL = 'email',\n}\n\nexport function saveToPdf(params: {\n inputDom: HTMLDivElement | undefined | null,\n pdfName?: string | undefined | null,\n pageOptions?: any,\n scale?: number,\n onComplete?: () => void\n}) {\n\n const {\n inputDom,\n pdfName,\n pageOptions,\n scale = 2,\n onComplete\n } = params;\n\n if( !inputDom ) return;\n const { topOffset = {}, removeElements = [], containerWidth } = pageOptions ?? {};\n for(const element of removeElements) {\n const elementToRemove = document.getElementById(element) as HTMLElement\n elementToRemove.setAttribute('style','display: none')\n }\n inputDom.setAttribute(\"style\", `overflow: visible; ${containerWidth ? `width: ${containerWidth}` : ''}`)\n html2canvas(inputDom,{scale})\n .then((canvas) => {\n const imgData = canvas.toDataURL('image/png');\n const pdf = new jsPDF('p', 'mm', 'letter', true);\n const width = pdf.internal.pageSize.getWidth();\n const height = pdf.internal.pageSize.getHeight();\n const imgHeight = (pdfName?.includes(\"_lens_consultation_summary_\")) ? height : canvas.height * width / canvas.width\n let pageTopOffset = 0;\n let currentPage = 1;\n const isMultiplePage = (imgHeight - height > height * .20)\n const firstPageImgHeight = isMultiplePage ? imgHeight : height;\n const additionalOffset = ( topOffset: any, currentPage: number ) =>\n topOffset.hasOwnProperty(currentPage) ? topOffset[currentPage] : 0\n\n pdf.addImage(imgData, 'PNG', 0, pageTopOffset + additionalOffset(topOffset, currentPage), width, firstPageImgHeight);\n if( isMultiplePage ) {\n let remainingHeight = imgHeight;\n remainingHeight -= height;\n while(remainingHeight >= 0){\n pageTopOffset -= height;\n currentPage++;\n pdf.addPage('letter');\n pageTopOffset = Math.abs(pageTopOffset) > imgHeight ? -Math.abs(imgHeight) : pageTopOffset;\n pdf.addImage(imgData, 'PNG', 0, pageTopOffset + additionalOffset(topOffset, currentPage), width, imgHeight);\n remainingHeight -= height;\n }\n }\n pdf.save(pdfName ?? `document.pdf`);\n if(onComplete)onComplete();\n });\n inputDom.removeAttribute(\"style\")\n for(const element of removeElements) {\n const elementToRemove = document.getElementById(element) as HTMLElement\n elementToRemove.removeAttribute('style')\n }\n}\n\nexport const sendMail = (receiver: string, subject: string, token: string, emailComponentTemplate: any, ) => {\n const currentDateTime = new Date().toLocaleString([], {day: '2-digit' ,month: '2-digit', year: 'numeric', hour: '2-digit', minute:'2-digit'})\n const requestBody = {\n \"from\": \"noreply.pwa@essilor.com\",\n \"to\": receiver,\n \"subject\": `${subject} ${currentDateTime}`,\n \"body\": `
\n ${renderToString(emailComponentTemplate)}\n
`\n }\n const axiosConfig = { headers: {\"Authorization\" : `Bearer ${token}`} }\n // const testurl = 'https://cpbx-dev-app-frc-03-companion.azurewebsites.net/api/v1/email'\n const testurl = 'https://essilor-prd.apigee.net/gse/essilorcompanion/email';\n axios.post(testurl, requestBody, axiosConfig).then((res)=>console.info(res)).catch((error)=>console.error(error))\n}\n\nexport const fetchProductCombi = (\n productCombi: iProductCombi[],\n cs:string|boolean,\n p1:string|boolean,\n p2:string|boolean,\n e:string|boolean,\n index:string\n) => {\n\n console.log('correct', cs)\n console.log('protect', p1)\n console.log('protect2', p2)\n console.log('enhance', e)\n console.log('correctIndex', index)\n\n\n console.log('xxxx')\n console.log('pc', productCombi)\n\n const res = productCombi.filter((pc:any)=>{\n return pc.correct_sub === cs &&\n pc.protect1 === p1 &&\n pc.protect2 === p2 &&\n pc.enhance === e &&\n pc.index === index\n })\n\n console.log('yyyy')\n\n console.log('res',res)\n\n return res.length > 0 && Array.isArray(res) ? res[0].price : '0'\n}\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport DiscoveryView from '../../types/discovery-view.type';\nimport LensFamilyType from '../../types/lens-family.type';\nimport iDiscoveryStore from '../interface/discovery.store.interface';\nimport iRootState from '../interface/root-state.interface';\n\nconst initialState: iDiscoveryStore = {\n view: DiscoveryView.INTRO,\n selectedLens: undefined\n}\n\nconst discoverySlice = createSlice({\n name: 'discovery',\n initialState,\n reducers: {\n changeView: (state, action: PayloadAction) => ({...state, view: action.payload }),\n selectLens: (state, action: PayloadAction) => ({...state, selectedLens: action.payload }),\n reset: (state) => ({...state, ...initialState})\n }\n});\n\nexport const getDiscovery = (state:iRootState) => state.discovery;\nexport default discoverySlice;","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport iLicenseStore from '../interface/license-store.interface';\nimport iRootState from '../interface/root-state.interface';\n\nconst initialState: iLicenseStore = {\n status: 'inactive'\n}\n\nconst licenseSlice = createSlice({\n name: 'license',\n initialState,\n reducers: {\n updateStatus: (state, action: PayloadAction<'inactive' | 'active'> ) => ({...state, status: action.payload }),\n }\n});\n\nexport const getLicense = (state:iRootState) => state.license;\nexport default licenseSlice;","import iPackages from \"../interface/packages.interface\";\n\nconst packages : iPackages[] = [\n {\n label: 'packaged_offer_popup_po_popup_persnonalized',\n subLabel: 'packaged_offer_popup_po_popup_persnonalized_new',\n id: 'personalized',\n product: {\n price: '',\n name: ''\n },\n isDisabled: false,\n categories: [\n {\n value: '',\n label: ''\n },\n {\n value: '',\n label: ''\n },\n {\n value: '',\n label: ''\n }\n ]\n },\n {\n label: 'packaged_offer_popup_po_popup_optimized',\n subLabel: 'packaged_offer_popup_po_popup_optimized_new',\n id: 'optimized',\n product: {\n price: '',\n name: '-'\n },\n isDisabled: false,\n categories: [\n {\n value: '',\n label: ''\n },\n {\n value: '',\n label: ''\n },\n {\n value: '',\n label: ''\n }\n ]\n },\n {\n label: 'packaged_offer_popup_po_popup_standard',\n subLabel: 'packaged_offer_popup_po_popup_standard_new',\n id: 'standard',\n product: {\n price: '',\n name: ''\n },\n isDisabled: false,\n categories: [\n {\n value: '',\n label: ''\n },\n {\n value: '',\n label: ''\n },\n {\n value: '',\n label: ''\n }\n ]\n }\n]\n\nexport default packages;","import iProductLogic from \"../interface/product-logic.interface\";\n\nconst productLogic: iProductLogic[] = [\n{ answerId: '1.1.1', scoreMatrix: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] },\n{ answerId: '1.1.2', scoreMatrix: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] },\n{ answerId: '1.1.3', scoreMatrix: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] },\n{ answerId: '1.2.1', scoreMatrix: [0,0,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] },\n{ answerId: '1.2.2', scoreMatrix: [0,0,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] },\n{ answerId: '1.2.3', scoreMatrix: [5,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] },\n{ answerId: '1.2.4', scoreMatrix: [5,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] },\n{ answerId: '1.2.5', scoreMatrix: [5,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] },\n{ answerId: '1.3.1', scoreMatrix: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] },\n{ answerId: '1.3.2', scoreMatrix: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] },\n{ answerId: '1.3.3', scoreMatrix: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] },\n{ answerId: '1.4.1', scoreMatrix: [5,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] },\n{ answerId: '1.4.2', scoreMatrix: [3,4,4,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] },\n{ answerId: '1.4.3', scoreMatrix: [3,3,5,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] },\n{ answerId: '1.5.1', scoreMatrix: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] },\n{ answerId: '1.5.2', scoreMatrix: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] },\n{ answerId: '1.5.3', scoreMatrix: [5,3,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] },\n{ answerId: '1.5.4', scoreMatrix: [3,5,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] },\n{ answerId: '1.5.5', scoreMatrix: [5,4,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] },\n{ answerId: '1.5.6', scoreMatrix: [5,0,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] },\n{ answerId: '1.5.7', scoreMatrix: [0,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] },\n{ answerId: '1.5.8', scoreMatrix: [0,0,0,0,0,0,0,0,0,4,5,4,5,0,0,0,0,0,0,2,0,0,2,0,0,0,0,0,0,0] },\n{ answerId: '1.5.9', scoreMatrix: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] },\n{ answerId: '1.6.1', scoreMatrix: [2,1,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0] },\n{ answerId: '1.6.2', scoreMatrix: [1,1,1,1,0,0,0,0,0,1,2,1,2,0,0,0,0,1,0,2,1,0,2,0,0,0,0,0,0,0] },\n{ answerId: '1.6.3', scoreMatrix: [1,1,1,1,0,0,0,0,0,2,1,2,1,0,0,0,0,2,0,1,2,0,1,0,0,0,0,0,0,0] },\n{ answerId: '1.6.4', scoreMatrix: [1,1,1,1,0,0,0,0,0,1,0,1,0,0,0,0,0,1,1,0,1,1,0,0,0,0,0,0,0,0] },\n{ answerId: '1.7.1', scoreMatrix: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] },\n{ answerId: '1.7.2', scoreMatrix: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] },\n{ answerId: '1.7.3', scoreMatrix: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] },\n{ answerId: '1.7.4', scoreMatrix: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] },\n{ answerId: '1.8.1', scoreMatrix: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,2,0,0,0,0,0,0,0,0,0] },\n{ answerId: '1.8.2', scoreMatrix: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0] },\n{ answerId: '1.8.3', scoreMatrix: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,1,0,0,0,0,0,0,0] },\n{ answerId: '1.8.4', scoreMatrix: [0,0,0,0,0,0,0,0,0,2,1,2,1,0,0,0,0,1,0,2,1,0,2,0,0,0,0,0,0,0] },\n{ answerId: '1.9.1', scoreMatrix: [0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0] },\n{ answerId: '1.9.2', scoreMatrix: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,2,1,0,0,0,0,0,0,0,0] },\n{ answerId: '1.9.3', scoreMatrix: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,2,1,0,0,0,0,0,0,0,0] },\n{ answerId: '1.9.4', scoreMatrix: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,2,1,0,0,0,0,0,0,0,0] },\n{ answerId: '2.1.1', scoreMatrix: [0,0,0,0,3,2,0,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] },\n{ answerId: '2.1.2', scoreMatrix: [0,0,0,0,3,2,0,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] },\n{ answerId: '2.1.3', scoreMatrix: [0,0,0,0,3,2,0,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0] },\n{ answerId: '2.1.4', scoreMatrix: [0,0,0,0,3,2,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] },\n{ answerId: '2.1.5', scoreMatrix: [0,0,0,0,3,2,0,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0] },\n{ answerId: '2.1.6', scoreMatrix: [0,0,0,0,3,4,0,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,0] },\n{ answerId: '2.1.7', scoreMatrix: [0,0,0,0,3,5,0,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,0] },\n{ answerId: '2.1.8', scoreMatrix: [0,0,0,0,2,6,0,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,0,0,0,0,0] },\n{ answerId: '2.1.9', scoreMatrix: [0,0,0,0,3,1,0,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0] },\n{ answerId: '2.1.10', scoreMatrix: [0,0,0,0,3,1,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] },\n{ answerId: '2.2.1', scoreMatrix: [0,0,0,0,3,2,0,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] },\n{ answerId: '2.3.1', scoreMatrix: [0,0,0,0,2,4,0,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,1,1,0] },\n{ answerId: '2.3.2', scoreMatrix: [0,0,0,0,2,4,0,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] },\n{ answerId: '2.3.3', scoreMatrix: [0,0,0,0,2,4,0,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] },\n{ answerId: '2.4.1', scoreMatrix: [0,0,0,0,1,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0] },\n{ answerId: '2.4.2', scoreMatrix: [0,0,0,0,1,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0] },\n{ answerId: '2.4.3', scoreMatrix: [0,0,0,0,1,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0] },\n{ answerId: '2.4.4', scoreMatrix: [0,0,0,0,1,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0] },\n{ answerId: '2.4.5', scoreMatrix: [0,0,0,0,1,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0] },\n{ answerId: '2.4.6', scoreMatrix: [0,0,0,0,1,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] },\n{ answerId: '2.4.7', scoreMatrix: [0,0,0,0,2,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] },\n{ answerId: '2.4.8', scoreMatrix: [0,0,0,0,2,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] },\n{ answerId: '2.4.9', scoreMatrix: [0,0,0,0,2,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] },\n{ answerId: '2.4.10', scoreMatrix: [0,0,0,0,2,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] },\n{ answerId: '3.1.1', scoreMatrix: [0,0,0,0,2,0,1,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0] },\n{ answerId: '3.1.2', scoreMatrix: [0,0,0,0,2,0,1,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0] },\n{ answerId: '3.1.3', scoreMatrix: [0,0,0,0,2,0,2,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0] },\n{ answerId: '3.1.4', scoreMatrix: [0,0,0,0,2,0,3,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0] },\n{ answerId: '3.1.5', scoreMatrix: [0,0,0,0,2,0,3,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0] },\n{ answerId: '3.1.6', scoreMatrix: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] },\n{ answerId: '3.2.1', scoreMatrix: [0,0,0,0,3,0,1,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0] },\n{ answerId: '3.3.1', scoreMatrix: [0,0,0,0,2,0,2,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0] },\n{ answerId: '3.3.2', scoreMatrix: [0,0,0,0,2,0,3,1,2,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,4,4,0,0,0] },\n{ answerId: '3.3.3', scoreMatrix: [0,0,0,0,2,0,4,1,2,0,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,4,4,0,0,0] },\n{ answerId: '3.4.1', scoreMatrix: [0,0,0,0,2,0,4,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0] },\n{ answerId: '3.4.2', scoreMatrix: [0,0,0,0,3,0,1,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0] },\n{ answerId: '3.5.1', scoreMatrix: [0,0,0,0,2,0,1,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0] },\n{ answerId: '3.5.2', scoreMatrix: [0,0,0,0,1,0,2,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0] },\n{ answerId: '3.6.1', scoreMatrix: [0,0,0,0,1,0,0,1,1,0,0,0,0,2,2,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0] },\n{ answerId: '3.6.2', scoreMatrix: [0,0,0,0,1,0,0,1,1,0,0,0,0,2,2,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0] },\n{ answerId: '3.6.3', scoreMatrix: [0,0,0,0,1,0,5,1,1,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,5,5,0,0,0] },\n{ answerId: '3.6.4', scoreMatrix: [0,0,0,0,1,0,2,1,1,0,0,0,0,3,3,4,4,0,0,0,0,0,0,0,0,2,2,0,0,0] },\n{ answerId: '3.6.5', scoreMatrix: [0,0,0,0,1,0,3,1,1,0,0,0,0,2,2,5,5,0,0,0,0,0,0,0,0,3,3,0,0,0] },\n{ answerId: '3.6.6', scoreMatrix: [0,0,0,0,1,0,5,1,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,5,5,0,0,0] },\n{ answerId: '4.1.1', scoreMatrix: [0,0,0,0,4,0,0,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0] },\n{ answerId: '4.1.2', scoreMatrix: [0,0,0,0,4,0,0,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] },\n{ answerId: '4.1.3', scoreMatrix: [0,0,0,0,4,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0] },\n{ answerId: '4.1.4', scoreMatrix: [0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] },\n{ answerId: '4.2.1', scoreMatrix: [0,0,0,0,2,0,0,1,1,0,0,0,0,3,3,3,3,0,0,0,0,0,0,0,0,0,0,1,1,0] },\n{ answerId: '4.2.2', scoreMatrix: [0,0,0,0,2,0,0,1,1,0,0,0,0,3,3,3,3,0,0,0,0,0,0,0,0,0,0,3,3,4] },\n{ answerId: '4.2.3', scoreMatrix: [0,0,0,0,2,0,0,1,1,0,0,0,0,3,3,3,3,0,0,0,0,0,0,0,0,0,0,1,1,2] },\n{ answerId: '4.2.4', scoreMatrix: [0,0,0,0,2,0,0,2,1,0,0,0,0,3,3,3,3,0,0,0,0,0,0,0,0,0,0,3,3,2] },\n{ answerId: '4.2.5', scoreMatrix: [0,0,0,0,2,0,0,1,1,0,0,0,0,3,3,3,3,0,0,0,0,0,0,0,0,0,0,3,3,0] },\n{ answerId: '4.2.6', scoreMatrix: [0,0,0,0,2,0,0,1,1,0,0,0,0,3,3,4,4,0,0,0,0,0,0,0,0,0,0,2,2,0] },\n{ answerId: '4.2.7', scoreMatrix: [0,0,0,0,2,0,0,2,1,0,0,0,0,3,3,4,4,0,0,0,0,0,0,0,0,0,0,1,1,0] },\n{ answerId: '4.3.1', scoreMatrix: [0,0,0,0,2,0,0,1,1,0,0,0,0,3,3,3,3,0,0,0,0,0,0,0,0,0,0,2,2,0] },\n{ answerId: '4.4.1', scoreMatrix: [0,0,0,0,4,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3] },\n{ answerId: '4.4.2', scoreMatrix: [0,0,0,0,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4] },\n{ answerId: '4.4.3', scoreMatrix: [0,0,0,0,4,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3] },\n{ answerId: '4.4.4', scoreMatrix: [0,0,0,0,4,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] },\n{ answerId: '4.5.1', scoreMatrix: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] },\n{ answerId: '4.5.2', scoreMatrix: [0,0,0,0,1,0,0,1,1,0,0,0,0,2,2,4,4,0,0,0,0,0,0,0,0,0,0,4,4,1] },\n{ answerId: '4.5.3', scoreMatrix: [0,0,0,0,1,0,0,1,1,0,0,0,0,1,1,4,4,0,0,0,0,0,0,0,0,0,0,3,3,2] },\n{ answerId: '4.5.4', scoreMatrix: [0,0,0,0,1,0,0,1,1,0,0,0,0,1,1,4,4,0,0,0,0,0,0,0,0,0,0,3,3,2] },\n{ answerId: '4.5.5', scoreMatrix: [0,0,0,0,1,0,0,1,1,0,0,0,0,2,2,4,4,0,0,0,0,0,0,0,0,0,0,3,3,1] },\n{ answerId: '4.5.6', scoreMatrix: [0,0,0,0,1,0,0,1,1,0,0,0,0,1,1,4,4,0,0,0,0,0,0,0,0,0,0,3,3,2] },\n{ answerId: '4.6.1', scoreMatrix: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] },\n{ answerId: '4.6.2', scoreMatrix: [0,0,0,0,1,0,0,1,1,0,0,0,0,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0] },\n{ answerId: '4.7.1', scoreMatrix: [0,0,0,0,0,0,0,1,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0] },\n{ answerId: '4.7.2', scoreMatrix: [0,0,0,0,0,0,0,1,1,0,0,0,0,5,5,4,4,0,0,0,0,0,0,0,0,0,0,1,1,0] },\n{ answerId: '4.7.3', scoreMatrix: [0,0,0,0,0,0,0,1,1,0,0,0,0,2,2,5,5,0,0,0,0,0,0,0,0,0,0,1,1,0] },\n{ answerId: '4.7.4', scoreMatrix: [0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0] },\n{ answerId: '4.7.5', scoreMatrix: [0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,0] },\n{ answerId: '4.7.6', scoreMatrix: [0,0,0,0,1,0,0,1,1,0,0,0,0,1,1,4,4,0,0,0,0,0,0,0,0,0,0,2,2,0] },\n{ answerId: '4.7.7', scoreMatrix: [0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,0] },\n{ answerId: '4.7.8', scoreMatrix: [0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2] },\n{ answerId: '4.7.9', scoreMatrix: [0,0,0,0,0,0,0,1,1,0,0,0,0,1,1,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0] },\n{ answerId: '5.1.1', scoreMatrix: [0,0,0,0,2,4,0,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,0] },\n{ answerId: '5.1.2', scoreMatrix: [0,0,0,0,2,1,0,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] },\n{ answerId: '5.1.3', scoreMatrix: [0,0,0,0,3,2,0,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,0] },\n{ answerId: '5.1.4', scoreMatrix: [0,0,0,0,3,1,0,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0] },\n{ answerId: '5.1.5', scoreMatrix: [0,0,0,0,3,3,0,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] },\n{ answerId: '5.1.6', scoreMatrix: [0,0,0,0,3,3,0,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0] },\n{ answerId: '5.1.7', scoreMatrix: [0,0,0,0,3,1,0,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0] },\n{ answerId: '5.1.8', scoreMatrix: [0,0,0,0,2,1,0,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0] },\n{ answerId: '5.1.9', scoreMatrix: [0,0,0,0,2,1,0,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0] },\n{ answerId: '5.1.10', scoreMatrix: [0,0,0,0,2,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,5] },\n{ answerId: '5.2.1', scoreMatrix: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,5,5,0] },\n{ answerId: '5.2.2', scoreMatrix: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] },\n{ answerId: '5.2.3', scoreMatrix: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,1] },\n{ answerId: '0.0.0', scoreMatrix: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] },\n]\n\nexport default productLogic;\n","enum PrescriptionProductTypeVarilux {\n NONE = 'none',\n STANDARD_PROGRESSIVE_LENS = 'standard_progressive_lens',\n VARILUX_COMFORT = 'varilux_comfort',\n VARILUX_X_SERIES = 'varilux_x_series',\n VARILUX_PHYSIO_30 = 'varilux_physio_30'\n\n}\n\nexport default PrescriptionProductTypeVarilux;","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { isNumber } from 'util';\nimport packages from '../../constants/package-offer.constants';\nimport { fetchProductCombi, fetchProductDetailsViaId, fetchSubProductDetailsViaSubProductId } from '../../utils/misc';\nimport iPackageOfferStore from '../interface/package-offer-store-interface';\nimport iRootState from '../interface/root-state.interface';\n\nconst initialState: iPackageOfferStore = {\n isAdvancePricing:false,\n data: packages,\n}\n\nconst packageOfferSlice = createSlice({\n name: 'packageOffer',\n initialState,\n reducers: {\n setPackageOfferData: (state, action: PayloadAction) => {\n const {\n lensRecommendation, \n activePair, \n productDowngrade, \n brandDowngrade, \n temporaryProductList,\n getPackageOfferPrice,\n getDiscount,\n getCurrency,\n isAdvancePricing,\n getAdvancePrice\n } = action.payload\n const { pair1, pair2 } = lensRecommendation\n\n const pair = activePair === 'pair1' ? pair1 : pair2\n\n const downgrade = pair.correct.product.downgrade && pair.correct.product.downgrade.length > 0 && pair.correct !== undefined ? pair.correct.product.downgrade : false\n const correct = pair.hasOwnProperty('correct') && pair.correct !== null && pair.correct !== undefined ? pair.correct.subProduct : false\n const protect = pair.hasOwnProperty('protect') && (pair.protect || []).length > 0 && pair.protect !== undefined ? pair.protect[0].product : false\n const protect2 = pair.hasOwnProperty('protect') && (pair.protect || []).length > 0 && pair.protect !== undefined && pair.protect[1] ? pair.protect[1].product : false\n const enhance = pair.hasOwnProperty('enhance') && pair.enhance !== null && pair.enhance !== undefined ? pair.enhance.product : false\n\n const newData = []\n const cats = [\n { value: correct ? correct.id : '', label: correct ? correct.label : ''},\n { value: protect ? protect.id : '' , label: protect ? protect.label : ''},\n { value: enhance ? enhance.id : '' , label: enhance ? enhance.label : ''},\n ]\n\n const getCorrect = (ref: any) => {\n return {\n id: ref.id,\n code: ref.code,\n label: ref.label,\n index: ref.index\n } \n }\n\n const getSubProduct = (downgrade: any) => {\n const product = fetchProductDetailsViaId(downgrade.id, temporaryProductList)\n\n const productDetails = product.subProducts\n let id = ''\n let label = ''\n let code = ''\n let index = 0\n\n if(productDetails.length > 0){\n id = productDetails[0].id\n label = productDetails[0].label\n code = productDetails[0].code\n index = productDetails[0].index\n }\n\n return {\n id: id,\n label: label,\n code: code,\n index: index\n }\n }\n\n const getPrice = (\n correct_id: string | undefined,\n correct_code: string | undefined,\n correct_index: number | undefined,\n protect_id: string | undefined,\n protect2_id: string | undefined,\n enhance_id: string | undefined\n ) => {\n\n const price = getPackageOfferPrice(\n correct_id,\n correct_code,\n correct_index,\n protect_id,\n protect2_id,\n enhance_id,\n ) \n\n return price === -1 ? 0 : price\n }\n\n if(downgrade){\n // For Personalized (index=0), For Optimized (index=1), For Standart (index=2)\n for (var i = 0; i < 3; i++) {\n\n const params = {\n subProduct: i === 0 ? getCorrect(correct).code : getSubProduct(productDowngrade[i]).code,\n index: i === 0 ? getCorrect(correct).index : getSubProduct(productDowngrade[i]).index,\n protect1: protect && productDowngrade[i].hasOwnProperty('id') ? protect.id : '',\n protect2: protect2 && productDowngrade[i].hasOwnProperty('id') ? protect2.id : '',\n enhance: enhance && productDowngrade[i].hasOwnProperty('id') ? enhance.id : ''\n }\n\n const price = getPrice(\n i === 0 ? getCorrect(correct).id : getSubProduct(productDowngrade[i]).id,\n params.subProduct,\n params.index,\n params.protect1,\n params.protect2,\n params.enhance \n )\n\n let finalPrice = `${(price-getDiscount(activePair === 'pair1', price)).toString()} ${getCurrency()}`;\n\n if(isAdvancePricing){\n\n finalPrice = getAdvancePrice({\n correct: params.subProduct,\n enhance: params.enhance,\n protect1: params.protect1,\n protect2: params.protect2,\n index: params.index,\n }, activePair === 'pair1' ? 'p1' : 'p2');\n\n }\n \n let temp = {\n ...packages[i],\n product: {\n ...packages[i].product,\n name: productDowngrade[i].label,\n id: productDowngrade[i].id,\n brandId: brandDowngrade[i].id,\n price: finalPrice\n },\n categories: [\n { \n value: i === 0 ? getCorrect(correct).id : getSubProduct(productDowngrade[i]).id,\n label: i === 0 ? getCorrect(correct).label : getSubProduct(productDowngrade[i]).label,\n },\n { \n value: protect && productDowngrade[i].hasOwnProperty('id') ? protect.id : '' ,\n label: protect && productDowngrade[i].hasOwnProperty('id') ? protect.label : ''},\n { \n value: enhance && productDowngrade[i].hasOwnProperty('id') ? enhance.id : '' ,\n label: enhance && productDowngrade[i].hasOwnProperty('id') ? enhance.label : ''\n },\n ],\n isDisabled: !productDowngrade[i].hasOwnProperty('id'),\n }\n\n newData.push(temp)\n }\n }else{\n // For Personalized (index=0), For Optimized (index=1), For Standard (index=2)\n\n const params = {\n subProduct: getCorrect(correct).code,\n index: getCorrect(correct).index,\n protect1: protect ? protect.id : '',\n protect2: protect2 ? protect2.id : '',\n enhance: enhance ? enhance.id : ''\n }\n\n const price = getPrice(\n getCorrect(correct).id,\n params.subProduct,\n params.index,\n params.protect1,\n params.protect2,\n params.enhance\n )\n\n let finalPrice = `${(price-getDiscount(activePair === 'pair1', price)).toString()} ${getCurrency()}`;\n\n if(isAdvancePricing){\n finalPrice = getAdvancePrice({\n correct: params.subProduct,\n enhance: params.enhance,\n protect1: params.protect1,\n protect2: params.protect2,\n index: params.index,\n }, activePair === 'pair1' ? 'p1' : 'p2'); \n }\n\n const personalized = {\n ...packages[0],\n product: {\n ...packages[0].product,\n name: getCorrect(correct).label,\n id: getCorrect(correct).id,\n price: finalPrice\n },\n categories: cats,\n }\n const optimized = {\n ...packages[1],\n isDisabled: true,\n }\n const standard = {\n ...packages[2],\n isDisabled: true,\n }\n\n newData.push(personalized)\n newData.push(optimized)\n newData.push(standard)\n }\n\n\n return {\n ...state,\n data: newData,\n }\n },\n }\n});\n\nexport const getPackageOffer = (state:iRootState) => state.packageOffer;\nexport default packageOfferSlice;","\nconst deliveryPairDesc = {\n progressive: \n { type: \"pair_1_tab_del_p1_progressive_vision_title\",\n desc: \"pair_1_tab_del_p1_progressive_vision_text\"},\n single: {\n type: \"pair_1_tab_del_p1__single_vision\",\n desc: \"pair_1_tab_del_p1_single_vision\"\n },\n both: {\n type: \"delivery_design_lens3\",\n desc: \"pair_1_tab_del_p1_single_vision\"\n }\n\n}\n\nexport default deliveryPairDesc;","import { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\nimport deliveryPairDesc from \"../../constants/delivery-pairs.constants\";\nimport summaryData from \"../../constants/summary-data.constants\";\nimport iLensRecommendationPair from \"../../interface/lens-recommendaiton-pair.interface\";\nimport summaryBrand from \"../../interface/summary-products.interface\";\nimport isummaryDetails from \"../../interface/summary.interface\";\nimport LensFamilyType from \"../../types/lens-family.type\";\nimport LensPairType from \"../../types/lens-pair.type\";\nimport iRootState from \"../interface/root-state.interface\";\nimport summaryStore from \"../interface/summary.interface\";\n\nconst initialState: summaryStore = {\n summary: summaryData,\n summaryBrand: {\n pair1:[],\n pair2:[]\n },\n summaryNotes: '',\n summaryList1: [],\n summaryList2: []\n}\n\nconst summarySlice = createSlice({\n name: 'summary',\n initialState,\n reducers:{\n setPairDetails: (state, action: PayloadAction<{\n brand?: iLensRecommendationPair,\n pair?: LensPairType\n }>) => \n { \n const payload = action.payload;\n let newState1;\n let newState2;\n let description:any[];\n let deliveryDescription;\n if(payload.pair === LensPairType.PAIR1){\n newState2 = state.summaryList2;\n newState1 = state.summary?.map((v: isummaryDetails)=>{\n v.products.map((sub: summaryBrand)=>{\n description = [...sub.descriptions];\n })\n if(v.id===LensFamilyType.CORRECT && payload.brand?.correct !== null\n && payload.brand?.correct !== undefined){\n if(payload.brand?.correct.brand?.label==='Varilux'){\n deliveryDescription = deliveryPairDesc.progressive\n }\n else if(payload.brand?.correct.brand?.id==='standard_design'){\n deliveryDescription = deliveryPairDesc.both\n }else{\n deliveryDescription = deliveryPairDesc.single\n }\n return{\n ...v,\n deliveryDescription: deliveryDescription,\n thickness: payload.brand?.correct.subProduct?.index,\n price: payload.brand?.correct.subProduct?.price,\n products: v.products.map((sub: summaryBrand)=>{\n return{\n title: payload.brand?.correct.subProduct?.label,\n // descriptions: [...sub.descriptions]\n descriptions: payload.brand?.correct.product?.benefits\n }\n \n })\n }\n \n }\n else if(v.id === LensFamilyType.ENHANCE && payload.brand?.enhance !== null\n && payload.brand?.enhance !== undefined){\n return{\n ...v,\n products: v.products.map((sub: summaryBrand)=>{\n return{ \n title: payload.brand?.enhance.product?.label,\n descriptions: payload.brand?.enhance.product?.benefits\n }\n })\n }\n }\n else if(v.id === LensFamilyType.PROTECT && payload.brand?.protect !== null\n && payload.brand?.protect !== undefined\n && payload.brand?.protect.length !== 0){\n return{\n ...v,\n products: payload.brand?.protect.map((prod)=>{ \n return {\n title: prod.product?.label,\n // descriptions: description\n descriptions: prod.product?.benefits\n }\n })\n }\n }\n }) \n }else if(payload.pair === LensPairType.PAIR2 ){\n newState1 = state.summaryList1;\n newState2 = state.summary?.map((v: isummaryDetails)=>{\n v.products.map((sub: summaryBrand)=>{\n description = [...sub.descriptions];\n })\n if(v.id===LensFamilyType.CORRECT && payload.brand?.correct !== null\n && payload.brand?.correct !== undefined){\n if(payload.brand?.correct.brand?.label==='Varilux'){\n deliveryDescription = deliveryPairDesc.progressive\n }else{\n deliveryDescription = deliveryPairDesc.single\n }\n return{\n ...v,\n deliveryDescription: deliveryDescription,\n thickness: payload.brand?.correct.subProduct?.index,\n price: payload.brand?.correct.subProduct?.price,\n products: v.products.map((sub: summaryBrand)=>{\n return{\n title: payload.brand?.correct.subProduct?.label,\n descriptions: payload.brand?.correct.product?.benefits\n }\n \n })\n }\n \n }\n else if(v.id === LensFamilyType.ENHANCE && payload.brand?.enhance !== null\n && payload.brand?.enhance !== undefined){\n return{\n ...v,\n products: v.products.map((sub: summaryBrand)=>{\n return{ \n title: payload.brand?.enhance.product?.label,\n descriptions: payload.brand?.enhance.product?.benefits\n }\n })\n }\n }\n else if(v.id === LensFamilyType.PROTECT && payload.brand?.protect !== null\n && payload.brand?.protect !== undefined\n && payload.brand?.protect.length !== 0){\n \n return{\n ...v,\n products: payload.brand?.protect.map((prod)=>{ \n return {\n title: prod.product?.label,\n descriptions: prod.product?.benefits\n }\n })\n }\n }\n })\n }\n \n return { ...state, summaryList1: newState1, summaryList2: newState2 }\n }\n ,\n resetData: (state) => ({...state, ...initialState, summaryList1: undefined, summaryList2: undefined}),\n saveSummary1: (state, action: PayloadAction) => ( {\n ...state, \n summaryList1: action.payload\n }), \n saveSummary2: (state, action: PayloadAction) => ( {\n ...state, \n summaryList2: action.payload\n }),\n saveSummaryNotes: (state, action: PayloadAction) => ( {\n ...state, \n summaryNotes: action.payload\n }),\n \n }\n});\n\nexport const getSummary = (state:iRootState) => state.summary;\nexport default summarySlice;","import isummaryDetails from \"../interface/summary.interface\";\n\nconst summaryData: isummaryDetails[] = [\n {\n id: \"correct\",\n title: \"summary_sum_correct\",\n icon: \"correct\",\n sub: \"summary_sum_your_vision\",\n products: [\n {\n title: \"Varilux X Series\",\n descriptions: [\n {\n label: \"pair_1_tab_del_2_p1_sharp_vision\",\n icon: \"sharp-vision\",\n },\n {\n label: \"Smooth transition near to far\",\n icon: \"smooth\",\n },\n {\n label: \"pair_1_tab_del_2_p1_eliminates_off-balance\",\n icon: \"eliminates\",\n },\n ],\n }\n ]\n },\n {\n id: \"protect\",\n title: \"summary_sum_protect\",\n icon: \"protect\",\n sub: \"summary_sum_your_eyes\",\n products: [\n {\n title: \"EyeProtect System\",\n descriptions: [\n {\n label: \"pair_1_tab_del_3_p1_protection_against_harmful_uv_light\",\n icon: \"UV\",\n },\n {\n label: \"Helps protect from harmful blue light\",\n icon: \"harmful-light\",\n },\n {\n label: \"Azsthetically clear lenses\",\n icon: \"clear-lense\",\n },\n ],\n },\n {\n title: \"EyeProtect System\",\n descriptions: [\n {\n label: \"pair_1_tab_del_3_p1_protection_against_harmful_uv_light\",\n icon: \"UV\",\n },\n {\n label: \"Helps protect from harmful blue light\",\n icon: \"harmful-light\",\n },\n {\n label: \"Azsthetically clear lenses\",\n icon: \"clear-lense\",\n },\n ],\n },\n ],\n },\n {\n id: \"enhance\",\n title: \"summary_sum_enhance\",\n icon: \"enhance\",\n sub: \"summary_sum_clarity\",\n products: [\n {\n title: \"Crizal Sapphire 360\",\n descriptions: [\n {\n label: \"Reduces glare\",\n icon: \"reduce-glare\",\n },\n {\n label: \"Durable\",\n icon: \"durable\",\n },\n {\n label: \"pair_1_tab_del_2_p1_easy_to_clean\",\n icon: \"easy-to-clean\",\n },\n ],\n }\n ]\n },\n ];\n\n export default summaryData;","import { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\nimport { TUTORIAL_CONTENT } from \"../../constants/tutorial-content.constants\";\nimport tutorialDetails from \"../../interface/tutorial-content-details\";\nimport iRootState from \"../interface/root-state.interface\";\nimport tutorialStore from \"../interface/tutorial.interface\";\n\nconst initialState: tutorialStore = {\n items: {\n newFeatures: [],\n useJourney: [],\n personalizedCompanion: [],\n updateApp: [],\n },\n selected: '',\n description: {\n label: '',\n key: '',\n description: '',\n content: [\n {\n title: '',\n file: '',\n viewed: false\n }\n ]\n },\n view: 'tutorialMain'\n}\n\nconst tutorialSlice = createSlice({\n name: 'tutorial',\n initialState,\n reducers:{\n selectedCard: (state, action: PayloadAction<{\n key: string,\n selectedKey: string\n }>) => \n { \n let desc;\n switch(action.payload.key){\n case 'newFeatures':\n desc = state.items?.newFeatures?.find(val =>\n val.key === action.payload.selectedKey \n );\n break;\n case 'useJourney':\n desc = state.items?.useJourney?.find(val =>\n val.key === action.payload.selectedKey \n );\n break;\n case 'personalizedCompanion':\n desc = state.items?.personalizedCompanion?.find(val =>\n val.key === action.payload.selectedKey \n );\n break;\n case 'updateApp':\n desc = state.items?.updateApp?.find(val =>\n val.key === action.payload.selectedKey \n );\n break;\n default: \n break;\n }\n return{...state, selected: action.payload.key, description: desc}\n },\n saveViewMode: (state, action: PayloadAction) => ( {\n ...state, \n view: action.payload\n }),\n saveTutorialItems: (state, action: PayloadAction<\n {}>) => ( \n {\n ...state, \n items: action.payload\n }),\n }\n});\n\nexport const getTutorial = (state:iRootState) => state.tutorial;\nexport default tutorialSlice;","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport iPushNotificationStore from '../interface/push-notification-store.interface';\nimport iRootState from '../interface/root-state.interface';\n\n\nconst initialState: iPushNotificationStore = {\n inAppHasNewUpdate: false,\n eMatHasNewUpdate: 0,\n whatsNewHasNewUpdate: 0,\n tutorialHasNewUpdate: 0,\n countryCode: '',\n notificationEvent: null,\n}\n\nconst pushNotificationSlice = createSlice({\n name: 'pushNotification',\n initialState,\n reducers: {\n setInAppNotification: (state, action: PayloadAction) => ({\n ...state, \n inAppHasNewUpdate: action.payload\n }),\n setEmatNotification: (state, action: PayloadAction) => ({\n ...state, \n eMatHasNewUpdate: action.payload\n }),\n setWhatsNewNotification: (state, action: PayloadAction) => ({\n ...state, \n whatsNewHasNewUpdate: action.payload\n }),\n setTutorialNotification: (state, action: PayloadAction) => ({\n ...state, \n tutorialHasNewUpdate: action.payload\n }),\n setCountryCode: (state, action: PayloadAction) => ({\n ...state, \n countryCode: action.payload\n }),\n setNotificationEvent: (state, action: PayloadAction) => ({\n ...state, \n notificationEvent: action.payload\n }),\n setProductTimestamp: (state, action: PayloadAction) => ({\n ...state, \n notificationEvent: {\n ...state.notificationEvent,\n product: action.payload\n }\n }),\n setTranslationTimestamp: (state, action: PayloadAction) => ({\n ...state, \n notificationEvent: {\n ...state.notificationEvent,\n translation: action.payload\n }\n }),\n setPricingTimestamp: (state, action: PayloadAction) => ({\n ...state, \n notificationEvent: {\n ...state.notificationEvent,\n pricing: action.payload\n }\n }),\n setEmatCount: (state, action: PayloadAction) => ({\n ...state, \n notificationEvent: {\n ...state.notificationEvent,\n emat: action.payload\n }\n }),\n setWhatsNewCount: (state, action: PayloadAction) => ({\n ...state, \n notificationEvent: {\n ...state.notificationEvent,\n whats_new: action.payload\n }\n }),\n setTutorialCount: (state, action: PayloadAction) => ({\n ...state, \n notificationEvent: {\n ...state.notificationEvent,\n tutorial: action.payload\n }\n }),\n }\n});\n\nexport const getPushNotification = (state:iRootState) => state.pushNotification;\nexport default pushNotificationSlice;","import IVariluxChoices from \"../../interface/varilux-choices.interface\"\n\nconst variluxChoices:IVariluxChoices[] = [\n {\n id:1,\n label:['varilux_choice_difficulty_sharpness','Difficulty to maintain sharpness'],\n selected:false,\n gtmId: 'varilux_choice_difficulty_sharpness'\n },\n {\n id:2,\n label:['varilux_choice_sensation','Sensation of swim effect while moving'],\n selected:false,\n gtmId: 'varilux_choice_sensation'\n },\n {\n id:3,\n label:['varilux_choice_restricted','Restricted field of vision'],\n selected:false,\n gtmId: 'varilux_choice_restricted'\n },\n {\n id:4,\n label:['varilux_choice_difficulty_light','Difficulty to see sharply in low light conditions'],\n selected:false,\n gtmId: 'varilux_choice_difficulty_light'\n },\n {\n id:5,\n label:['varilux_choice_limited_posture','Limited postural changes'],\n selected:false,\n gtmId: 'varilux_choice_limited_posture'\n },\n {\n id:6,\n label:['varilux_choice_none','None, I am very satisfied with my progressive lenses'],\n selected:false,\n gtmId: 'varilux_choice_none'\n },\n]\n\n\nexport default variluxChoices","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport variluxChoices from '../../constants/variluxG9/need-explorer-choices';\nimport IVariluxResult from '../../interface/varilux-matrix-result.interface';\nimport PrescriptionAddSegmentationType from '../../types/prescription-add-segmentation-varilux.type';\nimport PrescriptionEyeConditionType from '../../types/prescription-eye-condition-varilux.type';\nimport PrescriptionProductTypeVarilux from '../../types/prescription-product-varilux.type';\nimport iRootState from '../interface/root-state.interface';\nimport iVariluxG9, { iView } from '../interface/variluxG9.interface';\n\n\nconst initialState: iVariluxG9 = {\n view: 'intro',\n needExplorerChoices:variluxChoices,\n prescriptionVarilux: {\n productSelected: PrescriptionProductTypeVarilux.NONE,\n values: {\n sphere: { od: undefined, os: undefined },\n addition: undefined\n },\n sphereMean:undefined,\n addition:undefined,\n },\n ametropia: null,\n additionSegmentation:null,\n categoryPercentages:null,\n lensCategorySelected:false,\n showDownloadPopup:false,\n prescriptionVideoPlay:false,\n}\n\nconst variluxgG9Slice = createSlice({\n name: 'variluxG9',\n initialState,\n reducers: {\n changeView: (state, action: PayloadAction) => ( {...state, view:action.payload} ),\n selectChoice: (state, action: PayloadAction) => {\n const newChoices = [...state.needExplorerChoices.map(choice => {\n\n // deselect none if others are selected\n if(choice.id === 6 && action.payload !== 6){\n return {\n ...choice,\n selected: false\n }\n }\n\n // deselect others if none is selected.\n if(choice.id !== 6 && action.payload ===6){\n return {\n ...choice,\n selected:false\n }\n }\n\n // otherwise select / deselect\n if(choice.id === action.payload){\n return {\n ...choice,\n selected:!choice.selected\n }\n }\n return choice\n })]\n\n\n return {\n ...state,\n needExplorerChoices:newChoices\n }\n },\n resetNeedExplorerChoices: (state) => {\n return {\n ...state,\n needExplorerChoices: variluxChoices\n }\n },\n savePrescription:(state, action: PayloadAction) => {\n const {sphere, addition} = action.payload\n\n const convertValuesToNumber = (value?:string) => {\n const isPositive = value?.[0] === '+'\n const number = value && value.length > 2 && value.slice(1)\n let convertedString:number;\n if(number){\n convertedString = isPositive ? +number : -number\n return convertedString\n } \n return undefined\n }\n const os = convertValuesToNumber(sphere?.os)\n const od = convertValuesToNumber(sphere?.od)\n const add = convertValuesToNumber(addition)\n\n return {\n ...state,\n prescriptionVarilux: {\n ...state.prescriptionVarilux,\n values:{\n ...action.payload\n },\n sphereMean: (os && od) && (od + os)/2,\n addition: add && add,\n\n }\n }\n },\n selectProduct:(state, action: PayloadAction) => {\n // reset values to initial state if selected product is None\n return {\n ...state,\n prescriptionVarilux:{\n ...state.prescriptionVarilux,\n values:{\n ...(action.payload === PrescriptionProductTypeVarilux.NONE ? \n initialState.prescriptionVarilux.values : \n state.prescriptionVarilux.values)\n },\n productSelected:action.payload\n }\n }\n },\n setEyeCondition:(state, action: PayloadAction) => {\n return {\n ...state,\n ametropia:action.payload\n }\n },\n setAddSegmentation:(state, action: PayloadAction) => {\n return {\n ...state,\n additionSegmentation:action.payload\n }\n },\n setCategoryPercentages:(state, action: PayloadAction) => {\n return {\n ...state,\n categoryPercentages:action.payload\n }\n },\n setLensCategorySelected:(state, action: PayloadAction) => {\n return {\n ...state,\n lensCategorySelected:action.payload,\n }\n },\n resetData:(state)=>{\n return{\n ...state,\n ...initialState,\n }\n },\n setShowDownloadPopup: (state, action: PayloadAction) => {\n return{\n ...state,\n showDownloadPopup:action.payload\n }\n },\n setPrescriptionVideoPlay: (state, action: PayloadAction) => {\n return{\n ...state,\n prescriptionVideoPlay:action.payload\n }\n },\n}\n});\n\nexport const getVariluxG9 = (state:iRootState) => state.variluxG9;\nexport default variluxgG9Slice;","import { configureStore, getDefaultMiddleware } from '@reduxjs/toolkit';\nimport lensConsultationSlice from './slices/lens-consultation.slice';\nimport measureSlice from './slices/measure.slice';\nimport myCompanionSlice from './slices/mycompanion.slice';\nimport needExplorerSlice from './slices/need-explorer.slice';\nimport prescriptionSlice from './slices/prescription.slice';\nimport sidebarSlice from './slices/sidebar.slice';\nimport lensThicknessSlice from './slices/lens-thickness.slice';\nimport userSlice from './slices/user.slice';\nimport educationSlice from './slices/education.slice';\nimport deliverySlice from './slices/delivery.slice';\nimport productsSlice from './slices/products.slice';\nimport productDemoSlice from './slices/products-demo.slice';\nimport iRootState from './interface/root-state.interface';\nimport discoverySlice from './slices/discovery.slice';\nimport licenseSlice from './slices/license.slice';\nimport packageOfferSlice from './slices/package-offer.slice';\nimport appSlice from './slices/app.slice';\nimport summarySlice from './slices/summary.slice';\nimport tutorialSlice from './slices/tutorial.slice';\nimport pushNotificationSlice from './slices/push-notification.slice';\n// import lensConsultationSun from './slices/lens-consultation-sun-exp.slice';\n// import needExplorerSunSlice from './slices/need-explorer-sun.slice';\nimport variluxgG9Slice from './slices/variluxG9.slice';\n\nconst loadFromLocalStorage = (): iRootState | undefined => {\n try {\n const serialisedState = localStorage.getItem(\"persistantState\");\n if (serialisedState === null) return undefined;\n return JSON.parse(serialisedState) as iRootState;\n } catch (e) {\n console.warn(e);\n return undefined;\n }\n}\n\n\n\nconst store = configureStore({\n reducer: {\n app: appSlice.reducer,\n user: userSlice.reducer,\n sidebar: sidebarSlice.reducer,\n myCompanion: myCompanionSlice.reducer,\n needExplorer: needExplorerSlice.reducer,\n prescription: prescriptionSlice.reducer,\n measure: measureSlice.reducer,\n lensConsultation: lensConsultationSlice.reducer,\n lensThickness: lensThicknessSlice.reducer,\n education: educationSlice.reducer,\n delivery: deliverySlice.reducer,\n products: productsSlice.reducer,\n productDemo: productDemoSlice.reducer,\n discovery: discoverySlice.reducer,\n license: licenseSlice.reducer,\n packageOffer: packageOfferSlice.reducer,\n summary: summarySlice.reducer,\n tutorial: tutorialSlice.reducer,\n pushNotification: pushNotificationSlice.reducer,\n // lensConsultationSun: lensConsultationSun.reducer,\n variluxG9:variluxgG9Slice.reducer\n },\n preloadedState: loadFromLocalStorage(),\n middleware: [...getDefaultMiddleware({immutableCheck: false})]\n});\n\nexport default store;","import ReactGA from 'react-ga';\nimport settings from '../../constants/settings.constants';\nimport store from '../../store/store';\n\ntype bemType = {\n // init: (id: string) => void,\n event: (params: {\n category: string,\n action: string,\n label?: string,\n variable_id?: string,\n }) => void,\n // pageView: (path: string) => void\n}\n\n\nconst useGoogleAnalytics = (): bemType => {\n\n // const defaultParams = () => {\n // const userId = store.getState().user.id;\n // const params = {\n // v: 1, // Version Number\n // tid: settings[settings.environment].GA, // Tracking ID\n // cid: userId ? userId : String(new Date().getTime())\n // }\n // // return {\n // // ...params,\n // // ...( userId ? {cid: userId} : {} )\n // // }\n // return params\n // }\n\n // const payloadString = (data: any) => {\n // return Object.keys(data)\n // .filter(analyticsKey => data[analyticsKey])\n // .map(analyticsKey => analyticsKey + '=' + encodeURIComponent(data[analyticsKey]))\n // .join('&')\n // }\n\n // const init = (id: string) => {\n // ReactGA.initialize(id);\n // }\n\n const event = ({ category,action,label, variable_id }: {\n category: string,\n action: string,\n label?: string,\n variable_id?: string,\n }) => {\n\n // let payloadData: any = {\n // ...defaultParams(),\n // t: 'event', // Hit Type\n // ec: category, // Event Category\n // ea: action, // Event Action\n // }\n\n // if(label){\n // payloadData = {\n // ...payloadData,\n // el: label // Event Label\n // }\n // }\n const license = store.getState().app.globalInformation.license;\n\n const newDataLayer = {\n event: 'CustomEvent',\n category,\n action,\n label,\n variable_id,\n license\n }\n const win: any = window;\n win.dataLayer.push(newDataLayer);\n // if(!navigator.onLine){\n // // save payload data;\n // return;\n // }\n\n // Post to Google Analytics endpoint\n // return fetch('https://www.google-analytics.com/collect', {\n // method: 'post',\n // body: payloadString(payloadData)\n // }).catch((e) => {\n // // save payload data;\n // }) \n\n // ReactGA.event({\n // category, action, label,\n // });\n }\n\n // const pageView = (path: string) => {\n // let payloadData: any = {\n // ...defaultParams(),\n // t: 'pageview', // Hit Type\n // dp: path\n // }\n\n // return fetch('https://www.google-analytics.com/collect', {\n // method: 'post',\n // body: payloadString(payloadData)\n // }).catch((e) => {\n // // save payload data;\n // }) \n // }\n \n return {\n // init,\n event,\n // pageView\n };\n}\n\nexport default useGoogleAnalytics;","import { useHistory } from \"react-router\";\nimport iRoute from \"../../interface/route.interface\";\n\ntype bemType = {\n route: (route: iRoute, delay?: number) => void,\n routeWithTransition: (\n fromRoute: iRoute, \n toRoute: iRoute, \n transition: 'SLIDE_LEFT' | 'FADE_OUT',\n delay?: number) => void,\n}\n\n\nconst useGoto = (): bemType => {\n\n const history = useHistory();\n\n const route = (route: iRoute, delay?: number) => {\n if(!delay){\n history.push(route.path); \n return;\n } \n\n setTimeout(() => {\n history.push(route.path); \n }, delay);\n }\n\n const routeWithTransition = (\n fromRoute: iRoute,\n toRoute: iRoute,\n transition: 'SLIDE_LEFT' | 'FADE_OUT',\n delay?: number\n ) => {\n const pageElement = document.querySelector(`.${fromRoute.id}`);\n const classToAppend = 'goto-'+transition;\n pageElement?.classList.add(classToAppend);\n \n setTimeout(() => {\n pageElement?.classList.remove(classToAppend);\n route(toRoute);\n }, delay || 1000);\n }\n\n return {\n route,\n routeWithTransition \n };\n}\n\nexport default useGoto;","import variluxCard from './../assets/images/varilux-card.png';\nimport experioCard from './../assets/images/experio-card.jpg';\nimport blueUVCard from './../assets/images/blue-uv-card.jpg';\nimport eyezenCard from './../assets/images/eyezen-card.png';\nimport crizalCard from './../assets/images/crizal-card.png';\nimport optifogCard from './../assets/images/optifog-card.png';\nimport transitionsCard from './../assets/images/transitions-card.png';\nimport stellestCard2 from './../assets/images/stellest-card2.png';\nimport LensCategoryType from '../types/lens-category.type';\nimport ComplementaryEquipmentType from '../types/complementary-equipment.type';\nimport LensProtectType from '../types/lens-protect.type';\nimport LensEnhanceType from '../types/lens-enhance.type';\n\nexport const PRODUCT_CONFIG = {\n // new product = varilux_xr_series\n \"varilux_xr_series\": {\n downgrade: [`varilux_xr_series`, `varilux_x_series`, `varilux_physio_30`],\n smallTitle: 'questionnaires_q_recomm_short_description',\n description: 'questionnaires_q_recomm_long_desc',\n benefits: [\n {\n icon: \"instant\",\n label: ['ec_varilux_xr_benefit_instant','Instant sharpness at all distances, even in motion'],\n type: 1,\n },\n {\n icon: \"low-light\",\n label: ['ec_varilux_xr_benefit_sharp', \"High visual acuity even in low light conditions\"],\n type: 1\n },\n {\n icon: \"natural-posture\",\n label: ['ec_varilux_xr_benefit_extended', \"Natural posture in all circumstances\"],\n type: 1\n },\n {\n icon: \"panoramic\",\n label: ['ec_varilux_xr_benefit_panoramic', \"Panoramic field of vision\"],\n type: 2\n },\n {\n icon: \"stabilised\",\n label: ['ec_varilux_xr_benefit_stabilized', 'Stabilized vision even in the most demanding situations'],\n type: 2\n\n },\n ]\n },\n \"varilux_x_series\": {\n downgrade: [`varilux_x_series`, `varilux_e_series`, `varilux_physio_30`],\n smallTitle: 'questionnaires_q_recomm_short_description',\n description: 'questionnaires_q_recomm_long_desc',\n benefits: [\n {\n icon: \"seamless\",\n label: \"pair_1_tab_del_p1__seamless_vision_\",\n type: 1,\n },\n {\n icon: \"sharp-vision-icon\",\n label: \"pair_1_tab_del_p1__instant_sharp\",\n type: 1\n },\n {\n icon: \"effortless-vision\",\n label: \"pair_1_tab_del_p1__effortless_\",\n type: 1\n },\n {\n icon: \"balance\",\n label: \"pair_1_tab_del_p1__balance_when_moving\",\n type: 2\n },\n {\n icon: \"head-move\",\n label: \"pair_1_tab_del_p1_visual_fluidity\",\n type: 2\n\n },\n ]\n },\n \"varilux_sunmax\": {\n id: 'varilux_sunmax',\n label: 'Varilux® SunMax',\n lensDesign: LensCategoryType.PROGRESSIVE,\n enabled: true,\n downgrade: [],\n subProducts: [\n {id: \"1varilux_sunMax\", label: \"Varilux® SunMax\", index: 1.59,price:0, enabled: true },\n {id: \"2varilux_sunMax\", label: \"Varilux® SunMax\", index: 1.6,price:0, enabled: true }\n ],\n smallTitle: '',\n description: \"\",\n benefits: [\n {\n icon: \"seamless\",\n label: \"pair_1_tab_del_p1__seamless_vision_\",\n type: 1,\n },\n {\n icon: \"sharp-vision-icon\",\n label: \"pair_1_tab_del_p1__instant_sharp\",\n type: 1\n },\n {\n icon: \"uv-protect\",\n label: \"pair_1_tab_del_p1__harmful\",\n type: 1,\n },\n ]\n },\n \"varilux_s_series\": {\n id: 'varilux_s_series',\n label: 'Varilux® S™ Series',\n enabled: true,\n lensDesign: LensCategoryType.PROGRESSIVE,\n downgrade: [`varilux_s_series`, `varilux_e_series`, `varilux_physio_30`],\n subProducts: [\n {id: \"1varilux_s_4d\", label: \"Varilux® S™ 4D\", index: 1.5,price:0, enabled: true },\n {id: \"2varilux_s_4d\", label: \"Varilux® S™ 4D\", index: 1.59,price:0, enabled: true },\n {id: \"3varilux_s_4d\", label: \"Varilux® S™ 4D\", index: 1.6,price:0, enabled: true },\n {id: \"4varilux_s_4d\", label: \"Varilux® S™ 4D\", index: 1.67,price:0, enabled: true },\n {id: \"5varilux_s_4d\", label: \"Varilux® S™ 4D\", index: 1.74,price:0, enabled: true },\n {id: \"1varilux_s_design\", label: \"Varilux® S™ design\", index: 1.5,price:0, enabled: true },\n {id: \"2varilux_s_design\", label: \"Varilux® S™ design\", index: 1.59,price:0, enabled: true },\n {id: \"3varilux_s_design\", label: \"Varilux® S™ design\", index: 1.6,price:0, enabled: true },\n {id: \"4varilux_s_design\", label: \"Varilux® S™ design\", index: 1.67,price:0, enabled: true },\n {id: \"5varilux_s_design\", label: \"Varilux® S™ design\", index: 1.74,price:0, enabled: true },\n {id: \"1varilux_s_design_short\", label: \"Varilux® S™ design short\", index: 1.5,price:0, enabled: true },\n {id: \"2varilux_s_design_short\", label: \"Varilux® S™ design short\", index: 1.59,price:0, enabled: true },\n {id: \"3varilux_s_design_short\", label: \"Varilux® S™ design short\", index: 1.6,price:0, enabled: true },\n {id: \"4varilux_s_design_short\", label: \"Varilux® S™ design short\", index: 1.67,price:0, enabled: true },\n {id: \"5varilux_s_design_short\", label: \"Varilux® S™ design short\", index: 1.74,price:0, enabled: true },\n {id: \"1varilux_s_f-360\", label: \"Varilux® S™ f-360°\", index: 1.5,price:0, enabled: true },\n {id: \"2varilux_s_f-360\", label: \"Varilux® S™ f-360°\", index: 1.59,price:0, enabled: true },\n {id: \"3varilux_s_f-360\", label: \"Varilux® S™ f-360°\", index: 1.6,price:0, enabled: true },\n {id: \"4varilux_s_f-360\", label: \"Varilux® S™ f-360°\", index: 1.67,price:0, enabled: true },\n {id: \"5varilux_s_f-360\", label: \"Varilux® S™ f-360°\", index: 1.74,price:0, enabled: true },\n ],\n smallTitle: '',\n description: \"\",\n benefits: [\n {\n icon: \"seamless\",\n label: \"pair_1_tab_del_p1__seamless_vision_\",\n type: 1,\n },\n {\n icon: \"sharp-vision-icon\",\n label: \"pair_1_tab_del_p1__instant_sharp\",\n type: 1\n },\n {\n icon: \"effortless-vision\",\n label: \"pair_1_tab_del_p1__effortless_\",\n type: 1\n },\n {\n icon: \"balance\",\n label: \"pair_1_tab_del_p1__balance_when_moving\",\n type: 2\n },\n ]\n },\n \"varilux_physio_30\": {\n id: 'varilux_physio_30',\n label: 'Varilux® Physio® 3.0',\n lensDesign: LensCategoryType.PROGRESSIVE,\n enabled: true,\n downgrade: [ `varilux_physio_30`, `varilux_comfort_max`, `varilux_liberty_30`],\n subProducts: [\n {id: \"1varilux_physio_30\", label: \"Varilux® Physio® 3.0\", index: 1.5,price:0, enabled: true },\n {id: \"2varilux_physio_30\", label: \"Varilux® Physio® 3.0\", index: 1.59,price:0, enabled: true },\n {id: \"3varilux_physio_30\", label: \"Varilux® Physio® 3.0\", index: 1.6,price:0, enabled: true },\n {id: \"4varilux_physio_30\", label: \"Varilux® Physio® 3.0\", index: 1.67,price:0, enabled: true },\n {id: \"5varilux_physio_30\", label: \"Varilux® Physio® 3.0\", index: 1.74,price:0, enabled: true },\n {id: \"1varilux_physio_30_f-360\", label: \"Varilux® Physio® 3.0 f-360°\", index: 1.5,price:0, enabled: true },\n {id: \"2varilux_physio_30_f-360\", label: \"Varilux® Physio® 3.0 f-360°\", index: 1.59,price:0, enabled: true },\n {id: \"3varilux_physio_30_f-360\", label: \"Varilux® Physio® 3.0 f-360°\", index: 1.6,price:0, enabled: true },\n {id: \"4varilux_physio_30_f-360\", label: \"Varilux® Physio® 3.0 f-360°\", index: 1.67,price:0, enabled: true },\n {id: \"5varilux_physio_30_f-360\", label: \"Varilux® Physio® 3.0 f-360°\", index: 1.74,price:0, enabled: true },\n {id: \"1varilux_physio_30_f-360_far_vision\", label: \"Varilux® Physio® 3.0 f-360° Far Vision\", index: 1.5,price:0, enabled: true },\n {id: \"2varilux_physio_30_f-360_far_vision\", label: \"Varilux® Physio® 3.0 f-360° Far Vision\", index: 1.59,price:0, enabled: true },\n {id: \"3varilux_physio_30_f-360_far_vision\", label: \"Varilux® Physio® 3.0 f-360° Far Vision\", index: 1.6,price:0, enabled: true },\n {id: \"4varilux_physio_30_f-360_far_vision\", label: \"Varilux® Physio® 3.0 f-360° Far Vision\", index: 1.67,price:0, enabled: true },\n {id: \"5varilux_physio_30_f-360_far_vision\", label: \"Varilux® Physio® 3.0 f-360° Far Vision\", index: 1.74,price:0, enabled: true },\n {id: \"1varilux_physio_30_f-360_near_vision\", label: \"Varilux® Physio® 3.0 f-360° Near Vision\", index: 1.5,price:0, enabled: true },\n {id: \"2varilux_physio_30_f-360_near_vision\", label: \"Varilux® Physio® 3.0 f-360° Near Vision\", index: 1.59,price:0, enabled: true },\n {id: \"3varilux_physio_30_f-360_near_vision\", label: \"Varilux® Physio® 3.0 f-360° Near Vision\", index: 1.6,price:0, enabled: true },\n {id: \"4varilux_physio_30_f-360_near_vision\", label: \"Varilux® Physio® 3.0 f-360° Near Vision\", index: 1.67,price:0, enabled: true },\n {id: \"5varilux_physio_30_f-360_near_vision\", label: \"Varilux® Physio® 3.0 f-360° Near Vision\", index: 1.74,price:0, enabled: true },\n {id: \"1varilux_physio_30_short\", label: \"Varilux® Physio® 3.0 short\", index: 1.5,price:0, enabled: true },\n {id: \"2varilux_physio_30_short\", label: \"Varilux® Physio® 3.0 short\", index: 1.59,price:0, enabled: true },\n {id: \"3varilux_physio_30_short\", label: \"Varilux® Physio® 3.0 short\", index: 1.6,price:0, enabled: true },\n {id: \"4varilux_physio_30_short\", label: \"Varilux® Physio® 3.0 short\", index: 1.67,price:0, enabled: true },\n {id: \"5varilux_physio_30_short\", label: \"Varilux® Physio® 3.0 short\", index: 1.74,price:0, enabled: true }\n ],\n smallTitle: '',\n description: \"\",\n benefits: [\n {\n icon: \"seamless\",\n label: \"pair_1_tab_del_p1__seamless_vision_\",\n type: 1,\n },\n {\n icon: \"sharp-vision-icon\",\n label: \"pair_1_tab_del_p1__instant_sharp\",\n type: 1\n },\n {\n icon: \"effortless-vision\",\n label: \"pair_1_tab_del_p1__effortless_\",\n type: 1\n },\n ]\n },\n \"varilux_liberty_30\":{\n id: 'varilux_liberty_30',\n label: 'Varilux® Liberty™ 3.0',\n lensDesign: LensCategoryType.PROGRESSIVE,\n enabled: true,\n downgrade: [],\n subProducts: [\n {id: \"varilux_liberty_30\", label: \"Varilux® Liberty™ 3.0\", index: 1.5,price:0, enabled: true },\n {id: \"varilux_liberty_30\", label: \"Varilux® Liberty™ 3.0\", index: 1.59,price:0, enabled: true },\n {id: \"varilux_liberty_30\", label: \"Varilux® Liberty™ 3.0\", index: 1.6,price:0, enabled: true },\n {id: \"varilux_liberty_30\", label: \"Varilux® Liberty™ 3.0\", index: 1.67,price:0, enabled: true },\n {id: \"varilux_liberty_30_f-360\", label: \"Varilux® Liberty™ 3.0 f-360°\", index: 1.5,price:0, enabled: true },\n {id: \"varilux_liberty_30_f-360\", label: \"Varilux® Liberty™ 3.0 f-360°\", index: 1.59,price:0, enabled: true },\n {id: \"varilux_liberty_30_f-360\", label: \"Varilux® Liberty™ 3.0 f-360°\", index: 1.6,price:0, enabled: true },\n {id: \"varilux_liberty_30_f-360\", label: \"Varilux® Liberty™ 3.0 f-360°\", index: 1.67,price:0, enabled: true },\n {id: \"varilux_liberty_30_short\", label: \"Varilux® Liberty™ 3.0 short\", index: 1.5,price:0, enabled: true },\n {id: \"varilux_liberty_30_short\", label: \"Varilux® Liberty™ 3.0 short\", index: 1.59,price:0, enabled: true },\n {id: \"varilux_liberty_30_short\", label: \"Varilux® Liberty™ 3.0 short\", index: 1.6,price:0, enabled: true },\n {id: \"varilux_liberty_30_short\", label: \"Varilux® Liberty™ 3.0 short\", index: 1.67,price:0, enabled: true },\n ],\n smallTitle: '',\n description: \"\",\n benefits: [\n {\n icon: \"seamless\",\n label: \"pair_1_tab_del_p1__seamless_vision_\",\n type: 1,\n },\n ]\n },\n \"varilux_e_series\":{\n id: 'varilux_e_series',\n label: 'Varilux® E Series',\n enabled: true,\n lensDesign: LensCategoryType.PROGRESSIVE,\n downgrade: [`varilux_e_series`,`varilux_physio_30`, `varilux_comfort_max`],\n subProducts: [\n {id: \"1varilux_e_design\", label: \"Varilux® E design\", index: 1.5,price:0, enabled: true },\n {id: \"2varilux_e_design\", label: \"Varilux® E design\", index: 1.59,price:0, enabled: true },\n {id: \"3varilux_e_design\", label: \"Varilux® E design\", index: 1.6,price:0, enabled: true },\n {id: \"4varilux_e_design\", label: \"Varilux® E design\", index: 1.67,price:0, enabled: true },\n {id: \"5varilux_e_design\", label: \"Varilux® E design\", index: 1.74,price:0, enabled: true },\n {id: \"1varilux_e_design_short\", label: \"Varilux® E design short\", index: 1.5,price:0, enabled: true },\n {id: \"2varilux_e_design_short\", label: \"Varilux® E design short\", index: 1.59,price:0, enabled: true },\n {id: \"3varilux_e_design_short\", label: \"Varilux® E design short\", index: 1.6,price:0, enabled: true },\n {id: \"4varilux_e_design_short\", label: \"Varilux® E design short\", index: 1.67,price:0, enabled: true },\n {id: \"5varilux_e_design_short\", label: \"Varilux® E design short\", index: 1.74,price:0, enabled: true },\n {id: \"1varilux_e_f-360\", label: \"Varilux® E f-360°\", index: 1.5,price:0, enabled: true },\n {id: \"2varilux_e_f-360\", label: \"Varilux® E f-360°\", index: 1.59,price:0, enabled: true },\n {id: \"3varilux_e_f-360\", label: \"Varilux® E f-360°\", index: 1.6,price:0, enabled: true },\n {id: \"4varilux_e_f-360\", label: \"Varilux® E f-360°\", index: 1.67,price:0, enabled: true },\n {id: \"5varilux_e_f-360\", label: \"Varilux® E f-360°\", index: 1.74,price:0, enabled: true },\n ],\n smallTitle: '',\n description: \"\",\n benefits: [\n {\n icon: \"seamless\",\n label: \"pair_1_tab_del_p1__seamless_vision_\",\n type: 1,\n },\n {\n icon: \"sharp-vision-icon\",\n label: \"pair_1_tab_del_p1__instant_sharp\",\n type: 1\n },\n {\n icon: \"effortless-vision\",\n label: \"pair_1_tab_del_p1__effortless_\",\n type: 1\n },\n {\n icon: \"balance\",\n label: \"pair_1_tab_del_p1__balance_when_moving\",\n type: 2\n },\n ]\n },\n \"varilux_digitime\":{\n id: 'varilux_digitime',\n label: 'Varilux® Digitime™',\n complementaryEquipments: [ComplementaryEquipmentType.COMPUTER],\n lensDesign: LensCategoryType.PROGRESSIVE,\n enabled: true,\n downgrade: [`varilux_digitime`, ``, ``],\n subProducts: [\n {id: \"1varilux_digitime_mid\", label: \"Varilux Digitime Mid\", index: 1.5,price:0, enabled: true },\n {id: \"2varilux_digitime_mid\", label: \"Varilux Digitime Mid\", index: 1.59,price:0, enabled: true },\n {id: \"3varilux_digitime_mid\", label: \"Varilux Digitime Mid\", index: 1.6,price:0, enabled: true },\n {id: \"4varilux_digitime_mid\", label: \"Varilux Digitime Mid\", index: 1.67,price:0, enabled: true },\n {id: \"1varilux_digitime_mid_f-360\", label: \"Varilux® Digitime™ Mid f-360°\", index: 1.5,price:0, enabled: true },\n {id: \"2varilux_digitime_mid_f-360\", label: \"Varilux® Digitime™ Mid f-360°\", index: 1.59,price:0, enabled: true },\n {id: \"3varilux_digitime_mid_f-360\", label: \"Varilux® Digitime™ Mid f-360°\", index: 1.6,price:0, enabled: true },\n {id: \"4varilux_digitime_mid_f-360\", label: \"Varilux® Digitime™ Mid f-360°\", index: 1.67,price:0, enabled: true },\n {id: \"1varilux_digitime_mid_plus\", label: \"Varilux® Digitime™ Mid Plus\", index: 1.5,price:0, enabled: true },\n {id: \"2varilux_digitime_mid_plus\", label: \"Varilux® Digitime™ Mid Plus\", index: 1.59,price:0, enabled: true },\n {id: \"3varilux_digitime_mid_plus\", label: \"Varilux® Digitime™ Mid Plus\", index: 1.6,price:0, enabled: true },\n {id: \"4varilux_digitime_mid_plus\", label: \"Varilux® Digitime™ Mid Plus\", index: 1.67,price:0, enabled: true },\n {id: \"1varilux_digitime_near\", label: \"Varilux® Digitime™ Near\", index: 1.5,price:0, enabled: true },\n {id: \"2varilux_digitime_near\", label: \"Varilux® Digitime™ Near\", index: 1.59,price:0, enabled: true },\n {id: \"3varilux_digitime_near\", label: \"Varilux® Digitime™ Near\", index: 1.6,price:0, enabled: true },\n {id: \"4varilux_digitime_near\", label: \"Varilux® Digitime™ Near\", index: 1.67,price:0, enabled: true },\n {id: \"1varilux_digitime_near_f-360\", label: \"Varilux® Digitime™ Near f-360°\", index: 1.5,price:0, enabled: true },\n {id: \"2varilux_digitime_near_f-360\", label: \"Varilux® Digitime™ Near f-360°\", index: 1.59,price:0, enabled: true },\n {id: \"3varilux_digitime_near_f-360\", label: \"Varilux® Digitime™ Near f-360°\", index: 1.6,price:0, enabled: true },\n {id: \"4varilux_digitime_near_f-360\", label: \"Varilux® Digitime™ Near f-360°\", index: 1.67,price:0, enabled: true },\n {id: \"1varilux_digitime_near_plus\", label: \"Varilux® Digitime™ Near Plus\", index: 1.5,price:0, enabled: true },\n {id: \"2varilux_digitime_near_plus\", label: \"Varilux® Digitime™ Near Plus\", index: 1.59,price:0, enabled: true },\n {id: \"3varilux_digitime_near_plus\", label: \"Varilux® Digitime™ Near Plus\", index: 1.6,price:0, enabled: true },\n {id: \"4varilux_digitime_near_plus\", label: \"Varilux® Digitime™ Near Plus\", index: 1.67,price:0, enabled: true },\n {id: \"1varilux_digitime_room\", label: \"Varilux® Digitime™ Room\", index: 1.5,price:0, enabled: true },\n {id: \"2varilux_digitime_room\", label: \"Varilux® Digitime™ Room\", index: 1.59,price:0, enabled: true },\n {id: \"3varilux_digitime_room\", label: \"Varilux® Digitime™ Room\", index: 1.6,price:0, enabled: true },\n {id: \"4varilux_digitime_room\", label: \"Varilux® Digitime™ Room\", index: 1.67,price:0, enabled: true },\n {id: \"1varilux_digitime_room_f-360\", label: \"Varilux® Digitime™ Room f-360°\", index: 1.5,price:0, enabled: true },\n {id: \"2varilux_digitime_room_f-360\", label: \"Varilux® Digitime™ Room f-360°\", index: 1.59,price:0, enabled: true },\n {id: \"3varilux_digitime_room_f-360\", label: \"Varilux® Digitime™ Room f-360°\", index: 1.6,price:0, enabled: true },\n {id: \"4varilux_digitime_room_f-360\", label: \"Varilux® Digitime™ Room f-360°\", index: 1.67,price:0, enabled: true },\n {id: \"1varilux_digitime_room_plus\", label: \"Varilux® Digitime™ Room Plus\", index: 1.5,price:0, enabled: true },\n {id: \"2varilux_digitime_room_plus\", label: \"Varilux® Digitime™ Room Plus\", index: 1.59,price:0, enabled: true },\n {id: \"3varilux_digitime_room_plus\", label: \"Varilux® Digitime™ Room Plus\", index: 1.6,price:0, enabled: true },\n {id: \"4varilux_digitime_room_plus\", label: \"Varilux® Digitime™ Room Plus\", index: 1.67,price:0, enabled: true },\n ],\n smallTitle: 'questionnaires_q_recom_short_desc_var_digi',\n description: 'questionnaires_q_recom_long_desc_var_digi',\n benefits: [\n {\n icon: \"relax-screen\",\n label: \"summary_bene1\",\n type: 1,\n },\n ]\n },\n \"varilux_comfort_max\":{\n id: 'varilux_comfort_max',\n label: 'Varilux® Comfort Max',\n enabled: true,\n lensDesign: LensCategoryType.PROGRESSIVE,\n downgrade: [ `varilux_comfort_max`, `varilux_liberty_30`, `spherical_essilor`],\n subProducts: [\n {id: \"1varilux_comfort_max\", label: \"Varilux® Comfort Max\", index: 1.5,price:0, enabled: true },\n {id: \"2varilux_comfort_max\", label: \"Varilux® Comfort Max\", index: 1.59,price:0, enabled: true },\n {id: \"3varilux_comfort_max\", label: \"Varilux® Comfort Max\", index: 1.6,price:0, enabled: true },\n {id: \"4varilux_comfort_max\", label: \"Varilux® Comfort Max\", index: 1.67,price:0, enabled: true },\n {id: \"5varilux_comfort_max\", label: \"Varilux® Comfort Max\", index: 1.74,price:0, enabled: true },\n {id: \"1varilux_comfort_max_f-360\", label: \"Varilux® Comfort Max f-360°\", index: 1.5,price:0, enabled: true },\n {id: \"2varilux_comfort_max_f-360\", label: \"Varilux® Comfort Max f-360°\", index: 1.59,price:0, enabled: true },\n {id: \"3varilux_comfort_max_f-360\", label: \"Varilux® Comfort Max f-360°\", index: 1.6,price:0, enabled: true },\n {id: \"4varilux_comfort_max_f-360\", label: \"Varilux® Comfort Max f-360°\", index: 1.67,price:0, enabled: true },\n {id: \"5varilux_comfort_max_f-360\", label: \"Varilux® Comfort Max f-360°\", index: 1.74,price:0, enabled: true },\n {id: \"1varilux_comfort_max_short\", label: \"Varilux® Comfort Max short\", index: 1.5,price:0, enabled: true },\n {id: \"2varilux_comfort_max_short\", label: \"Varilux® Comfort Max short\", index: 1.59,price:0, enabled: true },\n {id: \"3varilux_comfort_max_short\", label: \"Varilux® Comfort Max short\", index: 1.6,price:0, enabled: true },\n {id: \"4varilux_comfort_max_short\", label: \"Varilux® Comfort Max short\", index: 1.67,price:0, enabled: true },\n {id: \"5varilux_comfort_max_short\", label: \"Varilux® Comfort Max short\", index: 1.74,price:0, enabled: true },\n ],\n smallTitle: '',\n description: \"\",\n benefits: [\n {\n icon: \"seamless\",\n label: \"pair_1_tab_del_p1__seamless_vision_\",\n type: 1,\n },\n {\n icon: \"sharp-vision-icon\",\n label: \"pair_1_tab_del_p1__instant_sharp\",\n type: 1\n },\n ]\n },\n \"varilux_comfort_30\":{\n id: 'varilux_comfort_30',\n label: 'Varilux® Comfort 3.0',\n enabled: true,\n lensDesign: LensCategoryType.PROGRESSIVE,\n downgrade: [`varilux_comfort_30`, `varilux_liberty_30`, `spherical_essilor`],\n subProducts: [\n {id: \"1varilux_comfort_30\", label: \"Varilux® Comfort 3.0\", index: 1.5,price:0, enabled: true },\n {id: \"2varilux_comfort_30\", label: \"Varilux® Comfort 3.0\", index: 1.59,price:0, enabled: true },\n {id: \"3varilux_comfort_30\", label: \"Varilux® Comfort 3.0\", index: 1.6,price:0, enabled: true },\n {id: \"4varilux_comfort_30\", label: \"Varilux® Comfort 3.0\", index: 1.67,price:0, enabled: true },\n {id: \"1varilux_comfort_30_f-360\", label: \"Varilux® Comfort 3.0 f-360°\", index: 1.5,price:0, enabled: true },\n {id: \"2varilux_comfort_30_f-360\", label: \"Varilux® Comfort 3.0 f-360°\", index: 1.59,price:0, enabled: true },\n {id: \"3varilux_comfort_30_f-360\", label: \"Varilux® Comfort 3.0 f-360°\", index: 1.6,price:0, enabled: true },\n {id: \"4varilux_comfort_30_f-360\", label: \"Varilux® Comfort 3.0 f-360°\", index: 1.67,price:0, enabled: true },\n {id: \"1varilux_comfort_30_short\", label: \"Varilux® Comfort 3.0 short\", index: 1.5,price:0, enabled: true },\n {id: \"2varilux_comfort_30_short\", label: \"Varilux® Comfort 3.0 short\", index: 1.59,price:0, enabled: true },\n {id: \"3varilux_comfort_30_short\", label: \"Varilux® Comfort 3.0 short\", index: 1.6,price:0, enabled: true },\n {id: \"4varilux_comfort_30_short\", label: \"Varilux® Comfort 3.0 short\", index: 1.67,price:0, enabled: true },\n ],\n smallTitle: '',\n description: \"\",\n benefits: [\n {\n icon: \"seamless\",\n label: \"pair_1_tab_del_p1__seamless_vision_\",\n type: 1,\n },\n {\n icon: \"sharp-vision-icon\",\n label: \"pair_1_tab_del_p1__instant_sharp\",\n type: 1\n },\n ]\n },\n \"varilux_road_pilot_ii\":{\n id: 'varilux_road_pilot_ii',\n label: 'Varilux Road Pilot® II',\n enabled: true,\n lensDesign: LensCategoryType.PROGRESSIVE,\n downgrade: [`varilux_road_pilot_ii`, `essidrive`, ``],\n subProducts: [\n {id: \"varilux_road_pilot_ii\", label: \"Varilux Road Pilot® II\", index: 1.5,price:0, enabled: true },\n {id: \"varilux_road_pilot_ii\", label: \"Varilux Road Pilot® II\", index: 1.6,price:0, enabled: true },\n {id: \"varilux_road_pilot_ii\", label: \"Varilux Road Pilot® II\", index: 1.67,price:0, enabled: true },\n ],\n smallTitle: 'questionnaires_q_recom_short_desc_var_rpii',\n description: \"questionnaires_q_recom_long_desc_var_rpii\",\n benefits: [\n {\n icon: \"adapt-quickly\",\n label: \"summary_bene2\",\n type: 1,\n },\n {\n icon: \"optimize-driving\",\n label: \"summary_bene3\",\n type: 1\n },\n ]\n },\n \"kids_standard_design\":{\n id: 'kids_standard_design',\n label: 'Standard Design Kids',\n enabled: true,\n lensDesign: LensCategoryType.PROGRESSIVE_SV_LENS,\n subProducts: [\n {id: \"1standard_design_kids\" ,label: \"Standard Design Kids\" ,index:1.5 ,price: 20, enabled: true },\n {id: \"2standard_design_kids\" ,label: \"Standard Design Kids\" ,index:1.59 ,price: 20, enabled: true },\n {id: \"3standard_design_kids\" ,label: \"Standard Design Kids\" ,index:1.6 ,price: 20, enabled: true },\n ],\n isKids: true,\n downgrade: [],\n smallTitle: '',\n description: \"\"\n },\n \"spherical_essilor\":{\n id: 'spherical_essilor',\n label: 'Spherical Essilor',\n lensDesign: LensCategoryType.PROGRESSIVE_SV_LENS,\n enabled: true,\n subProducts: [\n {id: \"1spherical_essilor\" ,label: \"Spherical Essilor\" ,index:1.5 ,price: 0, enabled: true },\n {id: \"2spherical_essilor\" ,label: \"Spherical Essilor\" ,index:1.59 ,price: 0, enabled: true },\n {id: \"3spherical_essilor\" ,label: \"Spherical Essilor\" ,index:1.6 ,price: 0, enabled: true },\n {id: \"4spherical_essilor\" ,label: \"Spherical Essilor\" ,index:1.67 ,price: 0, enabled: true },\n ],\n downgrade: [],\n smallTitle: '',\n description: \"\"\n },\n \"aspherical_essilor\":{\n id: 'aspherical_essilor',\n label: 'Aspherical Essilor',\n lensDesign: LensCategoryType.PROGRESSIVE_SV_LENS,\n enabled: true,\n subProducts: [\n {id: \"1aspherical_essilor\" ,label: \"Aspherical Essilor\" ,index:1.5 ,price: 0, enabled: true },\n {id: \"2aspherical_essilor\" ,label: \"Aspherical Essilor\" ,index:1.59 ,price: 0, enabled: true },\n {id: \"3aspherical_essilor\" ,label: \"Aspherical Essilor\" ,index:1.6 ,price: 0, enabled: true },\n {id: \"4aspherical_essilor\" ,label: \"Aspherical Essilor\" ,index:1.67 ,price: 0, enabled: true },\n {id: \"5aspherical_essilor\" ,label: \"Aspherical Essilor\" ,index:1.74 ,price: 0, enabled: true },\n ],\n downgrade: [],\n smallTitle: '',\n description: \"\"\n },\n \"eyezen_start\":{\n id: 'eyezen_start',\n label: 'Eyezen® Start',\n lensDesign: LensCategoryType.SINGLE_VISION,\n enabled: true,\n subProducts: [\n {id: \"1eyezen_start\", label: \"Eyezen® Start\", index: 1.5,price:0, enabled: true },\n {id: \"2eyezen_start\", label: \"Eyezen® Start\", index: 1.59,price:0, enabled: true },\n {id: \"3eyezen_start\", label: \"Eyezen® Start\", index: 1.6,price:0, enabled: true },\n {id: \"4eyezen_start\", label: \"Eyezen® Start\", index: 1.67,price:0, enabled: true },\n {id: \"5eyezen_start\", label: \"Eyezen® Start\", index: 1.74,price:0, enabled: true },\n {id: \"1eyezen_start_f-360\", label: \"Eyezen® Start f-360°\", index: 1.5,price:0, enabled: true },\n {id: \"2eyezen_start_f-360\", label: \"Eyezen® Start f-360°\", index: 1.59,price:0, enabled: true },\n {id: \"3eyezen_start_f-360\", label: \"Eyezen® Start f-360°\", index: 1.6,price:0, enabled: true },\n {id: \"4eyezen_start_f-360\", label: \"Eyezen® Start f-360°\", index: 1.67,price:0, enabled: true },\n {id: \"5eyezen_start_f-360\", label: \"Eyezen® Start f-360°\", index: 1.74,price:0, enabled: true },\n ],\n downgrade: ['eyezen_start' , 'eyezen_boost', 'spherical_essilor'],\n smallTitle: 'questionnaires_q_recom_short_desc_eyes_start',\n description: \"questionnaires_q_recom_long_desc_eyes_start\",\n benefits: [\n {\n icon: \"sharp-vision-icon\",\n label: \"summary_bene5\",\n type: 1,\n },\n {\n icon: \"acuity-near-vision\",\n label: \"pair_1_tab_del_p1_better_acuity_in_near_vision\",\n type: 1,\n },\n {\n icon: \"relax-screen\",\n label: \"summary_bene4\",\n type: 1,\n },\n ]\n },\n \"eyezen_boost\":{\n id: 'eyezen_boost',\n label: 'Eyezen® Boost',\n enabled: true,\n lensDesign: LensCategoryType.SINGLE_VISION,\n subProducts: [\n {id: \"1eyezen_boost_04\", label: \"Eyezen® Boost 0.4\", index: 1.5,price:0, enabled: true },\n {id: \"2eyezen_boost_04\", label: \"Eyezen® Boost 0.4\", index: 1.59,price:0, enabled: true },\n {id: \"3eyezen_boost_04\", label: \"Eyezen® Boost 0.4\", index: 1.6,price:0, enabled: true },\n {id: \"4eyezen_boost_04\", label: \"Eyezen® Boost 0.4\", index: 1.67,price:0, enabled: true },\n {id: \"5eyezen_boost_04\", label: \"Eyezen® Boost 0.4\", index: 1.74,price:0, enabled: true },\n {id: \"1eyezen_boost_04_f-360\", label: \"Eyezen® Boost 0.4 f-360°\", index: 1.5,price:0, enabled: true },\n {id: \"2eyezen_boost_04_f-360\", label: \"Eyezen® Boost 0.4 f-360°\", index: 1.59,price:0, enabled: true },\n {id: \"3eyezen_boost_04_f-360\", label: \"Eyezen® Boost 0.4 f-360°\", index: 1.6,price:0, enabled: true },\n {id: \"4eyezen_boost_04_f-360\", label: \"Eyezen® Boost 0.4 f-360°\", index: 1.67,price:0, enabled: true },\n {id: \"5eyezen_boost_04_f-360\", label: \"Eyezen® Boost 0.4 f-360°\", index: 1.74,price:0, enabled: true },\n {id: \"1eyezen_boost_06\", label: \"Eyezen® Boost 0.6\", index: 1.5,price:0, enabled: true },\n {id: \"2eyezen_boost_06\", label: \"Eyezen® Boost 0.6\", index: 1.59,price:0, enabled: true },\n {id: \"3eyezen_boost_06\", label: \"Eyezen® Boost 0.6\", index: 1.6,price:0, enabled: true },\n {id: \"4eyezen_boost_06\", label: \"Eyezen® Boost 0.6\", index: 1.67,price:0, enabled: true },\n {id: \"5eyezen_boost_06\", label: \"Eyezen® Boost 0.6\", index: 1.74,price:0, enabled: true },\n {id: \"1eyezen_boost_06_f-360\", label: \"Eyezen® Boost 0.6 f-360°\", index: 1.5,price:0, enabled: true },\n {id: \"2eyezen_boost_06_f-360\", label: \"Eyezen® Boost 0.6 f-360°\", index: 1.59,price:0, enabled: true },\n {id: \"3eyezen_boost_06_f-360\", label: \"Eyezen® Boost 0.6 f-360°\", index: 1.6,price:0, enabled: true },\n {id: \"4eyezen_boost_06_f-360\", label: \"Eyezen® Boost 0.6 f-360°\", index: 1.67,price:0, enabled: true },\n {id: \"5eyezen_boost_06_f-360\", label: \"Eyezen® Boost 0.6 f-360°\", index: 1.74,price:0, enabled: true },\n {id: \"1eyezen_boost_085\", label: \"Eyezen® Boost 0.85\", index: 1.5,price:0, enabled: true },\n {id: \"2eyezen_boost_085\", label: \"Eyezen® Boost 0.85\", index: 1.59,price:0, enabled: true },\n {id: \"3eyezen_boost_085\", label: \"Eyezen® Boost 0.85\", index: 1.6,price:0, enabled: true },\n {id: \"4eyezen_boost_085\", label: \"Eyezen® Boost 0.85\", index: 1.67,price:0, enabled: true },\n {id: \"5eyezen_boost_085\", label: \"Eyezen® Boost 0.85\", index: 1.74,price:0, enabled: true },\n {id: \"1eyezen_boost_085_f-360\", label: \"Eyezen® Boost 0.85 f-360°\", index: 1.5,price:0, enabled: true },\n {id: \"2eyezen_boost_085_f-360\", label: \"Eyezen® Boost 0.85 f-360°\", index: 1.59,price:0, enabled: true },\n {id: \"3eyezen_boost_085_f-360\", label: \"Eyezen® Boost 0.85 f-360°\", index: 1.6,price:0, enabled: true },\n {id: \"4eyezen_boost_085_f-360\", label: \"Eyezen® Boost 0.85 f-360°\", index: 1.67,price:0, enabled: true },\n {id: \"5eyezen_boost_085_f-360\", label: \"Eyezen® Boost 0.85 f-360°\", index: 1.74,price:0, enabled: true },\n {id: \"1eyezen_boost_11\", label: \"Eyezen® Boost 1.1\", index: 1.5,price:0, enabled: true },\n {id: \"2eyezen_boost_11\", label: \"Eyezen® Boost 1.1\", index: 1.59,price:0, enabled: true },\n {id: \"3eyezen_boost_11\", label: \"Eyezen® Boost 1.1\", index: 1.6,price:0, enabled: true },\n {id: \"4eyezen_boost_11\", label: \"Eyezen® Boost 1.1\", index: 1.67,price:0, enabled: true },\n {id: \"5eyezen_boost_11\", label: \"Eyezen® Boost 1.1\", index: 1.74,price:0, enabled: true },\n {id: \"1eyezen_boost_11_f-360\", label: \"Eyezen® Boost 1.1 f-360°\", index: 1.5,price:0, enabled: true },\n {id: \"2eyezen_boost_11_f-360\", label: \"Eyezen® Boost 1.1 f-360°\", index: 1.59,price:0, enabled: true },\n {id: \"3eyezen_boost_11_f-360\", label: \"Eyezen® Boost 1.1 f-360°\", index: 1.6,price:0, enabled: true },\n {id: \"4eyezen_boost_11_f-360\", label: \"Eyezen® Boost 1.1 f-360°\", index: 1.67,price:0, enabled: true },\n {id: \"5eyezen_boost_11_f-360\", label: \"Eyezen® Boost 1.1 f-360°\", index: 1.74,price:0, enabled: true }, \n ],\n downgrade: ['eyezen_boost' , 'eyezen_start', 'spherical_essilor'],\n smallTitle: 'questionnaires_q_recom_short_desc_eyes_start',\n description: \"questionnaires_q_recom_long_desc_eyes_boost\",\n benefits: [\n {\n icon: \"sharp-vision-icon\",\n label: \"summary_bene5\",\n type: 1,\n },\n {\n icon: \"acuity-near-vision\",\n label: \"pair_1_tab_del_p1_better_acuity_in_near_vision\",\n type: 1,\n },\n {\n icon: \"relax-screen\",\n label: \"summary_bene4\",\n type: 1,\n },\n ]\n },\n \"eyezen_kids\":{\n id: 'eyezen_kids',\n label: 'Eyezen® Kids',\n subProducts: [\n {id: \"1eyezen_kids\" ,label: \"Eyezen® Kids\" ,index:1.5 ,price: 200, enabled: true},\n {id: \"1eyezen_kids\" ,label: \"Eyezen® Kids\" ,index:1.59 ,price: 200, enabled: true},\n ],\n isKids: true,\n enabled: true,\n downgrade: [\"eyezen_kids\",\"kids_standard_design\",\"\"],\n smallTitle: \"questionnaires_q_recomm_short_desc_eye_kid\",\n description: 'questionnaires_q_recomm_long_desc_eye_kid',\n kidsPrescriptionRange: {\n min: -0.50,\n max: 20\n },\n lensDesign: LensCategoryType.SINGLE_VISION,\n benefits: [\n {\n icon: \"sharp-vision-icon\",\n label: \"summary_bene5\",\n type: 1,\n },\n {\n icon: \"acuity-near-vision\",\n label: \"pair_1_tab_del_p1_better_acuity_in_near_vision\",\n type: 1,\n },\n {\n icon: \"relax-screen\",\n label: \"summary_bene4\",\n type: 1,\n },\n ]\n },\n \"essidrive\":{\n id: 'essidrive',\n label: 'Essidrive',\n enabled: true,\n downgrade: [],\n lensDesign: LensCategoryType.SINGLE_VISION,\n subProducts: [\n {id: \"1essidrive\" ,label: \"Essidrive\" ,index:1.5 ,price: 0, enabled: true},\n {id: \"2essidrive\" ,label: \"Essidrive\" ,index:1.6 ,price: 0, enabled: true},\n {id: \"3essidrive\" ,label: \"Essidrive\" ,index:1.67 ,price: 0, enabled: true},\n {id: \"1essidrive_f-360\" ,label: \"Essidrive f-360\" ,index:1.5 ,price: 0, enabled: true},\n {id: \"2essidrive_f-360\" ,label: \"Essidrive f-360\" ,index:1.6 ,price: 0, enabled: true},\n {id: \"3essidrive_f-360\" ,label: \"Essidrive f-360\" ,index:1.67 ,price: 0, enabled: true},\n\n ],\n smallTitle: '',\n description: \"\",\n benefits: [\n {\n icon: \"optimize-driving\",\n label: \"summary_bene3\",\n type: 1,\n },\n {\n icon: \"sharp-vision-icon\",\n label: \"summary_bene5\",\n type: 1,\n },\n ]\n },\n \"stellest\":{\n id: 'stellest',\n label: 'Stellest',\n lensDesign: LensCategoryType.MYOPIA,\n subProducts: [\n {id: \"1stellest\" ,label: \"Stellest\" ,index:1.5 ,price: 200, enabled: true},\n {id: \"2stellest\" ,label: \"Stellest\" ,index:1.59 ,price: 200, enabled: true},\n ],\n isKids: true,\n enabled: true,\n downgrade: ['stellest','eyezen_kids','kids_standard_design'],\n smallTitle: 'questionnaires_q_recomm_short_desc_stell',\n description: 'questionnaires_q_recomm_long_desc_stell',\n kidsPrescriptionRange: {\n min: -20,\n max: -0.75\n },\n benefits: [\n {\n icon: \"control\",\n label: \"summary_bene6\",\n type: 1,\n },\n {\n icon: \"adapt-quickly\",\n label: \"summary_bene7\",\n type: 1,\n },\n ]\n },\n \"xperio_react\":{\n id: 'xperio_react',\n label: 'Xperio React',\n price: 0,\n enabled: true,\n smallTitle: '',\n description: \"\",\n benefits: [\n {\n icon: \"uv-protect\",\n label: \"pair_1_tab_del_p1__harmful\",\n type: 1,\n },\n {\n icon: \"env-light\",\n label: \"pair_1_tab_del_2_p1_reacts_to_environmental_light\",\n type: 1,\n },\n {\n icon: \"colors\",\n label: \"pair_1_tab_del_p1__available_in_a_range_of_colours\",\n type: 1,\n },\n {\n icon: \"outdoor-sun\",\n label: \"pair_1_tab_del_p1_outdoor_sun_glare_reduc\",\n type: 2,\n },\n ]\n },\n \"xperio_mirrors\":{\n id: 'xperio_mirrors',\n label: 'Xperio Mirrors',\n price: 0,\n enabled: true,\n smallTitle: '',\n description: \"\",\n colors: [\n {\n id: \"lensMirrorBronzeShadow\",\n label: \"lens_propo_colors_bronze_shadow\",\n value: \"#33070e\"\n },\n {\n id: \"lensMirrorBronze\",\n label: \"lens_propo_colors_bronze\",\n value: \"#c66a29\"\n },\n {\n id: \"lensMirrorCandy\",\n label: \"lens_propo_colors_candy\",\n value: \"#9d2b49\"\n },\n {\n id: \"lensMirrorForestGreen\",\n label: \"lens_propo_colors_forest_green\",\n value: \"#39721a\"\n },\n {\n id: \"lensMirrorGoldPink\",\n label: \"lens_propo_colors_gold_pink\",\n value: \"#924a35\"\n },\n {\n id: \"lensMirrorGreenShadow\",\n label: \"lens_propo_colors_green_shadow\",\n value: \"#1b160f\"\n },\n {\n id: \"lensMirrorKaki\",\n label: \"lens_propo_colors_kaki\",\n value: \"#59621f\"\n },\n {\n id: \"lensMirrorMauveSilver\",\n label: \"lens_propo_colors_mauve_silver\",\n value: \"#ada5d2\"\n },\n {\n id: \"lensMirrorNewBlue\",\n label: \"lens_propo_colors_new_blue\",\n value: \"#3c8ea9\"\n },\n {\n id: \"lensMirrorNewSilver\",\n label: \"lens_propo_colors_new_silver\",\n value: \"#778fa3\"\n },\n {\n id: \"lensMirrorOceanBlue\",\n label: \"lens_propo_colors_ocean_blue\",\n value: \"#243459\"\n },\n {\n id: \"lensMirrorOrange\",\n label: \"lens_propo_colors_orange\",\n value: \"#7b1d16\"\n },\n {\n id: \"lensMirrorParma\",\n label: \"lens_propo_colors_parma\",\n value: \"#b9adc2\"\n },\n {\n id: \"lensMirrorPinkSilver\",\n label: \"lens_propo_colors_pink_silver\",\n value: \"#c1b4c0\"\n },\n {\n id: \"lensMirrorSilverShadow\",\n label: \"lens_propo_colors_silver_shadow\",\n value: \"#4e4340\"\n },\n {\n id: \"lensMirrorSilver\",\n label: \"lens_propo_colors_silver\",\n value: \"#8b8d92\"\n },\n {\n id: \"lensMirrorSkyBlueSilver\",\n label: \"lens_propo_colors_blue_silver\",\n value: \"#9fb6cf\"\n },\n {\n id: \"lensMirrorViolet\",\n label: \"lens_propo_colors_violet\",\n value: \"#21092f\"\n }\n ],\n benefits: [\n {\n icon: \"uv-protect\",\n label: \"pair_1_tab_del_p1__harmful\",\n type: 1,\n },\n {\n icon: \"colors\",\n label: \"pair_1_tab_del_p1__available_in_a_range_of_colours\",\n type: 1,\n },\n {\n icon: \"outdoor-sun\",\n label: \"pair_1_tab_del_p1_outdoor_sun_glare_reduc\",\n type: 1,\n },\n ]\n },\n \"xperio_polarised\":{\n id: 'xperio_polarised',\n label: 'Xperio Polarised',\n price: 0,\n enabled: true,\n complementaryEquipments: [ComplementaryEquipmentType.SUN, ComplementaryEquipmentType.DRIVING],\n colors: [\n {\n id: \"lensPolarizedAmber\",\n label: \"lens_propo_colors_amber\",\n value: \"#A52A2A\"\n },\n {\n id: \"lensPolarizedBlueInk\",\n label: \"lens_propo_colors_blue_ink\",\n value: \"#395158\"\n },\n {\n id: \"lensPolarizedBluePurple\",\n label: \"lens_propo_colors_blue_purple\",\n value: \"#6437b8\"\n },\n {\n id: \"lensPolarizedBlueSky\",\n label: \"lens_propo_colors_blue_sky\",\n value: \"#87ceeb\"\n },\n {\n id: \"lensPolarizedBrown\",\n label: \"lens_propo_colors_brown\",\n value: \"#9C703B\"\n },\n {\n id: \"lensPolarizedGrey\",\n label: \"lens_propo_colors_grey\",\n value: \"#808080\"\n },\n {\n id: \"lensPolarizedGreyGreen\",\n label: \"lens_propo_colors_grey_green\",\n value: \"#656255\"\n },\n {\n id: \"lensPolarizedHerbal\",\n label: \"lens_propo_colors_herbal\",\n value: \"#8a8849\"\n },\n {\n id: \"lensPolarizedViolet\",\n label: \"lens_propo_colors_violet\",\n value: \"#6b2d7a\"\n }\n ],\n smallTitle: 'questionnaires_q_recom_short_desc_xpe_pol',\n description: \"questionnaires_q_recom_long_desc_xpe_pol\",\n benefits: [\n {\n icon: \"uv-protect\",\n label: \"pair_1_tab_del_p1__harmful\",\n type: 1,\n },\n {\n icon: \"colors\",\n label: \"pair_1_tab_del_p1__available_in_a_range_of_colours\",\n type: 1,\n },\n {\n icon: \"outdoor-sun\",\n label: \"pair_1_tab_del_p1_outdoor_sun_glare_reduc\",\n type: 1,\n },\n ]\n },\n \"xperio_polarised_gradient\":{\n id: 'xperio_polarised_gradient',\n label: 'Xperio Polarised',\n price: 0,\n enabled: true,\n complementaryEquipments: [ComplementaryEquipmentType.SUN, ComplementaryEquipmentType.DRIVING],\n colors: [\n {\n id: \"lensPolarizedAmber\",\n label: \"lens_propo_colors_amber\",\n value: \"#A52A2A\"\n },\n {\n id: \"lensPolarizedBlueInk\",\n label: \"lens_propo_colors_blue_ink\",\n value: \"#395158\"\n },\n {\n id: \"lensPolarizedBluePurple\",\n label: \"lens_propo_colors_blue_purple\",\n value: \"#6437b8\"\n },\n {\n id: \"lensPolarizedBlueSky\",\n label: \"lens_propo_colors_blue_sky\",\n value: \"#87ceeb\"\n },\n {\n id: \"lensPolarizedBrown\",\n label: \"lens_propo_colors_brown\",\n value: \"#9C703B\"\n },\n {\n id: \"lensPolarizedGrey\",\n label: \"lens_propo_colors_grey\",\n value: \"#808080\"\n },\n {\n id: \"lensPolarizedGreyGreen\",\n label: \"lens_propo_colors_grey_green\",\n value: \"#656255\"\n },\n {\n id: \"lensPolarizedHerbal\",\n label: \"lens_propo_colors_herbal\",\n value: \"#8a8849\"\n },\n {\n id: \"lensPolarizedViolet\",\n label: \"lens_propo_colors_violet\",\n value: \"#6b2d7a\"\n }\n ],\n smallTitle: 'questionnaires_q_recom_short_desc_xpe_pol',\n description: \"questionnaires_q_recom_long_desc_xpe_pol\",\n benefits: [\n {\n icon: \"uv-protect\",\n label: \"pair_1_tab_del_p1__harmful\",\n type: 1,\n },\n {\n icon: \"colors\",\n label: \"pair_1_tab_del_p1__available_in_a_range_of_colours\",\n type: 1,\n },\n {\n icon: \"outdoor-sun\",\n label: \"pair_1_tab_del_p1_outdoor_sun_glare_reduc\",\n type: 1,\n },\n ]\n },\n \"xperio_tinted_mirrors\":{\n id: 'xperio_tinted_mirrors',\n label: 'Xperio Tinted Mirrors',\n lensDesign: LensProtectType.TINTED,\n price: 0,\n enabled: true,\n smallTitle: '',\n description: \"\",\n colors: [\n {\n id: \"lensMirrorBronze\",\n label: \"lens_propo_colors_bronze\",\n value: \"#cd7f32\"\n },\n {\n id: \"lensMirrorCandy\",\n label: \"lens_propo_colors_candy\",\n value: \"#f56ef0\"\n },\n {\n id: \"lensMirrorForestGreen\",\n label: \"lens_propo_colors_forest_green\",\n value: \"#4bb852\"\n },\n {\n id: \"lensMirrorGoldPink\",\n label: \"lens_propo_colors_gold_pink\",\n value: \"#b76e79\"\n },\n {\n id: \"lensMirrorGreenShadow\",\n label: \"lens_propo_colors_green_shadow\",\n value: \"#0b420c\"\n },\n {\n id: \"lensMirrorKaki\",\n label: \"lens_propo_colors_kaki\",\n value: \"#c3b091\"\n },\n {\n id: \"lensMirrorOceanBlue\",\n label: \"lens_propo_colors_ocean_blue\",\n value: \"#020257\"\n },\n {\n id: \"lensMirrorOrange\",\n label: \"lens_propo_colors_orange\",\n value: \"#ff5349\"\n },\n {\n id: \"lensMirrorParma\",\n label: \"lens_propo_colors_parma\",\n value: \"#d3d3d3\"\n },\n {\n id: \"lensMirrorPinkSilver\",\n label: \"lens_propo_colors_pink_silver\",\n value: \"#c4aead\"\n },\n {\n id: \"lensMirrorSilver\",\n label: \"lens_propo_colors_silver\",\n value: \"#C0C0C0\"\n },\n {\n id: \"lensMirrorSilverShadow\",\n label: \"lens_propo_colors_silver_shadow\",\n value: \"#383737\"\n },\n {\n id: \"lensMirrorSkyBlueSilver\",\n label: \"lens_propo_colors_sky_blue_silver\",\n value: \"#a7c5d1\"\n },\n {\n id: \"lensMirrorViolet\",\n label: \"lens_propo_colors_violet\",\n value: \"#270238\"\n },\n \n ],\n benefits: [\n {\n icon: \"uv-protect\",\n label: \"pair_1_tab_del_p1__harmful\",\n type: 1,\n },\n {\n icon: \"colors\",\n label: \"pair_1_tab_del_p1__available_in_a_range_of_colours\",\n type: 1,\n },\n {\n icon: \"outdoor-sun\",\n label: \"pair_1_tab_del_p1_outdoor_sun_glare_reduc\",\n type: 1,\n },\n ]\n },\n \"xperio_polarised_mirrors\":{\n id: 'xperio_polarised_mirrors',\n label: 'Xperio Polarised Mirrors',\n price: 0,\n enabled: true,\n complementaryEquipments: [ComplementaryEquipmentType.SUN, ComplementaryEquipmentType.DRIVING],\n colors: [\n {\n id: \"lensMirrorBronze\",\n label: \"lens_propo_colors_bronze\",\n value: \"#cd7f32\"\n },\n {\n id: \"lensMirrorCandy\",\n label: \"lens_propo_colors_candy\",\n value: \"#f56ef0\"\n },\n {\n id: \"lensMirrorForestGreen\",\n label: \"lens_propo_colors_forest_green\",\n value: \"#4bb852\"\n },\n {\n id: \"lensMirrorGoldPink\",\n label: \"lens_propo_colors_gold_pink\",\n value: \"#b76e79\"\n },\n {\n id: \"lensMirrorGreenShadow\",\n label: \"lens_propo_colors_green_shadow\",\n value: \"#0b420c\"\n },\n {\n id: \"lensMirrorKaki\",\n label: \"lens_propo_colors_kaki\",\n value: \"#c3b091\"\n },\n {\n id: \"lensMirrorOceanBlue\",\n label: \"lens_propo_colors_ocean_blue\",\n value: \"#020257\"\n },\n {\n id: \"lensMirrorOrange\",\n label: \"lens_propo_colors_orange\",\n value: \"#ff5349\"\n },\n {\n id: \"lensMirrorParma\",\n label: \"lens_propo_colors_parma\",\n value: \"#d3d3d3\"\n },\n {\n id: \"lensMirrorPinkSilver\",\n label: \"lens_propo_colors_pink_silver\",\n value: \"#c4aead\"\n },\n {\n id: \"lensMirrorSilver\",\n label: \"lens_propo_colors_silver\",\n value: \"#C0C0C0\"\n },\n {\n id: \"lensMirrorSilverShadow\",\n label: \"lens_propo_colors_silver_shadow\",\n value: \"#383737\"\n },\n {\n id: \"lensMirrorSkyBlueSilver\",\n label: \"lens_propo_colors_sky_blue_silver\",\n value: \"#a7c5d1\"\n },\n {\n id: \"lensMirrorViolet\",\n label: \"lens_propo_colors_violet\",\n value: \"#270238\"\n },\n ],\n smallTitle: 'questionnaires_q_recom_short_desc_xpe_pol',\n description: \"questionnaires_q_recom_long_desc_xpe_pol\",\n benefits: [\n {\n icon: \"uv-protect\",\n label: \"pair_1_tab_del_p1__harmful\",\n type: 1,\n },\n {\n icon: \"colors\",\n label: \"pair_1_tab_del_p1__available_in_a_range_of_colours\",\n type: 1,\n },\n {\n icon: \"outdoor-sun\",\n label: \"pair_1_tab_del_p1_outdoor_sun_glare_reduc\",\n type: 1,\n },\n ]\n },\n \"xperio_tinted\":{\n id: 'xperio_tinted',\n label: 'Xperio Tinted',\n lensDesign: LensProtectType.TINTED,\n price: 0,\n enabled: true,\n smallTitle: '',\n description: \"\",\n\n colors: [\n {\n id: \"lensTintedBlack\",\n label: \"lens_propo_colors_black\",\n value: \"#000000\"\n },\n {\n id: \"lensTintedBlueInk\",\n label: \"lens_propo_colors_blue_ink\",\n value: \"#415c80\"\n },\n {\n id: \"lensTintedBrown\",\n label: \"lens_propo_colors_brown\",\n value: \"#6d5a45\"\n },\n {\n id: \"lensTintedBurgundy\",\n label: \"lens_propo_colors_burgundy\",\n value: \"#89676f\"\n },\n {\n id: \"lensTintedGreyGreen\",\n label: \"lens_propo_colors_grey_green\",\n value: \"#3c5854\"\n },\n {\n id: \"lensTintedGrey\",\n label: \"lens_propo_colors_grey\",\n value: \"#4c5d6e\"\n },\n {\n id: \"lensTintedHerbal\",\n label: \"lens_propo_colors_herbal\",\n value: \"#8e8565\"\n },\n {\n id: \"lensTintedNewBrown\",\n label: \"lens_propo_colors_new_brown\",\n value: \"#806b4d\"\n }, \n ],\n benefits: [\n {\n icon: \"uv-protect\",\n label: \"pair_1_tab_del_p1__harmful\",\n type: 1,\n },\n {\n icon: \"colors\",\n label: \"pair_1_tab_del_p1__available_in_a_range_of_colours\",\n type: 1,\n },\n {\n icon: \"outdoor-sun\",\n label: \"pair_1_tab_del_p1_outdoor_sun_glare_reduc\",\n type: 1,\n },\n ]\n },\n \"eye_protect_system\":{\n id: 'eye_protect_system',\n label: 'Eye Protect System',\n price: 0,\n enabled: true,\n isKids: true,\n lensDesign: LensProtectType.BLUE_CUT,\n complementaryEquipments:[ComplementaryEquipmentType.COMPUTER],\n smallTitle: 'questionnaires_q_recomm_short_desc_eps',\n description: 'questionnaires_q_recomm_long_desc_eps',\n benefits: [\n {\n icon: \"harmful-light\",\n label: \"pair_1_tab_del_p1__harmf\",\n type: 1,\n },\n {\n icon: \"uv-protect\",\n label: \"pair_1_tab_del_p1__harmful\",\n type: 1,\n },\n {\n icon: \"harmful-light\",\n label: \"pair_1_tab_del_2_p1_transparent_lens\",\n type: 1,\n },\n ]\n },\n \"blue_uv_capture\":{\n id: 'blue_uv_capture',\n label: 'Blue UV Filter System',\n price: 0,\n enabled: true,\n smallTitle: '',\n description: \"\",\n benefits: [\n {\n icon: \"harmful-light\",\n label: \"pair_1_tab_del_p1__harmf\",\n type: 1,\n },\n {\n icon: \"uv-protect\",\n label: \"pair_1_tab_del_p1__harmful\",\n type: 1,\n },\n {\n icon: \"harmful-light\",\n label: \"pair_1_tab_del_2_p1_transparent_lens\",\n type: 1,\n },\n ]\n }, \n \"transitions_signature_gen_8\":{\n id: 'transitions_signature_gen_8',\n label: 'Transitions Gen 8',\n lensDesign: LensProtectType.PHOTOCROMIC,\n price: 0,\n enabled: true,\n isKids: true,\n colors: [\n {\n id: \"lensTransitionGreen\",\n label: \"lens_propo_colors_green\",\n value: \"#3F9A49\"\n },\n {\n id: \"lensTransitionGrey\",\n label: \"lens_propo_colors_grey\",\n value: \"#B2B2B6\"\n },\n {\n id: \"lensTransitionAmber\",\n label: \"lens_propo_colors_amber\",\n value: \"#9C703B\"\n },\n {\n id: \"lensTransitionSapphire\",\n label: \"lens_propo_colors_sapphire\",\n value: \"#346297\"\n },\n {\n id: \"lensTransitionEmerald\",\n label: \"lens_propo_colors_emerald\",\n value: \"#046253\"\n },\n {\n id: \"lensTransitionBrown\",\n label: \"lens_propo_colors_brown\",\n value: \"#9E5425\"\n },\n {\n id: \"lensTransitionAmethyst\",\n label: \"lens_propo_colors_amethyst\",\n value: \"#4F3281\"\n }\n ],\n smallTitle: 'questionnaires_q_recom_short_desc_trans_gen_8',\n description: 'questionnaires_q_recom_long_desc_trans_gen_8',\n benefits: [\n {\n icon: \"harmful-light\",\n label: \"pair_1_tab_del_p1__harmf\",\n type: 1,\n },\n {\n icon: \"uv-protect\",\n label: \"pair_1_tab_del_p1__harmful\",\n type: 1,\n },\n {\n icon: \"env-light\",\n label: \"pair_1_tab_del_2_p1_reacts_to_environmental_light\",\n type: 1,\n },\n {\n icon: \"colors\",\n label: \"pair_1_tab_del_p1__available_in_a_range_of_colours\",\n type: 2,\n },\n {\n icon: \"outdoor-sun\",\n label: \"pair_1_tab_del_p1_outdoor_sun_glare_reduc\",\n type: 2,\n },\n ]\n },\n \"transitions_signature_gen_8_iconic\":{\n id: 'transitions_signature_gen_8_iconic',\n label: 'Transitions Signature Gen 8 Iconic',\n lensDesign: LensProtectType.PHOTOCROMIC,\n price: 0,\n enabled: true,\n isKids: true,\n colors: [\n {\n id: \"lensTransitionGreen\",\n label: \"lens_propo_colors_green\",\n value: \"#3F9A49\"\n },\n {\n id: \"lensTransitionGrey\",\n label: \"lens_propo_colors_grey\",\n value: \"#B2B2B6\"\n },\n {\n id: \"lensTransitionAmber\",\n label: \"lens_propo_colors_amber\",\n value: \"#9C703B\"\n },\n {\n id: \"lensTransitionSapphire\",\n label: \"lens_propo_colors_sapphire\",\n value: \"#346297\"\n },\n {\n id: \"lensTransitionEmerald\",\n label: \"lens_propo_colors_emerald\",\n value: \"#046253\"\n },\n {\n id: \"lensTransitionBrown\",\n label: \"lens_propo_colors_brown\",\n value: \"#9E5425\"\n },\n {\n id: \"lensTransitionAmethyst\",\n label: \"lens_propo_colors_amethyst\",\n value: \"#4F3281\"\n }\n ],\n smallTitle: 'questionnaires_q_recom_short_desc_trans_gen_8',\n description: 'questionnaires_q_recom_long_desc_trans_gen_8',\n benefits: [\n {\n icon: \"harmful-light\",\n label: \"pair_1_tab_del_p1__harmf\",\n type: 1,\n },\n {\n icon: \"uv-protect\",\n label: \"pair_1_tab_del_p1__harmful\",\n type: 1,\n },\n {\n icon: \"env-light\",\n label: \"pair_1_tab_del_2_p1_reacts_to_environmental_light\",\n type: 1,\n },\n {\n icon: \"colors\",\n label: \"pair_1_tab_del_p1__available_in_a_range_of_colours\",\n type: 2,\n },\n {\n icon: \"outdoor-sun\",\n label: \"pair_1_tab_del_p1_outdoor_sun_glare_reduc\",\n type: 2,\n },\n ]\n },\n \"transitions_signature_gen_8_style\":{\n id: 'transitions_signature_gen_8_style',\n label: 'Transitions Signature Gen 8 Style',\n lensDesign: LensProtectType.PHOTOCROMIC,\n price: 0,\n enabled: true,\n isKids: true,\n colors: [\n {\n id: \"lensTransitionGreen\",\n label: \"lens_propo_colors_green\",\n value: \"#3F9A49\"\n },\n {\n id: \"lensTransitionGrey\",\n label: \"lens_propo_colors_grey\",\n value: \"#B2B2B6\"\n },\n {\n id: \"lensTransitionAmber\",\n label: \"lens_propo_colors_amber\",\n value: \"#9C703B\"\n },\n {\n id: \"lensTransitionSapphire\",\n label: \"lens_propo_colors_sapphire\",\n value: \"#346297\"\n },\n {\n id: \"lensTransitionEmerald\",\n label: \"lens_propo_colors_emerald\",\n value: \"#046253\"\n },\n {\n id: \"lensTransitionBrown\",\n label: \"lens_propo_colors_brown\",\n value: \"#9E5425\"\n },\n {\n id: \"lensTransitionAmethyst\",\n label: \"lens_propo_colors_amethyst\",\n value: \"#4F3281\"\n }\n ],\n smallTitle: 'questionnaires_q_recom_short_desc_trans_gen_8',\n description: 'questionnaires_q_recom_long_desc_trans_gen_8',\n benefits: [\n {\n icon: \"harmful-light\",\n label: \"pair_1_tab_del_p1__harmf\",\n type: 1,\n },\n {\n icon: \"uv-protect\",\n label: \"pair_1_tab_del_p1__harmful\",\n type: 1,\n },\n {\n icon: \"env-light\",\n label: \"pair_1_tab_del_2_p1_reacts_to_environmental_light\",\n type: 1,\n },\n {\n icon: \"colors\",\n label: \"pair_1_tab_del_p1__available_in_a_range_of_colours\",\n type: 2,\n },\n {\n icon: \"outdoor-sun\",\n label: \"pair_1_tab_del_p1_outdoor_sun_glare_reduc\",\n type: 2,\n },\n ]\n },\n \"transitions_signature_gen_8_classic\":{\n id: 'transitions_signature_gen_8_classic',\n label: 'Transitions Signature Gen 8 Classic',\n lensDesign: LensProtectType.PHOTOCROMIC,\n price: 0,\n enabled: true,\n isKids: true,\n colors: [\n {\n id: \"lensTransitionGreen\",\n label: \"lens_propo_colors_green\",\n value: \"#3F9A49\"\n },\n {\n id: \"lensTransitionGrey\",\n label: \"lens_propo_colors_grey\",\n value: \"#B2B2B6\"\n },\n {\n id: \"lensTransitionAmber\",\n label: \"lens_propo_colors_amber\",\n value: \"#9C703B\"\n },\n {\n id: \"lensTransitionSapphire\",\n label: \"lens_propo_colors_sapphire\",\n value: \"#346297\"\n },\n {\n id: \"lensTransitionEmerald\",\n label: \"lens_propo_colors_emerald\",\n value: \"#046253\"\n },\n {\n id: \"lensTransitionBrown\",\n label: \"lens_propo_colors_brown\",\n value: \"#9E5425\"\n },\n {\n id: \"lensTransitionAmethyst\",\n label: \"lens_propo_colors_amethyst\",\n value: \"#4F3281\"\n }\n ],\n smallTitle: 'questionnaires_q_recom_short_desc_trans_gen_8',\n description: 'questionnaires_q_recom_long_desc_trans_gen_8',\n benefits: [\n {\n icon: \"harmful-light\",\n label: \"pair_1_tab_del_p1__harmf\",\n type: 1,\n },\n {\n icon: \"uv-protect\",\n label: \"pair_1_tab_del_p1__harmful\",\n type: 1,\n },\n {\n icon: \"env-light\",\n label: \"pair_1_tab_del_2_p1_reacts_to_environmental_light\",\n type: 1,\n },\n {\n icon: \"colors\",\n label: \"pair_1_tab_del_p1__available_in_a_range_of_colours\",\n type: 2,\n },\n {\n icon: \"outdoor-sun\",\n label: \"pair_1_tab_del_p1_outdoor_sun_glare_reduc\",\n type: 2,\n },\n ]\n },\n \"transitions_classic\":{\n id: 'transitions_classic',\n label: 'Transitions Classic',\n lensDesign: LensProtectType.PHOTOCROMIC,\n price: 0,\n enabled: true,\n isKids: true,\n colors: [\n {\n id: \"lensTransitionGreen\",\n label: \"lens_propo_colors_green\",\n value: \"#3F9A49\"\n },\n {\n id: \"lensTransitionGrey\",\n label: \"lens_propo_colors_grey\",\n value: \"#B2B2B6\"\n },\n {\n id: \"lensTransitionAmber\",\n label: \"lens_propo_colors_amber\",\n value: \"#9C703B\"\n },\n {\n id: \"lensTransitionSapphire\",\n label: \"lens_propo_colors_sapphire\",\n value: \"#346297\"\n },\n {\n id: \"lensTransitionEmerald\",\n label: \"lens_propo_colors_emerald\",\n value: \"#046253\"\n },\n {\n id: \"lensTransitionBrown\",\n label: \"lens_propo_colors_brown\",\n value: \"#9E5425\"\n },\n {\n id: \"lensTransitionAmethyst\",\n label: \"lens_propo_colors_amethyst\",\n value: \"#4F3281\"\n }\n ],\n smallTitle: 'questionnaires_q_recom_short_desc_trans_gen_8',\n description: 'questionnaires_q_recom_long_desc_trans_gen_8',\n benefits: [\n {\n icon: \"harmful-light\",\n label: \"pair_1_tab_del_p1__harmf\",\n type: 1,\n },\n {\n icon: \"uv-protect\",\n label: \"pair_1_tab_del_p1__harmful\",\n type: 1,\n },\n {\n icon: \"env-light\",\n label: \"pair_1_tab_del_2_p1_reacts_to_environmental_light\",\n type: 1,\n },\n {\n icon: \"colors\",\n label: \"pair_1_tab_del_p1__available_in_a_range_of_colours\",\n type: 2,\n },\n {\n icon: \"outdoor-sun\",\n label: \"pair_1_tab_del_p1_outdoor_sun_glare_reduc\",\n type: 2,\n },\n ]\n },\n \"transitions_xtractive\":{\n id: 'transitions_xtractive',\n label: 'Transitions XTRActive',\n price: 0,\n enabled: true,\n colors: [\n {\n id: \"lensTransitionGreen\",\n label: \"lens_propo_colors_green\",\n value: \"#3F9A49\"\n },\n {\n id: \"lensTransitionGrey\",\n label: \"lens_propo_colors_grey\",\n value: \"#B2B2B6\"\n },\n {\n id: \"lensTransitionAmber\",\n label: \"lens_propo_colors_amber\",\n value: \"#9C703B\"\n },\n {\n id: \"lensTransitionSapphire\",\n label: \"lens_propo_colors_sapphire\",\n value: \"#346297\"\n },\n {\n id: \"lensTransitionEmerald\",\n label: \"lens_propo_colors_emerald\",\n value: \"#046253\"\n },\n {\n id: \"lensTransitionBrown\",\n label: \"lens_propo_colors_brown\",\n value: \"#9E5425\"\n },\n {\n id: \"lensTransitionAmethyst\",\n label: \"lens_propo_colors_amethyst\",\n value: \"#4F3281\"\n }\n ],\n smallTitle: '',\n description: \"\",\n benefits: [\n {\n icon: \"harmful-light\",\n label: \"pair_1_tab_del_p1__harmf\",\n type: 1,\n },\n {\n icon: \"uv-protect\",\n label: \"pair_1_tab_del_p1__harmful\",\n type: 1,\n },\n {\n icon: \"env-light\",\n label: \"pair_1_tab_del_2_p1_reacts_to_environmental_light\",\n type: 1,\n },\n {\n icon: \"colors\",\n label: \"pair_1_tab_del_p1__available_in_a_range_of_colours\",\n type: 2,\n },\n {\n icon: \"outdoor-sun\",\n label: \"pair_1_tab_del_p1_outdoor_sun_glare_reduc\",\n type: 2,\n },\n ]\n },\n \"transitions_xtractive_mirror\":{\n id: 'transitions_xtractive_mirror',\n label: 'Transitions XTRActive Mirror',\n price: 0,\n enabled: true,\n colors: [\n {\n id: \"lensMirrorBronze\",\n label: \"lens_propo_colors_bronze\",\n value: \"#cd7f32\"\n },\n {\n id: \"lensMirrorCandy\",\n label: \"lens_propo_colors_candy\",\n value: \"#f56ef0\"\n },\n {\n id: \"lensMirrorForestGreen\",\n label: \"lens_propo_colors_forest_green\",\n value: \"#4bb852\"\n },\n {\n id: \"lensMirrorGoldPink\",\n label: \"lens_propo_colors_gold_pink\",\n value: \"#b76e79\"\n },\n {\n id: \"lensMirrorGreenShadow\",\n label: \"lens_propo_colors_green_shadow\",\n value: \"#0b420c\"\n },\n {\n id: \"lensMirrorKaki\",\n label: \"lens_propo_colors_kaki\",\n value: \"#c3b091\"\n },\n {\n id: \"lensMirrorOceanBlue\",\n label: \"lens_propo_colors_ocean_blue\",\n value: \"#020257\"\n },\n {\n id: \"lensMirrorOrange\",\n label: \"lens_propo_colors_orange\",\n value: \"#ff5349\"\n },\n {\n id: \"lensMirrorParma\",\n label: \"lens_propo_colors_parma\",\n value: \"#d3d3d3\"\n },\n {\n id: \"lensMirrorPinkSilver\",\n label: \"lens_propo_colors_pink_silver\",\n value: \"#c4aead\"\n },\n {\n id: \"lensMirrorSilver\",\n label: \"lens_propo_colors_silver\",\n value: \"#C0C0C0\"\n },\n {\n id: \"lensMirrorSilverShadow\",\n label: \"lens_propo_colors_silver_shadow\",\n value: \"#383737\"\n },\n {\n id: \"lensMirrorSkyBlueSilver\",\n label: \"lens_propo_colors_sky_blue_silver\",\n value: \"#a7c5d1\"\n },\n {\n id: \"lensMirrorViolet\",\n label: \"lens_propo_colors_violet\",\n value: \"#270238\"\n },\n ],\n smallTitle: '',\n description: \"\",\n benefits: [\n {\n icon: \"harmful-light\",\n label: \"pair_1_tab_del_p1__harmf\",\n type: 1,\n },\n {\n icon: \"uv-protect\",\n label: \"pair_1_tab_del_p1__harmful\",\n type: 1,\n },\n {\n icon: \"env-light\",\n label: \"pair_1_tab_del_2_p1_reacts_to_environmental_light\",\n type: 1,\n },\n {\n icon: \"colors\",\n label: \"pair_1_tab_del_p1__available_in_a_range_of_colours\",\n type: 2,\n },\n {\n icon: \"outdoor-sun\",\n label: \"pair_1_tab_del_p1_outdoor_sun_glare_reduc\",\n type: 2,\n },\n ]\n },\n \"transitions_style_mirrors\":{\n id: 'transitions_style_mirrors',\n label: 'Transitions Style Mirrors',\n price: 0,\n enabled: true,\n colors: [\n {\n id: \"lensMirrorBronze\",\n label: \"lens_propo_colors_bronze\",\n value: \"#cd7f32\"\n },\n {\n id: \"lensMirrorCandy\",\n label: \"lens_propo_colors_candy\",\n value: \"#f56ef0\"\n },\n {\n id: \"lensMirrorForestGreen\",\n label: \"lens_propo_colors_forest_green\",\n value: \"#4bb852\"\n },\n {\n id: \"lensMirrorGoldPink\",\n label: \"lens_propo_colors_gold_pink\",\n value: \"#b76e79\"\n },\n {\n id: \"lensMirrorGreenShadow\",\n label: \"lens_propo_colors_green_shadow\",\n value: \"#0b420c\"\n },\n {\n id: \"lensMirrorKaki\",\n label: \"lens_propo_colors_kaki\",\n value: \"#c3b091\"\n },\n {\n id: \"lensMirrorOceanBlue\",\n label: \"lens_propo_colors_ocean_blue\",\n value: \"#020257\"\n },\n {\n id: \"lensMirrorOrange\",\n label: \"lens_propo_colors_orange\",\n value: \"#ff5349\"\n },\n {\n id: \"lensMirrorParma\",\n label: \"lens_propo_colors_parma\",\n value: \"#d3d3d3\"\n },\n {\n id: \"lensMirrorPinkSilver\",\n label: \"lens_propo_colors_pink_silver\",\n value: \"#c4aead\"\n },\n {\n id: \"lensMirrorSilver\",\n label: \"lens_propo_colors_silver\",\n value: \"#C0C0C0\"\n },\n {\n id: \"lensMirrorSilverShadow\",\n label: \"lens_propo_colors_silver_shadow\",\n value: \"#383737\"\n },\n {\n id: \"lensMirrorSkyBlueSilver\",\n label: \"lens_propo_colors_sky_blue_silver\",\n value: \"#a7c5d1\"\n },\n {\n id: \"lensMirrorViolet\",\n label: \"lens_propo_colors_violet\",\n value: \"#270238\"\n },\n \n ],\n smallTitle: '',\n description: \"\",\n benefits: [\n {\n icon: \"harmful-light\",\n label: \"pair_1_tab_del_p1__harmf\",\n type: 1,\n },\n {\n icon: \"uv-protect\",\n label: \"pair_1_tab_del_p1__harmful\",\n type: 1,\n },\n {\n icon: \"env-light\",\n label: \"pair_1_tab_del_2_p1_reacts_to_environmental_light\",\n type: 1,\n },\n {\n icon: \"colors\",\n label: \"pair_1_tab_del_p1__available_in_a_range_of_colours\",\n type: 2,\n },\n {\n icon: \"outdoor-sun\",\n label: \"pair_1_tab_del_p1_outdoor_sun_glare_reduc\",\n type: 2,\n },\n ]\n },\n \"crizal_easy\":{\n id: 'crizal_easy',\n label: 'Crizal Easy',\n smallTitle: 'questionnaires_q_recomm_short_desc_criz_eas',\n description: 'questionnaires_q_recomm_long_desc_criz_eas',\n enabled: true,\n price:0,\n isKids: true,\n benefits: [\n {\n icon: \"optimal-clarity\",\n label: \"pair_1_tab_del_p1__optimal_clarity\",\n type: 1,\n },\n {\n icon: \"scratch-icon\",\n label: \"pair_1_tab_del_p1__scratch_resistant\",\n type: 1,\n },\n {\n icon: \"smudge-res\",\n label: \"pair_1_tab_del_p1__smudge_resistant\",\n type: 1,\n },\n {\n icon: \"dust-repel\",\n label: \"pair_1_tab_del_p1__dust_repellent\",\n type: 2,\n },\n {\n icon: \"water-repel\",\n label: \"pair_1_tab_del_p1__water_repellent\",\n type: 2,\n },\n {\n icon: \"harmful-light\",\n label: \"pair_1_tab_del_p1__harmful\",\n type: 2,\n },\n ]\n },\n \"crizal_forte\":{\n id: 'crizal_forte',\n label: 'Crizal Forte',\n smallTitle: '',\n description: \"\",\n enabled: true,\n price:0,\n benefits: [\n {\n icon: \"optimal-clarity\",\n label: \"pair_1_tab_del_p1__optimal_clarity\",\n type: 1,\n },\n {\n icon: \"scratch-icon\",\n label: \"pair_1_tab_del_p1__scratch_resistant\",\n type: 1,\n },\n {\n icon: \"smudge-res\",\n label: \"pair_1_tab_del_p1__smudge_resistant\",\n type: 1,\n },\n {\n icon: \"dust-repel\",\n label: \"pair_1_tab_del_p1__dust_repellent\",\n type: 2,\n },\n {\n icon: \"water-repel\",\n label: \"pair_1_tab_del_p1__water_repellent\",\n type: 2,\n },\n {\n icon: \"uv-protect\",\n label: \"pair_1_tab_del_p1__harmful\",\n type: 2,\n },\n ]\n },\n \"crizal_prevencia\":{\n id: 'crizal_prevencia',\n label: 'Crizal Prevencia',\n complementaryEquipments: [ComplementaryEquipmentType.COMPUTER],\n smallTitle: 'questionnaires_q_recomm_short_desc_cp',\n description: 'questionnaires_q_recomm_long_desc_cp',\n enabled: true,\n price:0,\n isKids: true,\n benefits: [\n {\n icon: \"scratch-icon\",\n label: \"pair_1_tab_del_p1__scratch_resistant\",\n type: 1,\n },\n {\n icon: \"smudge-res\",\n label: \"pair_1_tab_del_p1__smudge_resistant\",\n type: 1,\n },\n {\n icon: \"dust-repel\",\n label: \"pair_1_tab_del_p1__dust_repellent\",\n type: 1,\n },\n {\n icon: \"water-repel\",\n label: \"pair_1_tab_del_p1__water_repellent\",\n type: 2,\n },\n {\n icon: \"uv-protect\",\n label: \"pair_1_tab_del_p1__harmful\",\n type: 2,\n },\n {\n icon: \"harmful-light\",\n label: \"pair_1_tab_del_p1__harmf\",\n type: 2,\n },\n ]\n },\n \"crizal_drive\":{\n id: 'crizal_drive',\n label: 'Crizal Drive',\n complementaryEquipments: [ComplementaryEquipmentType.SUN, ComplementaryEquipmentType.DRIVING],\n smallTitle: 'questionnaires_q_recomm_short_desc_cd',\n description: 'questionnaires_q_recomm_long_desc_cd',\n enabled: true,\n price:0,\n benefits: [\n {\n icon: \"optimal-clarity\",\n label: \"pair_1_tab_del_p1__optimal_clarity\",\n type: 1,\n },\n {\n icon: \"scratch-icon\",\n label: \"pair_1_tab_del_p1__scratch_resistant\",\n type: 1,\n },\n {\n icon: \"smudge-res\",\n label: \"pair_1_tab_del_p1__smudge_resistant\",\n type: 1,\n },\n {\n icon: \"dust-repel\",\n label: \"pair_1_tab_del_p1__dust_repellent\",\n type: 2,\n },\n {\n icon: \"water-repel\",\n label: \"pair_1_tab_del_p1__water_repellent\",\n type: 2,\n },\n {\n icon: \"uv-protect\",\n label: \"pair_1_tab_del_p1__harmful\",\n type: 2,\n },\n ]\n },\n \"crizal_aliz\":{\n id: 'crizal_aliz',\n label: 'Crizal Alizé',\n smallTitle: '',\n description: \"\",\n enabled: true,\n price:0,\n isKids: true,\n benefits: [\n {\n icon: \"optimal-clarity\",\n label: \"pair_1_tab_del_p1__optimal_clarity\",\n type: 1,\n },\n {\n icon: \"scratch-icon\",\n label: \"pair_1_tab_del_p1__scratch_resistant\",\n type: 1,\n },\n {\n icon: \"smudge-res\",\n label: \"pair_1_tab_del_p1__smudge_resistant\",\n type: 1,\n },\n {\n icon: \"dust-repel\",\n label: \"pair_1_tab_del_p1__dust_repellent\",\n type: 2,\n },\n {\n icon: \"water-repel\",\n label: \"pair_1_tab_del_p1__water_repellent\",\n type: 2,\n },\n {\n icon: \"uv-protect\",\n label: \"pair_1_tab_del_p1__harmful\",\n type: 2,\n },\n ]\n },\n \"crizal_sapphire\":{\n id: 'crizal_sapphire',\n label: 'Crizal Sapphire',\n lensDesign: LensEnhanceType.AR,\n smallTitle: 'questionnaires_q_recom_short_desc_cri_sapp',\n description: 'questionnaires_q_recom_long_desc_cri_sapp',\n enabled: true,\n price:0,\n benefits: [\n {\n icon: \"optimal-clarity\",\n label: \"pair_1_tab_del_p1__optimal_clarity\",\n type: 1,\n },\n {\n icon: \"scratch-icon\",\n label: \"pair_1_tab_del_p1__scratch_resistant\",\n type: 1,\n },\n {\n icon: \"smudge-res\",\n label: \"pair_1_tab_del_p1__smudge_resistant\",\n type: 1,\n },\n {\n icon: \"dust-repel\",\n label: \"pair_1_tab_del_p1__dust_repellent\",\n type: 2,\n },\n {\n icon: \"water-repel\",\n label: \"pair_1_tab_del_p1__water_repellent\",\n type: 2,\n },\n {\n icon: \"uv-protect\",\n label: \"pair_1_tab_del_p1__harmful\",\n type: 2,\n },\n ]\n },\n \"crizal_rock\":{\n id: 'crizal_rock',\n label: 'Crizal Rock',\n smallTitle: '',\n description: \"\",\n enabled: true,\n price:0,\n benefits: [\n {\n icon: \"optimal-clarity\",\n label: \"pair_1_tab_del_p1__optimal_clarity\",\n type: 1,\n },\n {\n icon: \"scratch-icon\",\n label: \"pair_1_tab_del_p1__scratch_resistant\",\n type: 1,\n },\n {\n icon: \"smudge-res\",\n label: \"pair_1_tab_del_p1__smudge_resistant\",\n type: 1,\n },\n {\n icon: \"dust-repel\",\n label: \"pair_1_tab_del_p1__dust_repellent\",\n type: 2,\n },\n {\n icon: \"water-repel\",\n label: \"pair_1_tab_del_p1__water_repellent\",\n type: 2,\n },\n {\n icon: \"uv-protect\",\n label: \"pair_1_tab_del_p1__harmful\",\n type: 2,\n },\n ]\n },\n \"crizal_sun_xprotect\":{\n id: 'crizal_sun_xprotect',\n label: 'Crizal Sun Xprotect',\n lensDesign: LensEnhanceType.TINTED,\n smallTitle: 'questionnaires_q_recomm_short_desc_cri_sun',\n description: 'questionnaires_q_recomm_long_desc_cri_sun',\n enabled: true,\n price:0,\n benefits: [\n {\n icon: \"optimal-clarity\",\n label: \"pair_1_tab_del_p1__optimal_clarity\",\n type: 1,\n },\n {\n icon: \"scratch-icon\",\n label: \"pair_1_tab_del_p1__scratch_resistant\",\n type: 1,\n },\n {\n icon: \"smudge-res\",\n label: \"pair_1_tab_del_p1__smudge_resistant\",\n type: 1,\n },\n {\n icon: \"dust-repel\",\n label: \"pair_1_tab_del_p1__dust_repellent\",\n type: 2,\n },\n {\n icon: \"water-repel\",\n label: \"pair_1_tab_del_p1__water_repellent\",\n type: 2,\n },\n {\n icon: \"uv-protect\",\n label: \"pair_1_tab_del_p1__harmful\",\n type: 2,\n },\n ]\n },\n \"optifog\":{\n id: 'optifog',\n label: 'Optifog',\n smallTitle: '',\n description: \"\",\n enabled: true,\n price:0,\n benefits: [\n {\n icon: \"fog-rep\",\n label: \"pair_1_tab_del_p1__fog_repellence\",\n type: 1,\n },\n {\n icon: \"scratch-icon\",\n label: \"pair_1_tab_del_p1__scratch_resistant\",\n type: 1,\n },\n {\n icon: \"uv-protect\",\n label: \"pair_1_tab_del_2_p1_double_sided_uv_protection.\",\n type: 1,\n },\n {\n icon: \"optimal-clarity\",\n label: \"pair_1_tab_del_2_p1_outdoor_sun_glare_reduction\",\n type: 2,\n },\n {\n icon: \"dust-repel\",\n label: \"pair_1_tab_del_p1__dust_repellent\",\n type: 2,\n },\n ]\n }\n}\n\nexport const BRAND_CONFIG = {\n \"varilux\": {\n id: 'varilux',\n label: 'Varilux',\n background: variluxCard,\n logo:'varilux',\n },\n \"standard_design\": {\n id: 'standard_design',\n label: 'Standard Design',\n },\n \"eyezen\": {\n id: 'eyezen',\n label: 'Eyezen',\n background: eyezenCard,\n logo:'eyezen',\n },\n \"essidrive\": {\n id: 'essidrive',\n label: 'Essidrive',\n },\n \"stellest\": {\n id: 'stellest',\n label: 'Stellest',\n background: stellestCard2,\n logo:'stellest-logo',\n },\n \"xperio\": {\n id: 'xperio',\n label: 'Xperio',\n background: experioCard,\n logo: 'xperio-logo',\n },\n \"blueuv_filter_system\": {\n id: 'BlueUV_Filter_System',\n label: 'BlueUV Filter System',\n background: blueUVCard,\n logo:'BlueUV_FilterSystem',\n },\n \"transitions\": {\n id: 'transitions',\n label: 'Transitions',\n background: transitionsCard,\n logo: 'transitions-logo',\n },\n \"crizal\": {\n id: 'crizal',\n label: 'Crizal',\n background: crizalCard,\n logo: 'crizal-logo',\n },\n \"optifog\": {\n id: 'optifog',\n label: 'Optifog',\n logo: 'optifog-logo',\n background: optifogCard,\n }\n}\n\nexport const COLOR_CONFIG = {\n 'lensMirrorBronzeShadow': {\n id: \"lensMirrorBronzeShadow\",\n label: \"Bronze Shadow\",\n value: \"#33070e\"\n },\n 'lensMirrorBronze': {\n id: \"lensMirrorBronze\",\n label: \"Bronze\",\n value: \"#c66a29\"\n },\n 'lensMirrorCandy': {\n id: \"lensMirrorCandy\",\n label: \"Candy\",\n value: \"#9d2b49\"\n },\n 'lensMirrorForestGreen':{\n id: \"lensMirrorForestGreen\",\n label: \"lens_propo_colors_forest_green\",\n value: \"#39721a\"\n },\n 'lensMirrorGoldPink':{\n id: \"lensMirrorGoldPink\",\n label: \"lens_propo_colors_gold_pink\",\n value: \"#924a35\"\n },\n 'lensMirrorGreenShadow':{\n id: \"lensMirrorGreenShadow\",\n label: \"lens_propo_colors_green_shadow\",\n value: \"#1b160f\"\n },\n 'lensMirrorKaki':{\n id: \"lensMirrorKaki\",\n label: \"lens_propo_colors_kaki\",\n value: \"#59621f\"\n },\n 'lensMirrorMauveSilver':{\n id: \"lensMirrorMauveSilver\",\n label: \"lens_propo_colors_mauve_silver\",\n value: \"#ada5d2\"\n },\n 'lensMirrorNewBlue':{\n id: \"lensMirrorNewBlue\",\n label: \"lens_propo_colors_new_blue\",\n value: \"#3c8ea9\"\n },\n 'lensMirrorNewSilver':{\n id: \"lensMirrorNewSilver\",\n label: \"lens_propo_colors_new_silver\",\n value: \"#778fa3\"\n },\n 'lensMirrorOceanBlue':{\n id: \"lensMirrorOceanBlue\",\n label: \"lens_propo_colors_ocean_blue\",\n value: \"#243459\"\n },\n 'lensMirrorOrange':{\n id: \"lensMirrorOrange\",\n label: \"lens_propo_colors_orange\",\n value: \"#7b1d16\"\n },\n 'lensMirrorParma':{\n id: \"lensMirrorParma\",\n label: \"lens_propo_colors_parma\",\n value: \"#b9adc2\"\n },\n 'lensMirrorPinkSilver':{\n id: \"lensMirrorPinkSilver\",\n label: \"lens_propo_colors_pink_silver\",\n value: \"#c1b4c0\"\n },\n 'lensMirrorSilverShadow':{\n id: \"lensMirrorSilverShadow\",\n label: \"lens_propo_colors_silver_shadow\",\n value: \"#4e4340\"\n },\n 'lensMirrorSilver':{\n id: \"lensMirrorSilver\",\n label: \"lens_propo_colors_silver\",\n value: \"#8b8d92\"\n },\n 'lensMirrorSkyBlueSilver':{\n id: \"lensMirrorSkyBlueSilver\",\n label: \"lens_propo_colors_blue_silver\",\n value: \"#9fb6cf\"\n },\n 'lensMirrorViolet':{\n id: \"lensMirrorViolet\",\n label: \"lens_propo_colors_violet\",\n value: \"#21092f\"\n },\n 'lensPolarizedAmber':{\n id: \"lensPolarizedAmber\",\n label: \"lens_propo_colors_amber\",\n value: \"#9C703B\"\n },\n 'lensPolarizedBlueInk':{\n id: \"lensPolarizedBlueInk\",\n label: \"lens_propo_colors_blue_ink\",\n value: \"#395158\"\n },\n 'lensPolarizedBluePurple':{\n id: \"lensPolarizedBluePurple\",\n label: \"lens_propo_colors_blue_purple\",\n value: \"#6437b8\"\n },\n 'lensPolarizedBlueSky':{\n id: \"lensPolarizedBlueSky\",\n label: \"lens_propo_colors_blue_sky\",\n value: \"#87ceeb\"\n },\n 'lensPolarizedBrown':{\n id: \"lensPolarizedBrown\",\n label: \"lens_propo_colors_brown\",\n value: \"#A52A2A\"\n },\n 'lensPolarizedGrey':{\n id: \"lensPolarizedGrey\",\n label: \"lens_propo_colors_grey\",\n value: \"#808080\"\n },\n 'lensPolarizedGreyGreen':{\n id: \"lensPolarizedGreyGreen\",\n label: \"lens_propo_colors_grey_green\",\n value: \"#656255\"\n },\n 'lensPolarizedHerbal':{\n id: \"lensPolarizedHerbal\",\n label: \"lens_propo_colors_herbal\",\n value: \"#8a8849\"\n },\n 'lensPolarizedViolet':{\n id: \"lensPolarizedViolet\",\n label: \"lens_propo_colors_violet\",\n value: \"#6b2d7a\"\n },\n 'lensTintedBlack':{\n id: \"lensTintedBlack\",\n label: \"lens_propo_colors_black\",\n value: \"#000000\"\n },\n 'lensTintedBlueInk':{\n id: \"lensTintedBlueInk\",\n label: \"lens_propo_colors_blue_ink\",\n value: \"#415c80\"\n },\n 'lensTintedBrown':{\n id: \"lensTintedBrown\",\n label: \"lens_propo_colors_brown\",\n value: \"#6d5a45\"\n },\n 'lensTintedBurgundy':{\n id: \"lensTintedBurgundy\",\n label: \"lens_propo_colors_burgundy\",\n value: \"#89676f\"\n },\n 'lensTintedGreyGreen':{\n id: \"lensTintedGreyGreen\",\n label: \"lens_propo_colors_grey_green\",\n value: \"#3c5854\"\n },\n 'lensTintedGrey':{\n id: \"lensTintedGrey\",\n label: \"lens_propo_colors_grey\",\n value: \"#4c5d6e\"\n },\n 'lensTintedHerbal':{\n id: \"lensTintedHerbal\",\n label: \"lens_propo_colors_herbal\",\n value: \"#8e8565\"\n },\n 'lensTintedNewBrown':{\n id: \"lensTintedNewBrown\",\n label: \"lens_propo_colors_new_brown\",\n value: \"#806b4d\"\n }, \n 'lensTransitionGreen':{\n id: \"lensTransitionGreen\",\n label: \"lens_propo_colors_green\",\n value: \"#3F9A49\"\n },\n 'lensTransitionGrey':{\n id: \"lensTransitionGrey\",\n label: \"lens_propo_colors_grey\",\n value: \"#B2B2B6\"\n },\n 'lensTransitionAmber':{\n id: \"lensTransitionAmber\",\n label: \"lens_propo_colors_amber\",\n value: \"#9C703B\"\n },\n 'lensTransitionSapphire':{\n id: \"lensTransitionSapphire\",\n label: \"lens_propo_colors_sapphire\",\n value: \"#346297\"\n },\n 'lensTransitionEmerald':{\n id: \"lensTransitionEmerald\",\n label: \"lens_propo_colors_emerald\",\n value: \"#046253\"\n },\n 'lensTransitionBrown':{\n id: \"lensTransitionBrown\",\n label: \"lens_propo_colors_brown\",\n value: \"#9E5425\"\n },\n 'lensTransitionAmethyst':{\n id: \"lensTransitionAmethyst\",\n label: \"lens_propo_colors_amethyst\",\n value: \"#4F3281\"\n }\n}\n","const LENS_THICKNESS_RULES = [\n {\n value: 1.5,\n range: {\n negative: {\n min: -1.75,\n max: 0\n },\n positive: {\n min: 0,\n max: 1.50\n }\n }\n },\n // {\n // value: 1.56,\n // range: null\n // },\n {\n value: 1.59,\n range: null\n },\n {\n value: 1.6,\n range: {\n negative: {\n min: -3.50,\n max: -2.00\n },\n positive: {\n min: 1.75,\n max: 2.75\n }\n }\n },\n {\n value: 1.67,\n range: {\n negative: {\n min: -5.00,\n max: -3.75\n },\n positive: {\n min: 3.00,\n max: 4.25\n }\n }\n },\n {\n value: 1.74,\n range: {\n negative: {\n min: -20.00,\n max: -5.25\n },\n positive: {\n min: 4.50,\n max: 20.00\n }\n }\n }\n]\n\nexport {\n LENS_THICKNESS_RULES\n}","const SKIP_EPROM_VALIDATION_DATA: {\n [key: string]: string[]\n} = {\n be: ['varilux_xr_series'],\n}\n\nexport default SKIP_EPROM_VALIDATION_DATA;","import iProductBrand from \"../../interface/product-brand.interface\";\nimport iProduct from \"../../interface/product.inteface\";\nimport iSubProduct from \"../../interface/sub-product.inteface\";\nimport ComplementaryEquipmentType from \"../../types/complementary-equipment.type\";\nimport LensCategoryType from \"../../types/lens-category.type\";\nimport LensEnhanceType from \"../../types/lens-enhance.type\";\nimport LensFamilyType from \"../../types/lens-family.type\";\nimport LensProtectType from \"../../types/lens-protect.type\";\nimport {LENS_THICKNESS_RULES} from \"../../constants/lens-thickness.constants\";\nimport iLensRecommendationPair from \"../../interface/lens-recommendaiton-pair.interface\";\nimport iProductFamily from \"../../interface/product-family.interface\";\nimport LensPairType from \"../../types/lens-pair.type\";\nimport { RX_LENS_RECOMMENDATIONS, RX_LENS_RECOMMENDATIONS_RUSSIA, RX_LENS_RECOMMENDATIONS_WITH_XR } from \"../../constants/prescription-lens-proposal.constants\";\nimport AgeCategoryType from \"../../types/age-category.type\";\nimport SKIP_EPROM_VALIDATION_DATA from \"../../constants/skip-eprom-validation.constants\";\n\ntype recommendedProductType = {\n product: iProduct | undefined,\n brand?: iProductBrand | undefined,\n subProduct?: iSubProduct | undefined\n}\n\n\ntype hookType = {\n rxLensRecommendation: (params : {\n products: iProductFamily[],\n ageCategory: AgeCategoryType,\n pair: LensPairType,\n family: LensFamilyType,\n category?: LensCategoryType | LensProtectType | LensEnhanceType,\n equipment?: ComplementaryEquipmentType,\n index?: number\n country?:string\n }) => recommendedProductType,\n getProductsByFamily: (family: LensFamilyType, products: any) => any;\n getProductById: (params: {\n id: string, \n list:iProductFamily[],\n family: LensFamilyType,\n brandId?: string\n }) => iProduct | undefined;\n getSubProductsByLabel: (label: string, subProducts: iSubProduct[], isSortByIndex?: boolean) => iSubProduct[];\n getUniqueSubProducts: (subProducts: iSubProduct[], options?: {\n isLowestIndex?: boolean,\n targetIndex?: number\n }) => iSubProduct[];\n isValidRecommendation: (recommendations: {\n pair1?: iLensRecommendationPair,\n pair2?: iLensRecommendationPair\n }) => boolean,\n getMeasuresHighestValues: (data: any, pair: number) => {\n a: number,\n b: number,\n pd: number,\n height: number\n },\n getPrescriptionByPosition : (pos: 'od' | 'os', rx: any) => any,\n getLeftAndRightPrescription : (rx: any) => any,\n isValidOnEPROM: (protect: any[], eprom: string[], result: (result: boolean) => void) => void,\n getRequestType: (withRX: boolean, validateEPROM: boolean) => number,\n correctPrescriptionData : (data: any, defaultValue: any) => any,\n skipEPROMValidation: (country: string, productId: string, subProductId: string) => boolean\n}\n\n\nconst useLensConsultation = (): hookType => {\n\n const getProductsByFamily = (type: LensFamilyType, products: any) => {\n const family = products.filter( (o: any) => (o.id as LensFamilyType) === type)\n if(family.length < 1)return null;\n return family[0];\n }\n\n\n const filterSubProductsByIndex = (product: iProduct, index: number): iSubProduct[] => {\n const subProducts = product.subProducts;\n if(!subProducts || subProducts.length === 0)return []; \n const filtered = subProducts.filter( subProduct => subProduct.index === index);\n\n if(filtered.length === 0){\n let ruleIndex = 0;\n LENS_THICKNESS_RULES.forEach((rule: any, i: number) => {\n if(rule.value === index) ruleIndex = (i - 1)\n });\n if(ruleIndex < 0)return [];\n return filterSubProductsByIndex(product, LENS_THICKNESS_RULES[ruleIndex].value)\n }\n return filtered;\n }\n\n const loopProducts = (brands: iProductBrand[], callback: (product: iProduct, brand: iProductBrand) => boolean) => {\n let withResult = false;\n\n let brandLoop = 0;\n while(brandLoop < brands.length && !withResult){\n const products = brands[brandLoop].products;\n let productLoop = 0;\n while(productLoop < products.length && !withResult){\n const product:iProduct = products[productLoop];\n withResult = callback(product, brands[brandLoop]);\n productLoop++;\n }\n brandLoop++;\n } \n }\n\n const getSubProductsByLabel = (label: string, subProducts: iSubProduct[], isSortByIndex = false): iSubProduct[] => {\n const filtered = subProducts.filter( (p:iSubProduct) => p.label === label) as iSubProduct[];\n \n if(!isSortByIndex)return filtered;\n return filtered.sort(function(a,b){\n return a.index - b.index;\n });\n }\n\n const getUniqueSubProducts = (subProducts: iSubProduct[], options?: {\n isLowestIndex?: boolean,\n targetIndex?: number\n }): iSubProduct[] => {\n\n if(options?.targetIndex){\n const target = subProducts.filter( x => x.index === options.targetIndex);\n if(target.length > 0)return target; \n }\n \n const unique: string[] = []\n const uniqueSubProducts = subProducts.filter((p: iSubProduct) => {\n if(unique.includes(p.label))return false;\n unique.push(p.label);\n return true;\n }); \n\n if(!options?.isLowestIndex) return uniqueSubProducts;\n // get the subproducts with lowest index\n const lowestIndex:iSubProduct[] = []\n uniqueSubProducts.forEach( x => {\n const sortSubProducts = subProducts.filter( p => p.label === x.label).sort(function(a,b){\n return a.index - b.index;\n });\n lowestIndex.push(sortSubProducts[0]);\n });\n return lowestIndex;\n }\n\n const isWithRecommendedProduct = (recommendations?: {\n pair1?: iLensRecommendationPair,\n pair2?: iLensRecommendationPair\n }) => {\n if(!recommendations)return false;\n\n let withProducts = false;\n const cloned = JSON.parse(JSON.stringify(recommendations));\n ['pair1', 'pair2'].forEach((pairKey: string) => {\n ['correct','protect','enhance'].forEach( (familyKey: any) => {\n const pair = cloned[pairKey];\n const family = pair ? pair[familyKey] : null;\n if(!family)return;\n \n if(familyKey === \"correct\" && family.subProduct){\n withProducts = true; \n }else if(familyKey === \"protect\" && family.length > 0){\n withProducts = true;\n } else if(family.product){\n withProducts = true;\n }\n });\n });\n return withProducts;\n }\n\n const isValidRecommendation = (recommendations?: {\n pair1?: iLensRecommendationPair,\n pair2?: iLensRecommendationPair\n }): boolean => {\n if(!recommendations) return false;\n if(!isWithRecommendedProduct(recommendations))return false;\n if(recommendations?.pair1?.correct?.product && !recommendations?.pair1?.correct.subProduct) return false;\n if(recommendations?.pair2?.correct?.product && !recommendations?.pair2?.correct.subProduct) return false;\n return true;\n }\n\n const getProductById = (params: {\n id: string, \n list:iProductFamily[],\n family: LensFamilyType,\n brandId?: string,\n }): iProduct | undefined => {\n const { id, list, family, brandId } = params;\n const fam = list.filter( f => f.id === family)[0];\n \n let brand = brandId ?\n fam.brands.filter( b => b.id === brandId)[0] :\n null;\n\n if(brand){\n const found = brand.products.filter( p => p.id === id )[0];\n return found;\n }\n\n let product: any;\n for(const b in fam.brands){\n const found = fam.brands[b].products.filter( p => p.id === id )[0];\n if(found){\n product = found;\n break;\n }\n }\n return product;\n }; \n\n\n const rxLensRecommendation = (params : {\n products: iProductFamily[],\n ageCategory: AgeCategoryType,\n pair: LensPairType,\n family: LensFamilyType,\n category?: LensCategoryType | LensProtectType | LensEnhanceType,\n equipment?: ComplementaryEquipmentType,\n index?: number,\n country?:string\n }) => {\n\t\t// JUMP - IMPORTANT - RECOMMENDATION SYSTEM FOR LENS CONSULATION\n let currentCountry = params.country && params.country\n // let currentCountry = localStorage.getItem(\"country\")\n const countryWithXR: string[] = [\"ro\", \"de\", \"pt\", \"bg\", \"gb\", \"es\", \"be\", 'sl', 'hr']\n let isXrEnable: boolean = countryWithXR.includes(currentCountry as string) \n\n // const decisionTree = params.country && params.country === 'ru' ? RX_LENS_RECOMMENDATIONS_RUSSIA : RX_LENS_RECOMMENDATIONS;\n const decisionTree = params.country && params.country === 'ru' ? RX_LENS_RECOMMENDATIONS_RUSSIA : isXrEnable ? RX_LENS_RECOMMENDATIONS_WITH_XR : RX_LENS_RECOMMENDATIONS;\n\t\tconst age = decisionTree[params.ageCategory];\n const pair = age[params.pair];\n const family = pair[params.family];\n\n const recommendation = family.filter( (x:any) => { \n if(params.pair === LensPairType.PAIR2){\n if(!params.category && !params.equipment)return true;\n if(params.category)return x.category === params.category && x.equipment === params.equipment;\n return x.equipment === params.equipment;\n }\n return x.category === params.category;\n })[0];\n\n const recommended: recommendedProductType = {\n product: undefined,\n brand: undefined,\n subProduct: undefined\n }\n\n if(!recommendation)return recommended;\n\n const brands = getProductsByFamily(params.family, params.products).brands;\n loopProducts(brands, (product: iProduct, brand: iProductBrand) => {\n\n if(Array.isArray(recommendation.product)){ \n if(product.id === recommendation.product[params.index || 0]){\n recommended.product = product.enabled ? product : undefined;\n recommended.brand = brand; \n return true;\n }\n }\n\n if(product.id === recommendation.product){\n recommended.product = product.enabled ? product : undefined;\n recommended.brand = brand; \n return true;\n }\n return false;\n }); \n return recommended;\n }\n\n const N = (data: any) => {\n if(!data)return 0;\n return Number(String(data).split(' ')[0]);\n }\n\n const getMeasuresHighestValues = (data: any, pair: number) => {\n const measures1 = data.one[pair];\n if(!measures1) {\n return {\n a: 50,\n b: 28,\n pd: 30,\n height: 23\n }\n }\n const {left, right} = data.two[pair];\n const pd = N(left.pd.value) > N(right.pd.value) ? left.pd.value : right.pd.value;\n const height = N(left.height.value) > N(right.height.value) ? left.height.value : right.height.value;\n\n return {\n a: measures1.a.value,\n b: measures1.b.value,\n pd: N(pd),\n height: N(height)\n }\n }\n\n const getPrescriptionByPosition = (pos: 'od' | 'os', rx: any) => {\n const parse = (rxProp: string) => rx[rxProp] ? parseFloat(rx[rxProp][pos]) : null;\n\n return {\n sph: parse('sphere'),\n cyl: parse('cylinder'),\n axl: parse('axis'),\n add: parse('add')\n }\n }\n\n const getLeftAndRightPrescription = (rx: any) => {\n return {\n left: getPrescriptionByPosition('od', rx),\n right : getPrescriptionByPosition('os', rx)\n }\n }\n\n const isValidOnEPROM = (protect: any[], eprom: string[], result: (result: boolean) => void) => {\n let validOnEPROM = eprom.length > 0;\n const selectedProtects = protect ? protect.map( p => p.product?.id) : ['clear'];\n selectedProtects.forEach( p => {\n const isFound = (eprom || []).includes(p); \n if(!isFound) validOnEPROM = false;\n });\n result(validOnEPROM);\n }\n\n const getRequestType = (withRX: boolean, validateEPROM: boolean): number => {\n let flag = -1;\n if(withRX) flag += 1; // 0\n if(validateEPROM) flag += 2;\n return flag;\n }\n\n const transformRxFieldData = (data: any, rxField: string, defaultValue: any) => {\n const rxValues = data.prescription.values;\n if(\n !rxValues[rxField] ||\n !rxValues[rxField].od ||\n !rxValues[rxField].os\n ){\n return {\n ...data,\n prescription: {\n ...data.prescription,\n values: {\n ...data.prescription.values,\n [rxField]: {od: defaultValue, os: defaultValue},\n }\n }\n }\n }\n \n return data;\n }\n\n const correctPrescriptionData = (data: any, defaultValue: any) => {\n const rxValues = data.prescription.values;\n \n let finalData = {...data};\n if(!rxValues){\n const odos = {od: defaultValue, os: defaultValue};\n\n return {\n ...data,\n prescription: {\n ...data.prescription,\n values: {\n addition: defaultValue,\n axis: odos,\n cylinder: odos,\n sphere: odos,\n }\n }\n }\n }\n finalData = transformRxFieldData(finalData, 'sphere', defaultValue);\n finalData = transformRxFieldData(finalData, 'axis', defaultValue);\n finalData = transformRxFieldData(finalData, 'cylinder', defaultValue);\n\n return finalData;\n }\n\n const skipEPROMValidation = (country: string, productId: string, subProductId?: string) => {\n // if(experience && experience === ExperienceType.SUN)return true\n const skipCountry = SKIP_EPROM_VALIDATION_DATA[country];\n const skipProduct = skipCountry && skipCountry.includes(productId)\n //Todo: refactor code if we need to include subproduct\n //const skipSubProduct = skipProduct ? skipProduct.includes(subProductId) : false;\n return !!(skipCountry && skipProduct)\n }\n\n return {\n getProductsByFamily,\n getSubProductsByLabel,\n getUniqueSubProducts,\n isValidRecommendation,\n getProductById,\n rxLensRecommendation,\n getMeasuresHighestValues,\n getPrescriptionByPosition,\n getLeftAndRightPrescription,\n isValidOnEPROM,\n getRequestType,\n correctPrescriptionData,\n skipEPROMValidation\n }\n}\n\nexport default useLensConsultation;","import axios from 'axios';\nimport ENDPOINTS from \"../../constants/endpoints\";\nimport iProductsStore from \"../../store/interface/products-store.interface\";\nimport LensFamilyType from \"../../types/lens-family.type\";\nimport { BRAND_CONFIG, COLOR_CONFIG, PRODUCT_CONFIG } from \"../../constants/product-config.constants\";\nimport { getProducts } from \"../../store/slices/products.slice\";\nimport { useSelector } from \"react-redux\";\nimport { fetchProductDetailsViaId, fetchSubProductDetailsViaSubProductId } from \"../misc\";\nimport iSubProduct from \"../../interface/sub-product.inteface\";\nimport useLensConsultation from \"../../pages/lens-consultation/useLensConsultation\";\n\ntype hookType = {\n getProductData: (params: {\n onSuccess?: (res: any) => void,\n onError?: (err:any) => void,\n }) => void,\n getPriceCombination: (params: {\n onSuccess?: (res: any) => void,\n onError?: (err:any) => void,\n }) => void,\n\n getProductData2: () => Promise<{\n status: 'success' | 'error',\n responseData: any\n }>,\n getPriceCombination2: () => Promise<{\n status: 'success' | 'error',\n responseData: any\n }>,\n getCurrency: () => Promise<{\n status: 'success' | 'error',\n responseData: any\n }>,\n mapProducts: (res: any, isInAppRefresh: boolean) => { id: string; label: string; brands: any[]; }[],\n getProductLabelById: (filter: {\n familyType: LensFamilyType, \n brandId?: string,\n productId: string,\n subProductId?: string,\n }) => string,\n getColorIdPrefix: (productId: string) => string\n}\n\nconst useProducts = (app: iProductsStore): hookType => {\n const { temporaryProductList } = useSelector(getProducts);\n const { getProductById } = useLensConsultation()\n\n const validateProductData = (data:any) => {\n return data.hasOwnProperty('products') && Array.isArray(data.products)\n }\n\n const validateProductPricingData = (data:any) => {\n return Array.isArray(data)\n }\n\n const validateCurrencyData = (data:any) => {\n return data.hasOwnProperty('currency')\n }\n\n const getProductData = (params: {\n onSuccess?: (res: any) => void,\n onError?: (err:any) => void,\n }) => {\n const {\n onSuccess,\n onError\n } = params;\n\n axios.get(ENDPOINTS.products, { headers: {Authorization : true}})\n .then((res) => onSuccess && validateProductData(res.data) && onSuccess(res.data))\n .catch((err) => onError && onError(err))\n }\n\n const getCurrency = (): Promise<{\n status: 'success' | 'error',\n responseData: any\n }> => {\n \n const promise = new Promise<{\n status: 'success' | 'error',\n responseData: any\n }>((res, rej) => {\n axios.get(ENDPOINTS.account, { headers: {\n Authorization : true,\n background: true\n }})\n .then((resp) => {\n if(validateCurrencyData(resp.data)){\n \n res({\n status: 'success',\n responseData: resp.data.currency.symbol\n })\n } else {\n rej({\n status: 'error',\n responseData: resp\n })\n }\n })\n .catch((err) => rej({\n status: 'error',\n responseData: err\n }))\n });\n return promise;\n }\n\n const getProductData2 = (): Promise<{\n status: 'success' | 'error',\n responseData: any\n }> => {\n \n const promise = new Promise<{\n status: 'success' | 'error',\n responseData: any\n }>((res, rej) => {\n axios.get(ENDPOINTS.products, { headers: {\n Authorization : true,\n background: true\n }})\n .then((resp) => {\n\n if(validateProductData(resp.data)){\n res({\n status: 'success',\n responseData: resp\n })\n } else {\n rej({\n status: 'error',\n responseData: resp\n })\n }\n })\n .catch((err) => rej({\n status: 'error',\n responseData: err\n }))\n });\n return promise;\n }\n\n const getPriceCombination = (params: {\n onSuccess?: (res: any) => void,\n onError?: (err:any) => void,\n }) => {\n const {\n onSuccess,\n onError\n } = params;\n\n axios.get(ENDPOINTS.productCombi, { headers: {Authorization : true}})\n .then((res) => onSuccess && validateProductPricingData(res.data) && onSuccess(res.data))\n .catch((err) => onError && onError(err))\n }\n\n const getPriceCombination2 = (): Promise<{\n status: 'success' | 'error',\n responseData: any\n }> => {\n \n const promise = new Promise<{\n status: 'success' | 'error',\n responseData: any\n }>((res, rej) => {\n axios.get(ENDPOINTS.productCombi, { headers: {\n Authorization : true,\n background: true\n }})\n .then((resp) => {\n\n if(validateProductPricingData(resp.data)){\n res({\n status: 'success',\n responseData: resp\n })\n } else {\n rej({\n status: 'error',\n responseData: resp\n })\n }\n })\n .catch((err) => rej({\n status: 'error',\n responseData: err\n }))\n });\n return promise;\n }\n\n const mapProducts = (res: any, isInAppRefresh: boolean) => {\n const correct_family = res.filter((product: any)=>{ return product.familyId === LensFamilyType.CORRECT }) \n const protect_family = res.filter((product: any)=>{ return product.familyId === LensFamilyType.PROTECT }) \n const enhance_family = res.filter((product: any)=>{ return product.familyId === LensFamilyType.ENHANCE }) \n\n const getSubProducts = (subProducts: any[]) => {\n let subs:any[] = []\n \n if(Array.isArray(subProducts) && subProducts.length !== 0){\n subProducts.forEach((sp:any)=>{\n if(Array.isArray(sp.index)){\n sp.index.forEach((ind:string, i:number)=>{\n subs.push({\n id: `${i}-${sp.id}`,\n code: sp.code,\n label: sp.label,\n index: parseFloat(ind),\n enabled: true,\n price: isInAppRefresh ? fetchSubProductDetailsViaSubProductId(`${i}-${sp.id}`, temporaryProductList).price : 0\n // price: 0\n })\n })\n }\n })\n }\n \n return subs\n }\n \n const getBrandLabel = (famType: any) => {\n switch (famType) {\n case LensFamilyType.CORRECT: return 'lens_consultation_lccorrect'\n case LensFamilyType.PROTECT: return 'lens_consultation_lc_protect_'\n case LensFamilyType.ENHANCE: return 'lens_consultation_lc_enhance'\n default: return ''\n }\n }\n \n const getStaticValues = (id:any, config: Object) => {\n for (const [key, val] of Object.entries(config)) {\n if (key === id) {\n return val\n }\n }\n }\n \n const filterSelectedColor = (colors: string[], productId:string) => {\n const mappedColors = colors.map((color:string) => {\n const key = getColorIdFromType(color, productId)\n \n return getStaticValues(key, COLOR_CONFIG)\n })\n \n return mappedColors\n }\n\n const getColorIdFromType = (color: string, productId:string) => {\n return getColorIdPrefix(productId)+color;\n }\n \n const groupArrayOfObjects = (list:any, key:any) => {\n return list.reduce((rv:any, x:any) => {\n (rv[x[key]] = rv[x[key]] || []).push(x);\n return rv;\n }, {});\n }\n\n const assignProductData = (data: any, famType: string) => {\n const getProducts = ((products: any) => {\n \n const productPerBrand = products.map((p:any) => {\n return {\n ...getStaticValues(p.productId, PRODUCT_CONFIG),\n ...p.familyId === LensFamilyType.CORRECT && p.subProducts.length > 0 && { subProducts: getSubProducts(p.subProducts) } ,\n ...p.familyId !== LensFamilyType.CORRECT && { price: isInAppRefresh ? fetchProductDetailsViaId(p.productId, temporaryProductList).price : 0 },\n // ...p.familyId !== LensFamilyType.CORRECT && { price: 0 },\n\n ...p.lensDesign && { lensDesign: p.lensDesign },\n //isKids = depricated\n ...p.isKids === 1 && { isKids: p.isKids },\n ...p.familyId === LensFamilyType.PROTECT && p.color && {availableColors: transformColors(p.color, p.productId)},\n ...Array.isArray(p.color) && p.color.length > 0 && { color: filterSelectedColor(p.color, p.productId) },\n \n id: p.productId,\n label: p.productLabel,\n enabled: true,\n ageCategoryId: p.ageCategoryId,\n }\n });\n \n return productPerBrand\n })\n \n const transformColors = (colors:string | string[], productId: string) => {\n if(Array.isArray(colors))return []\n const availableColors = colors.replaceAll(' ', '').split(',').map((color) => {\n return color.charAt(0).toUpperCase() + color.slice(1);\n })\n return filterSelectedColor(availableColors,productId)\n }\n\n const getBrands = (() => {\n const brandGroup = groupArrayOfObjects(data, \"brandId\")\n // console.log('brandGroup',brandGroup)\n \n const brands = new Array()\n \n for (var key in brandGroup) {\n brands.push({\n ...getStaticValues(key, BRAND_CONFIG),\n id: key,\n label: brandGroup[key][0].brandLabel,\n products: getProducts(brandGroup[key])\n })\n }\n \n return brands\n })\n \n return {\n id: famType,\n label: getBrandLabel(famType),\n brands: getBrands()\n }\n }\n \n return [\n assignProductData(correct_family, LensFamilyType.CORRECT),\n assignProductData(protect_family, LensFamilyType.PROTECT),\n assignProductData(enhance_family, LensFamilyType.ENHANCE),\n ]\n }\n\n const getProductLabelById = (filter: {\n familyType: LensFamilyType, \n brandId?: string,\n productId: string,\n subProductId?: string,\n }) => {\n const {productId, familyType, brandId, subProductId} = filter;\n const product = getProductById({\n id: productId,\n list: temporaryProductList,\n family: familyType,\n brandId,\n });\n if(!subProductId)return product?.label || productId; \n const subProduct = (product?.subProducts || []).filter( (x: iSubProduct ) => x.code === subProductId)[0];\n return subProduct?.label || subProductId;\n }\n\n const getColorIdPrefix = (productId:string) => {\n switch (productId) {\n case 'xperio_mirrors': return `lensMirror`\n case 'xperio_polarised': return `lensPolarized`\n case 'xperio_polarised_gradient': return `lensPolarized`\n case 'xperio_tinted': return `lensTinted`\n case 'xperio_polarised_mirrors': return `lensMirror`\n case 'xperio_tinted_mirrors': return `lensMirror`\n case 'transitions_signature_gen_8': return `lensTransition`\n case 'transitions_signature_gen_8_iconic': return `lensTransition`\n case 'transitions_signature_gen_8_style': return `lensTransition`\n case 'transitions_signature_gen_8_classic': return `lensTransition`\n case 'transitions_classic': return `lensTransition`\n case 'transitions_xtractive': return `lensTransition`\n case 'transitions_xtractive_mirror': return `lensMirror`\n case 'transitions_style_mirrors': return `lensMirror`\n case 'transitions_style_colors': return `lensTransition`\n default: return ''\n }\n }\n\n return {\n getProductData,\n getPriceCombination,\n getProductData2,\n getPriceCombination2,\n mapProducts,\n getCurrency,\n getProductLabelById,\n getColorIdPrefix\n }\n}\n\nexport default useProducts;","import settings from \"../../constants/settings.constants\"\n\ntype hookType = {\n version: string,\n apiUrl: string,\n GA: string,\n demoAssetsUrl: string,\n dataStructureVersion: number,\n signalRUrl: string\n}\n\nconst useENV = (): hookType => {\n // const vars = settings[settings.environment]\n\n // return {\n // version: vars.version,\n // apiUrl: vars.apiUrl,\n // GA: vars.GA,\n // demoAssetsUrl: vars.demoAssetsUrl,\n // dataStructureVersion: vars.dataStructureVersion\n // }\n return settings[settings.environment];\n}\n\nexport default useENV;","import * as React from \"react\";\n\ntype ProviderProps = {\n db: IDBDatabase,\n children: React.ReactNode\n}\n\nexport interface IndexedDBContextType {\n db: any,\n get: (table: string, key: string) => Promise,\n update : (table: string, data: any) => void,\n insert : (table: string, data: any) => void\n}\n\nexport const IndexedDBContext = React.createContext< IndexedDBContextType | undefined >(undefined)\n\n\nfunction IndexedDBProvider({db, children}: ProviderProps) {\n \n const database = db;\n\n const getData = (table: string, key: string) => {\n const tx = database.transaction(table,'readonly');\n const store = tx.objectStore(table);\n const getRequest = store.get(key);\n\n return new Promise((resolved, reject) => {\n getRequest.onsuccess = (ev: any) => {\n resolved(ev.target.result);\n }\n getRequest.onerror = (err: any) => { \n reject(err);\n }\n }); \n }\n\n // const updateData = (database:IDBDatabase,table: string, data: any) => {\n const updateData = (table: string, data: any) => { \n const tx = database.transaction(table,'readwrite');\n const store = tx.objectStore(table);\n const request = store.put(data);\n request.onsuccess = () => { }\n request.onerror = () => { }\n }\n\n const insertData = (table: string, data: any) => {\n const tx = database.transaction(table,'readwrite');\n const store = tx.objectStore(table);\n const request = store.add(data);\n request.onsuccess = () => { }\n request.onerror = () => { }\n }\n\n const value = {\n db: database,\n get: getData,\n update: updateData,\n insert: insertData\n }\n return (\n \n {children}\n \n )\n}\n\nexport default IndexedDBProvider","enum LensProposalEquipmentType {\n GENERAL = 'general',\n COMPLEMENTARY = 'complementary',\n}\n\nexport default LensProposalEquipmentType;","import React from 'react';\nimport useBEM from '../../utils/hooks/useBEM';\n\ninterface Props {\n message?: string,\n}\n\nconst Tooltip : React.FC = ({\n message,\n}) => {\n // VARIABLES\n const [B, E] = useBEM('tooltip-box');\n\n return (\n
\n {message}\n
\n )\n}\n\nexport default Tooltip;","import { IProductEprom } from \"../../constants/eprom.constants\";\nimport iSubProduct from \"../../interface/sub-product.inteface\";\nimport axios from 'axios';\nimport ENDPOINTS from \"../../constants/endpoints\";\nimport { useSelector } from \"react-redux\";\nimport { getApp } from \"../../store/slices/app.slice\";\nimport LensFamilyType from \"../../types/lens-family.type\";\n\nconst useEprom = () => {\n const { epromData, accountDetails } = useSelector(getApp);\n\n\n const formatData = (epromData: IProductEprom[], country: string) => {\n let finalData: IProductEprom = {};\n (epromData || []).forEach(ep => {\n const [key, value] = Object.entries(ep)[0];\n finalData = {\n ...finalData,\n [key]: value\n }\n });\n return finalData;\n }\n\n const getEPROMData = (region: string, country: string) => {\n const promise = new Promise((res, rej) => {\n axios.get(ENDPOINTS.eprom(region, country))\n .then((resp) => {\n res({\n status: 'success',\n data: resp.data\n })\n })\n .catch((err) => rej({\n status: 'error',\n data: err\n }))\n });\n return promise;\n }\n\n const getAvailableProduct = (productId: string, type: 'masstint' | 'treatment') => {\n const masstintOrTreatment = (epromData && epromData[productId][type]) || {};\n return Object.keys(masstintOrTreatment);\n }\n\n const checkIfValidMassTint = (\n correctCode: string,\n protectIds: string[],\n index: number\n ) => {\n const correct = epromData && epromData[correctCode];\n if (!correct || !correct.masstint) return true;\n let valid = true;\n\n protectIds.forEach(id => {\n const mass = correct.masstint;\n if (!mass || !mass[id]) {\n valid = false;\n return;\n }\n const indexes = mass[id].index;\n if (!indexes.includes(String(index))) valid = false;\n });\n return valid;\n }\n\n const checkIfValidTreatment = (\n correctCode: string,\n enhanceId: string,\n index: number\n ) => {\n const correct = epromData && epromData[correctCode];\n if (!correct || !correct.treatment) return true;\n let valid = true;\n\n const treatment = correct.treatment[enhanceId];\n if (!treatment) {\n valid = false;\n return false;\n }\n const indexes = treatment.index;\n if (!indexes.includes(String(index))) valid = false;\n return valid;\n }\n\n const getAvailableColors = (correctCode: string, protectId: string) => {\n const correct = epromData && epromData[correctCode];\n if (!correct || !correct.masstint) return [];\n const colors = correct?.masstint[protectId]?.color || [];\n return colors;\n }\n\n\n const filterByAvailableIndex = (\n productId: string,\n subProduct: iSubProduct[],\n enabledIndexes?: number[]\n ) => {\n const product = epromData && epromData[productId];\n const avalableIndexes = product?.index || [];\n if (!avalableIndexes.length) return [];\n return subProduct.filter(x =>\n avalableIndexes.includes(String(x.index)) &&\n (enabledIndexes ? enabledIndexes.includes(x.index) : true)\n )\n }\n\n const filterByLowestIndex = (subProducts: iSubProduct[]) => {\n let lowestIndexObject: any = {}\n subProducts.forEach(subProduct => {\n const { code, index } = subProduct;\n if (!code) return;\n if (!lowestIndexObject[code] || lowestIndexObject[code].index > index) {\n lowestIndexObject = {\n ...lowestIndexObject,\n [code]: subProduct\n }\n }\n });\n return lowestIndexObject;\n }\n\n // check if product available base on subproducts\n const isSubProducstAvailable = (\n subProductIds: string[]\n ) => {\n if (!epromData) return true;\n const epromSubProducts = Object.keys(epromData);\n return !!subProductIds.filter(x => {\n return epromSubProducts.includes(x)\n }).length;\n }\n\n const filterSubProductsAvailable = (subProducts: iSubProduct[]) => {\n if (!epromData) return subProducts;\n const epromSubProducts = Object.keys(epromData);\n return subProducts.filter(sb => {\n return epromSubProducts.includes(sb.code as string);\n })\n }\n\n const getTheLowestIndex = (\n subProducts: iSubProduct[],\n enabledIndexes: number[]\n ) => {\n let baseIndex = 9;\n const subProductCode = subProducts[0]?.code;\n const epromIndexes = (\n epromData &&\n subProductCode &&\n epromData[subProductCode].index\n ) || [];\n\n subProducts.forEach(sb => {\n if (\n sb.index < baseIndex &&\n enabledIndexes.includes(sb.index) &&\n epromIndexes.includes(String(sb.index))\n ) baseIndex = sb.index;\n });\n return subProducts.filter(x => x.index === baseIndex);\n }\n\n const getEpromApiEndpoint = () => {\n const country = accountDetails?.shop.country || '';\n const countries = ['it', 'be']; //italy, belgium\n const withCustomEprom = countries.includes(country);\n const query = withCustomEprom ? `&country=${country}` : '';\n return ENDPOINTS.lensThickness + query;\n }\n\n const isValidOnEpromBO = (\n correctId: string, \n productIds: string[],\n toCheck: 'treatment' | 'masstint'\n ) => {\n if(!epromData)return false;\n const correct = epromData[correctId];\n if(!correct)return false;\n const availableIds = Object.keys(correct[toCheck] || []);\n const notAvailableIds = productIds.filter( id => !availableIds.includes(id));\n return notAvailableIds.length === 0;\n }\n\n const isValidOnEPROM = (\n productIds: string[],\n validProductIds: string[],\n result: (result: boolean) => void\n ) => {\n //italy\n const italyProductsByPass = ['xperio_mirrors', 'xperio_tinted']\n if(accountDetails?.shop?.country === 'it'){\n validProductIds = [...validProductIds, ...italyProductsByPass]\n }\n //belgium\n if (accountDetails?.shop?.country === 'be') {\n productIds = productIds.filter(id => id !== 'xperio_mirrors')\n }\n const toCheckIds = (!productIds || !productIds.length) ? ['clear'] : productIds;\n const validIds = (!validProductIds || !validProductIds.length) ? [] : validProductIds;\n const invalidIds = toCheckIds.filter(id => !validIds.includes(id));\n result(!invalidIds.length);\n }\n\n return {\n checkIfValidMassTint,\n checkIfValidTreatment,\n getAvailableColors,\n getEPROMData,\n formatData,\n getAvailableProduct,\n filterByAvailableIndex,\n\n isSubProducstAvailable,\n filterSubProductsAvailable,\n getTheLowestIndex,\n\n getEpromApiEndpoint,\n isValidOnEPROM,\n isValidOnEpromBO\n }\n}\n\nexport default useEprom;\n","import React, { useEffect, useState } from 'react';\nimport RouterLink from './ui/RouterLink';\nimport Icon from './ui/Icon';\nimport sidebarSlice from '../store/slices/sidebar.slice';\nimport { useDispatch, useSelector } from 'react-redux';\nimport routes from '../constants/routes.constant';\nimport { useLocation } from 'react-router';\nimport Utils from '../utils/Utils';\nimport productsSlice, { getProducts } from '../store/slices/products.slice';\nimport useGoogleAnalytics from '../utils/hooks/useGoogleAnalytics';\nimport useTranslation from '../utils/hooks/useTranslation';\nimport appSlice, { getApp } from '../store/slices/app.slice';\nimport ExperienceType from '../types/experience.type';\nimport refresh from '../assets/svg/refresh.svg';\nimport refreshNew from '../assets/svg/refresh-new.svg';\nimport playVideo from '../assets/svg/demo.svg';\nimport hamburger from '../assets/svg/hamburger.svg';\nimport hamburgerNew from '../assets/svg/hamburger-new.svg';\n\nimport logo from '../assets/png/logo.png';\nimport essilorLogoWhite from '../assets/svg/essilor-logo-white.svg';\nimport useGoto from '../utils/hooks/useGoto';\nimport userSlice from '../store/slices/user.slice';\nimport needExplorerSlice from '../store/slices/need-explorer.slice';\nimport lensThicknessSlice from '../store/slices/lens-thickness.slice';\nimport lensConsultationSlice from '../store/slices/lens-consultation.slice';\nimport measureSlice from '../store/slices/measure.slice';\nimport summarySlice from '../store/slices/summary.slice';\nimport prescriptionSlice from '../store/slices/prescription.slice';\nimport useProducts from '../utils/hooks/useProducts';\nimport useENV from '../utils/hooks/useEnv';\nimport { IndexedDBContext, IndexedDBContextType } from '../utils/context/indexedDBContext';\nimport ReactGA from 'react-ga';\nimport { HubConnectionBuilder } from '@microsoft/signalr';\nimport { LogLevel } from '@microsoft/signalr';\nimport pushNotificationSlice, { getPushNotification } from '../store/slices/push-notification.slice';\nimport Tooltip from './ui/Tooltip';\nimport ENDPOINTS from '../constants/endpoints';\nimport axios from 'axios'\nimport deliverySlice from '../store/slices/delivery.slice';\nimport educationSlice from '../store/slices/education.slice';\nimport useEprom from '../utils/hooks/useEprom';\nimport productDemoSlice from '../store/slices/products-demo.slice';\n// import lensConsultationSun from '../store/slices/lens-consultation-sun-exp.slice';\nimport useDisableOnVariluxG9 from '../utils/hooks/useDisableOnVariluxG9';\nimport variluxgG9Slice from '../store/slices/variluxG9.slice';\n\ninterface Props {\n\n}\n\nconst NavBar : React.FC = () => {\n // VARIABLES\n const dispatch = useDispatch();\n const location = useLocation();\n const { cloneObject } = Utils();\n const appStore = useSelector(getApp);\n const { experience } = appStore;\n const [ activeRoute, setActiveRoute ] = useState(routes.home);\n const ga = useGoogleAnalytics();\n const { t, getTranslations2} = useTranslation(appStore);\n const goto = useGoto();\n const productStore = useSelector(getProducts);\n const { getPriceCombination2, getProductData2, mapProducts, getCurrency} = useProducts(useSelector(getProducts));\n const {\n accountDetails,\n token,\n dataStructureVersion,\n globalInformation,\n translationCountryLanguage,\n translationRegion\n } = appStore;\n\n const env = useENV();\n const {get, update} = React.useContext(IndexedDBContext) as IndexedDBContextType;\n const [ inAppShowTooltip, setInAppShowTooltip ] = useState(false);\n const [ tooltipSecond, setTooltipSecond ] = useState(180); // 3 mins interval for tooltip\n const { inAppHasNewUpdate, countryCode, notificationEvent, tutorialHasNewUpdate } = useSelector(getPushNotification);\n const {\n getEPROMData,\n formatData\n } = useEprom();\n const [disableNavbarOnVarilux] = useDisableOnVariluxG9(activeRoute?.id)\n // HOOKS\n useEffect(() => {\n pushGADataLayers()\n trackUserGoogleAnalytics()\n checkDataStructureVersion();\n dispatch(appSlice.actions.loading(false));\n dispatch(productsSlice.actions.open(false));\n }, []);\n\n useEffect( () => {\n setActiveRoute(getActiveRoute(location.pathname));\n }, [location]);\n\n useEffect( () => {\n initSignalR();\n }, [])\n\n useEffect(() => {\n checkNotification(notificationEvent);\n }, [notificationEvent])\n\n useEffect(() => {\n // showTooltip(10);\n displayTooltip()\n }, [inAppHasNewUpdate])\n\n // METHODS\n const pushGADataLayers = () => {\n const currencyCode = accountDetails?.currency?.code;\n const gaCode = accountDetails?.ga_code;\n if(!currencyCode)return;\n\n const win: any = window;\n win.dataLayer.push({\n //for custom GA code\n // trackingId: gaCode !== undefined || gaCode !== \"\" ? gaCode : env.GA,\n trackingId: env.GA,\n // license: globalInformation.license\n })\n\n ReactGA.set({ License: globalInformation.license });\n }\n\n const trackUserGoogleAnalytics = () => {\n let win: any = window\n win.dataLayer.push({\n event: 'userData',\n license_id: globalInformation.license,\n })\n }\n\n const checkDataStructureVersion = () => {\n const newDataVersion = env.dataStructureVersion;\n const current = dataStructureVersion;\n if(!newDataVersion)return;\n\n if(newDataVersion !== current){\n dispatch(appSlice.actions.updateDataStructureVersion(newDataVersion))\n clearData();\n }\n }\n\n const closeNavOnly = () => {\n return (\n // activeRoute?.id === routes.legalNotices.id ||\n activeRoute?.id === routes.myCompanion.id\n )\n }\n\n const getActiveRoute = (path: string) => {\n const routeKeys = Object.keys(routes);\n const clonedRoutes = cloneObject(routes);\n let activeRouteKey = routeKeys.filter( (k: string) => clonedRoutes[k].path === path)[0];\n return clonedRoutes[activeRouteKey];\n }\n\n const openProducts = () => {\n dispatch(productDemoSlice.actions.openQrPopup(false))\n dispatch(productsSlice.actions.open(true));\n\n const page = location.pathname.replace(/\\-/g,' ').replace('/','');\n\n ga.event({\n category: 'Home page',\n action: 'Product Click',\n label: page.length ? page : 'home'\n });\n\n }\n const renderLogo = () => {\n if(activeRoute.id !== 'discovery') {\n return \"\"/\n }\n return \"\"/\n }\n\n const sorter = ( a: string, b: string ): number => {\n const aa = a.toLocaleLowerCase();\n const bb = b.toLocaleLowerCase();\n if ( aa < bb )return -1;\n if ( aa > bb )return 1;\n return 0;\n }\n\n const showLanguageSelection = () => {\n dispatch(sidebarSlice.actions.selectMenu({\n menu:{\n id:'settings_language',\n label: 'my_practice_my_language',\n icon: 'globe',\n },\n callerId: 'reloadPage'\n }));\n }\n const reloadPage = async () => {\n\n if(!token)return;\n if(!navigator.onLine)return;\n\n const machineID = await get('applicationStore', 'machineId');\n if(!machineID){\n localStorage.clear();\n window.location.reload();\n return;\n }\n\n dispatch(appSlice.actions.loading(true));\n\n axios.get(ENDPOINTS.account, { headers: {Authorization: true, background: true} }).then((res: any) => {\n dispatch(appSlice.actions.saveAccountDetails(res.data));\n });\n\n try {\n let regionIdToUse = accountDetails?.shop.region;\n if(translationRegion && typeof translationRegion === 'object') regionIdToUse = translationRegion.id;\n\n const {responseData: {data: translationsData}} = await getTranslations2(regionIdToUse as string);\n await update('languageStore', {\n id: 'translations',\n value: translationsData.country\n });\n dispatch(appSlice.actions.saveRegions(translationsData.region));\n\n const defaultRegion = translationsData.region.filter( (x: any) => {\n return x.id.toLowerCase() === regionIdToUse?.toLocaleLowerCase();\n })[0];\n dispatch(appSlice.actions.setTranslationRegion(defaultRegion));\n\n updateTranslationData(translationsData);\n const products = await getProductData2();\n const mappedProductData = mapProducts(products.responseData.data.products, true);\n dispatch(appSlice.actions.setProducts(mappedProductData));\n dispatch(productsSlice.actions.updateProductList(mappedProductData));\n dispatch(productsSlice.actions.attachedProductDemo({\n demos: productStore.lensDemo,\n productList: mappedProductData\n }))\n\n const prices = await getPriceCombination2();\n dispatch(appSlice.actions.setProductCombi({data: prices.responseData.data, isInAppRefresh: true}));\n const currency = await getCurrency();\n dispatch(lensConsultationSlice.actions.setCurrency(currency.responseData));\n dispatch(appSlice.actions.loading(false));\n\n if(accountDetails && accountDetails?.shop.eprom) {\n const {region, country} = accountDetails?.shop;\n const result: any = await getEPROMData(region, country);\n const formatted = formatData(result.data, country);\n dispatch(appSlice.actions.saveEPROMData(formatted));\n }\n\n // Trigger update event in SignalR\n try {\n await updateEvent();\n } catch (error) { console.log('SIGNALR ERROR',error) }\n\n const cancelReload = !translationCountryLanguage ? true: false;\n reloadPageCallback(cancelReload);\n if(cancelReload)showLanguageSelection();\n\n\n } catch (error: any) {\n dispatch(appSlice.actions.loading(false));\n\n if(!error.responseData.response){\n const errorMsg = error.responseData.message === 'Network Error' ? t('data_sharing_offline_message') : undefined;\n apiCallFailed(errorMsg);\n return;\n }\n\n const errorStatus = error.responseData.response.status;\n\n if(errorStatus === 401) {\n dispatch(appSlice.actions.updateLicenseStatus('Expired'));\n goto.route(routes.licenseActivation);\n return;\n }\n\n apiCallFailed();\n }\n }\n\n const updateTranslationData = (translationsData: any) => {\n const countryCode = translationCountryLanguage?.country as string;\n const countryLanguageCode = translationCountryLanguage?.languageCode as string;\n const countryTranslationData = translationsData.country[countryCode];\n dispatch(appSlice.actions.setTranslation({\n code: countryLanguageCode,\n country: countryTranslationData.country,\n translation: countryTranslationData.language[countryLanguageCode]\n }));\n }\n\n const apiCallFailed = (message?: string) => {\n setTimeout( () => {\n dispatch(appSlice.actions.showGlobalAlert({\n show: true,\n message: message || 'Unable to fetch update, please retry again',\n }));\n }, 100);\n }\n\n const reloadPageCallback = (cancelReload?:boolean) => {\n clearData();\n\n setTimeout(() => {\n goto.route(routes.home);\n }, 200);\n\n if(cancelReload)return;\n setTimeout(() => {\n window.location.reload();\n }, 500);\n }\n\n const clearData = () => {\n dispatch(userSlice.actions.clearUserState());\n dispatch(needExplorerSlice.actions.resetData());\n dispatch(lensThicknessSlice.actions.resetData());\n dispatch(lensConsultationSlice.actions.resetData());\n dispatch(measureSlice.actions.resetData());\n dispatch(summarySlice.actions.resetData());\n dispatch(prescriptionSlice.actions.resetData());\n dispatch(appSlice.actions.resetData());\n dispatch(productsSlice.actions.reset());\n dispatch(productsSlice.actions.attachedProductDemo({\n demos: productStore.lensDemo\n }))\n // dispatch(deliverySlice.actions.reset({all: true}));\n dispatch(deliverySlice.actions.reset());\n dispatch(educationSlice.actions.resetState())\n dispatch(variluxgG9Slice.actions.resetData())\n \n //temp - fix for restructured data to prevent from clearing local storage\n // dispatch(appSlice.actions.saveMyCompannionData())\n }\n\n // SECTION connectSignalR\n const connectSignalR = (userId: string, groupId: string) => {\n\n const connection = new HubConnectionBuilder()\n .withUrl(env.signalRUrl + `/api?userId=${userId}`)\n .configureLogging(LogLevel.Information)\n .withAutomaticReconnect()\n .build();\n\n connection.on('newMessage', async (message: any) => {\n var tempCurrentEventFly: any = null;\n let currentEvent: any = localStorage.getItem('realtimeEvent');\n if (notificationEvent === null || notificationEvent === undefined) {\n if (currentEvent !== null) {\n tempCurrentEventFly = JSON.parse(currentEvent);\n dispatch(pushNotificationSlice.actions.setNotificationEvent(tempCurrentEventFly))\n }\n }\n\n if (message.transaction === 'emat') {\n dispatch(pushNotificationSlice.actions.setEmatCount(message.data.record_count))\n }\n\n if (message.transaction === 'whats_new') {\n dispatch(pushNotificationSlice.actions.setWhatsNewCount(message.data.record_count))\n }\n\n if (message.transaction === 'tutorial') {\n dispatch(pushNotificationSlice.actions.setTutorialCount(message.data.record_count))\n }\n\n if (message.transaction === 'product') {\n dispatch(pushNotificationSlice.actions.setProductTimestamp(message.timestamp))\n }\n\n if (message.transaction === 'pricing') {\n dispatch(pushNotificationSlice.actions.setPricingTimestamp(message.timestamp))\n }\n\n if (message.transaction === 'translation') {\n dispatch(pushNotificationSlice.actions.setTranslationTimestamp(message.timestamp))\n }\n });\n\n connection\n .start()\n .then(function () {\n register(userId,groupId)\n retrieve(groupId);\n })\n .catch(console.error);\n }\n\n const initSignalR = async () => {\n const machineID = await get('applicationStore', 'machineId');\n if (machineID) {\n const countryCode: any = await accountDetails?.shop?.country;\n await dispatch(pushNotificationSlice.actions.setCountryCode(countryCode));\n connectSignalR(machineID.value, countryCode)\n }\n }\n\n const checkNotification = async (latestEvent:any) => {\n if (latestEvent !== null) {\n // Get Current Event\n let currentEvent: any = await localStorage.getItem('realtimeEvent');\n if (currentEvent !== null) currentEvent = JSON.parse(currentEvent);\n\n // InApp Refresh\n const latestProductDate = new Date(latestEvent.product);\n const latestPricingDate = new Date(latestEvent.pricing);\n const latestTranslationDate = new Date(latestEvent.translation);\n\n const currentProductDate = currentEvent && new Date((currentEvent.product) ? currentEvent.product : \"2020/1/1\");\n const currentPricingDate = currentEvent && new Date((currentEvent.pricing) ? currentEvent.pricing : \"2020/1/1\");\n const currentTranslationDate = currentEvent && new Date((currentEvent.translation) ? currentEvent.translation : \"2020/1/1\");\n\n if ((latestProductDate > currentProductDate) ||\n (latestPricingDate > currentPricingDate) ||\n (latestTranslationDate > currentTranslationDate)) {\n dispatch(pushNotificationSlice.actions.setInAppNotification(true));\n } else {\n dispatch(pushNotificationSlice.actions.setInAppNotification(false));\n }\n\n // eMat\n const latestEmat = (latestEvent.emat) ? latestEvent.emat : 0;\n const currentEmat = currentEvent && (currentEvent.emat) ? currentEvent.emat : 0;\n\n if (latestEmat > currentEmat) {\n const newEmat = latestEmat - currentEmat;\n dispatch(pushNotificationSlice.actions.setEmatNotification(newEmat));\n }\n\n // WhatsNew\n const latestWhatsNew = (latestEvent.whats_new) ? latestEvent.whats_new : 0;\n const currentWhatsNew = currentEvent && (currentEvent.whats_new) ? currentEvent.whats_new : 0;\n\n if (latestWhatsNew > currentWhatsNew) {\n const newWhatsNew = latestWhatsNew - currentWhatsNew;\n dispatch(pushNotificationSlice.actions.setWhatsNewNotification(newWhatsNew));\n }\n\n // Tutorial\n const latestTutorial = (latestEvent.tutorial) ? latestEvent.tutorial : 0;\n const currentTutorial = currentEvent && (currentEvent.tutorial) ? currentEvent.tutorial : 0;\n\n if (latestTutorial > currentTutorial) {\n const newTutorial = latestTutorial - currentTutorial;\n dispatch(pushNotificationSlice.actions.setTutorialNotification(newTutorial));\n }\n }\n }\n\n const updateEvent = async () => {\n let resp = await fetch(env.signalRUrl + `/api/retrieve?country=${countryCode}`, {\n method: 'GET',\n });\n let respEvent = await resp.json();\n\n let currentEvent = await localStorage.getItem('realtimeEvent');\n currentEvent = respEvent;\n\n await localStorage.setItem('realtimeEvent', JSON.stringify(currentEvent));\n checkNotification(respEvent);\n }\n\n const register = async (userId: string, groupName: string) => {\n let resp = await fetch(env.signalRUrl + `/api/register`, {\n method: 'POST',\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({userId: userId, groupName: groupName})\n });\n }\n\n const retrieve = async (country: string) => {\n let resp =await fetch(env.signalRUrl + `/api/retrieve?country=${country}`, {\n method: 'GET',\n });\n let respEvent = await resp.json();\n\n let currentEvent: any = await localStorage.getItem('realtimeEvent');\n if (currentEvent !== null) {\n if (currentEvent.country !== respEvent.country || currentEvent.country == \"\")\n currentEvent = respEvent;\n else {\n currentEvent = JSON.parse(currentEvent);\n currentEvent.emat = respEvent?.emat;\n currentEvent.whats_new = respEvent.whats_new;\n currentEvent.tutorial = respEvent.tutorial;\n }\n } else {\n currentEvent = respEvent;\n }\n\n if (!localStorage.getItem('realtimeEvent')) {\n await localStorage.setItem('realtimeEvent', JSON.stringify(currentEvent));\n }\n\n await checkNotification(respEvent);\n\n\n }\n\n const showTooltip = (second: number) => {\n let delay = 0;\n const timer = setInterval(() => {\n if (inAppHasNewUpdate && delay === 0) {\n setInAppShowTooltip(true);\n setTimeout(() => {\n setInAppShowTooltip(false);\n delay = tooltipSecond\n }, second * 1000);\n }\n delay--;\n if (!inAppHasNewUpdate)\n clearInterval(timer);\n }, 1000);\n }\n\n const displayTooltip = () => {\n if (inAppHasNewUpdate) {\n setInAppShowTooltip(true)\n setTimeout(() => {\n setInAppShowTooltip(false)\n }, 5000)\n }\n }\n const selectIcon = () => (experience === ExperienceType.SUN ? \"-sun\" : \"\")\n return (\n <>\n {!disableNavbarOnVarilux &&\n
\n\n \n {renderLogo()}\n \n\n
\n
\n {t(activeRoute?.label)}\n
\n {/* {activeRoute?.path === '/' &&
\n
for
\n \"\"\n
} */}\n
\n\n\n
\n\n {!closeNavOnly() && accountDetails && (\n <>\n \n {\n (inAppHasNewUpdate) ?\n
\n \"\"\n \n
\n :\n \"\"\n }\n
\n\n {\n (window.location.pathname !== \"/demonstrations\") && (\n \n \n \n )\n }\n\n {/*\n Note: put back when functionality is developed\n use this icon image\n https://www.flaticon.com/free-icon/rotate-smartphone_81564?term=screen%20rotation&page=1&position=3&page=1&position=3&related_id=81564&origin=search\n \n \n \n \n */}\n\n \n\n dispatch(sidebarSlice.actions.open())}>\n {\n (tutorialHasNewUpdate > 0) ?\n :\n \n }\n \n \n )}\n\n\n {\n closeNavOnly() &&\n \n \n \n }\n\n\n
\n\n
}\n \n )\n}\n\nexport default NavBar;\n","import React from 'react';\nimport useBEM from '../../utils/hooks/useBEM';\n\ninterface Props {\n count: number,\n type?: string,\n}\n/*\n count - Number to display\n type - i.e. home / menu\n > home - Card [What's new, eMat, ...]\n > menu - Right Sidebar [Tutorial, ...]\n\n*/ \nconst BadgeNotification : React.FC = ({\n count,\n type = 'home',\n}) => {\n // VARIABLES\n const [B, E] = useBEM('card-notification');\n\n const getClass = () => {\n if (type === \"menu\") {\n return `${B()} ${E('side')}`;\n } else {\n return B();\n }\n }\n\n return (\n \n {count}\n \n )\n}\n\nexport default BadgeNotification;","import React, { useState } from 'react';\nimport Icon from '../../ui/Icon';\nimport iMenu from '../../../interface/menu.interface';\nimport { useDispatch, useSelector } from 'react-redux';\nimport sidebarSlice, { getSidebar } from '../../../store/slices/sidebar.slice';\nimport useGoogleAnalytics from '../../../utils/hooks/useGoogleAnalytics';\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport { getApp } from '../../../store/slices/app.slice';\nimport pushNotificationSlice, { getPushNotification } from '../../../store/slices/push-notification.slice';\nimport BadgeNotification from '../../ui/BadgeNotification';\nimport ExperienceType from '../../../types/experience.type';\n\ninterface Props {\n disabled?: boolean,\n title?: string,\n items: iMenu[]\n}\n\nconst Menu : React.FC = ({\n title,\n items,\n disabled = false\n}) => {\n // VARIABLES\n const [soonHover, setSoonHover] = useState(false)\n const { selectedMenu } = useSelector(getSidebar)\n const dispatch = useDispatch()\n const ga = useGoogleAnalytics()\n const { t } = useTranslation(useSelector(getApp))\n const { tutorialHasNewUpdate, notificationEvent } = useSelector(getPushNotification)\n const appStore = useSelector(getApp)\n const { experience } = appStore\n // HOOKS\n\n // METHODS\n const selectMenu = (menu: iMenu, index: number) => {\n if (disabled) {\n if (selectedMenu && selectedMenu.id === menu.id) {\n dispatch(sidebarSlice.actions.selectMenu({ menu: undefined }))\n return\n }\n return\n }\n if(!menu?.submenu) {\n dispatch(sidebarSlice.actions.close())\n }\n updateNotification(index)\n ga.event({\n category: `Menu Bar`,\n action: 'Button Click',\n label: t(menu.label, 'enUS')\n });\n dispatch(sidebarSlice.actions.selectMenu({ menu }))\n }\n const isActiveMenu = (menu: iMenu) => {\n if (!selectedMenu) return false\n return (selectedMenu.id === menu.id)\n }\n const activeMenuClass = (menu: iMenu) => {\n return isActiveMenu(menu) ? 'menu__item--active' : ''\n }\n const selectIcon = (menu: iMenu) => {\n return experience === ExperienceType.SUN ? `${menu.icon}-sun` : menu.icon\n }\n const renderMenu = (items: iMenu[] = []) => {\n return items.map((menu, index) => {\n return (\n menu.id === \"education\" ? comingSoonMenu(menu, index) :\n selectMenu(menu, index)} className={`menu__item ${activeMenuClass(menu)}`} key={index}> {\n \n }\n
{t(menu.label)}
\n {showBadge(index)}\n \n )\n })\n }\n const showBadge = (index: number) => {\n // Index0 - Tutorial\n let badgeCount = 0;\n if (index === 0) {\n badgeCount = tutorialHasNewUpdate;\n }\n\n if (badgeCount > 0)\n return \n else\n return <>\n }\n const updateNotification = async (index: number) => {\n // Index0 - Tutorial\n let currentEvent: any = await localStorage.getItem('realtimeEvent');\n if (currentEvent !== null) currentEvent = JSON.parse(currentEvent);\n // Tutorial\n if (index === 0) {\n await dispatch(pushNotificationSlice.actions.setTutorialNotification(0));\n }\n localStorage.setItem('realtimeEvent', JSON.stringify(notificationEvent));\n }\n const comingSoonMenu = (menu: iMenu, index: number) => {\n return (\n setSoonHover(true)}\n onMouseLeave={() => setSoonHover(false)}\n className={`menu__item ${activeMenuClass(menu)}`}\n key={index}> {\n \n }\n
{soonHover ? t('education_edu_coming_soon', 'Coming Soon') : t(menu.label)}
\n {showBadge(index)}\n \n )\n }\n\n return (\n
{\n title &&\n \n }\n
    \n {renderMenu(items)}\n
\n
\n )\n}\n\nexport default Menu;\n","import iMenu from \"../interface/menu.interface\";\nimport routes from \"./routes.constant\";\n\nconst menus: iMenu[] = [\n {\n id:'tutorial',\n label: 'my_practice_my_tutorial',\n icon: 'question-mark'\n },\n {\n id:'education',\n label: 'my_practice_my_educ',\n icon: 'education'\n },\n {\n id:'my_companion',\n label: 'my_practice_my_my_compa',\n icon: 'grid',\n route: routes.myCompanion\n },\n {\n id:'practice_id',\n label: 'my_practice_my_practice_id',\n icon: 'practice',\n route: routes.practiceID\n },\n {\n id:'settings',\n label: 'my_practice_my_settings',\n icon: 'settings',\n activeIcon: 'settings-white',\n submenu: [\n // {\n // id:'settings_pms',\n // label: 'PMS',\n // icon: 'monitor'\n // },\n {\n id:'settings_language',\n label: 'my_practice_my_language',\n icon: 'globe',\n // route: routes.home\n },\n {\n id:'settings_legan-notices',\n label: 'legal_notices_ln_legal_notices',\n icon: 'info',\n route: routes.legalNotices\n }\n ]\n }\n];\n\nexport default menus;","import React, { useEffect, useRef, useState } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport sidebarSlice, { getSidebar } from '../../store/slices/sidebar.slice';\nimport Menu from './components/menu';\nimport menus from '../../constants/menu.constant';\nimport useGoto from '../../utils/hooks/useGoto';\nimport useTranslation from '../../utils/hooks/useTranslation';\nimport { getApp } from '../../store/slices/app.slice';\n\ninterface Props {\n\n}\n\nconst SideBar: React.FC = () => {\n // VARIABLES\n const { open, selectedMenu } = useSelector(getSidebar);\n const dispatch = useDispatch();\n const goto = useGoto();\n const firstUpdate = useRef(true);\n const { t } = useTranslation(useSelector(getApp));\n // HOOKS\n useEffect(() => {\n dispatch(sidebarSlice.actions.selectMenu({ menu: undefined }));\n }, []);\n useEffect(() => {\n // Note: dont run on intial render\n if (firstUpdate.current) {\n firstUpdate.current = false;\n return;\n }\n const route = selectedMenu?.route;\n if (route) {\n goto.route(route);\n }\n }, [selectedMenu]);\n // METHODS\n const closeSideBar = () => {\n dispatch(sidebarSlice.actions.close())\n }\n if (!open) return null;\n\n return (\n
\n
\n
\n {/* MAIN MENU */}\n \n {/* SUB MENU */}\n {selectedMenu && selectedMenu.submenu && }\n
\n
\n )\n}\n\nexport default SideBar;","import React from 'react';\nimport Icon from './Icon';\nimport useTranslation from '../../utils/hooks/useTranslation';\nimport { getApp } from '../../store/slices/app.slice';\nimport { useSelector } from 'react-redux';\nimport ExperienceType from '../../types/experience.type';\ninterface Props {\n text?: string,\n className?: string,\n type?: 'primary' | 'secondary' | 'simple',\n disabled?: boolean,\n icon?: string | React.ReactNode,\n iconPosition?: 'right' | 'left'\n outlined?: boolean,\n circle?: boolean,\n active?: boolean,\n weight?: 'bold' | 'normal',\n outlineType?: 'light' | 'colored' | 'none',\n textSize?: 'default' | 'small',\n themed?: boolean,\n soon?: boolean,\n click?: () => void,\n icontype?: 'svg' | 'image' | 'png' | 'gif',\n experience?: ExperienceType,\n\n //temporary\n notAvailable?: boolean,\n sunBack?:boolean\n\n //for Google tag manager\n id?:string,\n}\n\nconst Button : React.FC = ({\n text,\n className,\n type = \"primary\",\n disabled = false,\n icon,\n outlined = true,\n circle = false,\n active = false,\n iconPosition = 'right',\n weight = 'bold',\n outlineType = 'colored',\n textSize = 'default',\n themed = false,\n soon = false,\n click,\n icontype,\n experience,\n sunBack=false,\n id\n}) => {\n // VARIABLES\n const { t } = useTranslation(useSelector(getApp));\n const finalClass = () => {\n const classes = [];\n if(className)classes.push(className);\n if(disabled)classes.push(`button--disabled ${className}--disabled`);\n if(!text)classes.push(`button--icon-only`);\n if(outlined)classes.push(`button--outlined`);\n if(circle)classes.push(`button--circle`);\n if(active)classes.push(`button--active`);\n if(themed)classes.push(`button--themed`);\n if(soon)classes.push(`button--soon`);\n if(experience)classes.push(`button--${experience}`);\n if(sunBack)classes.push(`button--sun-back`)\n \n classes.push(`button--icon-${iconPosition}`);\n classes.push(`button--${weight}`);\n classes.push(`button--outline-${outlineType}`);\n classes.push(`button--text-${textSize}`);\n\n classes.push(`button--${type}`);\n return classes.join(\" \");\n }\n\n // HOOKS\n\n // METHODS\n const onClickHandler = () => {\n if(!click)return;\n click();\n }\n\n return (\n \n )\n}\n\nexport default Button;","import React from 'react';\nimport Button from '../../../components/ui/Button';\nimport userSlice, { getUser } from '../../../store/slices/user.slice';\nimport { useSelector, useDispatch } from 'react-redux';\nimport routes from '../../../constants/routes.constant';\nimport useGoto from '../../../utils/hooks/useGoto';\nimport needExplorerSlice from '../../../store/slices/need-explorer.slice';\nimport lensThicknessSlice from '../../../store/slices/lens-thickness.slice';\nimport lensConsultationSlice from '../../../store/slices/lens-consultation.slice';\nimport measureSlice from '../../../store/slices/measure.slice';\nimport summarySlice from '../../../store/slices/summary.slice';\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport { getApp } from '../../../store/slices/app.slice';\nimport prescriptionSlice from '../../../store/slices/prescription.slice';\n\n\ninterface Props {\n\n}\n\nconst ContinueWithID : React.FC = () => {\n // VARIABLES\n const { id } = useSelector(getUser);\n const dispatch = useDispatch();\n const goto = useGoto();\n const { t } = useTranslation(useSelector(getApp));\n // HOOKS\n\n // METHODS\n const clearUser = () => {\n dispatch(userSlice.actions.clearUserState());\n dispatch(needExplorerSlice.actions.resetData());\n dispatch(lensThicknessSlice.actions.resetData());\n dispatch(lensConsultationSlice.actions.resetData());\n dispatch(measureSlice.actions.resetData());\n dispatch(summarySlice.actions.resetData());\n dispatch(prescriptionSlice.actions.resetData());\n localStorage.setItem(\"selectedIndex\", JSON.stringify({}))\n localStorage.setItem(\"recomData\", JSON.stringify({}))\n }\n\n const continueWithID = () => {\n goto.routeWithTransition(\n routes.home, \n routes.lensProposalBuilder,\n 'SLIDE_LEFT',\n 500\n );\n }\n\n return (\n
\n
\n
\n )\n}\n\nexport default ContinueWithID;","import { IconType } from \"./IconType\";\nimport stackedGroup from './icons/stacked-group';\n\nconst accountCircle = `M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 3c1.66 0 3 1.34 3 3s-1.34 3-3 3-3-1.34-3-3 1.34-3 3-3zm0 14.2c-2.5 0-4.71-1.28-6-3.22.03-1.99 4-3.08 6-3.08 1.99 0 5.97 1.09 6 3.08-1.29 1.94-3.5 3.22-6 3.22z`;\nconst gps = `M12 8c-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4zm8.94 3c-.46-4.17-3.77-7.48-7.94-7.94V1h-2v2.06C6.83 3.52 3.52 6.83 3.06 11H1v2h2.06c.46 4.17 3.77 7.48 7.94 7.94V23h2v-2.06c4.17-.46 7.48-3.77 7.94-7.94H23v-2h-2.06zM12 19c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7z`;\nconst close = `M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z`;\nconst add = `M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z`;\nconst minus = `M19 13H5v-2h14v2z`;\nconst arrowRight = `M6.23 20.23 8 22l10-10L8 2 6.23 3.77 14.46 12z`;\nconst arrowLeft = `M11.67 3.87 9.9 2.1 0 12l9.9 9.9 1.77-1.77L3.54 12z`;\nconst check = `M9 16.17 4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z`;\nconst qrcode = `M19.26 13.952c.408 0 .74.331.74.74v4.567c0 .41-.332.741-.74.741h-4.567c-.41 0-.74-.332-.74-.74 0-.41.33-.741.74-.741h3.826v-3.826c0-.41.331-.741.74-.741zm-18.52 0c.41 0 .742.331.742.74v3.827h3.825c.41 0 .741.331.741.74 0 .41-.332.741-.74.741H.74C.33 20 0 19.668 0 19.26v-4.567c0-.41.332-.741.74-.741zm10.014-4.707v5.658h5.657v1.508H9.246v-5.657H3.589V9.245h7.165zM8.08 11.921v4.49h-4.49v-4.49h4.49zM6.57 13.43H5.097v1.474h1.474v-1.474zm9.84-4.183v4.184h-1.508v-2.676h-1.474v2.676h-1.508V9.246h4.49zM8.08 3.589v4.49h-4.49v-4.49h4.49zm8.332 0v4.49h-4.49v-4.49h4.49zm-5.657 0v4.49H9.246v-4.49h1.508zM6.571 5.097H5.097V6.57h1.474V5.097zm8.332 0H13.43V6.57h1.473V5.097zM5.307 0c.41 0 .741.332.741.74 0 .41-.331.742-.74.742H1.48v3.825c0 .409-.331.74-.74.74-.41 0-.741-.331-.741-.74V.741C0 .33.332 0 .74 0h4.567zM19.26 0c.41 0 .741.332.741.74v4.567c0 .409-.332.74-.74.74-.41 0-.741-.331-.741-.74V1.482h-3.826c-.41 0-.74-.332-.74-.741 0-.41.33-.74.74-.74h4.566z\" transform=\"translate(-822 -656) translate(373 631) translate(.84) translate(30 15) translate(334.258) translate(15 10) translate(69)`\n\nexport const SvgIcons: {\n [key in IconType]: string\n} = {\n gps,\n accountCircle,\n close,\n add,\n arrowRight,\n arrowLeft,\n minus,\n check,\n qrcode,\n stackedGroup\n}\n","const stackedGroup = `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n`;\n\nexport default stackedGroup;","import React from 'react';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport { IconType } from './IconType';\nimport { SvgIcons } from './svg-icon-list';\nimport ReactHtmlParser from 'react-html-parser';\n\ninterface Props {\n className?: string,\n name: IconType,\n color?: string,\n width?: string,\n height?: string,\n circle?: boolean,\n bordered?: boolean,\n backgroundColor?: string,\n borderColor?: string,\n html?: boolean,\n withViewBox?: boolean,\n padding?: string,\n\n onClick?: () => void\n}\n\nconst SvgIcon : React.FC = ({\n className = '',\n name,\n color,\n width,\n height,\n circle = false,\n backgroundColor = 'transparent',\n borderColor,\n bordered,\n html = false,\n withViewBox = true,\n padding = '0rem',\n onClick\n}) => {\n\n const [B ,E] = useBEM('svg-icon');\n\n const cssProperties = () => {\n return {\n '--app-svg-icon-fill': color,\n '--app-svg-icon-height': height || width || '1.5rem',\n '--app-svg-icon-width': width || height || '1.5rem',\n '--app-svg-icon-background-color': backgroundColor,\n '--app-svg-icon-border-color': borderColor,\n '--app-svg-icon-padding': padding\n } as React.CSSProperties\n }\n\n const modfiers = () => {\n const mods = [];\n if(circle)mods.push('circle');\n if(bordered)mods.push('bordered');\n\n return mods;\n }\n\n const onClickHandler = () => {\n if(onClick)onClick()\n }\n\n return (\n
\n \n { !html && }\n\n { html && (\n ReactHtmlParser(SvgIcons[name])\n )}\n\n \n
\n );\n}\n\nexport default SvgIcon;","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport iButtonGroupButton from '../../interface/button-group-button.interface';\nimport { getApp } from '../../store/slices/app.slice';\nimport useBEM from '../../utils/hooks/useBEM';\nimport useTranslation from '../../utils/hooks/useTranslation';\nimport Icon from './Icon';\n\ninterface Props {\n value?: string,\n className?: string\n buttons: iButtonGroupButton[],\n iconType?: 'svg' | 'image' | 'png' | 'gif',\n disabled?: boolean,\n onSelect?: (value: string) => void,\n productId?:string,\n extraControlDisabler?: () => void,\n showNewCanvas?: boolean\n}\n\nconst ButtonGroup : React.FC = ({\n value,\n buttons,\n className,\n disabled,\n onSelect,\n iconType = 'svg',\n productId,\n extraControlDisabler,\n showNewCanvas\n}) => {\n // VARIABLES\n const [B, E] = useBEM('button-group');\n const { t } = useTranslation(useSelector(getApp));\n\n\n // HOOKS\n\n // METHODS\n const onSelectHandler = (button: iButtonGroupButton) => {\n if(button.disabled)return;\n const newValue = button.value;\n const isClearValue = (newValue === value && buttons.length === 1);\n if(button.disabled)return; \n if(onSelect)onSelect(!isClearValue ? newValue : ''); \n if(extraControlDisabler) extraControlDisabler() \n }\n\n const classModifies = (button: iButtonGroupButton) => {\n const classes = [];\n if (!button.label && button.icon) classes.push('icon-only');\n if (button.label && !button.icon) classes.push('label-only');\n if (value === button.value )classes.push('selected');\n if (button.disabled )classes.push('disabled');\n if (showNewCanvas) {\n let newClasses = classes.filter(c => c !== 'selected')\n return newClasses;\n }\n return classes;\n }\n\n return (\n
    \n {\n buttons.map( b => (\n
  • onSelectHandler(b)}\n className={E('item', classModifies(b))} \n key={b.value}\n id={`${productId}_${b.value}`}\n >\n {b.label && \n \n }\n\n {\n b.icon && \n \n }\n\n {\n value === b.value &&\n \n {b.instruction}\n \n }\n \n
  • \n ))\n }\n
\n )\n}\n\nexport default ButtonGroup;","import React, { useEffect, useRef, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport iLensDemo from '../../../interface/lens-demo';\nimport { getApp } from '../../../store/slices/app.slice';\nimport productDemoSlice, { getProductDemo } from '../../../store/slices/products-demo.slice';\nimport ProductDemoType from '../../../types/product-demo.type';\nimport { IndexedDBContext, IndexedDBContextType } from '../../../utils/context/indexedDBContext';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport useTranslation from '../../../utils/hooks/useTranslation';\n\ninterface Props {\n type: ProductDemoType,\n demo: iLensDemo\n}\n\nconst SeeThrougDemo : React.FC = ({\n type,\n demo\n}) => {\n // VARIABLES\n const [B, E] = useBEM('see-throug-demo');\n const videoRef = useRef();\n const [assetSource, setAssetSource] = useState(null);\n const { activeProductDemo, syncVideoPlayFlag } = useSelector(getProductDemo);\n const dispatch = useDispatch();\n const [fadeOut, setFadeOUt] = useState(false);\n const {get} = React.useContext(IndexedDBContext) as IndexedDBContextType;\n const { t } = useTranslation(useSelector(getApp));\n\n // HOOKS\n useEffect(() => {\n return () => {\n dispatch(productDemoSlice.actions.updateVideoPlayFlag(0));\n }\n }, [])\n\n useEffect(() => {\n if(syncVideoPlayFlag >= 2 && videoRef.current) {\n setTimeout(() => {\n videoRef?.current?.play();\n }, 1000)\n }\n }, [syncVideoPlayFlag])\n\n useEffect(() => {\n if(!videoRef.current)return;\n videoRef.current.pause();\n videoRef.current.currentTime = 0; \n setTimeout(() => {\n dispatch(productDemoSlice.actions.updateVideoPlayFlag(null));\n });\n }, [assetSource])\n\n useEffect(() => { \n getAssetSource(); \n }, [activeProductDemo])\n\n // METHODS\n\n const getAssetSource = () => {\n setAssetSource(null);\n\n setTimeout(async () => {\n const asset = await get('lensDemoStore', `${demo?.demo}_standard`);\n if(!asset)return\n setAssetSource(asset.asset);\n },0)\n }\n\n const mouseDown = () => {\n setFadeOUt(true);\n dispatch(productDemoSlice.actions.activateSeeThrough(true));\n }\n\n const mouseUp = () => {\n setFadeOUt(false);\n dispatch(productDemoSlice.actions.activateSeeThrough(false));\n }\n\n return (\n
{e.preventDefault(); return false}}\n >\n\n { assetSource && type === ProductDemoType.SEE_THROUGH_VIDEO &&\n \n }\n\n
\n
\n \n
\n
\n )\n}\n\nexport default SeeThrougDemo;","import React, { useEffect, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport { getProductDemo } from '../../../store/slices/products-demo.slice';\nimport { IndexedDBContext, IndexedDBContextType } from '../../../utils/context/indexedDBContext';\nimport useBEM from '../../../utils/hooks/useBEM';\n\ninterface Props {\n mode: 'active' | 'compare'\n}\n\nconst DrawLine : React.FC = ({\n mode\n}) => {\n // VARIABLES\n const [B, E] = useBEM('draw-line');\n const [leftBlur, setLeftBlur] = useState();\n const [leftLine, setLeftLine] = useState();\n const [rightBlur, setRightBlur] = useState();\n const [rightLine, setRightLine] = useState();\n const {get} = React.useContext(IndexedDBContext) as IndexedDBContextType;\n\n const { \n demoType,\n activeProductDemo,\n enableDrawLine,\n activeCompareProductDemo,\n isCompareEnabled\n } = useSelector(getProductDemo);\n\n // HOOKS\n useEffect(() => {\n if(!activeProductDemo)return;\n\n const source = mode === 'active' ? activeProductDemo : activeCompareProductDemo;\n let loadAssets = async () => {\n setLeftBlur(await getPreloadedAsset(`${source?.id}_left-blur`));\n setLeftLine(await getPreloadedAsset(`${source?.id}_left-line`));\n setRightBlur(await getPreloadedAsset(`${source?.id}_right-blur`));\n setRightLine(await getPreloadedAsset(`${source?.id}_right-line`)); \n }\n\n loadAssets();\n\n }, [activeProductDemo, isCompareEnabled, activeCompareProductDemo])\n\n // // METHODS\n const getPreloadedAsset = async (id: string) => {\n const asset = await get('lensDemoStore', `${demoType?.demo}_${id}`);\n if(!asset)return undefined;\n return asset.asset;\n }\n\n return (\n
\n \n
\n { leftBlur && \"\" }\n { leftLine && enableDrawLine && \"\" }\n
\n\n
\n { rightBlur && \"\" }\n { rightLine && enableDrawLine && \"\" }\n
\n
\n )\n}\n\nexport default DrawLine;","import React from 'react'\nimport { useSelector } from 'react-redux';\nimport { getApp } from '../../../store/slices/app.slice';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport useTranslation from '../../../utils/hooks/useTranslation';\n\ntype Props = {\n finalDemoType?:string\n isCompareEnabled?:boolean\n}\nconst DemoTextOverlay: React.FC = ({finalDemoType, isCompareEnabled}) => {\n \n // functions \n const classExtender = (demoType?:string, isCompareEnabled?:boolean) => {\n if(demoType === 'competitor' && isCompareEnabled)return '-compare'\n if(demoType === 'competitor' && !isCompareEnabled)return ''\n if(demoType === 'competitor2')return '2'\n else return\n }\n\n //variables\n const classExtension = classExtender(finalDemoType, isCompareEnabled)\n const [B] = useBEM(`text-overlay${classExtension}`);\n const { t } = useTranslation(useSelector(getApp));\n const text = finalDemoType === 'competitor' ? 'product_demo_text_overlay' : 'product_demo_text_overlay2'\n\n return (\n
\n \n {t(text)}\n \n
\n )\n}\n\nexport default DemoTextOverlay","import React, { useEffect, useRef, useState } from 'react';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport { useDispatch, useSelector } from 'react-redux';\nimport productDemoSlice, { getProductDemo } from '../../../store/slices/products-demo.slice';\nimport ProductDemoType from '../../../types/product-demo.type';\nimport SeeThrougDemo from './SeeThrougDemo';\nimport iLensDemo from '../../../interface/lens-demo';\nimport ReactPannellum from \"react-pannellum\";\n// import fieldOfVision from '../../../assets/images/field-of-vision.jpg';\nimport fieldOfVision from '../../../assets/images/field-of-vision-min.jpg';\nimport DrawLine from './DrawLine';\nimport { IndexedDBContext, IndexedDBContextType } from '../../../utils/context/indexedDBContext';\nimport { getProducts } from '../../../store/slices/products.slice';\nimport Icon from '../../../components/ui/Icon'\nimport { getApp } from '../../../store/slices/app.slice';\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport DemoTextOverlay from './DemoTextOverlay';\n\n\n\n\n\n\n\ninterface Props {\n isChangeDemoTypeLoading?:boolean\n}\n\nconst ProductDemo : React.FC = ({isChangeDemoTypeLoading}) => {\n // VARIABLES\n const { \n demoType, \n subDemoType,\n activeProductDemo,\n activeCompareProductDemo,\n syncVideoPlayFlag,\n isCompareEnabled,\n demoFrom,\n qrPopup\n } = useSelector(getProductDemo);\n const { accountDetails } = useSelector(getApp);\n const dispatch = useDispatch();\n const [B, E] = useBEM('product-demo');\n const videoRef = useRef();\n const [assetSource, setAssetSource] = useState(null);\n const [finalDemoType, setFinalDemoType] = useState();\n const {get} = React.useContext(IndexedDBContext) as IndexedDBContextType;\n const previousLensDemo = useRef();\n const {isQrCodeOpen, brandToDemo} = useSelector(getProducts)\n const { t } = useTranslation(useSelector(getApp));\n const isSlovakia = accountDetails?.shop.country === 'sk'\n const showTextOverLay = finalDemoType?.demo === 'competitor' && activeProductDemo?.id === 'varilux_physio_30' && !isCompareEnabled\n\n // HOOKS\n // useEffect(()=>{\n // if(isQrCodeOpen || isTransitions()) \n // dispatch(productDemoSlice.actions.enableCompare(false))\n // }, [])\n useEffect(() => {\n if(demoType && [\n ProductDemoType.NESTED_DEMO_TRANSVERSAL,\n ProductDemoType.NESTED_DEMO\n ].includes(demoType?.demoType)){\n setFinalDemoType(subDemoType || demoType);\n return; \n }\n\n setFinalDemoType(demoType)\n }, [subDemoType, demoType])\n\n useEffect(() => {\n if(isImageDemo() || !videoRef?.current)return;\n if(needVideoPlaySync() && syncVideoPlayFlag >= 2) {\n setTimeout(() => {\n if(videoRef.current === null)return;\n if(videoRef.current.paused)videoRef.current.play();\n }, 1000);\n }\n }, [syncVideoPlayFlag])\n\n useEffect(() => {\n if(!videoRef.current || isImageDemo())return;\n videoRef.current.pause();\n videoRef.current.currentTime = 0; \n setTimeout(() => {\n dispatch(productDemoSlice.actions.updateVideoPlayFlag(null));\n \n if(!needVideoPlaySync()) {\n videoRef?.current?.play(); \n }\n });\n }, [assetSource])\n\n useEffect(() => { \n if(!finalDemoType || !activeProductDemo)return;\n getAssetSource(); \n }, [activeProductDemo, finalDemoType])\n\n useEffect(() => {\n if(isCompareEnabled && videoRef.current){\n videoRef.current.pause();\n videoRef.current.currentTime = 0; \n }\n }, [activeCompareProductDemo]);\n\n // METHODS\n\n const needVideoPlaySync = () => {\n if(\n isCompareEnabled ||\n [ ProductDemoType.SEE_THROUGH_IMAGE,\n ProductDemoType.SEE_THROUGH_VIDEO ]\n .includes(finalDemoType?.demoType as ProductDemoType)\n\n )return true;\n return false;\n }\n // const isTransitions = () =>{\n // if(brandToDemo && demoFrom?.id === 'lensConsultation' && !isSlovakia)\n // return brandToDemo.id === 'transitions'\n // }\n\n const timer = useRef();\n const getAssetSource = () => {\n setAssetSource(null);\n\n // if(isQrCodeOpen || isTransitions()){\n // if(timer.current)clearTimeout(timer.current);\n // timer.current = setTimeout(async () => {\n // if(!finalDemoType?.demo || !activeProductDemo?.id)return;\n // const id = `video-advertisement-gen-8_standard1`;\n // if(previousLensDemo.current === id)return; \n // let asset;\n // let tryLimit = 3;\n // let tryAgain;\n // do {\n // try {\n // asset = await get('lensDemoStore', id);\n // tryAgain = false;\n // console.log(`Success A`);\n // } catch (error) {\n // tryAgain = true;\n // tryLimit -= 1;\n // console.log(`Try: ${tryLimit}`);\n \n // }\n // } while (tryAgain && tryLimit > 0);\n // console.log(`Success B`);\n // previousLensDemo.current = id;\n // console.log(asset)\n // if(asset)setAssetSource(asset.asset); \n // },500)\n // return\n // }\n\n if(timer.current)clearTimeout(timer.current);\n timer.current = setTimeout(async () => {\n if(!finalDemoType?.demo || !activeProductDemo?.id)return;\n const id = `${finalDemoType?.demo}_${activeProductDemo?.id}`;\n if(previousLensDemo.current === id)return; \n const asset = await get('lensDemoStore', id);\n previousLensDemo.current = id;\n if(asset)setAssetSource(asset.asset); \n },500)\n }\n\n const isVideoDemo = () => {\n if(!finalDemoType?.demoType || finalDemoType.is360)return false;\n return [\n ProductDemoType.VIDEO,\n ProductDemoType.SLIDER_VIDEO,\n ProductDemoType.VERTICAL_SLIDER_VIDEO,\n ProductDemoType.DIVIDER_VIDEO,\n ProductDemoType.SEE_THROUGH_VIDEO,\n ProductDemoType.SIDE_BY_SIDE_VIDEO,\n ].includes(finalDemoType.demoType)\n }\n\n const isImageDemo = () => {\n if(!finalDemoType?.demoType || finalDemoType.is360)return false;\n // if(isTransitions())return false\n return [\n ProductDemoType.SLIDER_IMAGE\n ].includes(finalDemoType.demoType)\n }\n\n const style = {\n width: \"100%\",\n height: \"100%\",\n background: 'rgba(255,255,255,0.5)',\n }\n\n const config = {\n // autoRotate: -2,\n autoLoad: true,\n showZoomCtrl: false,\n showFullscreenCtrl: false,\n doubleClickZoom: false,\n keyboardZoom: false,\n mouseZoom: false,\n };\n\n const openQrCode = () =>{\n dispatch(productDemoSlice.actions.openQrPopup(!qrPopup));\n }\n return (\n //temporary hide\n //
\n
\n { demoType && demoType.is360 && \n \n }\n \n {/* {ProductDemoType.SPHERE_IMAGE === demoType && \n \n }\n \n\n { ProductDemoType.DRIVE === demoType && \n \n }\n\n { ProductDemoType.VIDEO === demoType && \n \n } */}\n\n { assetSource && isVideoDemo() && !isQrCodeOpen &&\n \n }\n\n {/* temporary hide */}\n {/* { assetSource && isTransitions() && !isQrCodeOpen &&\n
\n \n { !qrPopup &&\n }\n
\n } */}\n { assetSource && isVideoDemo() && isQrCodeOpen &&\n
\n \n
\n
\n \n
\n
\n
\n }\n\n {/* NOTE: See through standard asset */}\n { assetSource && finalDemoType &&\n [\n ProductDemoType.SEE_THROUGH_IMAGE, \n ProductDemoType.SEE_THROUGH_VIDEO\n ].includes(finalDemoType?.demoType as ProductDemoType) &&\n \n \n }\n\n {\n // !isTransitions() && isImageDemo() && assetSource &&\n isImageDemo() && assetSource &&\n \"\"\n }\n\n {\n demoType?.is360 && !isCompareEnabled &&\n \n }\n\n {!isChangeDemoTypeLoading && showTextOverLay &&\n \n }\n
\n )\n}\n\nexport default ProductDemo;","interface iColorModification {\n [key: string]: {\n [key: string]: {\n id: string,\n label: string,\n value: string\n }[]\n }\n}\n\n// LIST OF ALL COLORS FOR LENS_COLOR_MODIFICATIONS\n// is in product-config-constant.ts line 2389\nexport const LENS_COLOR_MODIFICATIONS: iColorModification = {\n \"co\": {\n \"transitions_signature_gen_8\": [\n {\n \"id\": \"lensTransitionGrey\",\n \"label\": \"lens_propo_colors_grey\",\n \"value\": \"#B2B2B6\"\n },\n {\n \"id\": \"lensTransitionBrown\",\n \"label\": \"lens_propo_colors_brown\",\n \"value\": \"#9E5425\"\n },\n {\n \"id\": \"lensTransitionGreen\",\n \"label\": \"lens_propo_colors_green\",\n \"value\": \"#3F9A49\"\n },\n {\n \"id\": \"lensTransitionSapphire\",\n \"label\": \"lens_propo_colors_sapphire\",\n \"value\": \"#346297\"\n },\n {\n \"id\": \"lensTransitionAmethyst\",\n \"label\": \"lens_propo_colors_amethyst\",\n \"value\": \"#4F3281\"\n }\n ],\n \"transitions_xtractive_new_gen\": [\n {\n \"id\": \"lensTransitionGrey\",\n \"label\": \"lens_propo_colors_grey\",\n \"value\": \"#B2B2B6\"\n },\n ],\n \"transitions_xtractive_polarised\": [\n {\n \"id\": \"lensTransitionGrey\",\n \"label\": \"lens_propo_colors_grey\",\n \"value\": \"#B2B2B6\"\n },\n ],\n \"transitions_style_mirrors\": [\n {\n \"id\": \"lensMirrorSilver\",\n \"label\": \"lens_propo_colors_silver\",\n \"value\": \"#8b8d92\"\n },\n {\n \"id\": \"lensMirrorBronze\",\n \"label\": \"Bronze\",\n \"value\": \"#c66a29\"\n },\n {\n \"id\": \"lensMirrorOceanBlue\",\n \"label\": \"lens_propo_colors_ocean_blue\",\n \"value\": \"#243459\"\n },\n {\n \"id\": \"lensMirrorOrange\",\n \"label\": \"lens_propo_colors_orange\",\n \"value\": \"#7b1d16\"\n }\n ],\n \"xperio_mirrors\": [\n {\n \"id\": \"lensMirrorSilver\",\n \"label\": \"lens_propo_colors_silver\",\n \"value\": \"#8b8d92\"\n },\n {\n \"id\": \"lensMirrorBronze\",\n \"label\": \"Bronze\",\n \"value\": \"#c66a29\"\n },\n {\n \"id\": \"lensMirrorOceanBlue\",\n \"label\": \"lens_propo_colors_ocean_blue\",\n \"value\": \"#243459\"\n },\n {\n \"id\": \"lensMirrorOrange\",\n \"label\": \"lens_propo_colors_orange\",\n \"value\": \"#7b1d16\"\n }\n ]\n },\n \"gr\": {\n \"transitions_xtractive_polarised\": [\n {\n \"id\": \"lensTransitionGrey\",\n \"label\": \"lens_propo_colors_grey\",\n \"value\": \"#B2B2B6\"\n },\n ],\n \"transitions_xtractive_new_generation\": [\n {\n \"id\": \"lensTransitionGrey\",\n \"label\": \"lens_propo_colors_grey\",\n \"value\": \"#B2B2B6\"\n },\n {\n \"id\": \"lensTransitionBrown\",\n \"label\": \"lens_propo_colors_brown\",\n \"value\": \"#9E5425\"\n },\n {\n \"id\": \"lensTransitionGreen\",\n \"label\": \"lens_propo_colors_green\",\n \"value\": \"#3F9A49\"\n },\n {\n \"id\": \"lensMirrorSilverShadow\",\n \"label\": \"lens_propo_colors_silver_shadow\",\n \"value\": \"#4e4340\"\n },\n {\n \"id\": \"lensMirrorGoldPink\",\n \"label\": \"lens_propo_colors_gold_pink\",\n \"value\": \"#b76e79\"\n },\n ],\n \"xperio_polarised\": [\n {\n \"id\": \"lensPolarizedGrey\",\n \"label\": \"lens_propo_colors_grey\",\n \"value\": \"#808080\"\n },\n {\n \"id\": \"lensPolarizedBrown\",\n \"label\": \"lens_propo_colors_brown\",\n \"value\": \"#9C703B\"\n },\n {\n \"id\": \"lensPolarizedGreyGreen\",\n \"label\": \"lens_propo_colors_grey_green\",\n \"value\": \"#656255\"\n }\n ],\n \"xperio_mirrors\": [\n {\n \"id\": \"lensMirrorGoldPink\",\n \"label\": \"lens_propo_colors_gold_pink\",\n \"value\": \"#924a35\"\n },\n {\n \"id\": \"lensMirrorOceanBlue\",\n \"label\": \"lens_propo_colors_ocean_blue\",\n \"value\": \"#243459\"\n },\n {\n \"id\": \"lensMirrorSilver\",\n \"label\": \"lens_propo_colors_silver\",\n \"value\": \"#8b8d92\"\n },\n // GOLD - CANT FOUND\n // SILVER LILAC - CANT FOUND\n ]\n }\n}\n\n// LIST OF ALL COLORS FOR DEMO_COLOR_MODIFICATIONS\n// Every product has their own specific colors\nexport const DEMO_COLORS_MODIFICATIONS: iColorModification = { // FOR ProductDemoSelection.tsx\n \"co\": {\n \"transitions_style_mirrors\": [\n // {\n // id: 'transitions_style_mirrors',\n // label: 'lens_propo_colors_bronze_shadow',\n // value: 'lensMirrorBronzeShadow'\n // },\n {\n id: 'standard9',\n label: 'lens_propo_colors_ocean_blue',\n value: 'lensMirrorOceanBlue'\n },\n {\n id: 'standard',\n label: 'lens_propo_colors_bronze',\n value: 'lensMirrorBronze'\n },\n {\n id: 'standard14',\n label: 'lens_propo_colors_silver',\n value: 'lensMirrorSilver'\n },\n {\n id: 'standard10',\n label: 'lens_propo_colors_orange',\n value: 'lensMirrorOrange'\n },\n ],\n \"xperio_mirrors\": [\n // {\n // id: 'transitions_style_mirrors',\n // label: 'lens_propo_colors_bronze_shadow',\n // value: 'lensMirrorBronzeShadow'\n // },\n {\n id: 'standard9',\n label: 'lens_propo_colors_ocean_blue',\n value: 'lensMirrorOceanBlue'\n },\n {\n id: 'standard',\n label: 'lens_propo_colors_bronze',\n value: 'lensMirrorBronze'\n },\n {\n id: 'standard14',\n label: 'lens_propo_colors_silver',\n value: 'lensMirrorSilver'\n },\n {\n id: 'standard10',\n label: 'lens_propo_colors_orange',\n value: 'lensMirrorOrange'\n },\n ]\n },\n \"gr\": {\n \"xperio_mirrors\": [\n {\n id: 'standard9',\n label: 'lens_propo_colors_ocean_blue',\n value: 'lensMirrorOceanBlue'\n },\n {\n id: 'standard14',\n label: 'lens_propo_colors_silver',\n value: 'lensMirrorSilver'\n },\n {\n id: \"standard3\",\n label: \"lens_propo_colors_gold_pink\",\n value: \"lensMirrorGoldPink\",\n }\n ],\n \"xperio_polarised\": [\n {\n id: \"standard4\",\n label: \"lens_propo_colors_grey\",\n value: \"lensPolarizedGrey\"\n },\n {\n id: \"standard6\",\n label: \"lens_propo_colors_brown\",\n value: \"lensPolarizedBrown\"\n },\n {\n id: \"standard5\",\n label: \"lens_propo_colors_grey_green\",\n value: \"lensPolarizedGreyGreen\"\n }\n ]\n }\n}\n","import { is } from 'immer/dist/internal';\nimport React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport Button from '../../../components/ui/Button';\nimport iLensDemo from '../../../interface/lens-demo';\nimport iLensColor from '../../../interface/lens-color.inteface'\nimport iProductDemo from '../../../interface/product-demo';\nimport { getApp } from '../../../store/slices/app.slice';\nimport productDemoSlice, { getProductDemo } from '../../../store/slices/products-demo.slice';\nimport productsSlice, { getProducts } from '../../../store/slices/products.slice';\nimport ExperienceType from '../../../types/experience.type';\nimport ProductDemoType from '../../../types/product-demo.type';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport useGoogleAnalytics from '../../../utils/hooks/useGoogleAnalytics';\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport { DEMO_COLORS_MODIFICATIONS } from '../../../constants/lens-consultation-modified-colors';\n\ninterface Props {\n hideDemo?: iProductDemo,\n selectedDemo: iProductDemo,\n forceDisableSelect?: boolean,\n onSelectProduct?: (productDemo: iProductDemo | iLensDemo) => void\n}\n\nconst ProductDemoSelection: React.FC = ({\n hideDemo,\n selectedDemo,\n forceDisableSelect,\n onSelectProduct\n}) => {\n // VARIABLES\n const [B, E] = useBEM('product-demo-selection');\n const {\n productDescription,\n isCompareEnabled,\n demoType,\n subDemoType,\n seeThroughActivated,\n demoFrom\n } = useSelector(getProductDemo);\n const [isOpenSubProducts, setIsOpenSubProducts] = useState(false);\n const dispatch = useDispatch();\n const { t } = useTranslation(useSelector(getApp));\n const [finalDemoType, setFinalDemoType] = useState();\n const { isOpen, enabledProducts, productToDemo, isQrCodeOpen, brandToDemo } = useSelector(getProducts);\n const ga = useGoogleAnalytics();\n const appStore = useSelector(getApp);\n const { experience, accountDetails} = appStore;\n const availableColors:iLensColor[] | undefined = productToDemo?.colors\n const isSlovakia = accountDetails?.shop.country === 'sk'\n const countryLicense = accountDetails?.shop.country\n\n\n // HOOKS\n useEffect(() => {\n if (demoType && [\n ProductDemoType.NESTED_DEMO_TRANSVERSAL,\n ProductDemoType.NESTED_DEMO\n ].includes(demoType?.demoType)) {\n setFinalDemoType(subDemoType || demoType);\n return;\n }\n setFinalDemoType(demoType);\n }, [subDemoType, demoType])\n\n // METHODS\n const setDescription = (desc: string[] | null) => {\n dispatch(productDemoSlice.actions.setProductDescription(desc))\n }\n\n const showSubProducts = (isShow: boolean) => {\n if (disableProductSelection()) return;\n setDescription(null);\n setIsOpenSubProducts(isShow);\n dispatch(productDemoSlice.actions.disableControls(isShow));\n }\n const subProductModifierClass = () => {\n const classes = [demoType?.demoType as string];\n if (isOpenSubProducts) classes.push('open');\n if (isCompareEnabled) classes.push('compare');\n return classes;\n }\n\n const selectProduct = (product: iProductDemo | iLensDemo) => {\n if (selectedDemo.id === (product as iProductDemo).id) return;\n\n const eventAction = isOpen ? 'Product' : 'LC';\n // alert('b');\n\n if (demoType?.demoType === ProductDemoType.NESTED_DEMO) {\n const p = product as iLensDemo;\n ga.event({\n category: `Demo - ${t((p.products[0] as iProductDemo).label, 'enUS')}`,\n action: `Demonstration - ${eventAction}`,\n label: `See Demo - ${p.demo}`\n })\n } else {\n const p = product as iProductDemo;\n ga.event({\n category: `Demo - ${t(p.label, 'enUS')}`,\n action: `Demonstration - ${eventAction}`,\n label: `See Demo - ${demoType?.demo}`\n })\n }\n\n if (onSelectProduct) onSelectProduct(product);\n showSubProducts(false);\n }\n\n const disableProductSelection = () => {\n if (\n forceDisableSelect ||\n demoType?.demoType === ProductDemoType.SEE_THROUGH_IMAGE ||\n demoType?.demoType === ProductDemoType.SEE_THROUGH_VIDEO\n ) return true;\n\n if (demoType?.demoType === ProductDemoType.NESTED_DEMO) {\n return false;\n }\n\n return finalDemoType && finalDemoType?.products.length < (isCompareEnabled ? 3 : 2);\n }\n\n const showProduct = (list: string[] | undefined, id: string) => {\n if (\n id.toLocaleLowerCase().includes('standard') ||\n id.includes(productToDemo?.id || '')\n ) return true;\n return (list || []).includes(id)\n }\n\n const checkedColorFromBO = (label:string, country?: string) =>{\n\n let hasColorModications = country && ['co', 'gr'].includes(country) \n\n if (hasColorModications) {\n if (!country || !productToDemo) return\n\n let newColors = DEMO_COLORS_MODIFICATIONS?.[country]?.[productToDemo.id]\n \n if (newColors !== undefined) {\n let filteredColors = newColors.filter(color => color.label === label)\n return filteredColors && filteredColors.length > 0\n } else {\n const colors = availableColors?.filter(color => color.label === label)\n return colors && colors?.length > 0 || true\n }\n } else {\n const colors = availableColors?.filter(color => color.label === label)\n return colors && colors?.length > 0 || true\n }\n }\n\n const renderSubProducts = () => {\n if (!finalDemoType) return;\n if (demoType?.demoType === ProductDemoType.NESTED_DEMO) {\n return (demoType?.products as iLensDemo[]).map((pp, index) => {\n const product = pp.products[0] as iProductDemo;\n if (!showProduct(enabledProducts, product.id)) return null;\n\n return (\n selectProduct(pp)}\n className={E('product', [subDemoType?.demo === pp.demo ? 'active' : ''])}\n >\n {t(product.label)}\n \n )\n })\n }\n \n return (finalDemoType?.products as iProductDemo[]).map((product, index) => {\n if (\n (hideDemo && hideDemo.id === product.id) ||\n !showProduct(enabledProducts, product.id)\n ) return null;\n\n if(finalDemoType?.demo === 'packshot-mirrors')\n return (\n checkedColorFromBO(product.label, countryLicense) &&\n selectProduct(product)}\n className={E('product', [selectedDemo.id === product.id ? 'active' : ''])}\n >\n {t(product.label)}\n \n )\n\n return (\n checkedColorFromBO(product.label, countryLicense) && \n selectProduct(product)}\n className={E('product', [selectedDemo.id === product.id ? 'active' : ''])}\n >\n {t(product.label)}\n \n )\n })\n }\n\n const isSeeThrougDemo = () => {\n if (!demoType) return false;\n return [\n ProductDemoType.SEE_THROUGH_IMAGE,\n ProductDemoType.SEE_THROUGH_VIDEO\n ].includes(demoType.demoType);\n }\n\n\n const getDynamicLabel = () => {\n if (!isSeeThrougDemo()) return t(selectedDemo.label);\n\n if (seeThroughActivated) return t(selectedDemo.label);\n const stardardDemo = (demoType?.products as any[]).filter(x => x.id === 'standard');\n const standardLabel = stardardDemo.length > 0 ? stardardDemo[0].label : '';\n return t(standardLabel);\n }\n\n const withSellout = () => {\n const withDescription = selectedDemo.description && selectedDemo.description.length > 0;\n if (demoType?.withSellout) return withDescription;\n return withDescription;\n }\n const selectIcon = () => (experience === ExperienceType.SUN ? \"-sun\" : \"\")\n\n // const isTransitions = () =>{\n // if(brandToDemo && demoFrom?.id === 'lensConsultation' && !isSlovakia)\n // return brandToDemo.id === 'transitions'\n // }\n\n \n return (\n
\n {/* {!isOpenSubProducts && !isQrCodeOpen && !isTransitions() && */}\n {!isOpenSubProducts && !isQrCodeOpen &&\n
\n showSubProducts(true)}\n text={getDynamicLabel()}\n icon={disableProductSelection() ? null : `pencil-circle-gray${selectIcon()}`}\n type=\"secondary\"\n outlined={false} />\n\n {withSellout() &&\n setDescription(selectedDemo.description as string[])} />\n }\n
\n }\n
\n {renderSubProducts()}\n showSubProducts(false)}>\n
\n
\n )\n}\n\nexport default ProductDemoSelection;\n","import React, { useEffect, useRef, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport productDemoSlice, { getProductDemo } from '../../../store/slices/products-demo.slice';\nimport productsSlice, { getProducts } from '../../../store/slices/products.slice';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport ProductDemo from './ProductDemo';\nimport ProductDemoSelection from './ProductDemoSelection';\nimport iProductDemo from '../../../interface/product-demo';\nimport ProductDemoType from '../../../types/product-demo.type';\nimport iLensDemo from '../../../interface/lens-demo';\nimport { IndexedDBContext, IndexedDBContextType } from '../../../utils/context/indexedDBContext';\nimport DrawLine from './DrawLine';\nimport {useDrag} from 'react-use-gesture'\nimport {useSpring, animated} from 'react-spring'\nimport DemoTextOverlay from './DemoTextOverlay';\n\n\ninterface Props {\n type: 'page' | 'modal'\n isChangeDemoTypeLoading?:boolean\n}\n\nconst ProductDemoCompare : React.FC = ({\n type,\n isChangeDemoTypeLoading\n}) => {\n // VARIABLES\n const dispatch = useDispatch();\n const [B, E] = useBEM('product-demo-compare');\n const { productToDemo, productToCompare, isQrCodeOpen } = useSelector(getProducts);\n const {\n demoType,\n subDemoType,\n activeProductDemo,\n activeCompareProductDemo,\n syncVideoPlayFlag,\n triggerCenter,\n isCompareEnabled\n } = useSelector(getProductDemo);\n const [sliderValue, setSliderValue] = useState(50);\n const videoRef = useRef();\n const [assetSource, setAssetSource] = useState(null);\n const [finalDemoType, setFinalDemoType] = useState();\n const {get} = React.useContext(IndexedDBContext) as IndexedDBContextType;\n const screenWidth = window.innerWidth\n const vw = Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0)\n const showTextOverLay = finalDemoType?.demo === 'competitor' && isCompareEnabled\n const showTextOverLay2 = finalDemoType?.demo === 'competitor2'\n // HOOKS\n\n const diamondPos = useSpring({x:0})\n\n useEffect(() => {\n setSliderValue(50);\n }, [triggerCenter])\n\n useEffect(() => {\n if(demoType && [\n ProductDemoType.NESTED_DEMO_TRANSVERSAL,\n ProductDemoType.NESTED_DEMO\n ].includes(demoType?.demoType)){\n setFinalDemoType(subDemoType || demoType);\n return; \n }\n setFinalDemoType(demoType)\n }, [subDemoType, demoType])\n\n useEffect(() => {\n if(!videoRef?.current)return;\n if(syncVideoPlayFlag >= 2) {\n setTimeout(() => {\n if(videoRef.current === null)return;\n if(videoRef.current.paused)videoRef.current.play();\n }, 1000)\n }\n }, [syncVideoPlayFlag])\n\n useEffect(() => {\n\n // Note: if asset is not available call updateVideoPlayFlag to play left video\n if(\n !activeCompareProductDemo?.asset &&\n !isImageDemo()\n )dispatch(productDemoSlice.actions.updateVideoPlayFlag(null));\n\n if(!videoRef.current || isImageDemo())return;\n\n videoRef.current.pause();\n videoRef.current.currentTime = 0; \n setTimeout(() => {\n dispatch(productDemoSlice.actions.updateVideoPlayFlag(null));\n });\n\n }, [assetSource])\n \n useEffect(() => {\n dispatch(productsSlice.actions.selectProductToCompare(productToDemo));\n\n return () => {\n dispatch(productDemoSlice.actions.updateVideoPlayFlag(0));\n // back();\n }\n }, [])\n\n useEffect(() => {\n setSliderValue(50)\n return () => {\n dispatch(productDemoSlice.actions.enableCompare(false))\n }\n }, [demoType?.demo])\n \n useEffect(() => {\n if(isImageDemo())return;\n if(videoRef.current){\n videoRef.current.pause();\n videoRef.current.currentTime = 0; \n }\n }, [activeProductDemo]);\n\n const throttle = useRef();\n useEffect(() => { \n if(throttle.current)clearTimeout(throttle.current); \n throttle.current = setTimeout(() => {\n getAssetSource();\n }, 100) \n\n }, [activeCompareProductDemo, finalDemoType])\n\n const onSelectProduct = (product: iProductDemo) => {\n dispatch(productDemoSlice.actions.setActiveProductDemo(product));\n }\n\n const onSelectProductToCompare = (product: iProductDemo | iLensDemo) => {\n\n if(demoType?.demoType === ProductDemoType.NESTED_DEMO){\n const products = (product as iLensDemo).products as iProductDemo[];\n dispatch(productDemoSlice.actions.updateVideoPlayFlag(0));\n dispatch(productDemoSlice.actions.setSubDemoType((product as iLensDemo))); \n dispatch(productDemoSlice.actions.setActiveProductDemo(products[1]));\n dispatch(productDemoSlice.actions.setActiveCompareProductDemo(products[0]));\n return;\n }\n\n dispatch(productDemoSlice.actions.setActiveCompareProductDemo(product as iProductDemo));\n }\n\n const sliderOnChange = (slider: any) => {\n const value = Number(slider.target.value);\n // if(value <= 20 || value >= 80)return;\n setSliderValue(value);\n }\n\n const getAssetSource = () => {\n setAssetSource(null);\n setTimeout(async () => {\n if(!finalDemoType?.demo || !activeCompareProductDemo?.id)return;\n const id = `${finalDemoType?.demo}_${activeCompareProductDemo?.id}`;\n const asset = await get('lensDemoStore', id);\n if(asset)setAssetSource(asset.asset); \n },500)\n }\n \n const isImageDemo = () => {\n if(!finalDemoType?.demoType)return false;\n return [\n ProductDemoType.SLIDER_IMAGE\n ].includes(finalDemoType?.demoType)\n }\n\n const isWithCompareSlider = () => {\n if(\n !finalDemoType?.demoType ||\n (!activeCompareProductDemo?.asset && !finalDemoType?.is360) ||\n finalDemoType?.hideSlider\n )return false;\n\n return ![\n ProductDemoType.SIDE_BY_SIDE_VIDEO\n ].includes(finalDemoType?.demoType)\n }\n\n const productSelectionsWidth = (value: number) => {\n if(value > 20 && value < 80)return sliderValue;\n return sliderValue <= 20 ? 20 : 80\n }\n\n const bindDiamondPos = useDrag((params)=>{\n setSliderValue(sliderValueSetter(params.offset[0], checkOffsetValue(params.offset[0])))\n diamondPos.x.set(Math.abs(params.offset[0]) > ((screenWidth * 0.5) - 30) ? checkOffsetValue(params.offset[0]): params.offset[0])\n })\n\n const sliderValueSetter = (xValue:number, base:number) =>{\n let percent = ((xValue / base) * 100)/2\n if(percent > 50 || percent < 0){\n percent = 50\n }\n return base < 0 ? 50 - percent : 50 + percent\n }\n const checkOffsetValue = (offset: number) =>{\n return offset < 0 ? -(((screenWidth * 0.5) - 30)) : (((screenWidth * 0.5) - 30))\n }\n \n return (\n
\n \n\n \n {\n demoType?.is360 &&\n
\n
\n \n
\n
\n }\n\n
\n\n\n {\n assetSource && \n !isImageDemo() && \n activeCompareProductDemo?.asset && \n \n \n }\n\n {\n assetSource && isImageDemo() &&\n
\n \"\"/ \n
\n }\n\n {\n demoType?.is360 &&\n \n }\n\n
\n\n {\n isWithCompareSlider() &&\n <>\n
\n {\n demoType?.demoType !== ProductDemoType.DIVIDER_VIDEO &&\n \n }\n
\n\n {\n demoType?.demoType !== ProductDemoType.DIVIDER_VIDEO &&\n \n }\n \n }\n {!isChangeDemoTypeLoading && (showTextOverLay || showTextOverLay2) && \n \n }\n\n
\n
\n {\n productToDemo && activeProductDemo &&\n onSelectProduct(p as iProductDemo)}\n />\n }\n\n
\n\n {\n productToCompare && activeCompareProductDemo &&\n onSelectProductToCompare(p)}\n />\n }\n\n
\n
\n )\n}\n\nexport default ProductDemoCompare;","import React from 'react';\nimport useBEM from '../../utils/hooks/useBEM';\n// import useBEM from '../../../utils/hooks/useBEM';\n\ninterface Props {\n type?: 'default' | 'light' | 'white',\n bold?: boolean\n}\n\nconst Text : React.FC = ({\n children,\n type = 'default',\n bold = false\n}) => {\n // VARIABLES\n const [B] = useBEM('text');\n\n // HOOKS\n\n // METHODS\n const modifierClass = () => {\n const classes = [];\n if(bold)classes.push('bold');\n classes.push(type);\n return classes;\n }\n\n return (\n

{children}

\n )\n}\n\nexport default Text;","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport Button from '../../../components/ui/Button';\nimport Text from '../../../components/ui/Text';\nimport { getApp } from '../../../store/slices/app.slice';\nimport { getProductDemo } from '../../../store/slices/products-demo.slice';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport ReactHTMLParser from 'react-html-parser'\n\ninterface Props {\n isOpen: boolean,\n onClose: () => void\n}\n\nconst ProductDescription : React.FC = ({\n isOpen = false,\n onClose\n}) => {\n // VARIABLES\n const [B, E] = useBEM('product-description');\n const { productDescription, isCompareEnabled } = useSelector(getProductDemo);\n const { t } = useTranslation(useSelector(getApp));\n\n // HOOKS\n\n // METHODS\n const getModifiers = () => {\n let modifiers = [];\n if(isOpen)modifiers.push('open')\n if(isCompareEnabled)modifiers.push('compare')\n return modifiers\n }\n\n return (\n
\n
\n
\n
\n )\n}\n\nexport default ProductDescription;","import React from 'react';\nimport useBEM from '../../utils/hooks/useBEM';\n\ninterface Props {\n text?: string,\n color?: string\n}\n\nconst Spinner : React.FC = ({\n text,\n color = '#fff'\n}) => {\n // VARIABLES\n const [B, E] = useBEM('lds-spinner');\n\n // HOOKS\n\n // METHODS\n\n return (\n
\n {\n new Array(12).fill('').map((o,i) => (\n
\n ))\n }\n { text && {text} }\n
\n )\n}\n\nexport default Spinner;","\nimport React, { SetStateAction, useEffect, useRef, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport ButtonGroup from '../../components/ui/ButtonGroup';\nimport productDemoSlice, { getProductDemo } from '../../store/slices/products-demo.slice';\nimport productsSlice, { getProducts } from '../../store/slices/products.slice';\nimport LensFamilyType from '../../types/lens-family.type';\nimport useBEM from '../../utils/hooks/useBEM';\nimport ProductDemo from './components/ProductDemo';\nimport ProductDemoCompare from './components/ProductDemoCompare';\nimport ProductDemoSelection from './components/ProductDemoSelection';\nimport ProductDescription from './components/ProductDescription';\nimport useGoogleAnalytics from '../../utils/hooks/useGoogleAnalytics';\nimport iLensDemo from '../../interface/lens-demo';\nimport iProductDemo from '../../interface/product-demo';\nimport Utils from '../../utils/Utils';\nimport Spinner from '../../components/ui/Spinner';\nimport Button from '../../components/ui/Button';\nimport useGoto from '../../utils/hooks/useGoto';\nimport iButtonGroupButton from '../../interface/button-group-button.interface';\nimport ProductDemoType from '../../types/product-demo.type';\nimport { getLensConsultation } from '../../store/slices/lens-consultation.slice';\nimport useTranslation from '../../utils/hooks/useTranslation';\nimport { getApp } from '../../store/slices/app.slice';\nimport Icon from '../../components/ui/Icon';\nimport { IndexedDBContext, IndexedDBContextType } from '../../utils/context/indexedDBContext';\nimport DemoDownloadType from '../../types/product-download.type';\n// import lensConsultationSun, { getLensConsultationSun } from \"../../store/slices/lens-consultation-sun-exp.slice\"\nimport ExperienceType from '../../types/experience.type';\nimport varluxDemoCategories from '../../constants/variluxG9/varilux-demo-categories';\n\n// transparent XR control icons\nimport Icon_1_white from \"../../assets/svg/varilux-g9/icons/control-1-white.svg\"\nimport Icon_2_white from \"../../assets/svg/varilux-g9/icons/control-2-white.svg\"\nimport Icon_3_white from \"../../assets/svg/varilux-g9/icons/control-3-white.svg\"\nimport Icon_4_white from \"../../assets/svg/varilux-g9/icons/control-4-white.svg\"\nimport Icon_5_white from \"../../assets/svg/varilux-g9/icons/control-5-white.svg\"\n\ninterface Props {\n type?: 'page' | 'modal'\n}\n\nconst Demonstrations : React.FC = ({\n type = 'page'\n}) => {\n \n // VARIABLES\n const [B, E] = useBEM('demonstrations');\n const dispatch = useDispatch();\n const { \n brandToDemo, \n productToDemo, \n demoDownloadStatus, \n preloadedProductDemos,\n isQrCodeOpen\n } = useSelector(getProducts);\n const { \n demoType, \n subDemoType,\n activeProductDemo,\n isControlsDisabled,\n isCompareEnabled,\n lensFamily,\n productDescription,\n recommendationDemo,\n recommendationDemoBrand,\n demoFrom,\n enableDrawLine,\n qrPopup,\n } = useSelector(getProductDemo);\n // const [position, setPosition] = useState('center'); \n const [demoTypes, setDemoTypes] = useState(); \n const { downloadAssetBase64 } = Utils();\n const ga = useGoogleAnalytics();\n const [preloadingComplete, setPreloadingComplete] = useState(false); \n const [preloadCount, setPreloadCount] = useState(0); \n const [preloadCompleteCount, setPreloadCompleteCount] = useState(0); \n const goto = useGoto();\n const [recommendationTypes, setRecommendationTypes] = useState();\n const { lensRecommendation, activePair} = useSelector(getLensConsultation);\n const { t } = useTranslation(useSelector(getApp));\n const [isChangeDemoTypeLoading, changeDemoTypeLoading] = useState(false);\n const { isOpen, selectedProduct } = useSelector(getProducts);\n const {get, insert} = React.useContext(IndexedDBContext) as IndexedDBContextType;\n const mounted = useRef(false);\n const [parentDemo, setParentDemo] = useState();\n const appStore = useSelector(getApp);\n const { experience, accountDetails} = appStore;\n const isSunExp = experience === ExperienceType.SUN\n const country = accountDetails?.shop?.country\n\n // HOOKS\n const [isQrOpen, setIsQrOpen] = useState(false)\n\n useEffect(() => {\n dispatch(productDemoSlice.actions.updateVideoPlayFlag(0))\n mounted.current = true;\n return () => {\n dispatch(productDemoSlice.actions.updateVideoPlayFlag(0));\n dispatch(productDemoSlice.actions.disableControls(false));\n dispatch(productDemoSlice.actions.toggleDrawLine(true));\n dispatch(productDemoSlice.actions.setProductDescription(null));\n mounted.current = false;\n }\n }, []);\n useEffect(() => {\n if(type === 'page'){\n setLensType(lensFamily as LensFamilyType)\n }\n }, []);\n\n useEffect(() => {\n if(!demoType)return;\n\n const eventAction = isOpen ? 'Product' : 'LC';\n ga.event({\n category: `Demo - ${productToDemo?.label}`, \n action: `Demonstration - ${eventAction}`,\n label: `See Demo - ${demoType?.demo}`\n });\n\n }, [demoType, productToDemo])\n\n useEffect(() => {\n const lensTypes: iButtonGroupButton[] = [\n {\n value:'correct',\n label:'demo_demo__correct',\n disabled: !recommendationDemo?.correct\n },\n {\n value:'protect',\n label:'demo_demo__protect_',\n disabled: !recommendationDemo?.protect\n },\n {\n value:'enhance',\n label:'demo_demo__enhance',\n disabled: !recommendationDemo?.enhance\n }\n ]\n setRecommendationTypes(lensTypes);\n }, [recommendationDemo]);\n\n useEffect(() => {\n if(!brandToDemo)return;\n ga.event({\n category: `Demo - Brand`, \n action: brandToDemo.label\n });\n }, [brandToDemo])\n\n useEffect(() => {\n if(!productToDemo)return;\n setDemoTypes(productToDemo.demo?.map( d => ({\n icon: d.demo,\n value: d.demo\n }))); \n // const defaultDemo = (productToDemo.demo as iLensDemo[])[0];\n // changeDemoType(defaultDemo);\n\n setPreloadingComplete(false);\n setPreloadCompleteCount(0);\n preloadDemoAssets(() => {\n if(!mounted.current)return;\n const defaultDemo = (productToDemo.demo as iLensDemo[])[0];\n setParentDemo(defaultDemo);\n changeDemoType(defaultDemo);\n }); \n }, [productToDemo])\n\n useEffect(() => {\n triggerCenter()\n }, [activeProductDemo?.asset])\n\n // METHODS\n const isAlreadyPreloaded = async (demo: string, productId: string) => {\n const id = `${demo}_${productId}`;\n const asset = await get('lensDemoStore',id);\n return asset ? true : false; \n }\n\n const isNested = (type: ProductDemoType) => {\n return [\n ProductDemoType.NESTED_DEMO, \n ProductDemoType.NESTED_DEMO_TRANSVERSAL\n ].includes(type)\n }\n\n const preloadDemoAssets = async (onComplete?: () => void) => {\n const toPreloadAssets: any[] = [];\n productToDemo?.demo?.forEach( d => {\n\n if(d.is360){\n (d.products as iProductDemo[]).forEach( (p) => {\n // if(!p.drawline || isAlreadyPreloaded(d.demo, p.id))return;\n\n if(!p.drawline)return;\n\n const leftright = Object.keys(p.drawline);\n for(const posKey of leftright){\n const pos = (p.drawline as any)[posKey];\n const blurline = Object.keys(pos);\n for(const imgType of blurline){\n const id = `${p.id}_${posKey}-${imgType}`;\n toPreloadAssets.push({\n demo: d.demo,\n productId: id,\n asset: pos[imgType]\n });\n\n }\n }\n });\n return;\n }\n\n if(isNested(d.demoType)) {\n (d.products as iLensDemo[]).forEach( d => {\n (d.products as iProductDemo[]).forEach( p => {\n if(!p.asset)return;\n toPreloadAssets.push({\n demo: d.demo,\n productId: p.id,\n asset: p.asset\n });\n }) \n });\n return;\n }\n\n // Note: stellest start\n let additionalAssets: any[] = [];\n if(d.control) {\n d.control.products.forEach( ( chp: any )=> {\n if(!chp.asset)return;\n toPreloadAssets.push({\n demo: d.control?.demo,\n productId: chp.id,\n asset: chp.asset\n });\n });\n\n d.control.children?.forEach( (ctrlChild) => { \n ctrlChild.products.forEach( ( ctrlChildProduct: any )=> {\n if(!ctrlChildProduct.asset)return;\n toPreloadAssets.push({\n demo: ctrlChild?.demo,\n productId: ctrlChildProduct.id,\n asset: ctrlChildProduct.asset\n });\n });\n })\n }\n // if(d.corect)additionalAssets.push(d.corect);\n\n const children = d.children;\n if(children && children.length > 0 ) {\n children.forEach( ch => {\n ch.products.forEach( ( chp: any )=> {\n if(!chp.asset)return;\n toPreloadAssets.push({\n demo: ch.demo,\n productId: chp.id,\n asset: chp.asset\n });\n });\n });\n }\n\n additionalAssets.forEach( ap => {\n if(!ap.asset)return;\n toPreloadAssets.push({\n demo: d.demo,\n productId: ap.id,\n asset: ap.asset\n });\n });\n // Note: stellest end\n\n (d.products as iProductDemo[]).forEach( (p) => {\n if(!p.asset)return;\n toPreloadAssets.push({\n demo: d.demo,\n productId: p.id,\n asset: p.asset\n });\n });\n });\n\n setPreloadCount(toPreloadAssets.length); // JUMP HERE!\n for (const asset of toPreloadAssets) {\n const isAlreadyDownloaded = await isAlreadyPreloaded(asset.demo, asset.productId)\n if(!isAlreadyDownloaded){\n const base64 = await downloadAssetBase64(asset.asset);\n await insert('lensDemoStore', {\n ...asset, \n id: `${asset.demo}_${asset.productId}`,\n asset: base64,\n });\n }\n setPreloadCompleteCount(prev => prev + 1);\n }\n setPreloadingComplete(true);\n if(onComplete)onComplete();\n dispatch(productsSlice.actions.productPreloadComplete(productToDemo?.id as string))\n }\n\n\n const getSubDemoTypes = (demo: iLensDemo) => {\n return (demo.products as iLensDemo[]).filter( d => {\n return (d.products as iProductDemo[]).filter( (p) => p.id === productToDemo?.id).length > 0\n });\n }\n\n const changeDemoType = (demo: iLensDemo) => {\n if(isChangeDemoTypeLoading)return;\n dispatch(productDemoSlice.actions.updateVideoPlayFlag(0));\n changeDemoTypeLoading(true);\n setTimeout(() => {\n changeDemoTypeLoading(false);\n }, 1500);\n const isGrXperioMirror = country === 'gr' && demo.label === 'Xperio Mirrors'\n const isGrXperioPolarised = country === 'gr' && demo.label === 'Xperio Polarised'\n const isCoTransitionMirrors = country === 'co' && demo.label === 'Transitions Style Mirrors'\n const isCoXperioMirrors = country === 'co' && demo.label === 'Xperio Mirrors'\n \n if(isNested(demo.demoType)){\n const demoToUse = getSubDemoTypes(demo)[0];\n\n dispatch(productDemoSlice.actions.enableCompare(true));\n dispatch(productDemoSlice.actions.changeDemoType(demo)); \n dispatch(productDemoSlice.actions.setSubDemoType(demoToUse)); \n const rightAssset = (demoToUse.products as iProductDemo[]).filter(p => p.id === productToDemo?.id)[0];\n const leftVideo = (demoToUse.products as iProductDemo[]).filter(p => p.id === 'standard')[0];\n dispatch(productDemoSlice.actions.setActiveProductDemo(leftVideo));\n dispatch(productDemoSlice.actions.setActiveCompareProductDemo(rightAssset));\n return;\n }\n\n const isTransversal = demo.products.length >= 3;\n const productsToUse = demo.products as iProductDemo[];\n // let activeProductDemo = productsToUse.filter(p => p.id === productToDemo?.id)[0];\n let activeProductDemo = isCoXperioMirrors ? productsToUse.filter(p => p.id === 'standard10')[0] :\n isCoTransitionMirrors ? productsToUse.filter(p => p.id === 'standard10')[0] :\n isGrXperioMirror ? productsToUse.filter(p => p.id === 'standard14')[0] : \n isGrXperioPolarised ? productsToUse.filter(p => p.id === 'standard6')[0] : \n productsToUse.filter(p => p.id === productToDemo?.id)[0];\n \n const isDividerOnly = demo.demoType === ProductDemoType.DIVIDER_VIDEO;\n\n // Note: compare is enable by default if\n // Transversal , Divider, Child demo\n const isCompare = ( isTransversal && !demoType?.is360 ) || isDividerOnly || demo.compareByDefault === true;\n \n dispatch(productDemoSlice.actions.enableCompare(isCompare));\n\n dispatch(productDemoSlice.actions.changeDemoType(demo)); \n\n\n // Note: if compare, set left and right video/image\n if( isCompare ) {\n // let leftVideo = productsToUse.filter(p => p.id === 'standard')[0];\n let leftVideo = isCoXperioMirrors ? productsToUse.filter(p => p.id === 'standard14')[0] :\n isCoTransitionMirrors ? productsToUse.filter(p => p.id === 'standard14')[0] :\n isGrXperioMirror ? productsToUse.filter(p => p.id === 'standard9')[0] : \n isGrXperioPolarised ? productsToUse.filter(p => p.id === 'standard4')[0] : \n productsToUse.filter(p => p.id === 'standard')[0];\n\n // set default color to demo for PROTECT \n if(lensFamily === LensFamilyType.PROTECT && type === 'page' && lensRecommendation){\n const protect = lensRecommendation[activePair]?.protect;\n if(protect && protect?.length > 0 && protect[0].color){\n const selectedColor = productsToUse.filter(p => p.colorID === protect[0].color?.id)[0];\n if(selectedColor) activeProductDemo = selectedColor; \n }\n\n // change the left video if it is equal to right video\n if(leftVideo.id === activeProductDemo.id){\n leftVideo = productsToUse.filter(p => p.id !== activeProductDemo.id)[0];\n }\n }\n dispatch(productDemoSlice.actions.setActiveProductDemo(leftVideo));\n dispatch(productDemoSlice.actions.setActiveCompareProductDemo(activeProductDemo));\n } else {\n dispatch(productDemoSlice.actions.setActiveProductDemo(activeProductDemo));\n }\n }\n\n const hideDescription = () => {\n dispatch(productDemoSlice.actions.setProductDescription(null))\n }\n\n const toggleCompare = (demo: iLensDemo | undefined, forceValue?: boolean) => {\n changeDemoTypeLoading(true);\n setTimeout(() => {\n changeDemoTypeLoading(false);\n }, 1500);\n dispatch(productDemoSlice.actions.updateVideoPlayFlag(0));\n const enable = forceValue !== undefined ? forceValue : !isCompareEnabled;\n\n const productsToUse = (demoType?.demoType && isNested(demoType?.demoType) ? subDemoType : demoType)?.products as iProductDemo[];\n \n if(!activeProductDemo)return;\n if(!demo)return;\n if(demo?.products.length < 2)return;\n const isGrXperioMirror = country === 'gr' && demo.label === 'Xperio Mirrors'\n const isGrXperioPolarised = country === 'gr' && demo.label === 'Xperio Polarised'\n const isCoTransitionMirrors = country === 'co' && demo.label === 'Transitions Style Mirrors'\n const isCoXperioMirrors = country === 'co' && demo.label === 'Xperio Mirrors'\n\n if(demo?.products.length >= 3) {\n //Note: transversal\n const leftVideoID = enable ? 'standard' : productToDemo?.id;\n // let leftVideo = productsToUse.filter( p => p.id === leftVideoID)[0];\n let leftVideo = isCoXperioMirrors ? productsToUse.filter(p => p.id === 'standard14')[0] :\n isCoTransitionMirrors ? productsToUse.filter(p => p.id === 'standard14')[0] :\n isGrXperioMirror ? productsToUse.filter(p => p.id === 'standard9')[0] : \n isGrXperioPolarised ? productsToUse.filter(p => p.id === 'standard4')[0] : \n productsToUse.filter(p => p.id === 'standard')[0];\n \n if(leftVideoID === \"standard\" && !leftVideo){\n // leftVideo = productsToUse.filter( p => p.id !== productToDemo?.id)[0];\n leftVideo = isCoXperioMirrors ? productsToUse.filter(p => p.id === 'standard14')[0] :\n isCoTransitionMirrors ? productsToUse.filter(p => p.id === 'standard14')[0] :\n isGrXperioMirror ? productsToUse.filter(p => p.id === 'standard9')[0] : \n isGrXperioPolarised ? productsToUse.filter(p => p.id === 'standard4')[0] : \n productsToUse.filter(p => p.id === 'standard')[0];\n }\n\n // const rightVideo = enable ? productsToUse.filter( p => p.id === productToDemo?.id)[0] : undefined;\n const rightVideo = (enable && isCoXperioMirrors) ? productsToUse.filter(p => p.id === 'standard10')[0] :\n (enable && isCoTransitionMirrors) ? productsToUse.filter(p => p.id === 'standard10')[0] :\n (enable && isGrXperioMirror) ? productsToUse.filter(p => p.id === 'standard14')[0] :\n (enable && isGrXperioPolarised) ? productsToUse.filter(p => p.id === 'standard6')[0] :\n enable ? productsToUse.filter( p => p.id === productToDemo?.id)[0] : undefined;\n \n dispatch(productDemoSlice.actions.setActiveCompareProductDemo(rightVideo));\n if(leftVideo){\n dispatch(productDemoSlice.actions.setActiveProductDemo(leftVideo));\n }\n\n } else {\n const standard = productsToUse.filter( p => p.id === 'standard')[0];\n const withEffects = productsToUse.filter( p => p.id === productToDemo?.id)[0];\n const leftVideo = enable ? standard : withEffects;\n if(leftVideo)dispatch(productDemoSlice.actions.setActiveProductDemo(leftVideo));\n\n dispatch(productDemoSlice.actions.setActiveCompareProductDemo(enable ? withEffects: undefined));\n }\n\n dispatch(productDemoSlice.actions.enableCompare(enable));\n }\n\n const setLensType = (value: LensFamilyType) => {\n dispatch(productDemoSlice.actions.openQrPopup(false))\n dispatch(productDemoSlice.actions.changeDemoType(undefined));\n dispatch(productDemoSlice.actions.setActiveProductDemo(undefined));\n dispatch(productDemoSlice.actions.setActiveCompareProductDemo(undefined));\n dispatch(productsSlice.actions.selectBrandTodemo(undefined))\n dispatch(productDemoSlice.actions.selectLensFamily(value)); \n setTimeout(() => {\n if(!recommendationDemo || !recommendationDemoBrand)return;\n const newProductToDemo = recommendationDemo[value];\n const newBrand = recommendationDemoBrand[value];\n\n dispatch(productsSlice.actions.selectBrandTodemo(newBrand))\n dispatch(productsSlice.actions.selectProductTodemo(newProductToDemo))\n }, 500);\n }\n\n const onSelectProduct = (product: iProductDemo) => {\n dispatch(productDemoSlice.actions.setActiveProductDemo(product));\n }\n const back = () => {\n if(!demoFrom)return;\n goto.route(demoFrom); \n }\n\n // const enableProductSelection = () => {\n // if(!demoType)return false;\n // return ![\n // ProductDemoType.SEE_THROUGH_IMAGE,\n // ProductDemoType.SEE_THROUGH_VIDEO\n // ].includes(demoType?.demoType);\n // }\n\n const isDemoWithCompare = () => {\n if(!demoType || demoType.hideCompareButton )return false;\n return ![\n ProductDemoType.SEE_THROUGH_IMAGE,\n ProductDemoType.SEE_THROUGH_VIDEO,\n ProductDemoType.VIDEO,\n ProductDemoType.NESTED_DEMO,\n ProductDemoType.DIVIDER_VIDEO\n ].includes(demoType?.demoType);\n }\n\n const isDemoWithCenter = () => {\n if(!demoType || demoType.hideCenterButton )return false;\n\n return ![\n ProductDemoType.SEE_THROUGH_IMAGE,\n ProductDemoType.SEE_THROUGH_VIDEO,\n ProductDemoType.SIDE_BY_SIDE_VIDEO,\n ProductDemoType.VIDEO,\n ProductDemoType.DIVIDER_VIDEO\n ].includes(demoType?.demoType);\n }\n\n const selectSubDemo = (subDemo: iLensDemo) => {\n if(isChangeDemoTypeLoading)return;\n changeDemoTypeLoading(true);\n setTimeout(() => {\n changeDemoTypeLoading(false);\n }, 1000);\n\n dispatch(productDemoSlice.actions.setSubDemoType(subDemo)); \n const rightAssset = (subDemo.products as iProductDemo[]).filter(p => p.id === productToDemo?.id)[0]; \n if(!isCompareEnabled){\n dispatch(productDemoSlice.actions.setActiveProductDemo(rightAssset));\n dispatch(productDemoSlice.actions.setActiveCompareProductDemo(undefined));\n return;\n }\n const leftVideo = (subDemo.products as iProductDemo[]).filter(p => p.id === 'standard')[0];\n dispatch(productDemoSlice.actions.setActiveProductDemo(leftVideo));\n dispatch(productDemoSlice.actions.setActiveCompareProductDemo(rightAssset));\n }\n\n const triggerCenter = () => {\n dispatch(productDemoSlice.actions.triggerCenter());\n }\n\n const toggleDrawLine = () => {\n dispatch(productDemoSlice.actions.toggleDrawLine(!enableDrawLine))\n }\n\n const isProductHasSubDemo = (products: iProductDemo[]) => {\n return products.filter( p => p.id === productToDemo?.id).length > 0\n }\n\n const selectChildDemo = (option: string) => {\n if(\n !parentDemo || \n !parentDemo.children\n )return;\n\n if(!option){\n changeDemoType(parentDemo); \n return;\n }\n\n const toDemo = parentDemo.children.filter(d => d.demo === option)[0];\n if(toDemo)changeDemoType(toDemo); \n }\n\n const showControlChildren = () => {\n return ( parentDemo?.control &&\n parentDemo?.control.demo === demoType?.demo ) ||\n (demoType && parentDemo?.control?.children?.map( x => x.demo).includes(demoType?.demo))\n }\n\n const onSelectControl = (v: string) => {\n if(demoType?.demo === v || !parentDemo)return;\n const toSelect = parentDemo.control?.demo === v ? \n parentDemo.control : \n parentDemo;\n\n changeDemoType(toSelect); \n }\n\n const preloadCountProgress = () => {\n if(!brandToDemo)return;\n const brandIsDownloaded = demoDownloadStatus && \n demoDownloadStatus[brandToDemo.id] &&\n demoDownloadStatus[brandToDemo.id].status === DemoDownloadType.COMPLETED;\n const productIsPreloaded = (preloadedProductDemos || []).includes(productToDemo?.id as string); \n console.log(preloadedProductDemos); \n if( brandIsDownloaded || productIsPreloaded)return '';\n return `${preloadCompleteCount}/${preloadCount}`;\n }\n\n // const isTransitions = () =>{\n // if(brandToDemo && demoFrom?.id === 'lensConsultation')\n // return brandToDemo.id === 'transitions'\n // }\n\n const openQrCode = () =>{\n dispatch(productDemoSlice.actions.openQrPopup(!qrPopup));\n }\n\n const filteredDemotypes = (demotypes:any) =>{\n if(!demotypes)return []\n const isNordicsCountries = country && ['dk', 'se', 'fi', 'no'].includes(country)\n let finalDemotypes\n if(isNordicsCountries){\n return finalDemotypes = demotypes.filter((demo:any) => demo.value !== 'field-of-vision')\n }else{\n return finalDemotypes = demotypes\n }\n }\n\n const selectRGB = () => (experience === ExperienceType.SUN ? \"215 64 0\" : \"0 134 214\")\n const selectIcon = () => (experience === ExperienceType.SUN ? \"-sun\" : \"\")\n\n\t// DEFAULT CANVAS WITHOUT XR CONTROLS\n const mainCanvas = () => {\n return (\n
\n {/* JUMP */}\n {/* JUMP - VIDEO PLAYER CONTAINER */}\n {\n !isCompareEnabled && productToDemo && activeProductDemo &&\n <>\n onSelectProduct(p as iProductDemo)}\n /> \n \n \n }\n\n { qrPopup &&
\n
\n
\n
\n \n
\n {t('vto_transitions_header')}\n
\n
\n

\n

    \n
  • \n {t('vto_transitions_try_out')}\n
  • \n
  • \n 1 -\n {t('vto_transitions_try_out_step_1')}\n
  • \n
  • \n 2 -\n

    \n {t('vto_transitions_try_out_step_2')}\n

    \n
  • \n
  • \n 3 - \n

    \n {t('vto_transitions_try_out_step_3')}\n

    \n
  • \n
\n

\n
\n
\n \n
\n
\n
\n {t('vto_transitions_try_out_step_note')}\n
\n
\n
\n
}\n \n hideDescription()}/> \n\n { isCompareEnabled && }\n\n { demoType?.demoType === ProductDemoType.NESTED_DEMO_TRANSVERSAL &&\n
\n {\n (demoType.products as iLensDemo[]).map( d => (\n isProductHasSubDemo(d.products as iProductDemo[]) && \n \n ))\n }\n
}\n\n\n { \n parentDemo && parentDemo.control &&\n showControlChildren() &&\n
\n
\n } \n {/* { \n isTransitions() && type === 'page' &&\n
\n
\n } \n */}\n
\n )\n }\n\n\n // JUMP - array for added buttons\n // 1. label needed to be change as correlated to its translation - incomplete \n const btnData = [\n {\n isSelected: false,\n selectedIcon: Icon_1_white,\n label: ['ec_varilux_xr_benefit_instant','Instant sharpness at all distances, even in motion'],\n category: \"GPS\"\n },\n {\n isSelected: false,\n selectedIcon: Icon_2_white,\n label: ['ec_varilux_xr_benefit_stabilized', 'Stabilized vision even in the most demanding situations'],\n category: \"STAIRS\"\n },\n {\n isSelected: false,\n selectedIcon: Icon_3_white,\n label: ['ec_varilux_xr_benefit_panoramic', \"Panoramic field of vision\"],\n category: \"TROTT\"\n },\n {\n isSelected: false,\n selectedIcon: Icon_4_white,\n label: ['ec_varilux_xr_benefit_sharp', \"High visual acuity even in low light conditions\"],\n category: \"LIVRE\"\n },\n {\n isSelected: false,\n selectedIcon: Icon_5_white,\n label: ['ec_varilux_xr_benefit_extended',\"Natural posture in all circumstances\"],\n category: \"TABLETTE\"\n },\n ]\n\n const productsName = [\n {\n isSelected: true, // set to true when initial loaded\n productName: 'Varilux® X series™',\n product: \"xseries\"\n },\n {\n isSelected: false,\n productName: 'Varilux® Physio 3.0',\n product: \"physio\"\n },\n {\n isSelected: false,\n productName: 'Varilux® Comfort',\n product: \"xseries\"\n },\n {\n isSelected: false,\n productName: 'Premium Progressive Lenses',\n product: \"xseries\"\n }\n ]\n\n interface iCurrentDemo {\n selectedButtonIndex: number,\n selectedProductIndex: number,\n selectedProductName: string,\n category: string,\n label: string[],\n }\n\n const initialCurrentDemoState: iCurrentDemo = {\n selectedButtonIndex: 0,\n selectedProductIndex: 1, // product number in indexedDB\n selectedProductName: 'Varilux® X series™', // from selected product default value\n category: '', // from selected button\n label: [],\n }\n\n const [currentDemo, setCurrentDemo] = useState(initialCurrentDemoState)\n const [showNewCanvas, setShowNewCanvas] = useState(false)\n const [showSubProducts, setShowSubProducts] = useState(false);\n const [showNewControls, setShowControls] = useState(false)\n const [controlButtonData, setControlButtonData] = useState(btnData)\n const [productSelection, setProductSelection] = useState(productsName) // only used for styling\n const [videoAssetArray, setVideoAssetArray] = useState([]) // SRC FOR VIDEO TAG \n\n useEffect(() => {\n controlBtnClickHandler(0)\n }, [])\n\n useEffect(() => {\n if (currentDemo.category !== \"\") {\n let leftVideoKey = getAssetMatrix(currentDemo.selectedButtonIndex, currentDemo.selectedProductIndex)\n getVideoFromIndexedDB(leftVideoKey as string, currentDemo.category)\n }\n\n const controlTimer = setTimeout(() => {\n setShowControls(true)\n }, 1800)\n\n return () => {\n clearTimeout(controlTimer)\n }\n }, [currentDemo]);\n\n // return video key base on the video matrix\n const getAssetMatrix = (categoryIndex: number, productLevel: number): string => {\n if (productLevel === 1) {\n switch (categoryIndex) {\n case 0:\n return currentDemo.category + \"_\" + (productLevel + 1).toString()\n case 1:\n case 2:\n case 3:\n case 4:\n return currentDemo.category + \"_\" + (productLevel).toString()\n\n default:\n return ''\n }\n } else if (productLevel === 2) {\n switch (categoryIndex) {\n case 0:\n return currentDemo.category + \"_\" + (productLevel + 1).toString()\n case 1:\n case 2:\n case 4:\n return currentDemo.category + \"_\" + (productLevel).toString()\n case 3:\n return currentDemo.category + \"_\" + (productLevel - 1).toString()\n default:\n return ''\n }\n } else if (productLevel === 3) {\n switch (categoryIndex) {\n case 0:\n case 2:\n return currentDemo.category + \"_\" + (productLevel).toString()\n case 1:\n return currentDemo.category + \"_\" + (productLevel - 1).toString()\n case 3:\n case 4:\n return currentDemo.category + \"_\" + (productLevel - 2).toString()\n default:\n return ''\n }\n } else if (productLevel === 4) {\n switch (categoryIndex) {\n case 0:\n case 2:\n case 3:\n case 4:\n return currentDemo.category + \"_\" + (productLevel - 1).toString()\n case 1:\n return currentDemo.category + \"_\" + (productLevel - 2).toString()\n\n default:\n return ''\n }\n } else {\n return 'no video'\n }\n }\n\n const getVideoFromIndexedDB = async (key: string, category?: string) => {\n let leftVideo = await get(\"variluxG9Store\", key)\n let rightVideo = await get(\"variluxG9Store\", category + \"_0\")\n \n \n if (leftVideo && rightVideo) {\n let arr = []\n arr.push(leftVideo)\n arr.push(rightVideo)\n\n setVideoAssetArray(arr)\n }\n }\n\n const controlBtnClickHandler = (i: number) => {\n setControlButtonData(controlButtonData.map((item: any, index: number) => {\n if (index === i) {\n return {\n ...item,\n isSelected: true\n }\n } else {\n return {\n ...item,\n isSelected: false\n }\n }\n }))\n setCurrentDemo({\n ...currentDemo,\n selectedButtonIndex: i,\n category: controlButtonData[i].category,\n label: btnData[i].label\n })\n }\n\n const selectSubProductHandler = (id: number) => {\n setProductSelection(productSelection.map((product, index: number) => {\n if (id === index) {\n return {\n ...product,\n isSelected: true\n }\n } else {\n return {\n ...product,\n isSelected: false\n }\n }\n }))\n setCurrentDemo({\n ...currentDemo,\n selectedProductName: productsName[id].productName,\n selectedProductIndex: id + 1\n })\n }\n\n const showOtherProducts = () => {\n setShowNewCanvas(true)\n }\n\n // this code is called when the previous demo control buttons is selected\n const extraControlDisabler = () => {\n setShowNewCanvas(false)\n setControlButtonData(btnData)\n setShowSubProducts(false)\n setCurrentDemo(initialCurrentDemoState)\n setShowControls(false)\n }\n\n // CHECK IF XR PRODUCT IS AVAILABLE AND SELECTED IN THE PRODUCT SELECTION\n const canvas = () => {\n if (selectedProduct && selectedProduct === \"varilux_xr_series\") {\n return (\n
\n
\n
\n {\n videoAssetArray.map((asset: any, index: number) => {\n if (index === 0) {\n return (\n
\n \n
\n )\n }\n return (\n
\n \n
\n )\n })\n }\n
\n
\n
\n )\n } else {\n return mainCanvas()\n }\n }\n\n return (\n
\n { !preloadingComplete &&\n
\n \n\n \n
}\n\n { preloadingComplete && type === 'page' && demoFrom &&\n }\n\n\n {\n preloadingComplete && \n <>\n\t\t\t\t\t\t\t{/* JUMP - XR CONDITION */}\n {canvas()}\n\n { !isQrCodeOpen &&
\n {\n demoTypes &&\n {\n if(!v)return;\n const toDemo = productToDemo?.demo?.filter(d => d.demo === v)[0];\n if(toDemo)changeDemoType(toDemo); \n setParentDemo(toDemo);\n\n ga.event({\n category: `Demo - Brand`, \n action: brandToDemo?.label\n });\n }}\n buttons={filteredDemotypes(demoTypes)}\n productId={productToDemo?.id}\n extraControlDisabler={extraControlDisabler} // JUMP\n showNewCanvas={showNewCanvas} // JUMP\n />\n }\n\n {/* { isDemoWithCenter() && !isTransitions() && */}\n { isDemoWithCenter() &&\n triggerCenter()}\n buttons={[{\n value:'center',\n label:'demo_demo_center'\n }]}\n extraControlDisabler={extraControlDisabler} // JUMP\n showNewCanvas={showNewCanvas} // JUMP\n /> \n }\n\n { demoType?.is360 &&\n toggleDrawLine()}\n buttons={[{\n value:'draw-line',\n label:t('demo__draw_line') \n }]}\n extraControlDisabler={extraControlDisabler} // JUMP\n showNewCanvas={showNewCanvas} // JUMP \n /> \n }\n\n \n { //temporary hidden\n // isDemoWithCompare() && !isTransitions() &&\n isDemoWithCompare() &&\n toggleCompare(demoType)}\n buttons={[{\n value:'compare',\n label: 'demo_demo__compare'\n }]}\n extraControlDisabler={extraControlDisabler} // JUMP\n showNewCanvas={showNewCanvas} // JUMP\n /> \n }\n\n {\n parentDemo?.control &&\n { \n const isChildControlSelected = parentDemo?.control.children?.\n map( x => x.demo).includes(demoType?.demo || '');\n if(isChildControlSelected)return parentDemo?.control.demo;\n\n return demoType?.demo;\n })()}\n onSelect={ onSelectControl }\n buttons={[\n { \n value: parentDemo.demo, \n label: t('demo_demo__correct')\n },\n { \n value: parentDemo?.control.demo, \n label: t('_control'), \n instruction: t(parentDemo?.control.instruction || '') \n }\n ]}\n extraControlDisabler={extraControlDisabler} // JUMP\n showNewCanvas={showNewCanvas} // JUMP \n /> \n }\n\n\n { type === 'page' && recommendationTypes &&\n setLensType(v as LensFamilyType)}\n buttons={recommendationTypes}/> }\n { isControlsDisabled &&
}\n\n {\n parentDemo?.children && \n ({\n value: x.demo,\n label: t(x.label || '') \n }))} \n extraControlDisabler={extraControlDisabler} // JUMP\n showNewCanvas={showNewCanvas} // JUMP \n />\n }\n
} \n\n {/* JUMP - NEW CONTROLS FOR XR VARILUX ADDITION */}\n {\n ((type === 'modal' || type === \"page\") && selectedProduct === \"varilux_xr_series\") && (\n
\n
\n {\n !showSubProducts && (\n

\n {currentDemo.selectedProductName ? \n currentDemo.selectedProductName : 'Varilux® X series™'\n }\n \n {\n setShowSubProducts(true)\n dispatch(productDemoSlice.actions.disableControls(true));\n }} \n />\n \n

\n )\n }\n\n {/*
\n
\n
{\n setShowSubProducts(false)\n dispatch(productDemoSlice.actions.disableControls(false));\n }} \n >
\n
\n \n
\n {\n productSelection.map((product, ii) => (\n
{\n selectSubProductHandler(ii)\n setVideoAssetArray([])\n }} \n > \n {product.productName}\n
\n ))\n }\n
\n
\n\n\n
\n {\n controlButtonData?.map((btn: any, i: number) => (\n
controlBtnClickHandler(i)} \n >\n {/* {\n btn.isSelected ? \n : \n \n } */}\n \n
\n ))\n }\n
\n
\n\n
\n

Varilux® XR series™

{/* JUMP - CAN BE CHANGE IN THE FUTURE */}\n

{t(currentDemo.label[0], currentDemo.label[1])}

\n\n { type === 'page' && recommendationTypes &&\n setLensType(v as LensFamilyType)}\n buttons={recommendationTypes}/> }\n { isControlsDisabled &&
} \n
\n
\n )\n }\n \n } \n
\n )\n}\n\nexport default Demonstrations;\n\n\n","import React, { useEffect, useState, useRef } from 'react';\nimport ReactDOM from 'react-dom';\nimport useBEM from '../utils/hooks/useBEM';\nimport Icon from './ui/Icon';\nimport SvgIcon from './../components/ui/svg-icon/SvgIcon';\nimport { useSelector, useDispatch } from 'react-redux';\nimport appSlice, { getApp } from '../store/slices/app.slice';\nimport productsSlice, { getProducts } from '../store/slices/products.slice'\nimport ProductDemo from '../pages/demonstrations/components/ProductDemo';\nimport Demonstrations from '../pages/demonstrations/Demonstrations';\n\nimport { IndexedDBContext, IndexedDBContextType } from '../utils/context/indexedDBContext';\nimport useTranslation from '../utils/hooks/useTranslation';\ninterface Props {\n show?: boolean,\n onClose?: () => void,\n hideCloseButton?: boolean,\n closeModalOnOutsideClick?: boolean,\n rightHeaderDetail?: string,\n height?: string,\n width?: string,\n\n radius?: string,\n className?: string,\n transparent?: boolean,\n style?: {\n width?: string,\n heigth?: string,\n borderRadius?: string\n },\n noPadding?: boolean\n closeButtonColor?:string,\n}\n\nconst Modal : React.FC = ({\n onClose,\n show = false,\n children,\n hideCloseButton = false,\n closeModalOnOutsideClick = true,\n rightHeaderDetail = \"\",\n height,\n width,\n radius,\n className = '',\n transparent = false,\n style,\n noPadding = false,\n closeButtonColor,\n}) => {\n\n // VARIABLES\n const [B, E] = useBEM('modal');\n const portal: any = document.getElementById(\"portal\");\n const [isWithBanner, withBanner] = useState(false);\n const {experience, isModalOpen, } = useSelector(getApp);\n const {isQrCodeOpen } = useSelector(getProducts);\n const { t } = useTranslation(useSelector(getApp));\n const dispatch = useDispatch();\n const {get} = React.useContext(IndexedDBContext) as IndexedDBContextType;\n // HOOKS\n const videoRef = useRef();\n useEffect(() => {\n if(!show || !style)return;\n dispatch(appSlice.actions.setIsModalOpen(true))\n const bannerElement = document.getElementById('onetrust-banner-sdk');\n const visible = (bannerElement && bannerElement.style.display !== 'none');\n withBanner(visible as boolean);\n }, [show])\n\n useEffect(()=>{\n getAssetSource()\n },[])\n\n const [assetSource, setAssetSource] = useState()\n\n // METHODS\n const onCloseHandler = () => {\n if(onClose){\n dispatch(appSlice.actions.setIsModalOpen(false))\n dispatch(productsSlice.actions.openQrCode(false))\n onClose();\n }\n }\n\n const overlayOnClickHandler = () => {\n if(closeModalOnOutsideClick) onCloseHandler()\n }\n\n const customStyles = () => {\n return style ? style : {\n width,\n height,\n borderRadius: radius\n }\n }\n\n const mofifierClass = () => {\n let classes: string[] = [];\n if(transparent) classes.push('transparent');\n if(noPadding) classes.push('no-padding');\n if(isWithBanner)classes.push('with-banner');\n\n return classes;\n }\n\n const closemodal =() =>{\n dispatch(productsSlice.actions.openQrCode(!isQrCodeOpen))\n }\n\n const getAssetSource = async()=>{\n let asset;\n const demo = 'video-advertisement-gen-8'\n const id = `${demo}_standar1`\n asset = await get('lensDemoStore', id)\n if(asset)setAssetSource(asset.asset)\n }\n\n if(!show) return null;\n return ReactDOM.createPortal(\n <>\n
\n
\n \n {\n !hideCloseButton && \n \n // \n
onCloseHandler()}\n >\n \n
\n }\n\n {\n hideCloseButton && rightHeaderDetail !== undefined && \n

{rightHeaderDetail}

\n }\n\n\n
\n {children}\n
\n \n {\n isQrCodeOpen &&\n
\n
\n
\n

\n {t('vto_transitions_header')}\n

\n
\n \n
\n
\n \n
\n
\n }\n
\n ,\n portal\n )\n}\n\nexport default Modal;","import React from 'react';\n\ninterface Props {\n value?: string | number,\n placeholder?: string,\n className?: string,\n maxlength?: number,\n onChange?: (event: any) => void,\n type?: 'default' | 'light' | 'light-gray',\n inputType?: 'text' | 'password' | 'number' | 'email' | 'date'\n}\n\nconst InputText = React.forwardRef(({\n placeholder,\n className,\n maxlength,\n onChange,\n value,\n type = 'default',\n inputType = 'text'\n}, ref) => {\n\n const blockClass = 'input-text';\n const onChangeHandler = (event: any) => {\n if(onChange)onChange(event);\n }\n\n const dynamicClass = () => {\n const classes = [blockClass, className];\n classes.push(`${blockClass} ${blockClass}--${type}`);\n return classes.join(\" \");\n }\n\n return \n }\n);\n\nexport default InputText;\n\n","import React, { useEffect, useState } from 'react';\nimport Button from '../../../components/ui/Button';\nimport { useSelector } from 'react-redux';\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport { getApp } from '../../../store/slices/app.slice';\ninterface Props {\n isVisible: boolean,\n onSelect: (type: 'qrcode' | 'id' | 'waiting-list' | 'patient-list') => void\n}\n\nconst StartFrom : React.FC = ({\n isVisible = true,\n onSelect\n}) => {\n // VARIABLES\n const [isShow, setShow] = useState(Boolean);\n const { t } = useTranslation(useSelector(getApp));\n // HOOKS\n useEffect(() => {\n\n const delay = isVisible ? 750 : 0;\n setTimeout(() => {\n setShow(isVisible);\n },delay);\n }, [isVisible]);\n\n // METHODS\n\n return (\n
\n
{t('home_hom_start_from')}
\n\n {/* onSelect('waiting-list')}\n icon=\"qrcode\"\n text={t('home_hom_waitlist')}\n type=\"secondary\"/> */}\n\n onSelect('patient-list')}\n text={t('masterlicense_patientlist')}\n type=\"secondary\"\n />\n\n onSelect('qrcode')}\n icon=\"qrcode\"\n text={t('home_hm_qr_code')}\n type=\"secondary\"\n soon\n />\n onSelect('id')}\n icon=\"stacked-group\"\n text={t('home_hom_id')}\n type=\"secondary\"/>\n
\n )\n}\n\nexport default StartFrom;\n","import iAgeCategory from \"../interface/age-category.interface\";\nimport AgeCategoryType from \"../types/age-category.type\";\n\nconst ageCategories: iAgeCategory[] = [\n { label: 'home_hom_kids', value: AgeCategoryType.KIDS },\n { label: 'home_hom_yadult', value: AgeCategoryType.YOUNG_ADULT },\n { label: 'home_hom_adult', value: AgeCategoryType.ADULT }\n];\nexport default ageCategories;\n","import React, { useEffect, useState } from 'react';\nimport ageCategories from '../../../constants/home.contants';\nimport routes from '../../../constants/routes.constant';\nimport iAgeCategory from '../../../interface/age-category.interface';\nimport { useDispatch, useSelector } from 'react-redux';\nimport userSlice from '../../../store/slices/user.slice';\nimport useGoto from '../../../utils/hooks/useGoto';\nimport needExplorerSlice from '../../../store/slices/need-explorer.slice';\nimport { getProducts } from '../../../store/slices/products.slice';\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport { getApp } from '../../../store/slices/app.slice';\n\n\ninterface Props {\n isVisible: boolean,\n}\n\n\nconst AgeCategory : React.FC = ({\n isVisible = false,\n}) => {\n // VARIABLES\n const goto = useGoto();\n const dispatch = useDispatch();\n const choices = ageCategories;\n const [choiced, setChoiced ] = useState();\n const [isShow, setShow] = useState(Boolean);\n const { t } = useTranslation(useSelector(getApp));\n\n // HOOKS\n useEffect(() => {\n\n const delay = isVisible ? 700 : 0;\n setTimeout(() => {\n setShow(isVisible);\n },delay);\n\n }, [isVisible]);\n\n // METHODS\n const activeChoiceID = (choice: iAgeCategory) => {\n if(!choiced)return \"\";\n return choiced.value === choice.value ? 'age-category__choice--active' : '';\n }\n\n const onSelectCategory = (choice: iAgeCategory) => {\n setChoiced(choice);\n \n // TODO\n // CREATE A FUNCTION TO GENERATE\n // VALIDATE IF ALREADY EXIST\n \n setTimeout(() => {\n goto.routeWithTransition(\n routes.home, \n routes.lensProposalBuilder,\n 'SLIDE_LEFT',\n 500\n );\n\n setTimeout(() => {\n const id = Math.floor(100000 + Math.random() * 900000);\n\n dispatch(userSlice.actions.setAgeCategory({\n id: String(id),\n ageCategory: choice\n }));\n const today = new Date().toISOString();\n dispatch(userSlice.actions.sessionStart(today));\n dispatch(userSlice.actions.createdDate(today));\n\n //change initial state in need explorer if kids was chosen\n if(choice.value === 'kids'){\n dispatch(needExplorerSlice.actions.changeInitialStateToKids())\n }\n }, 500)\n }, 250);\n }\n\n return (\n
\n
\n
{t('home_hom_whats_ya_category_')}
\n\n
\n
\n { choices.map((choice, index) => (\n
onSelectCategory(choice)}>\n
{t(choice.label)}
\n
\n )) }\n
\n
\n )\n}\n\nexport default AgeCategory;","import React, { useEffect, useState } from 'react';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport StartFrom from './StartFrom';\nimport AgeCategory from './AgeCategory';\nimport Icon from '../../../components/ui/Icon';\n\ninterface Props {\n isSelectAge: boolean,\n onClose: () => void,\n onSelect: (id: string) => void\n}\n\nconst HomeStart : React.FC = ({\n isSelectAge = false,\n onClose,\n onSelect\n}) => {\n // VARIABLES\n const [B, E] = useBEM('home-start');\n const [isShowAge, setIsShowAge] = useState(isSelectAge);\n\n // HOOKS\n useEffect(() => {\n setIsShowAge(isSelectAge);\n }, [isSelectAge]);\n\n // METHODS\n const closeAge = () => {\n setIsShowAge(false);\n onClose();\n }\n\n return (\n
\n \n \n onSelect(id)} isVisible={!isShowAge}/>\n \n\n
\n )\n}\n\nexport default HomeStart;","import React from 'react';\nimport useBEM from '../../utils/hooks/useBEM';\nimport Arrow from './Arrow';\n\ninterface Props {\n diameter?: number,\n background?: string,\n\n // ARROW PROPS\n type: 'right' | 'left' | 'up' | 'down',\n size?: string,\n color?: string,\n thickness?: string,\n className?: string,\n disabled?: boolean,\n}\n\nconst CircleArrow : React.FC = (props) => {\n // VARIABLES\n const [B] = useBEM('circle-arrow');\n\n // HOOKS\n\n // METHODS\n const customStyle = () => {\n const diameter = props.diameter ? `${props.diameter}rem` : '2rem';\n const background = props.background || '#fff';\n return {\n width: diameter,\n height: diameter,\n backgroundColor: background\n }\n }\n\n return (\n
\n \n
\n )\n}\n\nexport default CircleArrow;","type indexedDBType = {\n connect: (upgradeCallBack?: any) => Promise,\n createTables: (db: any) => void,\n get: (\n database:IDBDatabase, \n table: string, \n key: string\n ) => Promise,\n getAll: (\n database:IDBDatabase, \n table: string, \n condition?: (data: any) => boolean\n ) => Promise,\n queryByDateRange: (database:IDBDatabase, table: string, indexField: string, dateRange: {\n from?: Date,\n to?: Date\n }) => Promise,\n insert: (database:IDBDatabase, table: string, data: any, indexes?: { [key: string]: any }) => void,\n update: (database:IDBDatabase, table: string, data: any) => void,\n remove: (database:IDBDatabase, table: string, key: string) => Promise,\n}\n\nconst useIndexedDB = (): indexedDBType => {\n const database = 'mycompanion';\n const version = 8;\n const tables = ['userStore', 'applicationStore', 'lensDemoStore', 'localAssetsStore', 'languageStore', 'variluxG9Store'];\n\n // Note: 1 index per table\n const tableIndexes: {\n [key: string]: {\n name: string,\n options: any\n }\n } = {\n userStore: { name: 'createdDate', options: { unique:false} }\n }\n\n\n const connect = (upgradeCallBack?: any) => {\n const promise = new Promise((res, rej) => {\n let DBOpenRequest = window.indexedDB.open(database, version);\n DBOpenRequest.addEventListener('success', (ev: any) => {\n res(ev.target.result);\n });\n DBOpenRequest.addEventListener('upgradeneeded', (ev: any) => {\n if(upgradeCallBack)upgradeCallBack(ev.target);\n\n });\n DBOpenRequest.addEventListener('error', (err: any) => {\n rej(err)\n });\n })\n return promise;\n }\n\n const createTables = (db: any) => {\n tables.forEach( t => {\n if(!db.result.objectStoreNames.contains(t)){\n const store = db.result.createObjectStore(t, {\n keyPath: 'id'\n }); \n const indx = tableIndexes[t];\n if(indx){\n store.createIndex(indx.name, indx.name, indx.options);\n }\n } else {\n const indx = tableIndexes[t];\n const objectStore = db.transaction.objectStore(t);\n if(indx && !objectStore.indexNames.contains(indx.name)){\n objectStore.createIndex(indx.name, indx.name, { unique: false });\n }\n }\n })\n }\n\n const get = (database:IDBDatabase, table: string, key: string) => {\n const tx = database.transaction(table,'readonly');\n const store = tx.objectStore(table);\n const getRequest = store.get(key);\n\n return new Promise((resolved, reject) => {\n getRequest.onsuccess = (ev: any) => {\n resolved(ev.target.result);\n }\n getRequest.onerror = (err: any) => { \n reject(err);\n }\n }); \n }\n\n const getAll = (database:IDBDatabase, table: string, condition?: (data: any) => boolean) => { \n const tx = database.transaction(table,'readonly');\n const store = tx.objectStore(table);\n const request = store.openCursor();\n const all:any[] = [];\n return new Promise((resolved, reject) => {\n request.onsuccess = (ev: any) => {\n const cursor = request.result || ev.result; \n if(!cursor)return;\n if( \n ( cursor.value && condition && condition(cursor.value)) ||\n ( cursor.value && !condition )\n ){\n all.push(cursor.value); \n }\n cursor.continue();\n }\n tx.oncomplete = () => {\n resolved(all);\n }\n request.onerror = (err: any) => { \n reject(err);\n }\n }); \n }\n\n const insert = (database:IDBDatabase, table: string, data: any, indexes?: {\n [key: string]: any\n }) => {\n const tx = database.transaction(table,'readwrite');\n const store = tx.objectStore(table);\n \n let finalData = !indexes ? data : {\n ...data,\n ...indexes\n };\n\n const request = store.add(finalData);\n request.onsuccess = () => { }\n request.onerror = () => { }\n }\n\n const update = (database:IDBDatabase,table: string, data: any) => {\n const tx = database.transaction(table,'readwrite');\n const store = tx.objectStore(table);\n const request = store.put(data);\n request.onsuccess = () => { }\n request.onerror = () => { }\n }\n\n const remove = (database:IDBDatabase,table: string, key: string) => {\n const transaction = database.transaction([table], \"readwrite\");\n const request = transaction.objectStore(table).delete(key);\n\n return new Promise((resolved, reject) => {\n request.onsuccess = (ev: any) => {\n resolved(ev.target.result);\n }\n request.onerror = (err: any) => { \n reject(err);\n }\n });\n }\n\n const queryByDateRange = (\n database:IDBDatabase, \n table: string, \n indexField: string, \n dateRange: {\n from?: Date,\n to?: Date\n }\n ) => {\n const transaction = database.transaction([table],\"readonly\");\n const store = transaction.objectStore(table);\n if(store.indexNames.length === 0) return new Promise((res, rej) => rej('failed'));\n\n const index = store.index(indexField);\n let range: any;\n\n if(dateRange?.from && dateRange?.to ) {\n range = IDBKeyRange.bound(dateRange?.from, dateRange?.to);\n } else if(!dateRange?.from) {\n range = IDBKeyRange.upperBound(dateRange?.to);\n } else {\n range = IDBKeyRange.lowerBound(dateRange?.from);\n }\n \n let results: any[] = [];\n const promise = new Promise((resolved, reject) => {\n index.openCursor(range).onsuccess = (e: any) => {\n const cursor = e.target.result;\n if(cursor) {\n results = [...results, cursor.value];\n cursor.continue();\n } else {\n resolved(results);\n }\n }\n index.openCursor(range).onerror = (error: any) => reject(error)\n })\n \n return promise;\n }\n\n return {\n connect,\n createTables,\n get,\n getAll,\n insert,\n update,\n remove,\n queryByDateRange\n }\n}\n\nexport default useIndexedDB;","interface iReplaceOptions {\n from: number | string | undefined | null | number,\n to: number | string | undefined | null | number,\n}\n\nconst DeepReplaceObjectValue = (({\n from,\n to\n}: iReplaceOptions) => {\n\n const transformArray = (obj: any[]) => {\n let newObject:any[] = [];\n obj.forEach( item => { \n let newValue = item === from ? to : item;\n if(typeof item === 'object')newValue = replace(item);\n\n newObject = [\n ...newObject,\n newValue\n ]\n });\n return newObject\n }\n\n const transformObject = (obj: any) => {\n const entries = Object.entries(obj);\n let newObject = {};\n\n entries.forEach(([key, value]) => {\n let newValue = value === from ? to : value;\n if(typeof value === 'object')newValue = replace(value);\n newObject = {\n ...newObject,\n [key]: newValue\n }\n });\n return newObject;\n }\n\n const replace = (obj: any) => {\n if(typeof obj !== 'object' || !obj)return obj; \n return Array.isArray(obj) ? transformArray(obj) : transformObject(obj);\n }\n\n return {\n replace\n }\n});\n\nexport default DeepReplaceObjectValue;","import React, { useState } from 'react';\nimport useBEM from '../../utils/hooks/useBEM';\nimport ReactDOM from 'react-dom';\nimport Button from './Button';\n\n\ninterface Props {\n show: boolean,\n message: string,\n buttons?: {\n label: string,\n id: string\n }[],\n onButtonSelect: (buttonId: string) => void\n}\n\nconst Alert : React.FC = ({\n show,\n message,\n buttons,\n onButtonSelect\n}) => {\n // VARIABLES\n const portal: any = document.getElementById(\"portal\");\n const [B, E] = useBEM('alert');\n\n const onClickHandler = (id: string) => {\n onButtonSelect(id)\n }\n\n const render = () => (\n
\n
\n

\n {message}\n

\n
\n {\n buttons && buttons.map( b => (\n \n ))\n }\n
\n
\n
\n )\n\n return ReactDOM.createPortal(render(),portal)\n}\n\nexport default Alert;","import React, { useState, useEffect, useRef } from 'react'\nimport useBEM from '../../../utils/hooks/useBEM'\nimport Modal from '../../../components/Modal'\nimport axios from 'axios';\nimport ENDPOINTS from '../../../constants/endpoints';\nimport iUserStore from '../../../store/interface/user-store.interface';\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { getApp } from '../../../store/slices/app.slice';\nimport Button from '../../../components/ui/Button';\nimport routes from '../../../constants/routes.constant';\nimport useGoto from '../../../utils/hooks/useGoto';\nimport userSlice from '../../../store/slices/user.slice';\nimport needExplorerSlice from '../../../store/slices/need-explorer.slice';\nimport lensConsultationSlice from '../../../store/slices/lens-consultation.slice';\nimport prescriptionSlice from '../../../store/slices/prescription.slice';\nimport useIndexedDB from '../../../utils/hooks/useIndexedDB';\nimport DeepReplaceObjectValue from '../../../utils/deep-replace-object-value';\nimport { IndexedDBContext, IndexedDBContextType } from '../../../utils/context/indexedDBContext';\nimport lensThicknessSlice from '../../../store/slices/lens-thickness.slice';\nimport measureSlice from '../../../store/slices/measure.slice';\nimport summarySlice from '../../../store/slices/summary.slice';\nimport refresh from '../../../assets/svg/refresh.svg';\nimport Alert from '../../../components/ui/Alert';\nimport Spinner from '../../../components/ui/Spinner';\nimport useLensConsultation from '../../lens-consultation/useLensConsultation';\n\ninterface Props {\n showModal?: boolean,\n onModalClose?: () => void\n}\n\ninterface Order {\n order_id: string\n order: iUserStore,\n nickname?: string,\n created_by: string,\n created_at: string\n}\n\nconst PatientListModal : React.FC = ({\n showModal,\n onModalClose\n}) => {\n const [B, E] = useBEM('patient-list-modal');\n const [orders, setOrders] = useState([])\n const { t } = useTranslation(useSelector(getApp));\n const goto = useGoto()\n const dispatch = useDispatch()\n const values = {\n sphere: { od: undefined, os: undefined },\n cylinder: { od: undefined, os: undefined },\n axis: { od: undefined, os: undefined },\n addition: undefined\n }\n const { connect, createTables, insert } = useIndexedDB()\n const [db, setDB] = useState(undefined)\n const dbRef = useRef(db)\n const { get } = React.useContext(IndexedDBContext) as IndexedDBContextType;\n const [showAlert, setShowAlert] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n const { correctPrescriptionData } = useLensConsultation();\n\n useEffect(() => {\n async function connectIndexDB() {\n const indexDB = await connect((db: any) => createTables(db))\n setDB(indexDB)\n }\n connectIndexDB()\n }, [])\n\n useEffect(() => {\n if(showModal)loadOrders();\n }, [showModal])\n\n const loadOrders = () => {\n if(!navigator.onLine)return;\n setIsLoading(true);\n axios.get(\n ENDPOINTS.orders,\n { headers: {Authorization: true, background: true} }\n ).then((result: any) => {\n setIsLoading(false);\n if (result.data.code === '001') {\n const deepReplace = DeepReplaceObjectValue({ to: undefined, from: \"---\" })\n setOrders(deepReplace.replace(result.data.data))\n }\n }\n )\n }\n\n useEffect(() => {\n dbRef.current = db\n }, [db])\n\n const transformNeedExplorer = (userData: iUserStore) => {\n let newData = userData.needExplorer;\n\n // Note: set canSelectMultiple: false for question '6.3' for kids\n // select only one answer\n if(userData.ageCategory?.value === 'kids'){\n newData = {\n ...newData,\n questions: newData.questions.map( q => {\n if(q.id === '6'){\n return {\n ...q,\n questions: q.questions.map( x => {\n if(\n x.id === '6.3' &&\n x.canSelectMultiple &&\n x.answer\n ){\n return {\n ...x,\n answer: (x.answer as any[])[0],\n canSelectMultiple: false\n }\n }\n return x;\n })\n }\n }\n return q;\n })\n }\n }\n return newData;\n}\n\n const onSelectPatient = (patientId: string) => {\n axios.get(\n ENDPOINTS.order(patientId),\n { headers: {Authorization: true, background: false} }\n ).then( async (result: any) => {\n\n if (result.data.code === '001') {\n\n const replace = DeepReplaceObjectValue({from: '---', to: undefined})\n let newOrderData = replace.replace(result.data.data.order)\n\n //Note: prescription data structure correction\n // incase rx data is invalid\n newOrderData = correctPrescriptionData(newOrderData, undefined);\n\n if(dbRef.current)await insert(dbRef.current, 'userStore', newOrderData)\n\n const user = await get('userStore',String(result.data.data.order_id));\n\n dispatch(userSlice.actions.setUserData(user));\n dispatch(lensThicknessSlice.actions.setLensThickness(user.lensThickness));\n\n const finalNeedExplorer = transformNeedExplorer(user);\n\n dispatch(needExplorerSlice.actions.setData(finalNeedExplorer));\n dispatch(lensConsultationSlice.actions.saveLensRecommendationDataFromStore(user.lensRecommendation));\n dispatch(measureSlice.actions.saveMeasureFromStore(user.measures));\n dispatch(summarySlice.actions.saveSummary1(user.summaryList1));\n dispatch(summarySlice.actions.saveSummary2(user.summaryList2));\n dispatch(measureSlice.actions.saveMeasureFromStore(user.measures));\n\n setTimeout(() => { goto.route(routes.lensProposalBuilder) }, 800);\n return;\n }\n setShowAlert(true);\n })\n }\n\n const todaysOrders = (orderList: any) => {\n const filtered = orderList.filter((order: Order) => {\n return (new Date(order.created_at).getDate() === new Date().getDate())\n })\n return filtered\n }\n\n const orderStatus = ({\n prescription,\n needExplorer,\n measures,\n lensRecommendation\n }: iUserStore) => {\n let status = \"\"\n let ctrPres = 0\n\n if (needExplorer.isGeneralDone || needExplorer.isExtraDone) status = \"need_explorer_order\"\n if (Object.values(measures)[0].length > 0) status = \"measures_order\"\n if (prescription.values) {\n Object.values(prescription.values).map(el => {\n if (\n el !== null && \n el !== undefined && \n Object.keys(el) && \n Object.keys(el).length > 0) ctrPres++\n })\n }\n if (ctrPres > 0) status = \"prescription_order\"\n if (lensRecommendation) status = \"lens_consultation_order\"\n\n return status\n }\n const modalStyle = {\n width: \"68.3rem\",\n height: \"52.1rem\",\n borderRadius: \"2rem\"\n }\n\n return (\n <>\n \n
\n\n
\n \n {todaysOrders(orders).length} {t('waiting_list_wl_results')}\n \n\n loadOrders()}\n />\n
\n\n {\n isLoading &&\n
\n \n
\n }\n\n\n
\n\n {\n todaysOrders(orders).length === 0 ?\n
\n
{t('data_sharing_no_data')}
\n
:\n todaysOrders(orders).map((order: Order, i: number) => {\n const { order: orderDetails } = order\n return (\n
\n
\n {new Date(order.created_at).toLocaleTimeString()}\n
\n
\n {order.order_id}\n
\n
\n {order.nickname}\n
\n
\n {t(orderStatus(orderDetails))}\n
\n
\n onSelectPatient(order.order_id)}\n text={t('waiting_list_wl_select')}\n />\n
\n
\n )\n })\n }\n
\n\n {\n !navigator.onLine &&\n \n {t('data_sharing_pull_id_offline')}\n \n }\n\n\n
\n
\n {\n setShowAlert(false);\n loadOrders();\n }}\n />\n \n )\n}\n\nexport default PatientListModal\n","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport productsSlice, { getProducts } from '../../../store/slices/products.slice';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport Icon from '../../ui/Icon';\nimport productDemoSlice, { getProductDemo } from '../../../store/slices/products-demo.slice';\nimport useGoogleAnalytics from '../../../utils/hooks/useGoogleAnalytics';\nimport iProduct from '../../../interface/product.inteface';\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport { getApp } from '../../../store/slices/app.slice';\n\ninterface Props {\n products: iProduct[],\n use?: 'homepage' | 'default'\n}\n\nconst SubProducts : React.FC = ({\n products,\n use = 'default'\n}) => {\n // VARIABLES\n const dispatch = useDispatch();\n const [B, E] = useBEM('sub-products');\n const ga = useGoogleAnalytics();\n const { t } = useTranslation(useSelector(getApp));\n const { accountDetails } = useSelector(getApp);\n const { openBrand } = useSelector(getProducts);\n const isSlovakia = accountDetails?.shop.country === 'sk'\n const gtmId = use === 'default' ? '' : '_hs'\n // HOOKS\n\n // METHODS\n const demoProduct = (product: iProduct) => {\n if(!product.demo || product.demo?.length < 1)return;\n // ga.event({\n // category: `Demo - ${product.label}`, \n // action: 'Demonstration - Product',\n // label: `See Demo - ${product.demo[0].demo}`\n // });\n\n ga.event({\n category: `Demo`, \n action: product.label\n });\n const path = {\n id: '',\n path: '',\n label: ''\n }\n dispatch(productsSlice.actions.open(true))\n dispatch(productDemoSlice.actions.setDemoFrom(path))\n dispatch(productsSlice.actions.selectProductTodemo(product))\n dispatch(productsSlice.actions.changeView('demo'));\n }\n\n // const onClose = () => {\n // dispatch(productsSlice.actions.selectBrandTodemo(undefined));\n // }\n\n const hasVirtualTryOn = () =>{\n return openBrand === 'transitions'\n }\n\n const openQRCode = () =>{\n const id = 'transitions_signature_gen_8'\n const videoBackground = products.filter(product => product.id === id)[0].demo\n const product = products.filter(product => product.id === id)\n dispatch(productsSlice.actions.selectProductTodemo(product[0]))\n dispatch(productsSlice.actions.openQrCode(true))\n }\n \n const indiaBusinessRule = (id:string) => {\n const indiaHideProducts = [\n 'transitions_signature_gen_8_iconic',\n 'transitions_signature_gen_8_style',\n 'transitions_signature_gen_8_classic',\n 'transitions_xtractive_mirror',\n 'transitions_classic'\n ]\n if(accountDetails?.shop.country === 'in'){\n return indiaHideProducts.includes(id)\n }\n }\n\n\n return (\n
\n \n {/*
\n
{title}
\n \n
*/}\n\n
    \n {\n products.map((p: iProduct, index) => {\n if(!p.enabled || !p.demo || p.demo.length < 1 || indiaBusinessRule(p.id))return null;\n return (\n
  • demoProduct(p)} id={`${p.id}${gtmId}`}>\n {t(p.label)}\n \n
  • \n )\n })\n }\n {/* {\n hasVirtualTryOn() && !isSlovakia && \n
  • \n {t('vto_transitions_label')}\n
    \n \n {t('vto_new')}\n \n
    \n \n
  • \n } */}\n\n\n
\n
\n )\n}\n\nexport default SubProducts;","import React from 'react';\nimport useBEM from '../../utils/hooks/useBEM';\n\ninterface Props {\n color?: string,\n dim?: string,\n size?: string\n}\n\nconst Loading : React.FC = ({\n color = '#fff',\n dim = '10rem',\n size = '1rem'\n}) => {\n // VARIABLES\n const [B, E] = useBEM('loading-spinner');\n // HOOKS\n\n // METHODS\n const cssProperties = () => {\n return { \n '--loading-spinner-color': color,\n '--loading-spinner-dim': dim,\n '--loading-spinner-size': size\n } as React.CSSProperties\n }\n\n return (\n
\n
\n
\n )\n}\n\nexport default Loading;","import React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport productsSlice, { getProducts } from '../../../store/slices/products.slice';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport Arrow from '../../ui/Arrow';\nimport Icon from '../../ui/Icon';\nimport SubProducts from './SubProducts';\nimport useGoogleAnalytics from '../../../utils/hooks/useGoogleAnalytics';\nimport iProduct from '../../../interface/product.inteface';\n\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport { getApp } from '../../../store/slices/app.slice';\nimport DemoDownloadType from '../../../types/product-download.type';\nimport Loading from '../../ui/Loading';\n\ninterface Props {\n id: string,\n label: string,\n background?: string,\n logo?: string,\n products: iProduct[],\n download?: {\n count: number,\n total?: number,\n status?: DemoDownloadType\n },\n use?: 'homepage'|'default'\n}\n\nconst ProductCard : React.FC = ({\n id,\n label,\n background,\n logo,\n products,\n download,\n use = 'default'\n}) => {\n // VARIABLES\n const [B, E] = useBEM('product-card');\n const dispatch = useDispatch();\n const { brandToDemo, openBrand } = useSelector(getProducts);\n const ga = useGoogleAnalytics();\n const { t } = useTranslation(useSelector(getApp));\n\n // HOOKS\n \n\n // METHODS\n const selectBrand = () => {\n const product = (brandToDemo && brandToDemo.id === id) ? undefined :\n {\n id,\n label,\n products: products\n }\n\n if(product){\n ga.event({\n category: `Product - ${product.label}`, \n action: 'Button Click - Product',\n label: 'See More'\n });\n }\n\n dispatch(productsSlice.actions.openBrandCard(id))\n dispatch(productsSlice.actions.selectBrandTodemo(product))\n }\n\n const isOpen = () => {\n return openBrand && openBrand === id;\n }\n\n //Note: temp\n const getLogoType = (id: string) => {\n return [\n 'blueuv_filter_system',\n 'optifog',\n 'crizal',\n 'xperio',\n 'stellest',\n 'transitions'\n ].includes(id) ? 'image' : 'svg'\n }\n\n const DownloadStatus = () => {\n let html = null;\n \n if (download?.total == 0)\n html = <>\n else \n html = <>{download?.count}/{download?.total}\n \n return \n { html } \n \n }\n\n\n return (\n
  • \n { !isOpen() ? \n

    \n { download?.status === DemoDownloadType.DOWNLOADING && }\n \n

    : <>\n }\n {\n background &&\n \"\"\n }\n\n {\n logo && \n \n }\n \n \n
    \n
    \n \n \n
    \n\n {/* NOTE: This is brand products not sub products */}\n {/* TODO: Rename to Products */}\n \n
    \n
  • \n )\n}\n\nexport default ProductCard;","import { transform } from \"html2canvas/dist/types/css/property-descriptors/transform\";\nimport React, { useState, useEffect } from \"react\";\n\ntype carouselStyleType = {\n listen: () => void, \n stop: () => void, \n}\n\nconst useCarouselStyle = (distance:number, directionDist:number) => {\n const [x, setX] = useState(0)\n const [z, setZ] = useState(0)\n const [opacity, setOpacity] = useState(0)\n const direction = directionDist > 0 ? 'right' : 'left'\n const maxDistance:number = 200;\n const perc = 8\n const pixel = 2.8571\n const opac = 25\n \n useEffect(() => {\n if(distance >= 200){\n setX(maxDistance/perc)\n setZ(maxDistance/pixel)\n setOpacity(maxDistance/opac)\n }else{\n setX(distance/perc)\n setZ(distance/pixel)\n setOpacity(distance/opac)\n }\n }, [distance])\n\n const left = direction === 'left' ? {\n opacity:`0.${10 - opacity}`\n }\n :\n {\n transform:`translate3d(${25 - x}%, 0, ${-70 + z}px)`,\n opacity:`1`\n }\n\n\n const right = direction === 'right' ? \n {\n opacity:`0.${10 - opacity}`,\n transform:`translate3d(${25 - x}%, 0, ${-70 - z}px)`,\n }\n :\n {\n transform:`translate3d(${25 - x}%, 0, ${-70 + z}px)`,\n opacity:`1`\n }\n\n const active = direction === 'right' ? \n {\n transform:`translate3d(${x}%, 0, ${-z}px)`,\n opacity:`0.${10 - opacity}`\n }\n :\n {\n transform:`translate3d(${-x}%, 0, ${-z}px)`,\n opacity:`0.${10 - opacity}`\n }\n\n //functions\n const styleSettings = (position:string, dragging:boolean) => {\n if(position === 'active' && dragging){\n return active\n }\n if(position === 'left' && dragging){\n return left\n }\n if(position === 'right' && dragging){\n return right\n }\n }\n\n\n return {\n styleSettings\n }\n\n}\n\nexport default useCarouselStyle;","import React, { useEffect, useState, useRef, MutableRefObject } from 'react';\nimport { useSelector } from 'react-redux';\nimport { getProducts } from '../../../store/slices/products.slice';\nimport iProductBrand from '../../../interface/product-brand.interface';\nimport iProductFamily from '../../../interface/product-family.interface';\nimport ProductCard from '../../../components/products/components/ProductCard';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport Icon from '../../../components/ui/Icon';\nimport { useDrag } from 'react-use-gesture';\nimport useCarouselStyle from '../../../utils/hooks/useCarouselStyle';\n\n\n\ninterface Props {\n use?: 'homepage' | 'default'\n}\n\n\nconst ProductSelectionHome : React.FC = ({\n use = 'default'\n}) => {\n\n // variables\n const [B, E] = useBEM('product-selectionHome');\n\n //hooks\n const [brands, setBrands] = useState([]);\n const [activeIndex, setActiveIndex] = useState(0)\n const [showNav, setShowNav] = useState(false)\n const { temporaryProductList, demoDownloadStatus, downloadStatus } = useSelector(getProducts);\n const brandLength = brands.length - 1\n const [distance, setDistance] = useState(0)\n const [direction, setDirection] = useState(0)\n const [dragging, setDragging] = useState(false)\n const [isTouchEnds, setIsTouchEnds] = useState(false)\n\n const {styleSettings} = useCarouselStyle(distance, direction)\n const bindXPosition = useDrag((params) => {\n setDirection(params.direction[0])\n setDistance(params.distance)\n setDragging(params.dragging)\n const isTouchEnd = params._lastEventType === 'pointerup'\n const isClickOnly = params._dragIsTap\n if(isTouchEnd && !isClickOnly){\n direction > 0 ? navigate('prev') : navigate('next')\n }\n })\n\n\n\n useEffect(() => {\n let tempBrands:iProductBrand[] = [];\n temporaryProductList.forEach((family: iProductFamily) => {\n tempBrands = [\n ...tempBrands,\n ...family.brands.filter( b => isDemoAvailable(b))\n ]\n setBrands(tempBrands);\n });\n\n }, [temporaryProductList, activeIndex])\n //functions\n const isDemoAvailable = (brand: iProductBrand) => {\n if(!brand.background)return false;\n const productsWithDemo = brand.products.filter( p => (p.demo || []).length > 0 && p.enabled); \n return productsWithDemo.length > 0;\n }\n\n const indexSettings = (i:number) => {\n if(activeIndex === i){\n return 'active'\n }\n if((activeIndex - 1 === i) || (activeIndex === 0 && i === brandLength)){\n return 'left'\n }\n if((activeIndex + 1 === i && activeIndex !== brandLength) || (activeIndex === brandLength && i === 0)){\n return 'right'\n }\n\n return 'none'\n }\n\n const navigate = (action:'next' | 'prev') => {\n switch (action) {\n case 'next':\n return setActiveIndex(activeIndex === brandLength ? 0 : activeIndex + 1)\n case 'prev':\n return setActiveIndex(activeIndex === 0 ? brandLength : activeIndex - 1)\n default:\n return\n }\n }\n\n\n return(\n
    \n {\n brands.map( (brand, i) => {\n return (\n
    setActiveIndex(i)} style={styleSettings(indexSettings(i),dragging)}>\n \n
    \n )\n }) \n }\n\n\n <>\n
    navigate('next')}>\n \n
    \n\n
    navigate('prev')}>\n \n
    \n \n\n
    \n )\n}\n\nexport default ProductSelectionHome;","import React, { useEffect, useState } from 'react';\nimport Icon from '../../components/ui/Icon';\nimport Button from '../../components/ui/Button';\nimport ContinueWithID from './components/ContinueWithID';\nimport Modal from '../../components/Modal';\nimport InputText from '../../components/ui/InputText';\nimport { useDispatch, useSelector } from 'react-redux';\nimport userSlice, { getUser } from '../../store/slices/user.slice';\nimport useBEM from '../../utils/hooks/useBEM';\nimport routes from '../../constants/routes.constant';\nimport HomeStart from './components/HomeStart';\nimport useGoto from '../../utils/hooks/useGoto';\nimport CircleArrow from '../../components/ui/CircleArrow';\nimport needExplorerSlice from '../../store/slices/need-explorer.slice';\nimport appSlice, { getApp } from '../../store/slices/app.slice';\nimport { KIDS_THEMES } from '../../constants/theme.constants';\nimport Utils from '../../utils/Utils';\nimport lensThicknessSlice from '../../store/slices/lens-thickness.slice';\nimport lensConsultationSlice from '../../store/slices/lens-consultation.slice';\nimport ReactHtmlParser from 'react-html-parser';\nimport useGoogleAnalytics from '../../utils/hooks/useGoogleAnalytics';\nimport useTranslation from '../../utils/hooks/useTranslation';\nimport measureSlice from '../../store/slices/measure.slice';\nimport useENV from '../../utils/hooks/useEnv';\nimport summarySlice from '../../store/slices/summary.slice';\nimport axios, { AxiosResponse } from 'axios';\nimport ENDPOINTS from '../../constants/endpoints';\nimport settings from '../../constants/settings.constants';\nimport { IndexedDBContext, IndexedDBContextType } from '../../utils/context/indexedDBContext';\nimport deliverySlice, { getDelivery } from '../../store/slices/delivery.slice';\nimport iUserStore from '../../store/interface/user-store.interface';\nimport pushNotificationSlice, { getPushNotification } from '../../store/slices/push-notification.slice';\nimport BadgeNotification from '../../components/ui/BadgeNotification';\nimport PatientListModal from './components/PatientListModal';\nimport useIndexedDB from '../../utils/hooks/useIndexedDB';\nimport Alert from '../../components/ui/Alert';\nimport ExperienceType from '../../types/experience.type';\nimport ProductSelectionHome from './components/ProductSelectionHome';\n\ninterface Props {\n\n}\n\nconst HomePage : React.FC = () => {\n // VARIABLES\n const [B, E] = useBEM(routes.home.id);\n const env = useENV();\n const goto = useGoto();\n const [isStart, setStart] = useState(false);\n const [showStartFromIDModal, setShowStartFromIDModal] = useState(false);\n const [showPatientListModal, setShowPatientListModal] = useState(false)\n const dispatch = useDispatch();\n const [startFromIDField, setStartFromIDField] = useState();\n const { id, ageCategory, lensConsultation, sessionStart } = useSelector(getUser);\n const appStore = useSelector(getApp);\n const { generateRandomNumbers, getThemeVariables, getDateTimeDifference} = Utils();\n const themes = KIDS_THEMES;\n const ga = useGoogleAnalytics();\n const { t } = useTranslation(appStore);\n const { accountDetails, licenseValidationDate, firstLogin, theme, dataRetention } = appStore;\n const environment = settings.environment;\n const {get} = React.useContext(IndexedDBContext) as IndexedDBContextType;\n const { validatedTimestamp } = useSelector(getDelivery);\n const { whatsNewHasNewUpdate, eMatHasNewUpdate, notificationEvent } = useSelector(getPushNotification);\n const country = accountDetails?.shop?.country\n\t\n\t// JUMP\n if (localStorage.getItem(\"country\") === null) {\n if (country) localStorage.setItem(\"country\", JSON.stringify(country))\n }\n\n const { db } = React.useContext(IndexedDBContext) as IndexedDBContextType;\n const isNordicsCountries = country && ['dk', 'se', 'fi', 'no', 'be', 'ph', 'in', 'in2',].includes(country)\n const enableVarilux = country && ['ro','bg','de','pt','gb','be','es', 'si', 'hr', 'gr', 'ph'].includes(country)\n // const cards = country && isNordicsCountries ? [\n // { icon: 'discovery', iconType: 'svg', label: `${t('home_home_disc_essilor')} ®`, labelKey: 'home_home_disc_essilor', route: routes.discovery }\n // ]:[\n // { icon: 'mic', iconType: 'svg', label: t('home_hom_whats_new'), labelKey: 'home_hom_whats_new', route: routes.whatsNew },\n // { icon: 'emat', iconType: 'svg', label: `${t('home_hommemat')} `, labelKey: 'home_hommemat', route: routes.emat },\n // { icon: 'discovery', iconType: 'svg', label: `${t('home_home_disc_essilor')} ®`, labelKey: 'home_home_disc_essilor', route: routes.discovery }\n // ];\n\n const cards = () => {\n if(country){\n if(isNordicsCountries && !enableVarilux){\n return [\n { icon: 'discovery', iconType: 'svg', label: `${t('home_home_disc_essilor')} ®`, labelKey: 'home_home_disc_essilor', route: routes.discovery }\n ]\n }\n if(isNordicsCountries && enableVarilux){\n return []\n }\n if(!isNordicsCountries && !enableVarilux){\n return [\n { icon: 'mic', iconType: 'svg', label: t('home_hom_whats_new'), labelKey: 'home_hom_whats_new', route: routes.whatsNew },\n { icon: 'emat', iconType: 'svg', label: `${t('home_hommemat')} `, labelKey: 'home_hommemat', route: routes.emat },\n { icon: 'discovery', iconType: 'svg', label: `${t('home_home_disc_essilor')} ®`, labelKey: 'home_home_disc_essilor', route: routes.discovery }\n ]\n }\n if(!isNordicsCountries && enableVarilux){\n return [\n { icon: 'mic', iconType: 'svg', label: t('home_hom_whats_new'), labelKey: 'home_hom_whats_new', route: routes.whatsNew },\n { icon: 'emat', iconType: 'svg', label: `${t('home_hommemat')} `, labelKey: 'home_hommemat', route: routes.emat },\n ]\n }\n }\n return []\n }\n \n const { queryByDateRange, remove } = useIndexedDB();\n const [showAlert, setShowAlert] = useState(false);\n const [serverDateError, setServerDateError] = useState(\"\")\n\n \n\n // HOOKS\n useEffect(() => {\n validateLicense();\n validateFirstLogin();\n\n const currentTimeStamp = new Date();\n\n if(lensConsultation.isValidated && sessionStart){\n dispatch(userSlice.actions.sessionStart(undefined));\n const timediff = getDateTimeDifference(new Date(sessionStart), currentTimeStamp);\n ga.event({\n category: 'Patient Journey',\n action: 'Engagement - LC',\n label: timediff\n });\n }\n\n if(validatedTimestamp){\n dispatch(deliverySlice.actions.clearValidatedTimestamp());\n const timediff = getDateTimeDifference(new Date(validatedTimestamp), currentTimeStamp);\n ga.event({\n category: 'Patient Journey',\n action: 'Engagement - Delivery',\n label: timediff\n });\n }\n\n dataRetentionProcess();\n }, [])\n\n useEffect(() => {\n setStartFromIDField(id || '');\n }, [id])\n\n // METHODS\n const validateFirstLogin = () =>{\n if(!accountDetails)return;\n if(!firstLogin?.firstStatus && accountDetails){\n dispatch(appSlice.actions.setOpenFirstLogin(true));\n }\n }\n const validateLicense = () => {\n if(!accountDetails)return;\n const today = new Date().setHours(0,0,0,0);\n //offline\n if(!navigator.onLine){\n if(!accountDetails.expiration_date)return true;\n const expirationDate = new Date(accountDetails.expiration_date).setHours(0,0,0,0);\n if(today >= expirationDate){\n dispatch(appSlice.actions.updateLicenseStatus('Expired'));\n goto.route(routes.licenseActivation);\n }\n return;\n }\n\n //online\n if(licenseValidationDate){\n const lastValidationDate = new Date(licenseValidationDate).setHours(0,0,0,0);\n if(lastValidationDate === today)return;\n }\n\n dispatch(appSlice.actions.setLicenseValidationDate(new Date().toDateString()));\n axios.get(ENDPOINTS.account, { headers: {Authorization: true, background: true} }).then((res) => {\n if(res.data.state !== \"Active\"){\n goto.route(routes.licenseActivation);\n return;\n }\n dispatch(appSlice.actions.saveAccountDetails(res.data));\n\n });\n }\n\n const onSelectStart = (type: string) => {\n ga.event({\n category: 'Home Screen',\n action: 'Button Click',\n label: type\n });\n\n if(type === \"id\"){\n setShowStartFromIDModal(true);\n } else if (type === 'patient-list') {\n setShowPatientListModal(true)\n }\n }\n\n const modalOnClose = () => {\n // setId('');\n setShowStartFromIDModal(false);\n setShowPatientListModal(false)\n }\n\n const idOnchange = (event: any) => {\n setStartFromIDField(event.target.value);\n }\n\n // TODO: Create utility function/ or custom hooks\n const transformNeedExplorer = (userData: iUserStore) => {\n let newData = userData.needExplorer;\n\n // Note: set canSelectMultiple: false for question '6.3' for kids\n // select only one answer\n if(userData.ageCategory?.value === 'kids'){\n newData = {\n ...newData,\n questions: newData.questions.map( q => {\n if(q.id === '6'){\n return {\n ...q,\n questions: q.questions.map( x => {\n if(\n x.id === '6.3' &&\n x.canSelectMultiple &&\n x.answer\n ){\n return {\n ...x,\n answer: (x.answer as any[])[0],\n canSelectMultiple: false\n }\n }\n return x;\n })\n }\n }\n return q;\n })\n }\n }\n\n return newData;\n }\n\n const sentIDManual = async () => {\n\n const user = await get('userStore',String(startFromIDField));\n if(!startFromIDField || startFromIDField.length < 6 || !user){\n alert('You have entered an invalid or not existing ID, Please Try Again');\n return;\n }\n const { tempBaseLensThicknessCalculation, tempLensThicknessCalculation, sliderValue } = user.lensThickness\n\n localStorage.setItem(\"recomData\", JSON.stringify(tempBaseLensThicknessCalculation.pair1))\n localStorage.setItem(\"selectedIndex\", JSON.stringify(tempLensThicknessCalculation.pair1))\n\n dispatch(lensThicknessSlice.actions.updateBaseLens(tempBaseLensThicknessCalculation))\n dispatch(lensThicknessSlice.actions.updateLensDifference(tempLensThicknessCalculation))\n dispatch(lensThicknessSlice.actions.setSliderValue(sliderValue))\n dispatch(userSlice.actions.setUserData(user));\n const finalNeedExplorer = transformNeedExplorer(user);\n dispatch(needExplorerSlice.actions.setData(finalNeedExplorer));\n // dispatch(lensThicknessSlice.actions.setLensThickness(user.lensThickness))\n dispatch(lensConsultationSlice.actions.saveLensRecommendationDataFromStore(user.lensRecommendation));\n dispatch(measureSlice.actions.saveMeasureFromStore(user.measures));\n dispatch(summarySlice.actions.saveSummary1(user.summaryList1));\n dispatch(summarySlice.actions.saveSummary2(user.summaryList2));\n dispatch(userSlice.actions.sessionStart(new Date().toISOString()));\n modalOnClose();\n\n goto.routeWithTransition(\n routes.home,\n routes.lensProposalBuilder,\n 'SLIDE_LEFT',\n 500\n );\n }\n\n const startHandler = () => {\n ga.event({\n category: 'Home Screen',\n action: 'Button Click',\n label:'Start - LPB'\n });\n\n setTimeout(() => {\n setStart(true);\n }, 250);\n }\n const gotoRoute = (route: any) => {\n if (!route)return;\n goto.route(route);\n }\n\n const getAge = () => {\n const age = ageCategory?.value;\n return age ? age : ''\n }\n\n const themeStyle = () => {\n if(!theme || theme.id !== 'multi')return {};\n const randomNumbers = generateRandomNumbers(themes.length - 1);\n const randomTheme = themes[randomNumbers[0]];\n return getThemeVariables(randomTheme)\n }\n\n const onCardSelect = (card: any, index: number) => {\n // if(card.icon ==='discovery' && environment === \"dev\") gotoRoute(card.route);\n // gotoRoute(card.route);\n // if(environment === \"uat\" && card.icon !=='discovery') {\n // return;\n // }\n updateNotification(index);\n gotoRoute(card.route);\n\n ga.event({\n category: 'Home Screen',\n action: 'Button Click',\n label: t(card.labelKey, 'enUS')\n });\n }\n\n const checkNotification = async (latestEvent:any) => {\n if (latestEvent !== null) {\n // Get Current Event\n let currentEvent: any = await localStorage.getItem('realtimeEvent');\n if (currentEvent !== null) currentEvent = JSON.parse(currentEvent);\n\n // eMat\n const latestEmat = (latestEvent.emat) ? latestEvent.emat : 0;\n const currentEmat = (currentEvent.emat) ? currentEvent.emat : 0;\n\n let newEmat = 0;\n if (latestEmat > currentEmat) {\n newEmat = latestEmat - currentEmat;\n }\n dispatch(pushNotificationSlice.actions.setEmatNotification(newEmat));\n\n // WhatsNew\n const latestWhatsNew = (latestEvent.whats_new) ? latestEvent.whats_new : 0;\n const currentWhatsNew = (currentEvent.whats_new) ? currentEvent.whats_new : 0;\n\n let newWhatsNew = 0;\n if (latestWhatsNew > currentWhatsNew) {\n newWhatsNew = latestWhatsNew - currentWhatsNew;\n }\n dispatch(pushNotificationSlice.actions.setWhatsNewNotification(newWhatsNew));\n\n }\n }\n\n\n const showBadge = (index: number) => {\n // Index0 - What's New\n // Index1 - eMat\n let badgeCount = 0;\n if (index === 0) {\n badgeCount = whatsNewHasNewUpdate;\n } else if (index === 1) {\n badgeCount = eMatHasNewUpdate;\n }\n if (badgeCount > 0)\n return \n else\n return <>\n }\n\n const updateNotification = async (index: number) => {\n // Index0 - What's New\n // Index1 - eMat\n\n // Get Current Event\n let currentEvent: any = await localStorage.getItem('realtimeEvent');\n if (currentEvent !== null) currentEvent = JSON.parse(currentEvent);\n\n // Whats new\n if (index === 0) {\n await dispatch(pushNotificationSlice.actions.setWhatsNewNotification(0));\n }\n // eMat\n if (index === 1) {\n await dispatch(pushNotificationSlice.actions.setEmatNotification(0));\n }\n\n localStorage.setItem('realtimeEvent', JSON.stringify(notificationEvent));\n }\n\n const getExpiredOrders = (days: number) => {\n const now = new Date();\n const thisDate = new Date();\n thisDate.setDate(now.getDate() - days);\n const date = new Date(thisDate.setHours(0,0,0,0))\n\n return queryByDateRange(db, 'userStore','createdDate', {\n to: date\n });\n }\n\n const deleteExpiredOrders = async (today: Date) => {\n const expiredOrders = await getExpiredOrders(60);\n const expiredOrderIds = expiredOrders.map( (x: any) => x.id);\n expiredOrderIds.forEach( async (id: string) => {\n await remove(db,'userStore', id)\n });\n dispatch( appSlice.actions.updateDataRententionData({\n key: 'lastDeletionDate',\n value: today\n }));\n }\n\n const getServerDetails = async () => {\n return axios.get(\n ENDPOINTS.account,\n { headers: {Authorization: true, background: true} }\n ).then((res: AxiosResponse) => res.data.shop.current_date)\n }\n\n const dataRetentionProcess = async (checkOnline = true) => {\n\n const today = new Date(new Date().setHours(0,0,0,0));\n const status = navigator.onLine &&\n checkOnline && (\n !dataRetention?.lastCheckedServerDate || (\n dataRetention.lastCheckedServerDate &&\n new Date(dataRetention.lastCheckedServerDate).getTime() !== today.getTime()\n )\n )\n\n if (status) {\n try {\n const serverDateString = accountDetails ? await getServerDetails() : null\n\n if (serverDateString !== null) {\n const serverDate = new Date((serverDateString || '').replace(/-/g,'/'));\n\n dispatch( appSlice.actions.updateDataRententionData({ key: 'lastCheckedServerDate', value: serverDate }));\n dispatch( appSlice.actions.updateDataRententionData({ key: 'isDateSync', value: true }));\n\n if(serverDate.getTime() !== today.getTime()){\n dispatch( appSlice.actions.updateDataRententionData({ key: 'isDateSync', value: false }));\n setShowAlert(true);\n return\n }\n dataRetentionProcess(false);\n return;\n }\n\n } catch(err) {\n setServerDateError(String(err))\n }\n }\n\n if( !dataRetention || !dataRetention.lastDeletionDate ){\n deleteExpiredOrders(today);\n return;\n }\n const lastDeletionDate = new Date(new Date(dataRetention.lastDeletionDate).setHours(0,0,0,0));\n //Note: delete only once per day\n if(today.getTime() === lastDeletionDate.getTime())return;\n deleteExpiredOrders(today);\n }\n\n return (\n
    \n\n {isNordicsCountries &&\n
    \n \n
    \n }\n {/* {cards.map((card,index) => (\n
    onCardSelect(card, index)}>\n {showBadge(index)}\n
    \n \n

    {ReactHtmlParser(card.label)}

    \n
    \n
    \n ))} */}\n {cards().map((card,index) => (\n
    onCardSelect(card, index)}>\n {showBadge(index)}\n
    \n \n

    {ReactHtmlParser(card.label)}

    \n
    \n
    \n ))}\n\n {/* varilux g9 card */}\n {enableVarilux &&\n
    {goto.route(routes.variluxG9)}} id='varilux_homepage_card'>\n \n
    \n \n
    \n \n {t('varilux_card_new', 'New')}\n \n
    \n }\n\n
    \n
    \n \n

    \n {t('home_hom_lp_builder')}\n

    \n\n {\n !id &&\n
    \n }\n text={t('home_hom_start')}\n type=\"secondary\"\n outlined={false}\n className={E('start-button')}\n />\n
    \n }\n
    \n\n { id && }\n\n onSelectStart(id)}\n isSelectAge={isStart} onClose={() => setStart(false)}\n />\n
    \n\n modalOnClose()}>\n
    \n

    {t('home_hom_start_from_an_id')}

    \n\n
    \n \n\n {\n startFromIDField &&\n
    \n
    \n
    \n\n modalOnClose()}\n />\n\n \n\n setShowAlert(false)}\n />\n
    \n )\n}\n\nexport default HomePage;\n","import { useSelector } from \"react-redux\";\nimport { getApp } from \"../../store/slices/app.slice\";\n\ntype hookType = [\n enabledCountry: boolean,\n]\n\nconst useDisableCountry = (countries: string | string[]): hookType => {\n const {\n accountDetails,\n }= useSelector(getApp);\n const country = accountDetails?.shop.country\n let enabledCountry:boolean = true\n\n if(country){\n enabledCountry = Array.isArray(countries) ? countries.includes(country) : countries === country\n }\n\n return [enabledCountry]\n \n}\n\nexport default useDisableCountry;","import React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport Modal from '../../../components/Modal';\nimport Button from '../../../components/ui/Button';\nimport Icon from '../../../components/ui/Icon';\nimport routes from '../../../constants/routes.constant';\nimport myCompanionSlice, { getMyCompanion } from '../../../store/slices/mycompanion.slice';\nimport useGoto from '../../../utils/hooks/useGoto';\nimport productsSlice from '../../../store/slices/products.slice';\nimport appSlice, { getApp } from '../../../store/slices/app.slice';\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport axios from 'axios';\nimport ENDPOINTS from '../../../constants/endpoints';\nimport useDisableCountry from '../../../utils/hooks/useDisableCountry';\n\ninterface Props {\n\n}\n\nconst MyCompanionFooter : React.FC = () => {\n // VARIABLES\n const {\n globalInformation,\n myCompannion,\n accountDetails,\n token\n }= useSelector(getApp);\n const [priceOff, setPriceOff] = useState(myCompannion.isPriceOff);\n const [isEssilorRecommend, setEssilorRecommend] = useState(myCompannion.essilorRecommend);\n\n const [showSaveModal, setShowSaveModal] = useState(false);\n const [showSuccessModal, setShowSuccessModal] = useState(false);\n const [configCreationDate, setConfigCreationDate] = useState(\"\")\n const dispath = useDispatch();\n const goto = useGoto();\n const { productList, tempLensThicknessSettings, tempDiscountSettings } = useSelector(getMyCompanion);\n const { t } = useTranslation(useSelector(getApp));\n const { firstLogin } = useSelector(getApp);\n const dispatch = useDispatch();\n const companion = useSelector(getMyCompanion)\n const headers = {\n headers: {\n 'Authorization': `Bearer ${token}`,\n 'content-type': \"application/json\"\n }\n }\n const [showConfirmModal, setShowConfirmModal] = useState(false)\n const [showErrorModal, setShowErrorModal] = useState(false)\n const [errorMessage, setErrorMessage] = useState(\"\")\n const appStore = useSelector(getApp);\n const { experience } = appStore;\n const [isBelgium , setIsBelgium] =useState(false);\n const country = accountDetails?.shop.country;\n const hideEssilorRecommend = ['be', 'dk', 'se', 'fi', 'no', 'in', 'in2'].includes(country || '')\n const [ hidePrice ] = useDisableCountry([\"gr\"])\n\n // HOOKS\n useEffect( () => {\n if(myCompannion.isPriceOff !== undefined){\n setPriceOff(myCompannion.isPriceOff);\n }\n country ==='be' ? setIsBelgium(true) : setIsBelgium(false)\n }, [myCompannion.isPriceOff])\n\n useEffect(() => {\n if (companion.configUpdatedAt)\n setConfigCreationDate(new Date(companion.configUpdatedAt).toDateString())\n\n }, [companion.configUpdatedAt])\n\n // METHODS\n const priceOffOnclickHandler = () => {\n dispath(myCompanionSlice.actions.offPrice(!priceOff));\n setPriceOff(!priceOff);\n\n if(!priceOff){\n dispath(myCompanionSlice.actions.offEssilorRecommended(false));\n setEssilorRecommend(false);\n }\n }\n\n const essilorRecommendOnclickHandler = () => {\n dispath(myCompanionSlice.actions.offEssilorRecommended(!isEssilorRecommend));\n setEssilorRecommend(!isEssilorRecommend);\n }\n\n const getMasterLicenseConfiguration = () => {\n setShowConfirmModal(false)\n\n axios.get(\n ENDPOINTS.masterLicenseData,\n headers\n ).then(result => {\n if (result.data.code === '001') {\n setShowSuccessModal(true)\n setConfigCreationDate(new Date(result.data.data.updated_at).toDateString())\n dispath(myCompanionSlice.actions.saveConfigurationData(result.data.data))\n setTimeout(() => setShowSuccessModal(false), 500)\n } else if (result.data.code === '003') {\n setShowErrorModal(true)\n setErrorMessage(result.data.message)\n }\n })\n }\n\n const saveConfiguration = () => {\n\n const data = {\n created_by: globalInformation.license,\n shop_id: accountDetails?.shop.shop_account_no,\n region_id: accountDetails?.shop.country,\n created_at: new Date().toLocaleDateString(),\n product_selected: companion.productList,\n pricing_discount: companion.tempDiscountSettings,\n patient_list: {},\n lens_thickness: companion.tempLensThicknessSettings\n }\n\n axios.post(\n ENDPOINTS.masterLicenseData,\n data,\n headers\n ).then(result => {\n if (result.data.code === '001') {\n dispath(productsSlice.actions.updateProductList(productList));\n dispath(appSlice.actions.saveLensThicknessSettings(tempLensThicknessSettings));\n dispath(appSlice.actions.saveDiscountSettings(tempDiscountSettings));\n dispath(appSlice.actions.saveMyCompannionData({\n isPriceOff: priceOff,\n essilorRecommend: isEssilorRecommend,\n category: 'correct',\n tempLensThicknessSettings: tempLensThicknessSettings,\n tempDiscountSettings: tempDiscountSettings\n }));\n setShowSaveModal(true);\n } else if (result.data.code === '003') {\n setShowErrorModal(true)\n setErrorMessage(result.data.message)\n }\n })\n }\n\n const save = () => {\n dispath(productsSlice.actions.updateProductList(productList));\n\n dispath(appSlice.actions.saveLensThicknessSettings(tempLensThicknessSettings));\n dispath(appSlice.actions.saveDiscountSettings(tempDiscountSettings));\n\n dispath(appSlice.actions.saveMyCompannionData({\n isPriceOff: priceOff,\n essilorRecommend: isEssilorRecommend,\n category: 'correct',\n tempLensThicknessSettings: tempLensThicknessSettings,\n tempDiscountSettings: tempDiscountSettings\n }));\n\n setShowSaveModal(true);\n if(firstLogin?.view === 'companion' && firstLogin?.isOpen){\n setTimeout(() => {\n if(firstLogin.cookieEnabled){\n dispatch(appSlice.actions.setViewFirstLogin('terms'));\n }\n else{\n dispatch(appSlice.actions.setViewFirstLogin('language'));\n dispatch(appSlice.actions.setOpenFirstLogin(false));\n dispatch(appSlice.actions.setFirstLoginStatus(true));\n }\n }, 2000);\n }\n else{\n goto.route(routes.home, 2000)\n };\n }\n\n return (\n
    \n\n {\n (hidePrice) ?
    :\n \n }\n {\n !priceOff && !hideEssilorRecommend &&\n \n }\n\n
    \n {\n !accountDetails?.is_master && \n {t('masterlicense_timestamp')} {configCreationDate}\n \n\n }\n
    \n {\n accountDetails?.is_master\n ? \n : setShowConfirmModal(true)}\n />\n }\n
    \n\n
    \n\n setShowErrorModal(false)}\n height=\"23rem\" width=\"26rem\"\n show={showErrorModal} hideCloseButton={true}>\n\n
    \n

    {errorMessage}

    \n
    \n \n\n setShowSaveModal(false)}\n height=\"23rem\" width=\"26rem\"\n show={showSaveModal} hideCloseButton={true}>\n\n
    \n \n

    {t('my_practice_my_saved')}

    \n
    \n \n\n setShowSuccessModal(false)}\n height=\"23rem\" width=\"26rem\"\n show={showSuccessModal} hideCloseButton={true}>\n\n
    \n \n

    Success

    \n
    \n\n \n\n {setShowConfirmModal(false)}}\n height=\"18rem\" width=\"24rem\"\n show={showConfirmModal} hideCloseButton={true}>\n\n
    \n

    {t('masterlicense_messageconfig')}

    \n
    \n \n setShowConfirmModal(false)}\n />\n
    \n
    \n\n \n
    \n )\n}\n\nexport default MyCompanionFooter;\n","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport iListMenuItem from '../../interface/list-menu-item.interface';\nimport { getApp } from '../../store/slices/app.slice';\nimport ExperienceType from '../../types/experience.type';\nimport useBEM from '../../utils/hooks/useBEM';\nimport useTranslation from '../../utils/hooks/useTranslation';\nimport Icon from './Icon';\n\ninterface Props {\n items: iListMenuItem[],\n onSelect?: (menu: iListMenuItem) => void,\n value?: iListMenuItem\n experience?: ExperienceType\n}\nconst ListMenu: React.FC = ({\n items,\n onSelect,\n value,\n experience = ExperienceType.STANDARD\n}) => {\n // VARIABLES\n const [B, E] = useBEM('list-menu');\n const { t } = useTranslation(useSelector(getApp));\n const appStore = useSelector(getApp);\n\n // HOOKS\n // METHODS\n const onSelectHandler = (menu: iListMenuItem) => {\n if (onSelect) onSelect(menu);\n }\n const selectedItemClass = (item: iListMenuItem) => {\n if (!value) return \"\";\n return value.value === item.value ? 'selected' : '';\n }\n const selectIcon = () => (appStore.experience === ExperienceType.SUN ? \"-sun\" : \"\")\n\n return (\n
      \n {\n items.map((item, index) => (\n
    • onSelectHandler(item)}>{\n item.icon &&\n \n \n \n }\n \n {\n value && value.value === item.value && \n }\n
    • \n ))\n }\n
    \n )\n}\n\nexport default ListMenu;\n","import React, { Fragment, useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport ListMenu from '../../../components/ui/ListMenu';\nimport { categories } from '../../../constants/my-companion.constants';\nimport iListMenuItem from '../../../interface/list-menu-item.interface';\nimport { getApp } from '../../../store/slices/app.slice';\nimport myCompanionSlice, { getMyCompanion } from '../../../store/slices/mycompanion.slice';\n\ninterface Props {\n\n}\n\nconst MyCompanionLeft : React.FC = () => {\n // VARIABLES\n const [menuItem, selectMenuItem] = useState();\n const dispatch = useDispatch();\n const { firstLogin, accountDetails } = useSelector(getApp);\n \n const { \n isPriceOff, \n essilorRecommend,\n } = useSelector(getMyCompanion);\n\n // HOOKS\n useEffect(() => {\n // Note: temp\n onSelectMenu({\n value: 'correct',\n label: 'Correct',\n icon: 'correct-lens'\n });\n },[])\n\n\n // METHODS\n const onSelectMenu = (menu: iListMenuItem) => {\n dispatch(myCompanionSlice.actions.selectCategory(menu.value))\n selectMenuItem(menu); \n }\n\n const isLastCategory = (index: number) => {\n return categories.length === index + 1;\n }\n const groupCategory = () =>{\n if(firstLogin?.view === 'companion' && firstLogin?.isOpen) return 0\n \n return categories.length-1\n } \n\n const displayAdvance = (list:any) =>{\n if(!isPriceOff && essilorRecommend && accountDetails?.advance_pricing) return list\n const temp = [list[0], list[1].slice(0,-1)];\n return temp\n }\n\n return (\n
    \n \n {\n displayAdvance(categories).map((group:any, index:number) => (\n groupCategory() >= index && (\n \n \n\n {\n !isLastCategory(index) && groupCategory() !== 0 &&\n
    \n }\n\n
    \n )\n \n ))\n } \n\n
    \n )\n}\n\nexport default MyCompanionLeft;","import React, { useRef, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport { getApp } from '../../store/slices/app.slice';\nimport useTranslation from '../../utils/hooks/useTranslation';\nimport Arrow from './Arrow';\n\ninterface Props {\n title: string,\n rightTitle?: React.ReactNode,\n type?: 'parent' | 'child',\n selected?: boolean,\n className?: string,\n clicked?: (expanded: boolean) => void\n rightTitleClicked?: (expanded: boolean) => void,\n\n}\n\nconst Accordion : React.FC = ({\n title,\n children,\n rightTitle,\n type = 'parent',\n className,\n selected = false,\n clicked,\n rightTitleClicked,\n}) => {\n // VARIABLES\n const [open, setOpen] = useState(false);\n const isRightTitleClick = useRef(false);\n const { t } = useTranslation(useSelector(getApp));\n\n // HOOKS\n\n // METHODS\n const onClickHandler = () => {\n if(isRightTitleClick.current){\n isRightTitleClick.current = false;\n return;\n } \n if(clicked)clicked(!open);\n }\n\n const onRightTitleClickHandler = () => {\n isRightTitleClick.current = true;\n if(rightTitleClicked){\n rightTitleClicked(!rightTitleClicked); \n }\n }\n\n const onToggle = () => {\n isRightTitleClick.current = true;\n setOpen(!open);\n }\n\n return (\n
    \n
    \n \n \n\n\n { rightTitle && \n
    \n {rightTitle}\n
    \n }\n\n { children && \n
    \n \n
    \n }\n
    \n {\n open && children &&\n
    \n {children}\n
    \n }\n \n
    \n )\n}\n\nexport default Accordion;","import React from 'react';\n\ninterface Props {\n label?: string,\n checked?: boolean\n}\n\nconst Checkbox : React.FC = ({\n label,\n checked = false\n}) => {\n // VARIABLES\n\n // HOOKS\n\n // METHODS\n\n return (\n
    \n {\n label && \n }\n
    \n )\n}\n\nexport default Checkbox;","import React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport Modal from '../../../components/Modal';\nimport Accordion from '../../../components/ui/Accordion';\nimport Button from '../../../components/ui/Button';\nimport Checkbox from '../../../components/ui/Checkbox';\nimport InputText from '../../../components/ui/InputText';\nimport { discount } from '../../../constants/my-companion.constants';\nimport iDiscountSetting from '../../../interface/discount-setting';\nimport iLensThicknessSetting from '../../../interface/lens-thickness-setting';\nimport iProductBrand from '../../../interface/product-brand.interface';\nimport iProductFamily from '../../../interface/product-family.interface';\nimport iProduct from '../../../interface/product.inteface';\nimport iSubProduct from '../../../interface/sub-product.inteface';\nimport { getApp } from '../../../store/slices/app.slice';\nimport myCompanionSlice, { getMyCompanion } from '../../../store/slices/mycompanion.slice';\nimport { getProducts } from '../../../store/slices/products.slice';\nimport LensFamilyType from '../../../types/lens-family.type';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport useLensConsultation from '../../lens-consultation/useLensConsultation';\nimport { getLensConsultation } from '../../../store/slices/lens-consultation.slice';\nimport useGoto from '../../../utils/hooks/useGoto';\nimport routes from '../../../constants/routes.constant';\n\ninterface Props {\n\n }\n\n\nconst MyCompanionList : React.FC = () => {\n // VARIABLES\n const {\n isPriceOff,\n category,\n productList,\n tempLensThicknessSettings,\n tempDiscountSettings,\n essilorRecommend\n } = useSelector(getMyCompanion);\n\n const {\n lensThicknessSettings,\n discountSettings\n } = useSelector(getApp);\n\n const [editProductPrice, setEditProductPrice] = useState<{\n brand: iProductBrand,\n product: iProduct,\n subProduct?: iSubProduct\n }>();\n const [editBrandPrice, setEditBrandPrice] = useState();\n const [editProductSubProductsPrice, setEditProductSubProductsPrice] = useState<{\n brandId: string,\n productId: string\n }>();\n\n const [editThicknessPrice, setEditThicknessPrice] = useState();\n const [editPrice, setEditPrice] = useState(null);\n const [displayAdv, setDisplayAdv] = useState(false);\n\n const { temporaryProductList } = useSelector(getProducts);\n const { getUniqueSubProducts } = useLensConsultation();\n const [productFamily, setProductFamily] = useState();\n const dispatch = useDispatch();\n const [B, E] = useBEM('mycompanion');\n const {t} = useTranslation(useSelector(getApp));\n const { breakdown } = useSelector(getLensConsultation);\n const goto = useGoto();\n\n // HOOKS\n useEffect(() => {\n dispatch(myCompanionSlice.actions.setLensThicknessSettings(lensThicknessSettings))\n dispatch(myCompanionSlice.actions.setDiscountSettings(discountSettings))\n }, [lensThicknessSettings, discountSettings]);\n\n useEffect(() => {\n dispatch(myCompanionSlice.actions.setProductList(temporaryProductList))\n }, [temporaryProductList])\n\n useEffect(() => {\n if(category === 'advancesetting' && !isPriceOff && essilorRecommend) goto.route(routes.advanceSetting);\n else setDisplayAdv(false)\n if(isLensProduct() && productList){\n setProductFamily(getProductBrands());\n } else {\n setProductFamily(undefined);\n }\n }, [category, productList, isPriceOff, essilorRecommend])\n const priceContent = (price: number) => {\n\n if(isPriceOff) return null;\n return \n {`${price} ${breakdown.currency}`}\n ;\n }\n\n const showLensThickness = () => {\n return category === 'thickness'\n }\n\n const showDiscount = () => {\n return category === 'secondpair'\n }\n\n const enableDisabledLensThickness = (setting: iLensThicknessSetting) => {\n\n // Note: disabling all index is not allowed\n if(setting.enabled){\n const countEnabled = tempLensThicknessSettings.filter( x => x.enabled).length;\n if(countEnabled === 1)return;\n }\n \n dispatch(myCompanionSlice.actions.enableDisabledLensThicknessSetting(setting));\n }\n\n const enableDisabledDiscount = (setting: iDiscountSetting) => {\n dispatch(myCompanionSlice.actions.enableDisabledDiscountSettings(setting));\n }\n\n const submitNewPrice = () => {\n if(editProductPrice){\n dispatch(myCompanionSlice.actions.updateProductPrice({\n ...editProductPrice,\n family: category as LensFamilyType,\n newPrice: editPrice as number\n }));\n setEditProductPrice(undefined);\n setEditPrice(null);\n return\n }\n\n if(editThicknessPrice) {\n dispatch(myCompanionSlice.actions.updatePriceLensThicknessSetting({\n value: editThicknessPrice,\n newPrice: editPrice as number\n }));\n setEditThicknessPrice(undefined);\n setEditPrice(null);\n return\n }\n\n if(editBrandPrice){\n dispatch(myCompanionSlice.actions.updateBrandProductPrices({\n familyId: productFamily?.id as string,\n brandId: editBrandPrice.id,\n newPrice: editPrice as number\n }));\n setEditBrandPrice(undefined);\n setEditPrice(null);\n }\n\n if(editProductSubProductsPrice){\n dispatch(myCompanionSlice.actions.updateProductSubProductsPrices({\n familyId: productFamily?.id as string,\n brandId: editProductSubProductsPrice.brandId,\n productId: editProductSubProductsPrice.productId,\n newPrice: editPrice as number\n }));\n setEditProductSubProductsPrice(undefined);\n setEditPrice(null);\n }\n }\n\n const priceOnChange = (event: any) => {\n if(isNaN(+event.target.value)) {return}\n setEditPrice(Number(event.target.value));\n }\n\n const isLensProduct = () => {\n if(!category)return false;\n return ['correct','protect','enhance'].includes(category);\n }\n\n const getProductBrands = (): iProductFamily => {\n const products = productList.filter( (x:iProductFamily) => x.id === category as LensFamilyType);\n return products[0];\n }\n\n const enableDisableProduct = (brand: iProductBrand, product: iProduct, subProduct?: iSubProduct) => {\n dispatch(myCompanionSlice.actions.enableDisableProduct({\n family: category as LensFamilyType,\n brand, product, subProduct\n }))\n }\n\n const closeEditPricePopup = () => {\n setEditPrice(null);\n }\n\n const checkBrandProductPriceZero = (brand: iProductBrand) => {\n const accumulated = brand.products.reduce((total ,item) => {\n return total + (item.price || 0);\n }, 0);\n return accumulated < 1;\n }\n\n const checkProductSubProductsPriceZero = (product: iProduct) => {\n if(!product.subProducts)return false;\n const accumulated = product.subProducts.reduce((total ,item) => {\n return total + (item.price || 0);\n }, 0);\n return accumulated < 1;\n }\n\n const renderDiscountRightTitle = (isFirstLayer: boolean, pair: iDiscountSetting) => {\n const isAmountEnabled = tempDiscountSettings[0].amountEnabled\n\n return isFirstLayer ?
    \n !pair.amountEnabled ? enableAmountDiscountButton(pair, true) : {}}/>\n !pair.discountEnabled ? enableAmountDiscountButton(pair, false) : {}}/>\n
    :
    \n {\n //validate\n if(isNaN(+e.target.value)) {return}\n if(!isAmountEnabled && Number(e.target.value) > 100) {return}\n\n dispatch(myCompanionSlice.actions.updateDiscountPair({\n value: pair.value,\n newPrice: Number(e.target.value),\n isAmount: isAmountEnabled\n }))\n }}\n />\n {isAmountEnabled ? breakdown.currency : '%'}\n
    \n }\n\n const enableAmountDiscountButton = (pair: iDiscountSetting, isAmount: boolean) => {\n isAmount ? dispatch(myCompanionSlice.actions.enableAmountBtn(pair)) :\n dispatch(myCompanionSlice.actions.enableDiscountBtn(pair))\n }\n\n return (\n
    \n {\n !displayAdv && (\n <>\n {\n productFamily &&\n productFamily.brands.map( brand => (\n {\n if(essilorRecommend)return;\n setEditPrice(0);\n setEditBrandPrice(brand)\n }}\n >\n\n {\n brand.products.map( (product) => (\n\n {\n if(essilorRecommend)return;\n setEditPrice(product.price || 0);\n\n if(product.subProducts){\n setEditProductSubProductsPrice({\n productId: product.id,\n brandId: brand.id\n })\n return;\n }\n\n setEditProductPrice({\n brand,\n product\n })\n }}\n clicked={() => {\n enableDisableProduct(brand, product)\n }}\n selected={ product.enabled }\n key={product.id}\n title={product.label} type=\"child\">\n\n\n {/* SUB PRODUCTS */}\n { product.subProducts &&\n getUniqueSubProducts(product.subProducts, {\n isLowestIndex: true\n }).map( subProduct => (\n enableDisableProduct(brand, product, subProduct)}\n selected={subProduct.enabled}\n key={subProduct.id}\n title={subProduct.label}\n type=\"child\"\n rightTitle={priceContent(subProduct.price)}\n rightTitleClicked={() => {\n if(essilorRecommend)return;\n setEditPrice(subProduct.price);\n setEditProductPrice({\n brand,\n product,\n subProduct\n })\n }}\n />\n ))}\n {/* SUB PRODUCTS END*/}\n\n\n \n\n ))\n }\n\n \n \n ))\n }\n\n {\n showLensThickness() &&\n tempLensThicknessSettings.map( (thickness, index ) => (\n enableDisabledLensThickness(thickness)}\n title={String(thickness.value)}\n selected={thickness.enabled}\n key={index}\n rightTitle={\n
    \n {priceContent(thickness.price)}\n \n
    \n\n }\n rightTitleClicked={() => {\n setEditPrice(thickness.price);\n setEditThicknessPrice(thickness.value);\n }}\n />\n ))\n }\n\n {\n showDiscount() &&\n \n {\n tempDiscountSettings.map( (pair, index) => (\n {}}\n title={String(t(pair.label))}\n selected={pair.enabled}\n key={index}\n rightTitle={renderDiscountRightTitle(pair.value === 'p0', pair)}/>\n ))\n }\n \n }\n\n \n )\n }\n \n \n {closeEditPricePopup()}}>\n
    \n

    {t('my_companion__enter_price')}

    \n\n
    \n \n\n
    \n
    \n
    \n
    \n )\n}\n\nexport default MyCompanionList;\n","import React, { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { getApp } from '../../store/slices/app.slice';\nimport myCompanionSlice from '../../store/slices/mycompanion.slice';\nimport MyCompanionFooter from './components/MyCompanionFooter';\nimport MyCompanionLeft from './components/MyCompanionLeft';\nimport MyCompanionList from './components/MyCompanionList';\n\ninterface Props {\n\n}\n\nconst MyCompanion : React.FC = () => {\n // VARIABLES\n const dispatch = useDispatch();\n const { myCompannion } = useSelector(getApp);\n\n // HOOKS\n useEffect(() => {\n // retrieve data from app store mycompannion\n dispatch(myCompanionSlice.actions.saveMyCompannionData(myCompannion));\n return () => {\n dispatch(myCompanionSlice.actions.selectCategory('correct'))\n }\n },[])\n\n // METHODS\n\n return (\n
    \n \n \n \n
    \n )\n}\n\nexport default MyCompanion;","import React, { ChangeEvent, useEffect, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport { getApp } from '../../store/slices/app.slice';\nimport useTranslation from '../../utils/hooks/useTranslation';\n\ninterface Props {\n label?: string, \n placeholder?: string,\n value?: string,\n readOnly?: boolean,\n\n // Temporary\n validation?: any[],\n // { regex: any, errorMessage: string },\n // { required: boolean, errorMessage: string }\n // Temporary\n onValidate?: (valid: boolean) => void,\n\n onChange?: (value: string) => void\n}\n\nconst MaterialTextInput : React.FC = ({\n label,\n placeholder,\n value,\n readOnly = false,\n validation,\n onChange,\n //TEMP\n onValidate\n}) => {\n // VARIABLES\n // const ref = useRef(null);\n const [error , setError] = useState(false);\n const [errorMessage , setErrorMessage] = useState([]);\n const {t} = useTranslation(useSelector(getApp));\n\n // HOOKS\n useEffect(() => {\n //Note: Temporary validation\n //Todo: create generic validation\n if(validation && validation.length > 0){\n setErrorMessage([]);\n setError(false);\n\n validation.forEach( (validate: any) => {\n if(validate.required && (!value || value.length === 0)){\n setErrorMessage( prev => [ ...prev, validate.errorMessage ])\n setError(true);\n }\n\n if(validate.regex && value && value.length > 0){\n const test = validate.regex.test(String(value).toLowerCase());\n setError(!test);\n if(!test) {\n setErrorMessage( prev => [ ...prev, validate.errorMessage ])\n }\n }\n });\n }\n\n }, [value])\n\n useEffect(() => {\n if(onValidate)onValidate(error);\n }, [error])\n\n // METHODS\n const inputOnChange = (event: ChangeEvent) => {\n // setValue(event.target.value);\n if(onChange)onChange(event.target.value);\n }\n\n return (\n
    \n \n\n { label && \n \n }\n\n {\n error &&\n \n {t(errorMessage[0])}\n \n }\n
    \n )\n}\n\nexport default MaterialTextInput;","import React, { useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport Modal from '../../components/Modal';\nimport Button from '../../components/ui/Button';\nimport Icon from '../../components/ui/Icon';\nimport MaterialInput from '../../components/ui/MateriaTextlnput';\nimport routes from '../../constants/routes.constant';\nimport appSlice, { getApp } from '../../store/slices/app.slice';\nimport useBEM from '../../utils/hooks/useBEM';\nimport useGoto from '../../utils/hooks/useGoto';\nimport useTranslation from '../../utils/hooks/useTranslation';\n\ninterface Props {\n\n}\n\nconst PracticeID : React.FC = () => {\n // VARIABLES\n\n // Temporary\n const emailReg = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n\n const [B, E] = useBEM('practice-id');\n const [showSaveModal, setShowSaveModal] = useState(false);\n const { globalInformation, accountDetails} = useSelector(getApp);\n const dispatch = useDispatch();\n const goto = useGoto();\n const [globalInfo, setGlobalInfo] = useState({\n ...globalInformation,\n storeName: globalInformation.storeName || accountDetails?.shop.shop_name || ''\n });\n const emailValidation = [\n { regex: emailReg, errorMessage: 'message_mess_my_practice_id' },\n { required: true, errorMessage: 'practice_id_email_is_required' },\n ];\n //TEMP\n const [invalidForm, setInvalidForm] = useState(false);\n const {t} = useTranslation(useSelector(getApp));\n\n const expertLevelMapping: { [key: string]: string } = {\n gold: 'my_practice_my_essilor_exp_lev_gold',\n silver: 'my_practice_my_essilor_exp_lev_silver',\n bronze: 'my_practice_my_essilor_exp_lev_bronze'\n }\n\n\n // HOOKS\n\n // METHODS\n const onSave = () => {\n dispatch(appSlice.actions.saveGlobalInformation(globalInfo));\n setShowSaveModal(true);\n goto.route(routes.home, 2000);\n }\n\n const onChangeHandler = (key: string, value: string) => {\n setGlobalInfo({\n ...globalInfo,\n [key]: value\n })\n }\n\n return (\n
    \n\n
    \n
    \n\n\n
    \n

    {t('my_practice_my_glob_info')}

    \n onChangeHandler('storeName', v)}\n />\n\n onChangeHandler('phone', v)}\n />\n\n onChangeHandler('address', v)}\n />\n\n onChangeHandler('email', v)}\n onValidate={(valid) => setInvalidForm(valid)}\n />\n\n onChangeHandler('nickname', v)}\n />\n
    \n\n\n
    \n

    {t('my_practice_my_lic_numbers')}

    \n \n \n {/* */}\n {/* */}\n \n
    \n\n
    \n\n setShowSaveModal(false)}\n height=\"23rem\" width=\"26rem\"\n show={showSaveModal} hideCloseButton={true}>\n\n
    \n \n

    {t('my_practice_my_saved')}

    \n
    \n\n \n
    \n )\n}\n\nexport default PracticeID;\n","import React, { useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport Button from '../../../components/ui/Button';\nimport { getApp } from '../../../store/slices/app.slice';\nimport useTranslation from '../../../utils/hooks/useTranslation';\n\ninterface Props {\n\n}\n\nconst LensProposaBuilderlExperience : React.FC = () => {\n // VARIABLES\n const [experience, setExperience] = useState(1);\n const { t } = useTranslation(useSelector(getApp));\n const buttons = [\n { id: 1, text: 'lens_proposal_builder_lpb__standard_experience' },\n { id: 2, text: 'lens_proposal_builder_lpb__ava_tm_experience', soon: true },\n { id: 3, text: 'lens_proposal_builder_lpb__sun_experience', soon: true}\n ];\n\n // HOOKS\n\n // METHODS\n const buttonIcon = (status?: string) => {\n return ;\n }\n\n return (\n
    \n {\n buttons.map( b => (\n
    \n )\n}\n\nexport default LensProposaBuilderlExperience;","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport Button from '../../../components/ui/Button';\nimport Icon from '../../../components/ui/Icon';\nimport routes from '../../../constants/routes.constant';\nimport iRoute from '../../../interface/route.interface';\nimport iTheme from '../../../interface/theme.interface';\nimport { getUser } from '../../../store/slices/user.slice';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport useGoto from '../../../utils/hooks/useGoto';\nimport Utils from '../../../utils/Utils';\nimport useGoogleAnalytics from '../../../utils/hooks/useGoogleAnalytics';\nimport AgeCategoryType from '../../../types/age-category.type';\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport { getApp } from '../../../store/slices/app.slice';\n\n\ninterface Props {\n label: string,\n icon: string,\n completed?: boolean,\n className?: string,\n footer?: React.ReactNode,\n route?: iRoute,\n\n theme?: iTheme\n}\n\nconst LensProposalBuilderCard : React.FC = ({\n label,\n icon,\n completed = false,\n className = '',\n footer,\n route,\n theme\n}) => {\n // VARIABLES\n const [B, E] = useBEM('lens-proposal-builder-card');\n const { ageCategory } = useSelector(getUser);\n const goto = useGoto();\n const { getThemeVariables } = Utils();\n const ga = useGoogleAnalytics();\n const { t } = useTranslation(useSelector(getApp));\n\n // HOOKS\n\n // METHODS\n const classModifiers = () => {\n const classes = [];\n if(completed) classes.push('completed');\n if(footer) classes.push('with-footer');\n classes.push(ageCategory?.value || '');\n return classes;\n }\n\n const gotoRoute = () => {\n if (!route)return;\n\n ga.event({\n category: `LPB - ${t(ageCategory?.label as string, 'enUS')}`, \n action: 'Button Click',\n label: t(label, 'enUS')\n });\n \n goto.routeWithTransition(\n routes.lensProposalBuilder,\n route,\n 'FADE_OUT',\n 800\n );\n }\n\n const actionButtonIcon = () => {\n const plus = ageCategory?.value === AgeCategoryType.KIDS ? 'plus-white-outline' : 'plus';\n\n return completed ? 'pencil' : plus;\n }\n\n const themeStyle = () => {\n if(!theme)return {};\n\n return getThemeVariables(theme)\n }\n\n return (\n
    \n\n
    \n

    \n \n {t(label)}\n

    \n\n { completed && {t('lens_thickness_lt_completed')} }\n
    \n
    \n )\n}\n\nexport default LensProposalBuilderCard;","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { KIDS_THEMES } from '../constants/theme.constants';\nimport iTheme from '../interface/theme.interface';\nimport appSlice, { getApp } from '../store/slices/app.slice';\nimport useBEM from '../utils/hooks/useBEM';\nimport Icon from './ui/Icon';\n\ninterface Props {\n\n}\n\nconst ThemeSetting : React.FC = () => {\n // VARIABLES\n const [B, E] = useBEM('theme-setting');\n const themes = KIDS_THEMES;\n const { theme } = useSelector(getApp);\n const dispatch = useDispatch();\n\n // HOOKS\n\n // METHODS\n const multiColor = (index: number) => {\n if(index !== themes.length)return null;\n\n return [1,2,3,0].map((i)=>(\n
    \n ))\n }\n\n const activeTheme = (themeKey: iTheme) => {\n if(theme.id !== themeKey.id)return null;\n return \n }\n\n const changeTheme = (theme: iTheme) => {\n dispatch(appSlice.actions.changeTheme(theme));\n }\n\n return (\n
      \n {\n themes.map((item,index) => (\n
    • changeTheme(item)}\n className={E('item', item.id)}\n key={index} style={{\n backgroundColor: item.main\n }}>\n\n \n {multiColor(index + 1)}\n\n {activeTheme(item)}\n\n
    • \n ))\n }\n
    \n )\n}\n\nexport default ThemeSetting;","import axios from 'axios';\nimport React, { useState, useEffect, useRef } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport ThemeSetting from '../../../components/ThemeSetting';\nimport Icon from '../../../components/ui/Icon';\nimport { getApp } from '../../../store/slices/app.slice';\nimport userSlice, { getUser } from '../../../store/slices/user.slice';\nimport needExplorerSlice from '../../../store/slices/need-explorer.slice';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport ENDPOINTS from '../../../constants/endpoints';\nimport useIndexedDB from '../../../utils/hooks/useIndexedDB';\nimport useGoto from '../../../utils/hooks/useGoto';\nimport routes from '../../../constants/routes.constant';\nimport Modal from '../../../components/Modal';\nimport measureSlice from '../../../store/slices/measure.slice';\nimport lensConsultationSlice, { getLensConsultation } from '../../../store/slices/lens-consultation.slice';\nimport { getMeasure } from '../../../store/slices/measure.slice';\nimport DeepReplaceObjectValue from '../../../utils/deep-replace-object-value';\nimport Button from '../../../components/ui/Button';\nimport Alert from '../../../components/ui/Alert';\nimport useLensConsultation from '../../lens-consultation/useLensConsultation';\n\ninterface Props {\n isExperience: boolean,\n onActionTrigger: (action: | 'experience' | 'id') => void\n}\n\nconst LensProposalBuilderFooter : React.FC = ({\n isExperience,\n onActionTrigger\n}) => {\n // VARIABLES\n const [B, E] = useBEM('lens-proposal-builder-footer');\n const { id, ageCategory } = useSelector(getUser);\n const { globalInformation, token } = useSelector(getApp);\n const userData = useSelector(getUser)\n const { t } = useTranslation(useSelector(getApp));\n const [db, setDB] = useState(undefined)\n const dbRef = useRef(db)\n const { connect, createTables, remove } = useIndexedDB()\n const dispatch = useDispatch()\n const goto = useGoto()\n const [showSuccessModal, setShowSuccessModal] = useState(false);\n const { lensRecommendation } = useSelector(getLensConsultation);\n const { measurementData } = useSelector(getMeasure);\n const [offlineAlert, showOfflineAlert] = useState(false);\n const { correctPrescriptionData } = useLensConsultation();\n\n\n // HOOKS\n useEffect(() => {\n async function connectIndexDB() {\n const indexDB = await connect((db: any) => createTables(db))\n setDB(indexDB)\n }\n connectIndexDB()\n }, [])\n\n useEffect(() => {\n dbRef.current = db\n }, [db])\n\n // METHODS\n const removeUser = (userId: string) => {\n if(dbRef.current)\n remove(dbRef.current, 'userStore', userId)\n .then((result) => console.log(\"Remove Result\", result))\n }\n\n const appendLensRecommendation = (userData: any, lensRecommendation: any) => {\n return {\n ...userData,\n lensRecommendation,\n lensConsultation: {\n ...userData.lensConsultation,\n lensRecommendation\n }\n }\n }\n \n\n const handlePushButton = () => {\n const headers = {\n headers: {\n 'Authorization': `Bearer ${token}`,\n 'content-type': \"application/json\"\n }\n }\n\n const deepReplace = DeepReplaceObjectValue({ from: undefined, to: \"---\" })\n let newUserData = deepReplace.replace({\n ...userData,\n // Note: save lens recommendation when order is not validate\n ...\n ( \n !userData.lensRecommendation ? \n appendLensRecommendation(userData,lensRecommendation) : \n {} \n ),\n // Note: save measures data \n measures: measurementData\n });\n\n //Note: prescription data structure correction\n // incase rx data is invalid\n newUserData = correctPrescriptionData(newUserData, '---');\n\n const data = {\n created_by: globalInformation.license,\n nickname: globalInformation.nickname || globalInformation.storeName,\n order_id: userData.id,\n order: newUserData\n }\n\n if(!navigator.onLine) {\n showOfflineAlert(true);\n return;\n }\n\n axios.post(\n ENDPOINTS.orders,\n data,\n headers\n ).then(result => {\n if (result.data.code === '001') {\n removeUser(String(userData.id))\n dispatch(userSlice.actions.clearUserState())\n dispatch(needExplorerSlice.actions.resetData())\n dispatch(measureSlice.actions.resetData())\n dispatch(lensConsultationSlice.actions.resetData())\n setShowSuccessModal(true)\n setTimeout(() => {\n goto.route(routes.home)\n }, 800)\n }\n })\n }\n\n return (\n
    \n
    \n \n onActionTrigger('id')}/>\n \n
    \n\n\n { ageCategory?.value !== \"kids\" &&\n
    \n \n onActionTrigger('experience')}/>\n
    \n }\n\n { ageCategory?.value === \"kids\" && }\n\n setShowSuccessModal(false)}\n height=\"23rem\" width=\"35rem\"\n show={showSuccessModal}\n hideCloseButton={true}\n >\n
    \n \n

    {t('data_sharing_successfully_shared')}

    \n
    \n\n \n\n showOfflineAlert(false)}\n buttons={[{\n id: 'ok',\n label: t('data_sharing_patient_id_has_been_alreayd_selected_ok')\n }]}\n />\n
    \n )\n}\n\nexport default LensProposalBuilderFooter;\n","import React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport Modal from '../../components/Modal';\nimport Button from '../../components/ui/Button';\nimport InputText from '../../components/ui/InputText';\nimport routes from '../../constants/routes.constant';\nimport userSlice, { getUser } from '../../store/slices/user.slice';\nimport withAnimationTransition from '../../utils/hoc/withAnimationTransition';\nimport useBEM from '../../utils/hooks/useBEM';\nimport LensProposaBuilderlExperience from './components/LensProposaBuilderlExperience';\nimport LensProposalBuilderCard from './components/LensProposalBuilderCard';\nimport LensProposalBuilderFooter from './components/LensProposalBuilderFooter';\nimport needExplorerSlice, { getNeedExplorer } from '../../store/slices/need-explorer.slice';\nimport { KIDS_THEMES } from '../../constants/theme.constants';\nimport { getApp } from '../../store/slices/app.slice';\nimport Utils from '../../utils/Utils';\nimport lensThicknessSlice from '../../store/slices/lens-thickness.slice';\nimport lensConsultationSlice from '../../store/slices/lens-consultation.slice';\nimport useTranslation from '../../utils/hooks/useTranslation';\nimport measureSlice, { getMeasure } from '../../store/slices/measure.slice';\nimport summarySlice, { getSummary } from '../../store/slices/summary.slice';\nimport { IndexedDBContext, IndexedDBContextType } from '../../utils/context/indexedDBContext';\nimport useGoogleAnalytics from '../../utils/hooks/useGoogleAnalytics';\nimport deliverySlice, { getDelivery } from '../../store/slices/delivery.slice';\nimport iUserStore from '../../store/interface/user-store.interface';\n\ninterface Props {\n\n}\n\nconst LensProposalBuilder : React.FC = () => {\n // VARIABLES\n const user = useSelector(getUser);\n\n const [B, E] = useBEM(routes.lensProposalBuilder.id);\n const [isExperience, setIsExperience] = useState(false);\n const [modifyId, setModifyId] = useState(false);\n const [modifyIDField, setModifyIDField] = useState('');\n\n const dispatch = useDispatch();\n const { needExplorer, measures, lensConsultation, delivery, prescription } = routes;\n const { generateRandomNumbers, getDateTimeDifference } = Utils();\n const [randomThemeIndex, setRandomThemeIndex] = useState([]);\n const { theme } = useSelector(getApp);\n const themes = KIDS_THEMES;\n const {measurementData} = useSelector(getMeasure);\n const { id, summaryList1, summaryList2, sessionStart } = user;\n const {get} = React.useContext(IndexedDBContext) as IndexedDBContextType;\n const { t } = useTranslation(useSelector(getApp));\n const ga = useGoogleAnalytics();\n const { validatedTimestamp } = useSelector(getDelivery);\n const measuresState = useSelector(getMeasure);\n\n // HOOKS\n useEffect(() => {\n const currentTimeStamp = new Date();\n\n if(user.lensConsultation.isValidated && sessionStart){\n dispatch(userSlice.actions.sessionStart(undefined));\n const timediff = getDateTimeDifference(new Date(sessionStart), currentTimeStamp);\n ga.event({\n category: 'Patient Journey',\n action: 'Engagement - LC',\n label: timediff\n });\n }\n\n if(validatedTimestamp){\n dispatch(deliverySlice.actions.clearValidatedTimestamp());\n const timediff = getDateTimeDifference(new Date(validatedTimestamp), currentTimeStamp);\n ga.event({\n category: 'Patient Journey',\n action: 'Engagement - Delivery',\n label: timediff\n });\n }\n\n if(measuresState.sessionStart && measuresState.isSavePairData) {\n const timediff = getDateTimeDifference(new Date(measuresState.sessionStart), currentTimeStamp);\n ga.event({\n category: 'Measurement',\n action: 'Measurement Complete',\n label: `${timediff} - pair${measuresState.isSavePairData}`\n });\n dispatch(measureSlice.actions.savePairData(0));\n dispatch(measureSlice.actions.sessionStart(undefined));\n }\n }, [])\n\n useEffect(() => {\n setModifyIDField(id || '');\n }, [id])\n\n useEffect(() => {\n setRandomThemeIndex(generateRandomNumbers(themes.length - 1));\n }, [theme])\n\n useEffect(()=>{\n if(measurementData.three.length > 0){\n dispatch(userSlice.actions.saveMeasuresData(measurementData));\n }\n }, [measurementData])\n useEffect(()=>{\n if(lensConsultation)\n dispatch(userSlice.actions.saveSummary1(summaryList1));\n }, [summaryList1])\n useEffect(()=>{\n dispatch(userSlice.actions.saveSummary2(summaryList2));\n }, [summaryList2])\n // METHODS\n const footerActionListener = (action: string) => {\n if(action === 'id')\n setModifyId(true);\n else\n setIsExperience(!isExperience);\n }\n const getWord = (value:string) =>{\n\n return value.substr(0, value.indexOf(':'));\n }\n const lensConsultationFooter = () => {\n const checker = checkIfAllModuleAreCompleted()\n if(IsModuleCompleted(lensConsultation.label)){\n \n }\n if(checker && !IsModuleCompleted(lensConsultation.label)){\n const completedModules = checker.map((label:string, k:number) => {\n return ({t(label)})\n })\n\n\n return checker.length > 0 && \n }else{\n return false\n }\n }\n\n const checkIfAllModuleAreCompleted = () => {\n const completed = []\n\n IsModuleCompleted(needExplorer.label) && completed.push(needExplorer.label)\n IsModuleCompleted(prescription.label) && completed.push(prescription.label)\n IsModuleCompleted(measures.label) && completed.push(measures.label)\n IsModuleCompleted(lensConsultation.label) && completed.push(lensConsultation.label)\n IsModuleCompleted(delivery.label) && completed.push(delivery.label)\n\n return completed.length > 0 ? completed : false\n }\n\n const modalOnClose = () => {\n setModifyId(false);\n }\n\n const idOnchange = (event: any) => {\n setModifyIDField(event.target.value);\n }\n\n // TODO: Create utility function/ or custom hooks\n const transformNeedExplorer = (userData: iUserStore) => {\n let newData = userData.needExplorer;\n\n // Note: set canSelectMultiple: false for question '6.3' for kids\n // select only one answer\n if(userData.ageCategory?.value === 'kids'){\n newData = {\n ...newData,\n questions: newData.questions.map( q => {\n if(q.id === '6'){\n return {\n ...q,\n questions: q.questions.map( x => {\n if(\n x.id === '6.3' &&\n x.canSelectMultiple &&\n x.answer\n ){\n return {\n ...x,\n answer: (x.answer as any[])[0],\n canSelectMultiple: false\n }\n }\n return x;\n })\n }\n }\n return q;\n })\n }\n }\n return newData;\n }\n\n const editId = async () => {\n const user = await get('userStore',String(modifyIDField));\n if(!modifyIDField || modifyIDField.length < 6 || !user){\n alert('You have entered an invalid or not existing ID, Please Try Again');\n return;\n }\n dispatch(userSlice.actions.setUserData(user));\n dispatch(lensThicknessSlice.actions.setLensThickness(user.lensThickness));\n const finalNeedExplorer = transformNeedExplorer(user);\n dispatch(needExplorerSlice.actions.setData(finalNeedExplorer));\n dispatch(lensConsultationSlice.actions.saveLensRecommendationDataFromStore(user.lensRecommendation));\n dispatch(measureSlice.actions.saveMeasureFromStore(user.measures));\n dispatch(summarySlice.actions.saveSummary1(user.summaryList1));\n dispatch(summarySlice.actions.saveSummary2(user.summaryList2));\n dispatch(measureSlice.actions.saveMeasureFromStore(user.measures));\n setModifyId(false);\n }\n\n const IsModuleCompleted = (module: string) => {\n // Validate here if any of the module is completed and return it's appropriate properties\n switch(module) {\n case needExplorer.label: return isGeneralComplete() ? true : false\n case prescription.label: return isPrescriptionComplete() ? true : false\n case measures.label: return isMeasuresComplete() ? true : false\n case lensConsultation.label: return isLensConsultationComplete() ? true : false\n case delivery.label: return false\n default: return false\n }\n\n }\n const closeExperience = () => {\n if (isExperience) {\n setIsExperience(!isExperience)\n }\n }\n\n const isGeneralComplete = () => {\n const { needExplorer } = user\n\n return needExplorer.isGeneralDone\n }\n\n const isPrescriptionComplete = () => {\n const { prescription } = user\n\n return (prescription.values && prescription.values.sphere.od) ? true : false\n }\n const isMeasuresComplete = () => {\n const { measures } = user\n return measures.one.length > 0 &&\n measures.two.length > 0 &&\n measures.three.length > 0\n }\n const isLensConsultationComplete = () => {\n const { lensConsultation } = user\n const { isValidated } = lensConsultation\n\n return isValidated;\n }\n\n const getRandomTheme = (index: number) => {\n if(theme.id !== 'multi')return undefined;\n const randomIndex = randomThemeIndex[index];\n if(!randomIndex && randomIndex!==0)return undefined;\n return themes[randomIndex];\n }\n return (\n
    \n\n
    \n\n \n \n\n {/* label={measures.label} */}\n \n\n \n \n\n \n
    \n
    \n\n \n\n\n modalOnClose()}>\n
    \n

    {t('search_patient_id')}

    \n
    \n \n\n
    \n
    \n
    \n
    \n )\n}\n\nexport default withAnimationTransition(LensProposalBuilder, {\n entrance: 'FADE_IN'\n});\n","import React from 'react'\n\ninterface iTransitionAnimation {\n entrance: 'FADE_IN' | 'SLIDE'\n}\n\nconst withAnimationTransition = (\n WrappedComponent: any, {\n entrance\n }: iTransitionAnimation) => {\n\n const blockClass = 'with-animation-transition';\n const entranceClass = () => {\n return `${blockClass}--entrance-${entrance}`\n }\n const animateClass = (flag: boolean) => {\n return flag ? `animate` : '';\n }\n\n class WithAnimationTransition extends React.Component {\n state = {\n animate: false\n };\n\n componentDidMount(){\n setTimeout(() => {\n this.setState(() => ({\n animate: true\n }));\n })\n }\n\n render() {\n return (\n
    \n \n
    \n )\n }\n }\n\n return WithAnimationTransition;\n}\n\nexport default withAnimationTransition;\n","import React from 'react';\nimport ReactHtmlParser from 'react-html-parser';\nimport useBEM from '../../utils/hooks/useBEM';\nimport { useSelector } from 'react-redux';\nimport useTranslation from '../../utils/hooks/useTranslation';\nimport { getApp } from '../../store/slices/app.slice';\n\ninterface Props {\n\n}\n\nconst LegalNotices : React.FC = () => {\n // VARIABLES\n const [B, E] = useBEM('legal-notices');\n const { t } = useTranslation(useSelector(getApp)); \n\n // HOOKS\n\n // METHODS\n const replaceString = (val: string) =>{\n // const repl = val.replace(/\\r/g, '
    ')\n return val.replace(/\\n/g, '
    ')\n }\n\n const sections = [\n {\n header:t('legal_notice_ln_01_demonstrations_title'),\n content: replaceString(t('legal_notice_ln_01_demonstrations'))\n },\n {\n header:t('legal_notice_ln_under_this_privacy_notice_data_title'),\n content: replaceString(t('legal_notice_ln_under_this_privacy_notice_data')),\n },\n {\n header:t('legal_notice_terms_of_use_title'),\n content:replaceString(t('legal_notice_terms_of_use_content')),\n content1: replaceString(t('legal_notice_agree_terms')),\n content2: replaceString(t('legal_notice_agree_terms_content')),\n },\n {\n header:t('legal_notice_data_content_title'),\n content:replaceString(t('legal_notice_data_content_content')),\n },\n {\n header:t('legal_notice_privacy_title'),\n content:replaceString(t('legal_notice_privacy_content')),\n },\n {\n header:t('legal_notice_prohibited_title'),\n content: replaceString(t('legal_notice_prohibited_content')),\n },\n {\n header:t('legal_notice_ownership_title'),\n content:replaceString(t('legal_notice_ownership_content')),\n },\n {\n header:t('legal_notice_conduct_title'),\n content:replaceString(t('legal_notice_conduct_content')),\n },\n {\n header:t('legal_notice_third_party_title'),\n content:replaceString(t('legal_notice_third_party_content')),\n },\n {\n header:t('legal_notice_disclaimer_title'),\n content:replaceString(t('legal_notice_disclaimer_content')),\n },\n {\n header:t('legal_notice_limitation_title'),\n content:replaceString(t('legal_notice_limitation_content')),\n },\n {\n header:t('legal_notice_provision_title'),\n content:replaceString(t('legal_notice_provision_content')),\n },\n // {\n // header: \"Data\",\n // content: \"

    By choosing to use the “Essilor Companion” Progressive web app you agree to accept the terms and conditions of this Legal Notice governing use of the solution.

    Why does Essilor use your data? To give you a customized experience of the solution, understand how users use Essilor Companion and improve our features.

    Here is a list of data Essilor Companion collects, stores and uses:-Monthly usage time: hours and minutes of the licence-Demonstration click count-Features click count including “eMat” “Lens Proposal Builder” and “What’s New”

    The data recipients are Essilor and selected third parties

    \"\n // },\n // {\n // header: \"Your rights\",\n // content: \"

    Following legislation your rights includes:-The right to access, rectify or erase this data. Kindly ask your Essilor representative to follow your request.-The right to stop Essilor Companion collecting data by turning off internet connection before usage

    \"\n // }\n ]\n const renderSections = () => {\n const sections_jsx = sections.map((section, j)=>{\n return (\n

    \n
    {`0${j+1}`}
    \n\n
    \n

    {section.header}

    \n
    \n {ReactHtmlParser(section.content)}\n
    \n {\n section.content1 && (\n
    \n

    \n {ReactHtmlParser(section.content1)}\n



    \n {ReactHtmlParser(section.content2)}\n
    \n )\n }\n
    \n
    \n )\n })\n \n return sections_jsx\n }\n\n return (\n
    \n {renderSections()}\n
    \n )\n}\n\nexport default LegalNotices;","const anamnesis = [\n { tag: 'Varilux X series', text: 'Vivamus augue quam, maximus sed fringilla sed,' },\n { tag: 'Varilux Comfort Max', text: 'Proin quam dui, congue vitae felis id, vehicula mattis felis.' },\n { tag: 'Crizal Rock', text: 'Etiam venenatis vulputate viverra.' },\n { tag: 'Eyezen Blue UV', text: 'Suspendisse accumsan, odio dapibus ornare hendrerit.' },\n { tag: 'Varilux X series', text: 'Quisque a rutrum est, id vulputate mauris.' },\n { tag: 'Transition GEN 8', text: 'Praesent ut eleifend elit, a molestie est.' },\n];\nexport default anamnesis;","const anamnesisDetails = {\n side: {\n tag: 'Varilux X series',\n title: 'Vivamus augue quam, maximus sed fringilla sed,',\n description: 'Curabitur ac neque libero. Ut leo eros, accumsan a tempor nec, varius eget arcu. Phasellus ullamcorper, mi nec dapibus vestibulum, turpis enim egestas urna, et pharetra elit turpis vel nunc. Fusce ut dui congue, maximus arcu vel, hendrerit tortor. Praesent sit amet turpis auctor, consequat leo ac, luctus risus. Nulla eu erat dictum, tempor nibh sed, tincidunt orci. Proin a nulla ante. '\n },\n summary: [\n {\n categoryIndex: 0,\n questionIndex:0,\n question: 'What kind of vision challenge are you trying to solve?',\n answers: [\n 'Trouble seeing near and far'\n ]\n },\n {\n categoryIndex: 0,\n questionIndex:0,\n question: 'Your vision changes as you get older, what’s your age range?',\n answers: [\n '18-30 years old'\n ]\n },\n {\n categoryIndex: 0,\n questionIndex:0,\n question: 'Where do you spend most of your day?',\n answers: [\n 'Some indoors',\n 'Some outdoors'\n ]\n },\n {\n categoryIndex: 0,\n questionIndex:0,\n question: 'How many hours a day do you spend in front of a screen-computer, phone, tv, etc?',\n answers: [\n '12 + Hours'\n ]\n },\n {\n categoryIndex: 0,\n questionIndex:0,\n question: 'Do you experience any of the following?',\n answers: [\n 'Discomfort from glare at night or from digital devices',\n 'Eyeglass lenses that scratch easily',\n 'Eyeglass lenses that scratch easily',\n 'Exposure to dirt, rain, and wind'\n ]\n },\n {\n categoryIndex: 0,\n questionIndex:0,\n questionRef: undefined,\n answerRef: undefined,\n question: 'How many hours a day do you spend in front of a screen-computer, phone, tv, etc?',\n answers: [\n '12 + Hours'\n ]\n }\n ],\n lens: \"correct\",\n icon: \"correct\" \n};\nexport default anamnesisDetails;","import React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport Modal from '../../../components/Modal';\nimport Icon from '../../../components/ui/Icon';\nimport anamnesisDetailsSummary from '../../../interface/anamnesis-summary.interface';\nimport anamnesisDetails from '../../../constants/anamnesis-summery.constants';\nimport lensConsultationData from '../../../constants/lens-consultation-data.constants';\nimport { getApp } from '../../../store/slices/app.slice';\nimport needExplorerSlice, { getNeedExplorer } from '../../../store/slices/need-explorer.slice';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport useTranslation from '../../../utils/hooks/useTranslation';\n\nimport NeedExplorerViewType from '../../../types/need-explorer-view.type';\ninterface Props {\n onClose: () => void;\n}\n\nconst NeedExplorerAnamnesisDetails: React.FC = ({\n onClose,\n}) => {\n // VARIABLES\n const [B, E] = useBEM('need-explorer-anamnesis-details');\n const [details, setDetails] = useState(anamnesisDetails);\n const { selectedId, questions, significance, selectedLens, selectedLensIcon } = useSelector(getNeedExplorer)\n const { t } = useTranslation(useSelector(getApp));\n const dispatch = useDispatch();\n\n // HOOKS\n useEffect(() => {\n setDetails({\n ...details,\n side: {\n tag: selectedId?.label,\n title: selectedId?.smallTitle,\n description: selectedId?.description,\n },\n summary: getSummaryDetails()\n\n })\n }, [])\n\n const getSummaryDetails = () => {\n let questions_answer = new Array()\n const questionTypes = ['CHOICE_LIST', 'CHOICE_BOX', 'CHOICE_BOX_IMAGE', 'CHOICE_BOX_KIDS', 'CHOICE_IMAGE_KIDS']\n questions.forEach((q: any) => {\n q.questions.forEach((qq: any) => {\n if (questionTypes.includes(qq.type) || qq.id === '1.6') {\n if (Array.isArray(qq.answer)) {\n let answers = new Array()\n let answersId = new Array()\n\n qq.answer.forEach((a: any) => {\n //VALIDATE IF SIGNIFICANT\n if (validateSignificance(a.value)) {\n answers.push(a.label)\n answersId.push(a.value)\n }\n })\n\n if (answers.length > 0) {\n questions_answer.push({\n questionIndex: qq.questionIndex,\n categoryIndex: qq.categoryIndex,\n question: qq.question,\n answers: answers,\n answersId: answersId\n })\n }\n }\n\n if (qq.hasOwnProperty('answer') && !Array.isArray(qq.answer)) {\n //VALIDATE IF SIGNIFICANT\n if (qq.answer !== undefined && validateSignificance(qq.answer.value)) {\n questions_answer.push({\n questionIndex: qq.questionIndex,\n categoryIndex: qq.categoryIndex,\n question: qq.question,\n answers: [qq.answer.label.replace(\"
    \", \"\")],\n answersId: qq.answer.value\n })\n }\n }\n }\n })\n })\n\n return questions_answer\n }\n const modify = (category: number, question: number) => {\n\n dispatch(needExplorerSlice.actions.gotoQuestion({category, question}));\n dispatch(needExplorerSlice.actions.changeView(NeedExplorerViewType.QUESTIONNAIRE));\n }\n\n\n const validateSignificance = (val: any) => {\n let has = false;\n\n if (significance !== null) {\n significance.forEach((el: any) => {\n if (el.answerId === val) {\n has = true\n return\n }\n })\n }\n\n return has\n }\n\n return (\n \n
    \n
    \n\n
    \n {/* */}\n \n {t(selectedLens)}\n
    \n \n {t(details.side.tag)}\n \n \n
    \n\n
    \n
    \n {\n details.summary.map((summary, index) => (\n \n
    \n
    \n {t(summary.question)}\n \n
    \n
    modify(summary.categoryIndex, summary.questionIndex)}>\n {t('measures_mes__3_edit')}\n \n
    \n
    \n\n\n {\n summary.answers.map((answer, i) => (\n \n {t(answer)}\n \n ))\n }\n
    \n ))\n }\n
    \n
    \n
    \n\n \n
    \n )\n}\n\nexport default NeedExplorerAnamnesisDetails;","import iNeedExplorerSummaryDetails from \"../interface/need-explorer-summary-details\";\n\nconst iNeedExplorerSummary: iNeedExplorerSummaryDetails[] = [\n {\n label: \"questionnaires_q_screen_usage_summ_age\",\n icon: \"age\",\n type: \"1\",\n answer: undefined,\n question: \"1.2\"\n },\n {\n label: \"questionnaires_q_screen_usage_summ_gend\",\n icon: \"gender\",\n type: \"1\",\n answer: undefined,\n question: \"1.1\"\n },\n {\n label: \"questionnaires_q_screen_usage_summ_vtype\",\n icon: \"vision\",\n type: \"2\",\n answer: undefined,\n question: \"1.3\"\n },\n {\n label: \"questionnaires_q_screen_usage_spend_most\",\n icon: \"mostSpend\",\n type: \"2\",\n answer: undefined,\n question: \"1.6\"\n },\n {\n label: \"questionnaires_q_screen_usage_spend_main_points\",\n icon: \"main pain\",\n type: \"2\",\n answer: undefined,\n question: \"2.4\"\n }\n\n]\n\n\nexport default iNeedExplorerSummary;","export const roundCorner = {\n textDecoration: \"none\",\n \"-ms-interpolation-mode\": \"bicubic\",\n height: \"auto\",\n border: \"0\",\n width: \"100%\",\n maxWidth: \"650px\",\n display: \"block\",\n align: \"center\",\n margin: \"auto\"\n}\nexport const backgroundPerRow = {\n minWidth: \"320px\",\n maxWidth: \"650px\",\n OverflowWrap: \"break-word\",\n WordWrap : \"break-word\",\n WordBreak : \"break-word\",\n margin: \"0 auto\",\n backgroundColor: \"#ffffff\",\n padding: \"5px 0\"\n}\n\nexport const imageLogo = {\n \"text-decoration\": \"none\", \n \"-ms-interpolation-mode\": \"bicubic\", \n \"height\": \"auto\",\n \"border\": 0, \"width\": \"100%\", \n \"max-width\": \"59px\", \n \"display\": \"block\", \n \"align\": \"center\",\n marginLeft: \"10px\",\n}\nexport const h3= {\n color: \"#0086d6\",\n Direction : \"ltr\",\n fontFamily: \"Lato, Tahoma, Verdana, Segoe, sans-serif\",\n fontSize: \"16px\",\n FontWeight : \"normal\",\n letterSpacing: \"normal\",\n lineHeight: \"120%\",\n \"text-align\" : \"left\",\n marginTop: \"0\",\n marginBottom: '10px',\n marginLeft: \"40px\",\n TextTransform: \"capitalize\"\n}\n\nexport const paragraph= {\n Direction : \"ltr\",\n fontFamily: \"Lato, Tahoma, Verdana, Segoe, sans-serif\",\n fontSize: \"12px\",\n lineHeight: \"1.5\",\n TextAlign : \"left\",\n marginTop: \"0\",\n marginBottom: '0',\n marginLeft: \"40px\",\n WordBreak : \"break-word\",\n\n}\n\nexport const pairHeader= {\n paddingTop: \"10px\",\n paddingRight: \"20px\",\n paddingBottom: \"10px\",\n paddingLeft: \"20px\",\n \"text-align\": \"right\"\n\n}\n\nexport const pairContainer= {\n \"-webkit-text-size-adjust\": \"none\",\n \"text-decoration\": \"none\",\n \"display\": \"inline-block\",\n \"color\": \"#0086d6\",\n \"background-color\": \"#d9edf9\",\n \"border-radius\": \"60px\",\n \"-webkit-border-radius\": \"60px\",\n \"-moz-border-radius\": \"60px\",\n \"width\": \"auto\",\n \" border-top\": \"0px solid #8a3b8f\",\n \"border-right\": \"0px solid #8a3b8f\",\n \"border-bottom\":\" 0px solid #8a3b8f\",\n \"border-left\": \"0px solid #8a3b8f\",\n \"padding-top\":\" 0px\",\n \"padding-bottom\": \"0px\",\n \"font-family\": \"'Lato', Tahoma, Verdana, Segoe, sans-serif\",\n \"text-align\": \"center\",\n \"mso-border-alt\": \"none\",\n \"word-break\": \"keep-all\",\n height: \"30px\"\n\n}\n\nexport const pairSpan= {\n \"padding\": \"10px 35px\",\n \"font-size\": \"11px\",\n \"display\": \"inline-block\",\n \"letter-spacing\": \"1px\",\n\n}\n\nexport const summaryRow= {\n paddingTop: \"10px\",\n paddingRight: \"20px\",\n paddingBottom: \"10px\",\n paddingLeft: \"20px\",\n \"display\" : \"flex\"\n}\nexport const summaryRowPadding= {\n paddingTop: \"10px\",\n paddingBottom: \"10px\",\n \"display\" : \"flex\"\n}\nexport const summaryRowBlock= {\n paddingTop: \"10px\",\n paddingBottom: \"10px\",\n \"display\" : \"block\"\n}\n\nexport const summaryRowTitle= {\n \"word-break\": \"inherit\",\n \"font-family\": \"'Lato', Tahoma, Verdana, Segoe, sans-serif\",\n \"font-size\": \"12px\",\n \"color\": \"#5a6675\",\n \"vertical-align\": \"middle\",\n padding: \"10px\",\n \"text-transform\": \"capitalize\"\n}\n\nexport const summaryRowTitleLabel= {\n \"word-break\": \"inherit\",\n \"font-family\": \"'Lato', Tahoma, Verdana, Segoe, sans-serif\",\n \"font-size\": \"12px\",\n \"color\": \"#5a6675\",\n \"vertical-align\": \"middle\",\n \"text-transform\": \"capitalize\"\n}\n\nexport const summaryRowTitleII= {\n \"word-break\": \"inherit\",\n \"font-family\": \"'Lato', Tahoma, Verdana, Segoe, sans-serif\",\n \"font-size\": \"12px\",\n \"color\": \"#5a6675\",\n \"vertical-align\": \"middle\",\n // padding: \"10px 139px\",\n \"text-transform\": \"capitalize\"\n}\n\nexport const summaryProductTitle= {\n \"display\": \"table-cell\",\n \"vertical-align\": \"top\",\n \"max-width\": \"403px\",\n // \"min-width\": \"324px\",\n \"background-color\": \"#d9edf9\",\n \"width\": \"1%\",\n}\n\nexport const summaryBenefitContainer= {\n \"display\": \"flex\",\n \"justify-content\": \"space-evenly\",\n}\n\nexport const summaryBenefitContainerLI= {\n \"display\": \"flex\",\n margin: \"0 15px\",\n \"flex-flow\": \"column\",\n \"align-items\": \"center\"\n}\n\nexport const icon = {\n // width: \"5rem\",\n width: \"45px\",\n // transform: \"scale(-1, 1)\"\n // height: \"4.5rem\"\n}\n\nexport const mainIcon = {\n width: \"5rem\",\n height: \"4rem\"\n}\n\nexport const footerText = {\n fontSize: \"12px\",\n \"text-align\": \"left\",\n marginBottom: '10px',\n marginLeft: \"40px\",\n marginRight: \"40px\",\n}\n\nexport const footerLogo = {\n \"text-decoration\": \"none\", \n \"-ms-interpolation-mode\": \"bicubic\", \n \"height\": \"auto, border: 0\",\n \"width\": \"100%\", \n \"max-width\": \"60px\", \n \"display\": \"block\",\n margin: \"10px 72px\"\n}\n\nexport const flexSpaceBetween = {\n display: \"flex\", justifyContent: \"space-between\"\n}\n\nexport const valueContainer = {\n \"-webkit-text-size-adjust\": \"none\",\n \"text-decoration\": \"none\",\n \"display\": \"inline-block\",\n \"color\": \"#2f3b4a\",\n \" background-color\": \"transparent\",\n \"border-radius\": \"5px\",\n \"-webkit-border-radius\": \"5px\",\n \"-moz-border-radius\": \"5px\",\n \"border\": \"1px solid #0086D6\",\n \"font-family\": \"'Lato', Tahoma, Verdana, Segoe, sans-serif\",\n \"text-align\": \"center\",\n \"mso-border-alt\": \"none\",\n \"word-break\": \"keep-all\",\n fontSize: \"12px\",\n padding:\"10px 35px\",\n margin: \"auto\",\n width: \"127px\"\n}\nexport const valueContainerAdd = {\n \"-webkit-text-size-adjust\": \"none\",\n \"text-decoration\": \"none\",\n \"display\": \"inline-block\",\n \"color\": \"#2f3b4a\",\n \" background-color\": \"transparent\",\n \"border-radius\": \"5px\",\n \"-webkit-border-radius\": \"5px\",\n \"-moz-border-radius\": \"5px\",\n \"border\": \"1px solid #0086D6\",\n \"font-family\": \"'Lato', Tahoma, Verdana, Segoe, sans-serif\",\n \"text-align\": \"center\",\n \"mso-border-alt\": \"none\",\n \"word-break\": \"keep-all\",\n fontSize: \"12px\",\n padding:\"10px 35px\",\n margin: \"auto\",\n width: \"384px\",\n height: \"12px\"\n}\n\nexport const headerImage1 = {\n backgroundImage: \"url('https://cpbx-dev-app-frc-04-nodejs.azurewebsites.net/static/media/delivery-summary-pair1.d1f561f8.png')\",\n backgroundRepeat: \"no-repeat\",\n backgroundColor: \"white\",\n display: \"table\",\n backgroundPosition: \"5% 10%\",\n \"max-width\": \"320px\",\n \"min-width\": \"324px\",\n \"width\": \"325px\",\n backgroundSize: \"cover\"\n // \"height\": \"200px\"\n}\nexport const headerImage2 = {\n backgroundImage: \"url('https://cpbx-dev-app-frc-04-nodejs.azurewebsites.net/static/media/delivery-summary-pair2.e7651f9b.png')\",\n backgroundRepeat: \"no-repeat\",\n backgroundColor: \"white\",\n display: \"table\",\n backgroundPosition: \"20% 10%\",\n \"max-width\": \"320px\",\n \"min-width\": \"324px\",\n \"width\": \"325px\",\n backgroundSize: \"cover\"\n\n // \"height\": \"200px\"\n}\n\nexport const backgroundColorHeader = {\n \"vertical-align\": \"top\",\n \"max-width\": \"320px\",\n \"min-width\": \"324px\",\n \"background-color\": \"#000000\",\n \"width\": \"325px\",\n color: \"white\",\n padding: \"2rem 1rem\",\n \"text-align\":\"left\"\n}\n\nexport const containerWhite = {\n \"-webkit-text-size-adjust\": \"none\",\n \"text-decoration\": \"none\",\n \"display\": \"inline-block\",\n \" background-color\": \"transparent\",\n \"border-radius\": \"5px\",\n \"-webkit-border-radius\": \"5px\",\n \"-moz-border-radius\": \"5px\",\n \"width\": \"auto\",\n \"border\": \"1px solid white\",\n \"font-family\": \"'Lato', Tahoma, Verdana, Segoe, sans-serif\",\n \"text-align\": \"center\",\n \"mso-border-alt\": \"none\",\n \"word-break\": \"keep-all\",\n fontSize: \"11px\",\n padding:\"10px\",\n \"margin-top\": \"3rem\",\n \"margin-bottom\": \"1.5rem\"\n}\n\nexport const h2 ={\n \"color\": \"#ffffff\",\n Direction: \"ltr\",\n \"font-family\": \"Lato, Tahoma, Verdana, Segoe, sans-serif\",\n \"font-size\": \"18px\",\n \"font-weight\": \"bold\",\n \"letter-spacing\": \"normal\",\n \"line-height\": \"120%\",\n \"text-align\": \"left\",\n \n}\n\nexport const prescriptionLabel = {\n fontSize: \"12px\", padding:\"10px 0\", marginLeft:\"-36px\",\n margin: \"auto\",\n width: \"13%\"\n}\n\nexport const flexSpaceAround= {\n \"display\": \"flex\",\n \"justify-content\": \"space-around\",\n \"margin\": \"2rem 0\",\n \"align-content\": \"center\",\n \"align-items\": \"center\",\n \n}","import iNeedExplorerSummaryDetails from \"../interface/need-explorer-summary-details\";\n\nconst iNeedExplorerKidsSummary: iNeedExplorerSummaryDetails[] = [\n {\n label: \"questionnaires_q_screen_usage_summ_age\",\n icon: \"Age\",\n type: \"1\",\n answer: undefined,\n question: '6.1'\n },\n {\n label: \"questionnaires_q_screen_usage_summ_vision_rating\",\n icon: \"vision\",\n type: \"1\",\n answer: undefined,\n question: '6.4'\n \n },\n {\n label: \"questionnaires_q_screen_usage_spend_main_points\",\n icon: \"main pain\",\n type: \"2\",\n question: '6.5'\n }\n]\n\n\nexport default iNeedExplorerKidsSummary;","import iNeedExplorerSummaryProducts from \"../interface/need-explorer-summary-products.interface\"\n\nconst iNeedExplorerProductsSummary: iNeedExplorerSummaryProducts[] = [\n {\n text: 'questionnaires_q__sum_rec_cor_p1',\n lensType: \"pair_1_tab_del_2_p1_correct\",\n icon: \"correct\",\n pair: \"1\",\n },\n {\n text: 'questionnaires_q__sum_rec_cor_p2',\n lensType: \"pair_1_tab_del_2_p1_correct\",\n icon: \"correct\",\n pair: \"2\",\n },\n {\n text: 'questionnaires_q__sum_rec_pro_p1',\n lensType: \"pair_1_tab_del_2_p1_protect\",\n icon: \"protect\",\n pair: \"1\",\n },\n {\n text: 'questionnaires_q__sum_rec_pro_p1_2',\n lensType: \"pair_1_tab_del_2_p1_protect\",\n icon: \"protect\",\n pair: \"2\",\n },\n {\n text: 'questionnaires_q_summ_recomm',\n lensType: \"pair_1_tab_del_3_p1_enhance\",\n icon: \"enhance\",\n pair: \"1\",\n },\n {\n text: 'need_explorer_recom_coating_to_enhance_for_p2',\n lensType: \"pair_1_tab_del_3_p1_enhance\",\n icon: \"enhance\",\n pair: \"2\",\n },\n]\n\nexport default iNeedExplorerProductsSummary;","import iProductLogic from \"../interface/product-logic.interface\";\n\nconst kidsProductLogic: iProductLogic[] = [\n{ answerId: '6.1.1', scoreMatrix: [2,1,0,0] },\n{ answerId: '6.1.2', scoreMatrix: [2,1,0,0] },\n{ answerId: '6.1.3', scoreMatrix: [2,1,0,0] },\n{ answerId: '6.1.4', scoreMatrix: [2,1,0,0] },\n{ answerId: '6.1.5', scoreMatrix: [1,2,0,0] },\n{ answerId: '6.1.6', scoreMatrix: [1,2,0,0] },\n{ answerId: '6.1.7', scoreMatrix: [1,2,0,0] },\n{ answerId: '6.2.1', scoreMatrix: [0,0,3,1] },\n{ answerId: '6.2.2', scoreMatrix: [0,0,1,1] },\n{ answerId: '6.2.3', scoreMatrix: [0,0,1,3] },\n{ answerId: '6.2.4', scoreMatrix: [0,0,1,1] },\n{ answerId: '6.2.5', scoreMatrix: [5,5,0,0] },\n{ answerId: '6.3.1', scoreMatrix: [0,3,0,0] },\n{ answerId: '6.3.2', scoreMatrix: [1,2,0,0] },\n{ answerId: '6.3.3', scoreMatrix: [3,1,0,0] },\n{ answerId: '6.3.4', scoreMatrix: [3,0,0,0] },\n{ answerId: '6.4.1', scoreMatrix: [0,0,0,0] },\n{ answerId: '6.4.2', scoreMatrix: [0,0,0,0] },\n{ answerId: '6.4.3', scoreMatrix: [0,0,0,0] },\n{ answerId: '6.4.4', scoreMatrix: [0,0,0,0] },\n{ answerId: '6.4.5', scoreMatrix: [0,0,0,0] },\n{ answerId: '6.4.6', scoreMatrix: [0,0,0,0] },\n{ answerId: '6.5.1', scoreMatrix: [0,0,1,3] },\n{ answerId: '6.5.2', scoreMatrix: [0,0,2,2] },\n{ answerId: '6.5.3', scoreMatrix: [0,0,0,0] },\n{ answerId: '6.5.4', scoreMatrix: [0,0,0,0] },\n{ answerId: '6.5.5', scoreMatrix: [0,0,0,0] },\n{ answerId: '7.1.1', scoreMatrix: [5,1,0,0] },\n{ answerId: '7.1.2', scoreMatrix: [5,1,0,0] },\n{ answerId: '7.1.3', scoreMatrix: [5,1,0,0] },\n{ answerId: '7.1.4', scoreMatrix: [5,1,0,0] },\n{ answerId: '7.1.5', scoreMatrix: [0,2,0,0] },\n{ answerId: '7.2.1', scoreMatrix: [3,1,0,0] },\n{ answerId: '7.2.2', scoreMatrix: [0,1,0,0] },\n{ answerId: '7.3.1', scoreMatrix: [3,1,0,0] },\n{ answerId: '7.3.2', scoreMatrix: [2,1,0,0] },\n{ answerId: '7.3.3', scoreMatrix: [1,1,0,0] },\n{ answerId: '7.3.4', scoreMatrix: [1,1,0,0] },\n{ answerId: '7.4.1', scoreMatrix: [1,2,0,0] },\n{ answerId: '7.4.2', scoreMatrix: [1,2,0,0] },\n{ answerId: '7.4.3', scoreMatrix: [2,3,0,0] },\n{ answerId: '7.4.4', scoreMatrix: [3,4,0,0] },\n{ answerId: '7.5.1', scoreMatrix: [0,0,0,0] },\n{ answerId: '7.5.2', scoreMatrix: [0,0,0,0] },\n{ answerId: '7.5.3', scoreMatrix: [0,0,0,0] },\n{ answerId: '7.5.4', scoreMatrix: [0,0,0,0] },\n{ answerId: '7.5.5', scoreMatrix: [0,0,0,0] },\n]\n\nexport default kidsProductLogic;","\nimport kidsProductLogic from '../constants/product-logic-kids.constants';\nimport iProductFamily from '../interface/product-family.interface';\nimport { AddMatrixValues, fetchBrandDetailsViaId, fetchProductDetailsViaId, fetchSubProductDetailsViaProductId, getAnswerIds, getAnswerIDwithSignificantAnswers } from './misc';\n\nconst product_ids = [`stellest`,`eyezen_kids`,`crizal_easy`,`crizal_prevencia`]\nconst brand_ids = [`stellest`,`eyezen`,`crizal`,`crizal`]\n\nexport const evaluateKidsDecisionTree = (\n currentNeedExplorerData: any,\n pl: iProductFamily\n) => {\n console.log(currentNeedExplorerData)\n\n //(1) get all answers from children to parents ANSWER_IDS\n const allAnswers = [\n ...currentNeedExplorerData.questions[0].questions,\n ...currentNeedExplorerData.questions[1].questions\n ]\n\n var ANSWER_IDS = getAnswerIds(allAnswers)\n console.log('ANSWER IDS: ', ANSWER_IDS)\n\n //(1.1) Special Scenario: If the user choose anything between 6.2.1 to 6.2.4, remove 6.2.5\n ANSWER_IDS = selectedNone(ANSWER_IDS)\n console.log('ANSWER IDS (clean): ', ANSWER_IDS)\n\n //(2) get ALL_PRODUCT_LOGIC_MATRIX for general and extra\n const ALL_PRODUCT_LOGIC_MATRIX = kidsProductLogic\n console.log('ALL PRODUCT: ', ALL_PRODUCT_LOGIC_MATRIX)\n\n //(3) filter the ALL_PRODUCT_LOGIC_MATRIX with ANSWER_IDS\n let ANSWER_MATRIX = []\n let REFERENCE = []\n for (var i = 0; i < ANSWER_IDS.length; i++) {\n var item = ALL_PRODUCT_LOGIC_MATRIX.find(m => m.answerId === ANSWER_IDS[i]); \n ANSWER_MATRIX.push(item?.scoreMatrix)\n REFERENCE.push(item)\n }\n console.log('ANSWER MATRIX: ', ANSWER_MATRIX)\n\n //(4) Add ANSWER_MATRIX\n const MATRIX_SUM = AddMatrixValues(ANSWER_MATRIX)\n console.log('SUM: ',MATRIX_SUM)\n\n //(5) Apply result to TEMP\n let index_correct = {\n pair1: MATRIX_SUM[1] > MATRIX_SUM[0] ? 1 : 0,\n pair2: MATRIX_SUM[1] > MATRIX_SUM[0] ? 0 : 1\n }\n\n let index_enhance = {\n pair1: MATRIX_SUM[3] > MATRIX_SUM[2] ? 3 : 2,\n pair2: MATRIX_SUM[3] > MATRIX_SUM[2] ? 2 : 3\n }\n\n const isEyezenKids = index_correct.pair1 === 1 ? true : false\n const isStellest_pair1 = index_correct.pair1 === 0 ? true : false\n\n const TEMP = {\n pair1: {\n correct: {\n brand: fetchBrandDetailsViaId(brand_ids[index_correct.pair1], pl),\n product: fetchProductDetailsViaId(product_ids[index_correct.pair1], pl),\n subProduct: fetchSubProductDetailsViaProductId(product_ids[index_correct.pair1], pl),\n significantAnswers: getAnswerIDwithSignificantAnswers(index_correct.pair1, REFERENCE)\n },\n // If correct is eyezen kids; index = 1\n // then EPS as 1st pair\t\n ...isEyezenKids ? { protect: [{\n brand: isEyezenKids ? fetchBrandDetailsViaId('blueuv_filter_system', pl) : {},\n product: isEyezenKids ? fetchProductDetailsViaId('eye_protect_system', pl) : {},\n significantAnswers: null\n }] } : { protect: null },\n enhance: {\n brand: isStellest_pair1 ? fetchBrandDetailsViaId('crizal', pl) : fetchBrandDetailsViaId(brand_ids[index_enhance.pair1], pl),\n product: isStellest_pair1 ? fetchProductDetailsViaId('crizal_aliz', pl) : fetchProductDetailsViaId(product_ids[index_enhance.pair1], pl),\n significantAnswers: isStellest_pair1 ? null : getAnswerIDwithSignificantAnswers(index_enhance.pair1, REFERENCE)\n }\n },\n pair2: {\n correct: null,\n protect: null,\n enhance: null,\n },\n answers: ANSWER_IDS\n }\n\n return TEMP\n}\n\nconst selectedNone = (ANSWER_IDS:any) => {\n let has = false\n\n ANSWER_IDS.map((a:any) => {\n if(a === '6.2.1' || a === '6.2.2' || a === '6.2.3' || a === '6.2.4'){\n has = true\n }\n })\n \n return has ? ANSWER_IDS.filter((a:any) => a!== '6.2.5') : ANSWER_IDS\n}","import React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport Button from '../../../components/ui/Button';\nimport Icon from '../../../components/ui/Icon';\nimport Arrow from '../../../components/ui/Arrow';\nimport anamnesis from '../../../constants/anamnesis.constants';\nimport NeedExplorerViewType from '../../../types/need-explorer-view.type';\nimport needExplorerSlice, { getNeedExplorer } from '../../../store/slices/need-explorer.slice';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport NeedExplorerAnamnesisDetails from './NeedExplorerAnamnesisDetails';\nimport { getLensConsultation } from '../../../store/slices/lens-consultation.slice';\nimport { fetchProductDetailsViaId, getAnswerDetails } from '../../../utils/misc';\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport iNeedExplorerSummary from '../../../constants/need-explorer-summary.constant';\nimport iNeedExplorerSummaryDetails from '../../../interface/need-explorer-summary-details';\nimport { getProducts } from '../../../store/slices/products.slice';\nimport { getUser } from '../../../store/slices/user.slice';\nimport AgeCategoryType from '../../../types/age-category.type';\nimport { useHistory } from 'react-router-dom';\nimport routes from '../../../constants/routes.constant';\nimport { getApp } from '../../../store/slices/app.slice';\nimport { icon } from '../../../constants/email-css.constants';\nimport iNeedExplorerKidsSummary from '../../../constants/need-explorer-summary-kids.constant';\nimport iNeedExplorerProductsSummary from '../../../constants/need-explorer-summary-products.constant';\nimport store from '../../../store/store';\nimport useGoogleAnalytics from '../../../utils/hooks/useGoogleAnalytics';\nimport Utils from '../../../utils/Utils';\nimport { evaluateDecisionTree } from '../../../utils/misc';\nimport { evaluateKidsDecisionTree } from '../../../utils/KidsDecisionTree';\nimport userSlice from '../../../store/slices/user.slice';\nimport lensConsultationSlice from '../../../store/slices/lens-consultation.slice';\nimport iLensRecommendationPair from '../../../interface/lens-recommendaiton-pair.interface';\n\n\ninterface Props {\n\n}\n\nconst NeedExplorerAnamnesis: React.FC = () => {\n // VARIABLES\n const [B, E] = useBEM('need-explorer-anamnesis');\n const dispatch = useDispatch();\n const [showSummary, setShowSummary] = useState(false);\n const [result, setResult] = useState(anamnesis);\n const currentLensConsultation = useSelector(getLensConsultation);\n const { temporaryProductList } = useSelector(getProducts);\n const { isExtraDone, answers, questions } = useSelector(getNeedExplorer);\n const currentNeedExplorerData = useSelector(getNeedExplorer);\n const { ageCategory } = useSelector(getUser);\n const history = useHistory();\n const { t } = useTranslation(useSelector(getApp));\n const { language, accountDetails } = useSelector(getApp)\n const [summary, setSummary] = useState(iNeedExplorerSummary);\n const [activePair, setPair] = useState('1');\n const [lens, setLens] = useState();\n const ga = useGoogleAnalytics()\n const { getDateTimeDifference } = Utils();\n const country = accountDetails?.shop.country\n \n // HOOKS\n useEffect(() => {\n getNeedExplorerSummary();\n dataPopulate()\n }, [summary])\n\n useEffect(() => {\n dataPopulate()\n }, [language])\n\n const getNeedExplorerSummary = () => {\n if (ageCategory?.value !== AgeCategoryType.KIDS) {\n const summary: iNeedExplorerSummaryDetails[] = iNeedExplorerSummary;\n setSummary(summary);\n summary.forEach((q) => {\n q.answer = questions[0].questions.find((ans) => ans.id === q.question)?.answer;\n if (q.question === '1.6' && q.answer.length > 3){\n q.answer = q.answer.slice(0, q.answer.length - 1)\n }\n if (q.question === '2.4')return q.answer = questions[1].questions.find((x) => x.id === q.question)?.answer;\n })\n setSummary(summary);\n }\n else {\n const summary: iNeedExplorerSummaryDetails[] = iNeedExplorerKidsSummary;\n setSummary(summary)\n summary.forEach((q) => {\n q.answer = questions[0].questions.find((ans) => ans.id === q.question)?.answer;\n })\n setSummary(summary);\n }\n }\n // METHODS\n const modify = () => {\n dispatch(needExplorerSlice.actions.questionaireFromStart());\n dispatch(needExplorerSlice.actions.changeView(NeedExplorerViewType.QUESTIONNAIRE));\n }\n\n const dataPopulate = () => {\n const { storedLensRecommendation } = currentLensConsultation\n const correctp1 = storedLensRecommendation?.pair1?.correct\n const correctp2 = storedLensRecommendation?.pair2?.correct\n const protectp1 = storedLensRecommendation?.pair1?.protect\n const protectp2 = storedLensRecommendation?.pair2?.protect\n const enhancep1 = storedLensRecommendation?.pair1?.enhance\n const enhancep2 = storedLensRecommendation?.pair2?.enhance\n\n const result = iNeedExplorerProductsSummary;\n result[0].tag = correctp1 ? correctp1.product?.label: undefined\n result[0].benefits = correctp1?.product?.benefits || undefined\n result[1].tag = correctp2 ? correctp2.product?.label : undefined\n result[1].benefits = correctp2?.product?.benefits || undefined\n result[4].tag = enhancep1 ? t(enhancep1.product?.label) : undefined\n result[4].benefits = enhancep1?.product?.benefits\n result[5].tag = enhancep2 ? t(enhancep2.product?.label) : undefined\n result[5].benefits = enhancep2?.product?.benefits\n\n if (protectp1 && protectp1.length > 0) {\n result[2].benefits = protectp1[0].product?.benefits\n result[2].tag = protectp1[0].product?.label\n }\n if (protectp2 && protectp2.length > 0) {\n result[3].benefits = protectp2[0].product?.benefits\n result[3].tag = protectp2[0].product?.label\n }\n \n setResult(result)\n }\n\n const gotoAnamnesis = () => {\n dispatch(needExplorerSlice.actions.changeView(NeedExplorerViewType.QUESTIONNAIRE));\n }\n\n const gotoLPB = () => {\n saveDataAndPrefilled()\n //Move to Lens Proposal Builder Page\n history.push(routes.lensProposalBuilder.path);\n\n if(!currentNeedExplorerData.generalQuestionSessionStart)return;\n const timediff = getDateTimeDifference(new Date(currentNeedExplorerData.generalQuestionSessionStart), new Date());\n ga.event({\n category: 'Need Explorer',\n action: 'Need Explorer - Save & Next',\n variable_id: 'need_explorer_completion',\n label: timediff,\n });\n }\n\n const goBack = () => {\n isExtraDone ? dispatch(needExplorerSlice.actions.changeView(NeedExplorerViewType.FINISHED)) : dispatch(needExplorerSlice.actions.changeView(NeedExplorerViewType.GENERAL_CHECKPOINT));\n\n }\n\n const onSelectCard = (index: number, lensType: string, icon: string) => {\n // populate id to need explorer state\n const { id, significance } = getValues(index)\n\n const product = fetchProductDetailsViaId(id, temporaryProductList)\n\n dispatch(needExplorerSlice.actions.populateSelectedModal(product));\n dispatch(needExplorerSlice.actions.populateSelectedModalSignificance(significance));\n dispatch(needExplorerSlice.actions.populateSelectedModalLens(lensType));\n dispatch(needExplorerSlice.actions.populateSelectedModalLensIcon(icon));\n setLens(lens)\n setShowSummary(true);\n }\n\n const getAge = () => {\n const { age } = getAnswerDetails(ageCategory?.value === AgeCategoryType.KIDS, answers)\n\n return age\n }\n\n const getValues = (index: number) => {\n const { storedLensRecommendation } = currentLensConsultation\n \n // index 0 = correct pair 1\n // index 1 = correct pair 2\n // index 2 = protect pair 1\n // index 3 = protect pair 2\n // index 4 = enhance pair 1\n // index 5 = enhance pair 2\n\n switch (index) {\n case 0: return { id: storedLensRecommendation?.pair1?.correct.product?.id, significance: storedLensRecommendation?.pair1?.correct.significantAnswers }\n case 1: return { id: storedLensRecommendation?.pair2?.correct.product?.id, significance: storedLensRecommendation?.pair2?.correct.significantAnswers }\n case 2: return { id: storedLensRecommendation?.pair1?.protect[0].product?.id, significance: storedLensRecommendation?.pair1?.protect[0].significantAnswers }\n case 3: return { id: storedLensRecommendation?.pair2?.protect[0].product?.id, significance: storedLensRecommendation?.pair2?.protect[0].significantAnswers }\n case 4: return { id: storedLensRecommendation?.pair1?.enhance.product?.id, significance: storedLensRecommendation?.pair1?.enhance.significantAnswers }\n case 5: return { id: storedLensRecommendation?.pair2?.enhance.product?.id, significance: storedLensRecommendation?.pair2?.enhance.significantAnswers }\n default: return { id: '', significance: null }\n }\n }\n\n const saveDataAndPrefilled = () => {\n //Check if kids or adults\n const isKids = ageCategory?.value === 'kids'\n\n //Get recommendation\n const recom = isKids ?\n evaluateKidsDecisionTree(currentNeedExplorerData, temporaryProductList) :\n evaluateDecisionTree(currentNeedExplorerData, false, temporaryProductList, country)\n\n // Save User Data for Need Explorer\n dispatch(userSlice.actions.saveNeedExplorerData(currentNeedExplorerData));\n\n //Evaluate Decision Tree to prefilled data in Lens Consultation\n const temp = {\n ...currentLensConsultation,\n lensRecommendation: {\n pair1: recom.pair1,\n pair2: recom.pair2\n },\n storedLensRecommendation: {\n pair1: recom.pair1,\n pair2: recom.pair2\n }\n }\n\n console.log('RESULT FROM GENERAL & EXTRA', temp)\n\n dispatch(userSlice.actions.savePrefilledData(temp));\n dispatch(needExplorerSlice.actions.setFinalAnswers(recom.answers))\n dispatch(lensConsultationSlice.actions.setPrefilledDataFromNeedExplorer(recom))\n dispatch(lensConsultationSlice.actions.setPrefilledDataFromNeedExplorerStored(recom))\n\n dispatch(userSlice.actions.saveLensRecommendationData({\n pair1: recom?.pair1 as iLensRecommendationPair,\n pair2: recom?.pair2 as iLensRecommendationPair\n }));\n }\n\n const togglePair = () => {\n\n }\n return (\n
    \n\n \n\n
    \n\n
    \n\n
    \n {summary.map((details: iNeedExplorerSummaryDetails, ii: number) =>\n (\n details.type === '1' && details.answer &&\n
    \n\n \n \n \n \n
    \n {t(details.answer.label)}\n
    \n
    \n ))}\n\n
    \n {t('measures_mes__3_edit')}\n \n {/* */}\n
    \n\n
    \n
    \n {summary.map((details: iNeedExplorerSummaryDetails, ii: number) =>\n (\n details.type === '2' && details.answer &&\n
    \n \n \n \n \n
    \n { details.answer && details.answer.map((answer: any, ii: number) =>\n
    \n {t(answer.label)}\n
    \n )}\n
    \n\n
    \n ))}\n
    \n\n
    \n\n
    \n\n setPair('1')}\n className={activePair === '1' ? E('toggle-active') : E('toggle-button')}\n text={t('delivery_del_pair_1')}\n outlineType='none'\n\n />\n setPair('2')}\n className={activePair === '2' ? E('toggle-active') : E('toggle-button')}\n text={t('delivery_del_3_pair_2')}\n type=\"secondary\"\n outlineType='none'\n />\n
    \n
    \n\n {\n result.map((d, index) => (\n d.tag && d.pair === activePair &&\n
    \n

    \n {t(d.lensType)}\n

    \n {d.tag}\n
    \n { d.benefits && d.benefits.map((b: any, ii: number) => (\n
    \n \n \n
    \n ))}\n
    \n
    onSelectCard(index, d.lensType, d.icon)}>\n {t('questionnaires_q_screen_usage_see_ans', 'See the answers')}\n \n
    \n
    \n ))\n }\n\n
    \n
    \n \n }\n iconPosition='right'\n click={() => gotoLPB()}\n />\n\n
    \n {\n showSummary &&\n setShowSummary(false)} />\n }\n\n
    \n
    \n )\n}\n\nexport default NeedExplorerAnamnesis;","import React, { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport Button from '../../../components/ui/Button';\nimport Icon from '../../../components/ui/Icon';\nimport RouterLink from '../../../components/ui/RouterLink';\nimport NeedExplorerViewType from '../../../types/need-explorer-view.type';\nimport needExplorerSlice, { getNeedExplorer } from '../../../store/slices/need-explorer.slice';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport { evaluateDecisionTree } from '../../../utils/misc';\nimport userSlice, { getUser } from '../../../store/slices/user.slice';\nimport lensConsultationSlice, { getLensConsultation } from '../../../store/slices/lens-consultation.slice';\nimport { evaluateKidsDecisionTree } from '../../../utils/KidsDecisionTree';\nimport useGoogleAnalytics from '../../../utils/hooks/useGoogleAnalytics';\nimport Utils from '../../../utils/Utils';\nimport { getProducts } from '../../../store/slices/products.slice';\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport { getApp } from '../../../store/slices/app.slice';\nimport iLensRecommendationPair from '../../../interface/lens-recommendaiton-pair.interface';\ninterface Props {\n\n}\n\nconst NeedExplorerFinished : React.FC = () => {\n // VARIABLES\n const [B, E] = useBEM('need-explorer-finished');\n const dispatch = useDispatch();\n const currentNeedExplorerData = useSelector(getNeedExplorer);\n const currentLensConsultation = useSelector(getLensConsultation);\n const { temporaryProductList } = useSelector(getProducts);\n const { ageCategory } = useSelector(getUser);\n const ga = useGoogleAnalytics();\n const { getDateTimeDifference } = Utils();\n const { t } = useTranslation(useSelector(getApp));\n const { accountDetails } = (useSelector(getApp));\n const country = accountDetails?.shop.country\n\n // HOOKS\n useEffect(() => {\n return () => {\n saveAllQuestionsSessionDuration();\n saveMoreQuestionsSessionDuration();\n }\n }, [])\n\n // METHODS\n const modify = () => {\n dispatch(needExplorerSlice.actions.questionaireFromStart());\n dispatch(needExplorerSlice.actions.changeView(NeedExplorerViewType.QUESTIONNAIRE));\n }\n\n const saveAllQuestionsSessionDuration = () => {\n if(!currentNeedExplorerData.generalQuestionSessionStart)return;\n const timediff = getDateTimeDifference(new Date(currentNeedExplorerData.generalQuestionSessionStart), new Date());\n ga.event({\n category: 'Need Explorer',\n action: 'All Q Complete',\n variable_id: 'need_explorer_all_question_complete',\n label: timediff\n });\n }\n\n const saveMoreQuestionsSessionDuration = () => {\n if(!currentNeedExplorerData.moreQuestionSessionStart)return;\n const timediff = getDateTimeDifference(new Date(currentNeedExplorerData.moreQuestionSessionStart), new Date());\n ga.event({\n category: 'Need Explorer',\n action: '18 Q Complete',\n variable_id: 'need_explorer_18_question_complete',\n label: timediff\n });\n dispatch(needExplorerSlice.actions.generalQuestionSessionStart(undefined))\n }\n\n const gotoAnamnesis = () => {\n //Save Data and Recommend\n saveDataAndPrefilled()\n //Move to Anamnesis Page\n dispatch(needExplorerSlice.actions.setIsExtraDone(true));\n dispatch(needExplorerSlice.actions.changeView(NeedExplorerViewType.ANAMNESIS));\n }\n\n const saveDataAndPrefilled = () => {\n //Check if kids or adults\n const isKids = ageCategory?.value === 'kids'\n\n //Get recommendation\n const recom = isKids ?\n evaluateKidsDecisionTree(currentNeedExplorerData, temporaryProductList) :\n evaluateDecisionTree(currentNeedExplorerData, false, temporaryProductList, country)\n\n // Save User Data for Need Explorer\n dispatch(userSlice.actions.saveNeedExplorerData(currentNeedExplorerData));\n\n //Evaluate Decision Tree to prefilled data in Lens Consultation\n const temp = {\n ...currentLensConsultation,\n lensRecommendation: {\n pair1: recom.pair1,\n pair2: recom.pair2\n },\n storedLensRecommendation: {\n pair1: recom.pair1,\n pair2: recom.pair2\n }\n }\n\n console.log('RESULT FROM GENERAL & EXTRA', temp)\n\n dispatch(userSlice.actions.savePrefilledData(temp));\n dispatch(needExplorerSlice.actions.setFinalAnswers(recom.answers))\n dispatch(lensConsultationSlice.actions.setPrefilledDataFromNeedExplorer(recom))\n dispatch(lensConsultationSlice.actions.setPrefilledDataFromNeedExplorerStored(recom))\n\n dispatch(userSlice.actions.saveLensRecommendationData({\n pair1: recom?.pair1 as iLensRecommendationPair,\n pair2: recom?.pair2 as iLensRecommendationPair\n }));\n }\n\n return (\n
    \n\n
    \n
    \n\n
    \n
    \n \n \n
    \n\n

    {t('questionnaires_q_finished')}

    \n\n
    \n \n\n \n {t('questionnaires_q_modify_my_answers')}\n \n
    \n\n
    \n
    \n OR\n
    \n
    \n\n
    \n \n
    \n
    \n
    \n\n
    \n )\n}\n\nexport default NeedExplorerFinished;\n","const neddExplorerIntro = [\n {\n title: 'personalize_your_lenses_pyl_pers_your_lenses',\n description: 'personalize_your_lenses_pyl_ess_brings_best_tech'\n },\n {\n title: 'legal_notices_ln_legal_notices',\n description: 'legal_notices_ln_purpose_of_the_questionaire'\n }\n];\n\nexport default neddExplorerIntro;","import React, { useEffect, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport Button from '../../../components/ui/Button';\nimport Icon from '../../../components/ui/Icon';\nimport neddExplorerIntro from '../../../constants/need-explorer-intro.contants';\nimport NeedExplorerViewType from '../../../types/need-explorer-view.type';\nimport needExplorerSlice from '../../../store/slices/need-explorer.slice';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport { useHistory } from 'react-router-dom'\nimport { useSelector } from 'react-redux';\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport { getApp } from '../../../store/slices/app.slice';\n\ninterface Props {\n\n}\n\nconst NeedExplorerIntro : React.FC = () => {\n // VARIABLES\n const [B, E] = useBEM('need-explorer-intro');\n const [ step, setStep ] = useState(0);\n const intro = neddExplorerIntro;\n const dispatch = useDispatch();\n const history = useHistory();\n const { t } = useTranslation(useSelector(getApp));\n // HOOKS\n useEffect(() => {\n dispatch(needExplorerSlice.actions.generalQuestionSessionStart(new Date().toISOString()));\n }, [])\n\n // METHODS\n const isLastStep = () => {\n return intro.length === (step + 1)\n }\n\n const nextStep = () => {\n setStep(step + 1);\n }\n\n const backStep = () => {\n setStep(step - 1);\n }\n\n const accept = () => {\n dispatch(needExplorerSlice.actions.changeView(NeedExplorerViewType.QUESTIONNAIRE));\n }\n\n const decline = () => {\n history.push('/lens-proposal-builder')\n }\n\n return (\n
    \n\n
    \n\n
    \n\n \n\n

    \n {t(intro[step].title)}\n

    \n

    \n {t(intro[step].description)}\n

    \n\n
    \n {\n !isLastStep() ?\n : <>\n \n \n \n }\n
    \n
    \n\n
    \n\n
    \n )\n}\n\nexport default NeedExplorerIntro;\n","import React, { useEffect, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport iNeedExplorerCategory from '../../../interface/need-explorer-category.interface';\nimport iNeedExplorerQuestion from '../../../interface/need-explorer-question.interface';\nimport { getApp } from '../../../store/slices/app.slice';\nimport { getNeedExplorer } from '../../../store/slices/need-explorer.slice';\nimport { getUser } from '../../../store/slices/user.slice';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport useTranslation from '../../../utils/hooks/useTranslation';\n\ninterface Props {\n\n}\n\nconst NeedExplorerProgress : React.FC = () => {\n // VARIABLES\n const [B, E] = useBEM('need-explorer-progress');\n const { questions, activeCategory } = useSelector(getNeedExplorer);\n const { t } = useTranslation(useSelector(getApp));\n const [generalProgressPercentage, setGeneralProgressPercentage] = useState(0);\n const [othersProgressPercentage, setOthersProgressPercentage] = useState(0);\n const { ageCategory } = useSelector(getUser);\n const [isKids, setIsKids] = useState(false);\n\n\n // HOOKS\n\n useEffect(() => {\n const localIsKids = ageCategory?.value === 'kids';\n setIsKids(localIsKids);\n\n if(!localIsKids) {\n // Note: General Questions Progress\n const generalQuestions = getCategoryQuestions(questions, \"1\");\n const generalAnsweredQuestions = countCategoryAnsweredQuestions(generalQuestions);\n setGeneralProgressPercentage(computePercentage(generalQuestions.length, generalAnsweredQuestions));\n }\n\n // Note: Other Categories Progress\n let consolidatedOtherCategoryQuestions: iNeedExplorerQuestion[] = [];\n let totalOtherCategoryAnsweredQuestions = 0;\n\n const otherCategories = questions.filter( q => q.id !== \"1\");\n otherCategories.forEach( c => {\n consolidatedOtherCategoryQuestions = [\n ...consolidatedOtherCategoryQuestions,\n ...c.questions\n ];\n totalOtherCategoryAnsweredQuestions += countCategoryAnsweredQuestions(c.questions);\n });\n setOthersProgressPercentage(computePercentage(consolidatedOtherCategoryQuestions.length, totalOtherCategoryAnsweredQuestions));\n\n },[questions])\n\n const getCategoryQuestions = (categories: iNeedExplorerCategory[], categoryId: string) => {\n const category = categories.filter( c => c.id === categoryId )[0];\n return category.questions;\n }\n\n const countCategoryAnsweredQuestions = (questions: iNeedExplorerQuestion[]) => {\n return questions.filter( q => q.isAnswered ).length;\n }\n\n const computePercentage = (total: number, of: number) => {\n const percent = 100 / total * of;\n return Math.ceil(percent);\n }\n\n const dynamicShadeWidth = (width: number) => {\n return {\n '--shade-width': `${width}%`\n } as React.CSSProperties\n }\n\n const dynamicTheme = () => {\n const total = generalProgressPercentage + othersProgressPercentage;\n let h = '353deg';\n let s = '77%';\n let l = '64%';\n\n if(total > 0) {\n h = '25deg';\n s = '84%';\n l = '64%';\n }\n\n if(total > 90) { \n h = '174deg';\n s = '42%';\n l = '56%';\n }\n\n return {\n '--progress-theme-h': h,\n '--progress-theme-s': s,\n '--progress-theme-l': l\n } as React.CSSProperties\n }\n\n return (\n
    \n
    \n \n \n
    \n\n
    \n
    \n
    \n\n {\n (othersProgressPercentage > 0 || activeCategory.id !== '1') && !isKids &&\n
    \n
    \n } \n
    \n
    \n )\n}\n\nexport default NeedExplorerProgress;\n","import React, { useEffect, useRef, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { KIDS_THEMES } from '../../../constants/theme.constants';\nimport iNeedExplorerCategory from '../../../interface/need-explorer-category.interface';\nimport { getApp } from '../../../store/slices/app.slice';\nimport needExplorerSlice, { getNeedExplorer } from '../../../store/slices/need-explorer.slice';\nimport { getUser } from '../../../store/slices/user.slice';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport Utils from '../../../utils/Utils';\nimport NeedExplorerProgress from './NeedExplorerProgress';\n\ninterface Props {\n\n}\n\nconst NeedExplorerCategory : React.FC = () => {\n // VARIABLES\n const [B, E] = useBEM('need-explorer-category');\n const { questions, activeCategory } = useSelector(getNeedExplorer);\n const { ageCategory } = useSelector(getUser);\n const dispatch = useDispatch();\n\n const [categoryToAnimate, setCategoryToAnimate] = useState();\n const activeAnimation = useRef();\n const { theme } = useSelector(getApp);\n const { generateRandomNumbers, getThemeVariables } = Utils();\n const themes = KIDS_THEMES;\n const [ themeStyle, setThemeStyle ] = useState();\n\n const { t } = useTranslation(useSelector(getApp));\n\n // HOOKS\n\n useEffect(() => {\n if(!theme || theme.id !== 'multi')return;\n const randomNumbers = generateRandomNumbers(themes.length - 1);\n const randomTheme = themes[randomNumbers[0]];\n setThemeStyle(getThemeVariables(randomTheme))\n }, [])\n\n useEffect(() => {\n if(!categoryToAnimate || categoryToAnimate.id !== activeCategory.id){\n setCategoryToAnimate(activeCategory);\n }\n }, [activeCategory]);\n\n // useEffect(() => {\n // animateActiveCategory();\n // }, [categoryToAnimate])\n\n // METHODS\n const modiferClass = (category: iNeedExplorerCategory) => {\n const classes = [];\n if(category.isComplete)classes.push('completed');\n if(category.id === activeCategory.id)classes.push('active');\n return classes;\n }\n\n const gotoCategory = (category: iNeedExplorerCategory, index: number) => {\n if(!category.isComplete)return;\n dispatch(needExplorerSlice.actions.gotoCategory({ category,index }))\n }\n\n // const animateActiveCategory = () => {\n // const activeCategoryElement = document.querySelector('.need-explorer-category__item-label--active');\n // const coords = activeCategoryElement?.getBoundingClientRect();\n // const width = coords?.width || 0;\n // const left = (coords?.left || 0) + (width / 2) - 20;\n // activeAnimation.current.style.left= `${left}px`;\n // activeAnimation.current.style.top= `${coords?.top}px`;\n // activeAnimation.current.style.width= `3rem`;\n // setTimeout(() => {\n // activeAnimation.current.style.width= `${coords?.width}px`;\n // activeAnimation.current.style.left= `${coords?.left}px`;\n // }, 350);\n // }\n\n return (\n
    \n {/*
    */}\n
      \n\n {\n questions.map( (category, index) => (\n
    • gotoCategory(category, index)}>\n \n\n >\n
    • \n ))\n }\n\n
    \n\n \n
    \n )\n}\n\nexport default NeedExplorerCategory;\n","import React from 'react';\nimport iQuestionChoice from '../../../../interface/question-option.interface';\nimport useBEM from '../../../../utils/hooks/useBEM';\nimport ReactHtmlParser from 'react-html-parser';\nimport Icon from '../../../../components/ui/Icon';\nimport iNeedExplorerQuestion from '../../../../interface/need-explorer-question.interface';\nimport iQuestionOption from '../../../../interface/question-option.interface';\nimport { useSelector } from 'react-redux';\nimport { getUser } from '../../../../store/slices/user.slice';\nimport useTranslation from '../../../../utils/hooks/useTranslation';\nimport { getApp } from '../../../../store/slices/app.slice';\n\ninterface Props {\n question: iNeedExplorerQuestion,\n onAnswer?: (answer: iQuestionOption | iQuestionOption[]) => void\n}\n\nconst ChoiceBox : React.FC = ({\n question,\n onAnswer\n}) => {\n // VARIABLES\n const [B, E] = useBEM('choice-box');\n const { ageCategory } = useSelector(getUser);\n const { t } = useTranslation(useSelector(getApp));\n\n // HOOKS\n\n // METHODS\n const getAnswer = () => {\n if(!question.answer)return question.canSelectMultiple ? [] : '';\n\n if(question.canSelectMultiple) {\n return question.answer as iQuestionOption[];\n }\n return (question.answer as iQuestionOption).value;\n }\n\n const select = (option: iQuestionChoice) => {\n\n if(question.canSelectMultiple) {\n const answer = getAnswer() as iQuestionOption[];\n const isExist = answer.filter(c => c.value === option.value);\n let finalAnswer;\n if( isExist.length > 0) {\n finalAnswer = answer?.filter(c => c.value !== option.value);\n } else {\n finalAnswer = [ ...answer, option ]\n }\n\n // NOte: Temporary fix for scpeacial scenario\n if(question.id === '1.3') {\n finalAnswer = option.value === '1.3.3' ?\n [option] : // one answer only\n finalAnswer.filter(x => x.value !== '1.3.3') // remove the 1.3.3\n }\n\n if(question.id === '7.1') {\n finalAnswer = option.value === '7.1.5' ?\n [option] : // one answer only\n finalAnswer.filter(x => x.value !== '7.1.5') // remove the 7.1.5\n }\n\n if(onAnswer) onAnswer(finalAnswer);\n return;\n }\n\n if(onAnswer)onAnswer(option)\n }\n\n const selectedChoiceClassName = (option: iQuestionChoice) => {\n if( question.canSelectMultiple ) {\n const answer = getAnswer() as iQuestionOption[];\n const isSelected = answer.filter(c => c.value === option.value)\n return [isSelected.length > 0 ? 'selected' : '']\n }\n return [getAnswer() === option.value ? 'selected' : '']\n }\n\n // const renderIconName = (choice: iQuestionChoice) => {\n // return getAnswer() === choice.value ? `${choice.icon}-white` : `${choice.icon}`\n // }\n\n const blockModifierClass = () => {\n if(!question?.options)return '';\n return question?.options[0].icon ? 'choice-box-icon' : '';\n }\n\n return (\n
    \n
      \n {\n question.options && question.options.map(option => (\n select(option)}>\n\n {\n option.icon &&\n \n }\n\n {ReactHtmlParser(t(option.label))}\n\n \n ))\n }\n
    \n
    \n\n )\n}\n\nexport default ChoiceBox;\n","import React from 'react';\nimport iQuestionChoice from '../../../../interface/question-option.interface';\nimport useBEM from '../../../../utils/hooks/useBEM';\nimport ReactHtmlParser from 'react-html-parser';\nimport Icon from '../../../../components/ui/Icon';\nimport iNeedExplorerQuestion from '../../../../interface/need-explorer-question.interface';\nimport iQuestionOption from '../../../../interface/question-option.interface';\nimport useTranslation from '../../../../utils/hooks/useTranslation';\nimport { useSelector } from 'react-redux';\nimport { getApp } from '../../../../store/slices/app.slice';\n\ninterface Props {\n question: iNeedExplorerQuestion,\n onAnswer?: (answer: iQuestionOption | iQuestionOption[]) => void,\n}\n\nconst ChoiceBoxImage : React.FC = ({\n question,\n onAnswer\n}) => {\n // VARIABLES\n const [B, E] = useBEM('choice-box-image');\n const { t } = useTranslation(useSelector(getApp));\n\n // HOOKS\n\n // METHODS\n const getAnswer = () => {\n if(!question.answer) return question.canSelectMultiple ? [] : '';\n\n if(question.canSelectMultiple) {\n return question.answer as iQuestionOption[];\n }\n return (question.answer as iQuestionOption).value;\n }\n\n const select = (choice: iQuestionChoice) => {\n\n if(question.canSelectMultiple) {\n\n const answers = getAnswer() as iQuestionOption[];\n const isExist = answers.filter(c => c.value === choice.value);\n let finalAnswer: iQuestionChoice | iQuestionChoice[];\n\n if( isExist.length > 0) {\n finalAnswer = answers?.filter(c => c.value !== choice.value);\n } else {\n finalAnswer = [ ...answers, choice ]\n\n if (choice?.type === 'clear') {\n finalAnswer = [ choice ]\n } else {\n finalAnswer = finalAnswer.filter(fa => fa?.type !== 'clear')\n }\n }\n\n if(onAnswer) onAnswer(finalAnswer);\n\n return\n }\n\n if(onAnswer) onAnswer(choice)\n }\n\n const selectedChoiceClassName = (option: iQuestionChoice) => {\n if( question.canSelectMultiple ) {\n\n const answer = getAnswer() as iQuestionOption[];\n const isSelected = answer.filter(c => c.value === option.value)\n\n return [isSelected.length > 0 ? 'selected' : '']\n }\n\n return [getAnswer() === option.value ? 'selected' : '']\n }\n\n return (\n
      \n {\n question.options && question.options.map(option => (\n select(option)}\n >\n\n \n\n \n\n
      \n \n
      \n \n ))\n }\n
    \n )\n}\n\nexport default ChoiceBoxImage;\n","import React, { useState } from 'react';\nimport useBEM from '../../utils/hooks/useBEM';\nimport Arrow from './Arrow';\n\ninterface Props {\n value: number,\n min?: number;\n max?: number;\n withIndex?: boolean;\n minValue?: number;\n onChange?: (value: number) => void\n}\n\nconst Islayder : React.FC = ({\n min = 0,\n max = 10,\n withIndex = false,\n value,\n minValue,\n onChange\n}) => {\n // VARIABLES\n const [B, E] = useBEM('islayder');\n const [currentValue, setCurrentValue] = useState()\n\n // HOOKS\n\n // METHODS\n const renderIndexGuide = () => {\n const indexes = new Array(max - (min + 1)).fill('').map( (i, index) => () )\n return
    {indexes}
    ;\n }\n\n const onChangeHandler = (e: any) => {\n const newValue = Number(e.target.value);\n if(onChange){\n if(minValue && minValue > newValue)return;\n onChange(Number(newValue));\n }\n }\n\n const setThumbPosition = () => {\n let adjustment = (value === min) ? '0' : '-50%';\n if(value === max) adjustment = '-100%';\n\n return {\n left: `${((value * 10))}%`,\n transform: `translateX(${adjustment})`\n }\n }\n\n const setProgress = () => {\n return {\n width: `${((value * 10))}%`,\n }\n }\n\n const objectDynamicStyle = () => {\n return {\n 'left': `calc(${value * 10}% - 12px)`\n }\n }\n\n return (\n
    \n\n
    \n \n
    \n
    \n\n onChangeHandler(e)}/>\n\n {\n withIndex &&\n renderIndexGuide()\n }\n\n
    \n {value}h\n
    \n
    \n )\n}\n\nexport default Islayder;\n","import React from 'react'\nimport { useSelector } from 'react-redux'\nimport NumberSlider from '../../../../components/ui/NumberSlider'\nimport Icon from '../../../../components/ui/Icon'\nimport iNeedExplorerQuestion from '../../../../interface/need-explorer-question.interface'\nimport { getApp } from '../../../../store/slices/app.slice'\nimport useBEM from '../../../../utils/hooks/useBEM'\nimport useTranslation from '../../../../utils/hooks/useTranslation'\nimport Utils from '../../../../utils/Utils'\nimport Islayder from '../../../../components/ui/Islayder'\n\ninterface Props {\n question: iNeedExplorerQuestion,\n onAnswer?: (answers: number[]) => void\n}\n\nconst ChoiceBoxImageDuration : React.FC = ({\n question,\n onAnswer\n}) => {\n const [B, E] = useBEM('choice-box-image-duration')\n const { t } = useTranslation(useSelector(getApp));\n const { cloneObject } = Utils()\n\n const onChange = (data: any, index: number) => {\n const newAnswers = cloneObject(question.answer) as number[]\n newAnswers[index] = data;\n if(onAnswer) onAnswer(newAnswers);\n }\n\n const durationValue = (index: number) => (question.answer as number[])[index]\n\n return (\n
    \n {\n question.durations?.map((duration, key) => (\n
    \n \n
    \n \n onChange(data, key)}\n withIndex={true}\n />\n
    \n {duration.min}h\n {duration.max}h\n
    \n
    \n
    \n ))\n }\n
    \n )\n}\n\nexport default ChoiceBoxImageDuration\n","import React from 'react';\nimport iQuestionChoice from '../../../../interface/question-option.interface';\nimport useBEM from '../../../../utils/hooks/useBEM';\nimport ReactHtmlParser from 'react-html-parser';\nimport Icon from '../../../../components/ui/Icon';\nimport iNeedExplorerQuestion from '../../../../interface/need-explorer-question.interface';\nimport iQuestionOption from '../../../../interface/question-option.interface';\nimport { useSelector } from 'react-redux';\nimport { getUser } from '../../../../store/slices/user.slice';\nimport useTranslation from '../../../../utils/hooks/useTranslation';\nimport { getApp } from '../../../../store/slices/app.slice';\n\ninterface Props {\n question: iNeedExplorerQuestion,\n onAnswer?: (answer: iQuestionOption | iQuestionOption[]) => void\n}\n\nconst ChoiceBoxKids : React.FC = ({\n question,\n onAnswer\n}) => {\n // VARIABLES\n const [B, E] = useBEM('choice-box-kids');\n const { ageCategory } = useSelector(getUser);\n const { t } = useTranslation(useSelector(getApp));\n\n // HOOKS\n\n // METHODS\n const getAnswer = () => {\n if(!question.answer)return question.canSelectMultiple ? [] : ''; \n \n if(question.canSelectMultiple) {\n return question.answer as iQuestionOption[];\n }\n return (question.answer as iQuestionOption).value;\n }\n\n const select = (option: iQuestionChoice) => {\n\n if(question.canSelectMultiple) {\n const answer = getAnswer() as iQuestionOption[];\n const isExist = answer.filter(c => c.value === option.value);\n let finalAnswer;\n if( isExist.length > 0) {\n finalAnswer = answer?.filter(c => c.value !== option.value);\n } else {\n finalAnswer = [ ...answer, option ]\n } \n\n // NOte: Temporary fix for scpeacial scenario\n if(question.id === '1.3') {\n finalAnswer = option.value === '1.3.3' ? \n [option] : // one answer only\n finalAnswer.filter(x => x.value !== '1.3.3') // remove the 1.3.3\n }\n\n if(onAnswer) onAnswer(finalAnswer); \n return; \n }\n\n if(onAnswer)onAnswer(option)\n }\n\n const selectedChoiceClassName = (option: iQuestionChoice) => {\n if( question.canSelectMultiple ) {\n const answer = getAnswer() as iQuestionOption[];\n const isSelected = answer.filter(c => c.value === option.value)\n return [isSelected.length > 0 ? 'selected' : '']\n }\n return [getAnswer() === option.value ? 'selected' : '']\n }\n\n // const renderIconName = (choice: iQuestionChoice) => {\n // return getAnswer() === choice.value ? `${choice.icon}-white` : `${choice.icon}`\n // }\n\n const blockModifierClass = () => {\n if(!question?.options)return '';\n return question?.options[0].icon ? 'choice-box-kids-icon' : '';\n }\n\n return (\n
    \n
      \n {\n question.options && question.options.map(option => (\n
    • select(option)}>\n \n {\n option.icon && \n \n }\n\n

      {ReactHtmlParser(t(option.label))}

      \n\n
    • \n ))\n } \n
    \n
    \n\n )\n}\n\nexport default ChoiceBoxKids;","import React from 'react';\nimport iQuestionChoice from '../../../../interface/question-option.interface';\nimport useBEM from '../../../../utils/hooks/useBEM';\nimport Icon from '../../../../components/ui/Icon';\nimport iNeedExplorerQuestion from '../../../../interface/need-explorer-question.interface';\nimport iQuestionOption from '../../../../interface/question-option.interface';\nimport { useSelector } from 'react-redux';\nimport { getUser } from '../../../../store/slices/user.slice';\nimport useTranslation from '../../../../utils/hooks/useTranslation';\nimport { getApp } from '../../../../store/slices/app.slice';\n\ninterface Props {\n question: iNeedExplorerQuestion,\n onAnswer?: (answer: iQuestionOption | iQuestionOption[]) => void\n}\n\nconst ChoiceImageKids : React.FC = ({\n question,\n onAnswer\n}) => {\n // VARIABLES\n const [B, E] = useBEM('choice-image-kids');\n const { ageCategory } = useSelector(getUser);\n const { t } = useTranslation(useSelector(getApp));\n\n // HOOKS\n\n // METHODS\n const getAnswer = () => {\n if(!question.answer)return question.canSelectMultiple ? [] : ''; \n \n if(question.canSelectMultiple) {\n return question.answer as iQuestionOption[];\n }\n return (question.answer as iQuestionOption).value;\n }\n\n const select = (option: iQuestionChoice) => {\n\n if(question.canSelectMultiple) {\n const answer = getAnswer() as iQuestionOption[];\n const isExist = answer.filter(c => c.value === option.value);\n let finalAnswer;\n if( isExist.length > 0) {\n finalAnswer = answer?.filter(c => c.value !== option.value);\n } else {\n finalAnswer = [ ...answer, option ]\n } \n\n // NOte: Temporary fix for scpeacial scenario\n if(question.id === '1.3') {\n finalAnswer = option.value === '1.3.3' ? \n [option] : // one answer only\n finalAnswer.filter(x => x.value !== '1.3.3') // remove the 1.3.3\n }\n\n if(onAnswer) onAnswer(finalAnswer); \n return; \n }\n\n if(onAnswer)onAnswer(option)\n }\n\n const selectedChoiceClassName = (option: iQuestionChoice) => {\n if( question.canSelectMultiple ) {\n const answer = getAnswer() as iQuestionOption[];\n const isSelected = answer.filter(c => c.value === option.value)\n return [isSelected.length > 0 ? 'selected' : '']\n }\n return [getAnswer() === option.value ? 'selected' : '']\n }\n\n // const renderIconName = (choice: iQuestionChoice) => {\n // return getAnswer() === choice.value ? `${choice.icon}-white` : `${choice.icon}`\n // }\n\n const blockModifierClass = () => {\n if(!question?.options)return '';\n return question?.options[0].icon ? 'choice-image-kids-icon' : '';\n }\n\n return (\n
    \n
      \n {\n question.options && question.options.map(option => (\n
    • select(option)}>\n \n {\n option.icon && \n \n }\n\n \n\n
    • \n ))\n } \n
    \n
    \n\n )\n}\n\nexport default ChoiceImageKids;","import React from 'react';\nimport Icon from '../../../../components/ui/Icon';\nimport iQuestionOption from \"./../../../../interface/question-option.interface\";\nimport iQuestionChoice from '../../../../interface/question-option.interface';\nimport useBEM from '../../../../utils/hooks/useBEM';\nimport iNeedExplorerQuestion from '../../../../interface/need-explorer-question.interface';\nimport useTranslation from '../../../../utils/hooks/useTranslation';\nimport { useSelector } from 'react-redux';\nimport { getApp } from '../../../../store/slices/app.slice';\n\ninterface Props {\n question: iNeedExplorerQuestion,\n onAnswer?: (answer: iQuestionOption | iQuestionOption[]) => void\n}\n\nconst ChoiceList : React.FC = ({\n question,\n onAnswer,\n}) => {\n // VARIABLES\n const [B, E] = useBEM('choice-list');\n const { t } = useTranslation(useSelector(getApp));\n const leftAlignedQuestions = ['1.5', '2.1', '2.4', '4.2', '4.7']\n const normalChoiceListQuestions = ['1.2', '1.5', '2.1', '2.4', '4.2', '4.7']\n const oneColumnQuestions = ['1.2']\n\n // HOOKS\n\n // METHODS\n const getAnswer = () => {\n if(!question.answer)return question.canSelectMultiple ? [] : '';\n\n if(question.canSelectMultiple) {\n return question.answer as iQuestionOption[];\n }\n return (question.answer as iQuestionOption).value;\n }\n\n const select = (option: iQuestionChoice) => {\n if(question.canSelectMultiple) {\n const answer = getAnswer() as iQuestionOption[];\n const isExist = answer.filter(c => c.value === option.value);\n let finalAnswer;\n if( isExist.length > 0) {\n finalAnswer = answer?.filter(c => c.value !== option.value);\n } else {\n finalAnswer = [ ...answer, option ]\n }\n\n if(question.id === '5.2') {\n console.log('5.2')\n finalAnswer = option.value === '5.2.3' ?\n [option] : // one answer only\n finalAnswer.filter(x => x.value !== '5.2.3') // remove the 5.2.3\n }\n\n if(onAnswer) onAnswer(finalAnswer);\n return;\n }\n\n if(onAnswer)onAnswer(option)\n }\n\n const selectedChoiceClassName = (option: iQuestionChoice) => {\n if( question.canSelectMultiple ) {\n const answer = getAnswer() as iQuestionOption[];\n const isSelected = answer.filter(c => c.value === option.value)\n return [isSelected.length > 0 ? 'selected' : '']\n }\n return [getAnswer() === option.value ? 'selected' : '']\n }\n\n const renderIconName = (choice: iQuestionChoice) => {\n if(choice.icon){\n return getAnswer() === choice.value ? `${choice.icon}-white` : `${choice.icon}`\n }\n else if(choice.simpleIcon){\n return getAnswer() === choice.value ? `${choice.simpleIcon}-white` : `${choice.simpleIcon}`\n }\n else{\n return ''\n }\n }\n\n const renderChoiceListType = () => {\n if(!question.options)return '';\n\n return question.options[0].icon ? 'choice-list-icon' :\n question.options[0].simpleIcon ? 'choice-list-icon-simple' : ''\n }\n\n return (\n \n {\n question.options && question.options.map(option => (\n select(option)}>\n\n {\n option.icon || option.simpleIcon ?\n : null\n }\n\n {t(option.label)}\n \n ))\n }\n \n )\n}\n\nexport default ChoiceList;\n","import React, { useEffect, useRef, useState } from 'react';\nimport CircularSlider from '@fseehawer/react-circular-slider';\nimport iNeedExplorerQuestion from '../../../../interface/need-explorer-question.interface';\nimport useTranslation from '../../../../utils/hooks/useTranslation';\nimport { useSelector } from 'react-redux';\nimport { getApp } from '../../../../store/slices/app.slice';\nimport { CircularInput, CircularProgress, CircularThumb, CircularTrack, useCircularDrag, useCircularInputContext } from 'react-circular-input';\n\ninterface Props {\n question: iNeedExplorerQuestion,\n onAnswer?: (answer: number) => void\n}\n\nconst Dial : React.FC = ({\n question,\n onAnswer\n}) => {\n // VARIABLES\n const { t } = useTranslation(useSelector(getApp));\n const [answer, setAnswer] = useState((question.answer as number)/10); \n const min = 0.0099;\n const max = 0.96;\n \n\n \n // METHODS\n const valueWithinLimits = (v:number) => {\n return Math.min(Math.max(v, min), max)\n }\n const dialChanged = (data: number) => {\n const whole = Math.ceil(Math.ceil(data*100)/10)\n if(onAnswer)onAnswer(whole);\n }\n\n return (\n
    \n {/* { dialChanged(data); } }\n\n > */}\n setAnswer(valueWithinLimits(v))}\n min={question.dial?.min}\n max={question.dial?.max}\n onChangeEnd={(data:number) => { dialChanged(data); }}\n >\n \n \n \n \n\t\t\t \n \n {Math.ceil(Math.floor(answer*100)/10)}\n \n

    \n \n {t('need_explorer_hr_per_day')} \n \n \n
    \n )\n}\n\nexport default Dial;\n\n","import React, { useEffect, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport Icon from '../../../../components/ui/Icon';\nimport iNeedExplorerQuestion from '../../../../interface/need-explorer-question.interface';\nimport iQuestionOption from '../../../../interface/question-option.interface';\nimport { getApp } from '../../../../store/slices/app.slice';\nimport useBEM from '../../../../utils/hooks/useBEM';\nimport useTranslation from '../../../../utils/hooks/useTranslation';\n\ninterface Props {\n question: iNeedExplorerQuestion,\n onAnswer?: (answer: iQuestionOption[]) => void\n}\n\nconst DragAndDropSorter : React.FC = ({\n question,\n onAnswer,\n}) => {\n // VARIABLES\n const [B, E] = useBEM('drag-and-drop-sorter');\n const [answer, setAnswer] = useState(new Array(question.options?.length).fill(null));\n const { t } = useTranslation(useSelector(getApp));\n const [drag, setDrag] = useState(new Array(question.options?.length).fill(''))\n const [drop, setDrop] = useState(new Array(question.options?.length).fill(''))\n\n // HOOKS\n useEffect(() => {\n if(question.answer){\n (question.answer as iQuestionOption[]).map((o:any, index)=>{\n if(o === null || o===undefined || o === \"\") drag[index] = '';\n else {\n drag[index] = o.value;\n answer[index] = o;\n }\n })\n setDrag([...drag]);\n setAnswer([...answer]);\n }\n\n }, [drop]);\n\n // METHODS\n const allowDrop = (event: any) => {\n event.preventDefault();\n }\n\n const onDrag = (event: any, option: any) => {\n event.dataTransfer.setData('option', JSON.stringify(option));\n }\n\n\n const onDrop = (event: any, index: number) => {\n event.preventDefault();\n const data = JSON.parse(event.dataTransfer.getData(\"option\"));\n answer[index] = data;\n setAnswer([...answer]);\n drag[index]=answer[index].value;\n setDrag([...drag]);\n if(onAnswer)onAnswer([...answer]);\n\n\n }\n //remove card\n const removeDrop = (index: number) =>{\n let option:any;\n if(question.answer) {\n const answer = (question.answer as iQuestionOption[])[index];\n option = answer ? answer : '';\n }\n const newList = answer.map((value:any = '', index) =>{\n if(value !== null && value !== undefined && value.value === option.value){\n answer[index] = null;\n // drag[index]=false;\n drag[index]='';\n }\n else return value\n })\n setDrag([...drag]);\n setAnswer([...newList]);\n if(onAnswer)onAnswer([...answer]);\n }\n\n const getValue = (index: number) => {\n if(question.answer) {\n const answer = (question.answer as iQuestionOption[])[index];\n if(answer) {\n return
    \n {t(answer.label)}\n
    \n }\n }\n return null;\n }\n\n const getImage = (index: number) => {\n if(question.answer) {\n const answer = (question.answer as iQuestionOption[])[index];\n if(answer) {\n return (\n \n )\n }\n }\n return null;\n }\n\n const isAssigned = (option: iQuestionOption) => {\n const answers = question.answer as iQuestionOption[];\n if(!answers) return false;\n const found = drag.filter( o => o && o === option.value);\n return found.length > 0;\n }\n\n //ON CLICK FUNCTIONS\n const onPick = (event: any, option: any, index: any) =>{\n event.preventDefault();\n if(drag.indexOf(option.value) > -1 ) return;\n\n const data = option;\n const indexValue = drag.indexOf('')\n answer[indexValue] = data;\n setAnswer([...answer]);\n drag[indexValue]=answer[indexValue].value;\n setDrag([...drag]);\n\n if(onAnswer)onAnswer([...answer]);\n }\n\n return (\n
    \n\n
    \n {\n question.options && question.options.map( (option, index) => (\n onDrop(event, index)}\n // onDragOver={(event) => allowDrop(event)}\n className={E('drop-item' ,[drag[index] ? 'with-value' : ''])}>\n\n \n { index + 1}\n \n {\n drag[index] &&\n
    removeDrop(index)}>\n\n
    \n }\n\n { drag[index] && getImage(index) }\n\n { drag[index] && getValue(index) }\n\n
    \n ))\n }\n
    \n\n\n
    \n {\n question.options && question.options.map( (option,index) => (\n\n onPick(event, option, index)}\n // draggable={ drop[index] === option.value ? false : true}\n className={E('drag-item' , [ isAssigned(option) ? 'with-value' : ''])} key={option.value}\n >\n \n\n \n {t(option.label)}\n \n
    \n ))\n }\n
    \n\n
    \n )\n}\n\nexport default DragAndDropSorter;\n","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport iNeedExplorerQuestion from '../../../../interface/need-explorer-question.interface';\nimport { getApp } from '../../../../store/slices/app.slice';\nimport useTranslation from '../../../../utils/hooks/useTranslation';\n\ninterface Props {\n question: iNeedExplorerQuestion,\n onAnswer?: (answer: string) => void\n}\n\nconst Note : React.FC = ({\n question,\n onAnswer\n}) => {\n // VARIABLES\n const { t } = useTranslation(useSelector(getApp));\n // HOOKS\n\n // METHODS\n const onChangeHandler = (event: any) => {\n if(onAnswer) onAnswer(event.target.value);\n }\n\n return (\n \n )\n}\n\nexport default Note;","import React from 'react';\nimport useBEM from '../../../../utils/hooks/useBEM';\nimport Utils from '../../../../utils/Utils';\nimport iNeedExplorerQuestion from '../../../../interface/need-explorer-question.interface';\nimport Islayder from '../../../../components/ui/Islayder';\nimport useTranslation from '../../../../utils/hooks/useTranslation';\nimport { useSelector } from 'react-redux';\nimport { getApp } from '../../../../store/slices/app.slice';\nimport NumberSlider from '../../../../components/ui/NumberSlider';\n\ninterface Props {\n question: iNeedExplorerQuestion,\n onAnswer?: (answers: number[]) => void\n}\n\nconst SliderGroup : React.FC = ({\n question,\n onAnswer\n}) => {\n // VARIABLES\n const [B, E] = useBEM('slider-group');\n const { cloneObject } = Utils();\n const { t } = useTranslation(useSelector(getApp));\n\n // HOOKS\n\n // METHODS\n const handleOnChange = (data: any, index: number) => {\n const newAnswers = cloneObject(question.answer) as number[];\n newAnswers[index] = data;\n if(onAnswer) onAnswer(newAnswers);\n }\n\n const getSliderValue = (index: number) => {\n return (question.answer as number[])[index];\n }\n\n return (\n
    \n {\n question.sliders && question.sliders.map( (slider, index) => (\n
    \n \n\n handleOnChange(data, index)}\n withIndex={true}\n />\n\n {/*
    \n {slider.min}h\n {slider.max}h\n
    */}\n
    \n ))\n }\n\n
    \n )\n}\n\nexport default SliderGroup;\n","import React, { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport iNeedExplorerQuestion from '../../../interface/need-explorer-question.interface';\nimport { getApp } from '../../../store/slices/app.slice';\nimport needExplorerSlice, { getNeedExplorer } from '../../../store/slices/need-explorer.slice';\nimport userSlice from '../../../store/slices/user.slice';\nimport ExperienceType from '../../../types/experience.type';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport ChoiceBox from './question-types/ChoiceBox';\nimport ChoiceBoxImage from './question-types/ChoiceBoxImage';\nimport ChoiceBoxImageDuration from './question-types/ChoiceBoxImageDuration';\nimport ChoiceBoxKids from './question-types/ChoiceBoxKids';\nimport ChoiceImageKids from './question-types/ChoiceImageKids';\nimport ChoiceList from './question-types/ChoiceList';\nimport Dial from './question-types/Dial';\nimport DragAndDropSorter from './question-types/DragAndDropSorter';\nimport Note from './question-types/Note';\nimport SliderGroup from './question-types/SliderGroup';\n\n\ninterface Props {\n question: iNeedExplorerQuestion\n}\n\nconst NeedExplorerQuestion : React.FC = ({\n question\n}) => {\n // VARIABLES\n const [B, E] = useBEM('need-explorer-question');\n const dispatch = useDispatch();\n const { t } = useTranslation(useSelector(getApp));\n const currentNeedExplorerData = useSelector(getNeedExplorer);\n const {\n categoryStep,\n questionStep,\n } = useSelector(getNeedExplorer);\n const appStore = useSelector(getApp);\n const { experience } = appStore;\n\n // HOOKS\n useEffect(() => {\n dispatch(userSlice.actions.saveNeedExplorerData(currentNeedExplorerData));\n }, [currentNeedExplorerData])\n\n // METHODS\n const answerQuestion = (answer: any) => {\n const category = categoryStep;\n const question = questionStep;\n dispatch(needExplorerSlice.actions.answerQuestion({answer, category, question}));\n dispatch(needExplorerSlice.actions.setShowSaved(true))\n }\n\n const answerPanel = (q: iNeedExplorerQuestion) => {\n switch (q.type) {\n case 'CHOICE_LIST':\n return answerQuestion(ans)}/>\n case 'CHOICE_BOX':\n return answerQuestion(ans)}/>\n case 'CHOICE_BOX_KIDS':\n return answerQuestion(ans)}/>\n case 'CHOICE_IMAGE_KIDS':\n return answerQuestion(ans)}/>\n case 'SLIDER_GROUP':\n return answerQuestion(ans)}/>\n case 'DRAG_AND_DROP_SORTER':\n return answerQuestion(ans)}/>\n case 'CHOICE_BOX_IMAGE':\n return answerQuestion(ans)}/>\n case 'NOTE':\n return answerQuestion(ans)}/>\n case 'DIAL':\n return answerQuestion(ans)}/>\n case 'DURATION_GROUP':\n return answerQuestion(ans)} />\n default:\n return null;\n }\n }\n\n return (\n
    \n

    \n {t(question?.question)}\n {/* \n {question?.subQuestion}\n */}\n

    \n \n \n {/* {\n question.subQuestion &&\n \n } */}\n\n { answerPanel(question) }\n
    \n )\n}\n\nexport default NeedExplorerQuestion;\n","import React from 'react';\nimport Icon from '../../../components/ui/Icon';\nimport useBEM from '../../../utils/hooks/useBEM';\n\ninterface Props {\n isKids: boolean,\n disableNext: boolean,\n disableBack: boolean,\n currentQuestion: number,\n numberOfQuestions: number,\n isCurrentQuestionWithAnwer: boolean,\n // Note: list of question index with answers\n fullIndexes: number[], \n onNavigate: (action: 'back' | 'next') => void\n}\n\nconst CategoryProgressBar : React.FC = ({\n isKids,\n disableBack,\n disableNext,\n currentQuestion,\n numberOfQuestions,\n isCurrentQuestionWithAnwer,\n fullIndexes,\n onNavigate\n}) => {\n // VARIABLES\n const [B, E] = useBEM('category-progress-bar');\n\n // HOOKS\n\n // METHODS\n const barClassModifiers = (index: number) => {\n const modifiers = [];\n if(index === currentQuestion) modifiers.push('current');\n if( \n index < currentQuestion || \n ( isCurrentQuestionWithAnwer && index === currentQuestion) ||\n fullIndexes.includes(index)\n ) modifiers.push('full');\n if(isKids) modifiers.push('kids');\n \n return modifiers;\n }\n\n const generateBars = () => {\n return new Array(numberOfQuestions).fill('').map( (_, index) => (\n
    \n
    \n ))\n }\n\n const navigate = (dir: 'next' | 'back') => {\n if(dir === 'next'){\n if(disableNext)return;\n onNavigate('next');\n return;\n }\n if(disableBack)return;\n onNavigate('back');\n }\n\n return (\n
    \n
    \n navigate('back')}/>\n \n navigate('next')}/>\n
    \n\n
    \n {generateBars()}\n
    \n
    \n )\n}\n\nexport default CategoryProgressBar;","import React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport Button from '../../../components/ui/Button';\nimport Icon from '../../../components/ui/Icon';\nimport NeedExplorerViewType from '../../../types/need-explorer-view.type';\nimport needExplorerSlice, { getNeedExplorer } from '../../../store/slices/need-explorer.slice';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport NeedExplorerQuestion from './NeedExplorerQuestion';\nimport iQuestionOption from '../../../interface/question-option.interface';\nimport { getUser } from '../../../store/slices/user.slice';\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport { getApp } from '../../../store/slices/app.slice';\nimport CategoryProgressBar from './CategoryProgressBar';\n\ninterface Props {\n\n}\n\nconst NeedExplorerQuestionPanel : React.FC = () => {\n // VARIABLES\n const [B, E] = useBEM('need-explorer-question-panel');\n const {\n questions,\n categoryStep,\n questionStep,\n activeCategory,\n activeQuestion,\n showSaved\n } = useSelector(getNeedExplorer);\n const dispatch = useDispatch();\n const { ageCategory } = useSelector(getUser);\n const { t } = useTranslation(useSelector(getApp));\n const optionalQuestionIds = ['6.2', '3.1', '1.4', '1.9', '2.3', '2.4', '3.6', '4.1', '4.6', '4.7']\n const [show, setShow] = useState(null)\n const [showLoader, setShowLoader] = useState(false);\n const [questionsWithAnswer, setQuestionsWithAnswer] = useState([]);\n\n\n // HOOKS \n useEffect(() => {\n if (showSaved) {\n setTimeout(() => setShowLoader(true), 25)\n setShowLoader(false)\n\n dispatch(needExplorerSlice.actions.setShowSaved(false))\n } else {\n setShow(null)\n }\n\n setShowLoader(false)\n }, [showSaved])\n\n useEffect(() => {\n if (showLoader) {\n setTimeout(() => {\n setShow(\"-show\")\n }, 800)\n }\n }, [showLoader])\n\n useEffect(() => {\n setShowLoader(false)\n }, [show])\n\n useEffect(() => {\n const withAnswers: number[] = [];\n const categoryQuestions = questions.filter( c => c.id === activeCategory.id)[0].questions;\n categoryQuestions.forEach( (x,i) => {\n if(x.isAnswered)withAnswers.push(i);\n });\n setQuestionsWithAnswer(withAnswers);\n }, [questions, categoryStep, questionStep, activeCategory])\n\n\n\n // METHODS\n const isLastCategory = () => {\n return questions.length === (categoryStep + 1);\n }\n\n const isLastQuestion = () => {\n return activeCategory.questions.length === (questionStep + 1);\n }\n\n const isGeneralQuestionDone = () => {\n var penultimateQuestionInGeneral = questions[0].questions.length-1;\n\n return questionStep === penultimateQuestionInGeneral && categoryStep === 0\n }\n\n const nextQuestion = () => {\n if (isGeneralQuestionDone() && ageCategory?.value !== 'kids'){\n dispatch(needExplorerSlice.actions.changeView(NeedExplorerViewType.GENERAL_CHECKPOINT));\n }\n dispatch(needExplorerSlice.actions.nextQuestion());\n\n if (isLastCategory() && isLastQuestion()){\n dispatch(needExplorerSlice.actions.changeView(NeedExplorerViewType.FINISHED));\n }\n\n dispatch(needExplorerSlice.actions.setShowSaved(false))\n setShow(null)\n }\n\n const navigationQuestion = (dir?: 'back' | 'next') => {\n if(dir === 'back') {\n dispatch(needExplorerSlice.actions.previousQuestion());\n return;\n }\n nextQuestion();\n }\n\n const disableButton = (callerId: 'button' | 'progress') => {\n if(activeQuestion.type === 'DRAG_AND_DROP_SORTER') {\n const answers = activeQuestion.answer as iQuestionOption[];\n if(answers.length < 1)return true;\n return answers.reduce((a,b) => {\n if(!b)return a;\n return a + 1\n },0) < 4;\n }\n\n // For kids question to accept if the user has no answer\n if(optionalQuestionIds.includes(activeQuestion.id) && callerId === 'button'){\n return false\n }\n\n if(Array.isArray(activeQuestion.answer)) return activeQuestion.answer.length < 1;\n if(typeof activeQuestion.answer === 'number') return activeQuestion.answer < 0;\n return activeQuestion.answer ? false : true;\n }\n\n const isQuestionTypeKids = () => {\n const isKids = String(activeQuestion.type).toLocaleLowerCase().indexOf('kids') >= 0;\n return isKids;\n }\n\n return (\n
    \n\n {/*
    \n { questionStep > 0 && }\n {questionStep + 1}/ {activeCategory.questions.length}\n
    */}\n\n \n\n
    \n \n\n
    \n\n
    \n \n \n
    \n
    \n\n\n \n {/* */}\n
    \n )\n}\n\nexport default NeedExplorerQuestionPanel;\n","import React from 'react';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport NeedExplorerCategory from './NeedExplorerCategory';\nimport NeedExplorerQuestionPanel from './NeedExplorerQuestionPanel';\n\ninterface Props {\n\n}\n\nconst NeedExplorerQuestionaires : React.FC = () => {\n // VARIABLES\n const [B] = useBEM('need-explorer-questionaires');\n // HOOKS\n\n // METHODS\n\n return (\n
    \n\n \n \n\n
    \n )\n}\n\nexport default NeedExplorerQuestionaires;\n","import React, { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useHistory } from \"react-router\";\nimport Button from '../../../components/ui/Button';\nimport Icon from '../../../components/ui/Icon';\nimport RouterLink from '../../../components/ui/RouterLink';\nimport NeedExplorerViewType from '../../../types/need-explorer-view.type';\nimport needExplorerSlice, { getNeedExplorer } from '../../../store/slices/need-explorer.slice';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport userSlice from '../../../store/slices/user.slice';\nimport lensConsultationSlice, { getLensConsultation } from '../../../store/slices/lens-consultation.slice';\nimport routes from '../../../constants/routes.constant';\nimport { evaluateDecisionTree } from '../../../utils/misc';\nimport useGoogleAnalytics from '../../../utils/hooks/useGoogleAnalytics';\nimport Utils from '../../../utils/Utils';\nimport { getProducts } from '../../../store/slices/products.slice';\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport { getApp } from '../../../store/slices/app.slice';\nimport iLensRecommendationPair from './../../../interface/lens-recommendaiton-pair.interface';\n\ninterface Props {\n\n}\n\nconst NeedExplorerGeneralCheckPoint : React.FC = () => {\n // VARIABLES\n const [B, E] = useBEM('need-explorer-general-checkpoint');\n const dispatch = useDispatch();\n const currentNeedExplorerData = useSelector(getNeedExplorer);\n const currentLensConsultation = useSelector(getLensConsultation);\n const {accountDetails} = useSelector(getApp);\n const country = accountDetails?.shop.country\n const { temporaryProductList } = useSelector(getProducts);\n const history = useHistory();\n const ga = useGoogleAnalytics();\n const { getDateTimeDifference } = Utils();\n const { t } = useTranslation(useSelector(getApp));\n\n // // HOOKS\n useEffect(() => {\n // Save data as soon as this page loads\n saveDataAndPrefilled()\n\n return () => {\n saveGeneralQuestionsSessionDuration();\n }\n }, [])\n\n // // METHODS\n const saveGeneralQuestionsSessionDuration = () => {\n if(!currentNeedExplorerData.generalQuestionSessionStart)return;\n const timediff = getDateTimeDifference(new Date(currentNeedExplorerData.generalQuestionSessionStart), new Date());\n ga.event({\n category: 'Need Explorer',\n action: '9 Q Complete',\n variable_id: 'need_explorer_9_question_complete',\n label: timediff\n });\n dispatch(needExplorerSlice.actions.generalQuestionSessionStart(undefined))\n }\n\n const modify = () => {\n dispatch(needExplorerSlice.actions.questionaireFromStart());\n dispatch(needExplorerSlice.actions.changeView(NeedExplorerViewType.QUESTIONNAIRE));\n }\n\n const gotoAnamnesis = () => {\n //Save Data and Recommend\n // saveDataAndPrefilled()\n\n //Move to Anamnesis Page\n dispatch(needExplorerSlice.actions.changeView(NeedExplorerViewType.ANAMNESIS));\n }\n\n const saveAndNext = () => {\n //Save Data and Recommend\n saveDataAndPrefilled();\n //Move to Lens Proposal Builder Page\n history.push(routes.lensProposalBuilder.path);\n }\n\n const saveDataAndPrefilled = () => {\n\n const recom = evaluateDecisionTree(currentNeedExplorerData, true, temporaryProductList, country)\n\n //Save User Data for Need Explorer\n dispatch(userSlice.actions.saveNeedExplorerData(currentNeedExplorerData));\n\n //Evaluate Decision Tree to prefilled data in Lens Consultation\n const temp = {\n ...currentLensConsultation,\n lensRecommendation: {\n pair1: recom.pair1,\n pair2: recom.pair2\n },\n storedLensRecommendation: {\n pair1: recom.pair1,\n pair2: recom.pair2\n }\n }\n\n console.log('RESULT FROM GENERAL', temp)\n\n dispatch(userSlice.actions.savePrefilledData(temp));\n dispatch(needExplorerSlice.actions.setFinalAnswers(recom.answers));\n dispatch(lensConsultationSlice.actions.setPrefilledDataFromNeedExplorer(recom))\n dispatch(lensConsultationSlice.actions.setPrefilledDataFromNeedExplorerStored(recom))\n dispatch(lensConsultationSlice.actions.setShowDialogue(true))\n dispatch(lensConsultationSlice.actions.setShowWarning(true))\n\n dispatch(userSlice.actions.saveLensRecommendationData({\n pair1: recom?.pair1 as iLensRecommendationPair,\n pair2: recom?.pair2 as iLensRecommendationPair\n }));\n }\n\n const goToQuestionnaire = () => {\n dispatch(needExplorerSlice.actions.moreQuestionSessionStart(new Date().toISOString()));\n // Continue answering questions\n dispatch(needExplorerSlice.actions.changeView(NeedExplorerViewType.QUESTIONNAIRE));\n }\n\n const customIconStyle = { color: \"white\" }\n\n return (\n
    \n\n
    \n
    \n\n
    \n
    \n \n \n
    \n\n

    {t('need_explorer_first_step_done')}

    \n\n
    \n \n\n \n {t('questionnaires_q_modify_my_answers')}\n \n
    \n\n
    \n
    \n OR\n
    \n
    \n\n
    \n \n\n \n\n\n
    \n
    \n
    \n
    \n )\n}\n\nexport default NeedExplorerGeneralCheckPoint;\n","import React from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport NeedExplorerViewType from '../../types/need-explorer-view.type';\nimport { getNeedExplorer } from '../../store/slices/need-explorer.slice';\nimport useBEM from '../../utils/hooks/useBEM';\nimport { getUser } from '../../store/slices/user.slice';\nimport NeedExplorerAnamnesis from './components/NeedExplorerAnamnesis';\nimport NeedExplorerFinished from './components/NeedExplorerFinished';\nimport NeedExplorerIntro from './components/NeedExplorerIntro';\nimport NeedExplorerQuestionaires from './components/NeedExplorerQuestionaires';\nimport NeedExplorerGeneralCheckPoint from './components/NeedExplorerGeneralCheckPoint';\nimport useGoogleAnalytics from '../../utils/hooks/useGoogleAnalytics';\n\ninterface Props {\n\n}\n\nconst NeedExplorer : React.FC = () => {\n // VARIABLES\n const [B] = useBEM('need-explorer');\n const { view } = useSelector(getNeedExplorer);\n \n // HOOKS\n\n // METHODS\n const dynamicView = () => {\n switch (view) {\n case NeedExplorerViewType.INTRO: return \n case NeedExplorerViewType.QUESTIONNAIRE: return \n case NeedExplorerViewType.GENERAL_CHECKPOINT: return \n case NeedExplorerViewType.FINISHED: return \n case NeedExplorerViewType.ANAMNESIS: return \n default: return null\n }\n }\n\n return (\n
    \n {dynamicView()}\n
    \n )\n}\n\nexport default NeedExplorer;","import React, { useEffect, useState } from 'react'\nimport { useSelector } from 'react-redux'\nimport { getVariluxG9 } from '../../../store/slices/variluxG9.slice'\nimport useBEM from '../../../utils/hooks/useBEM'\n\ninterface Props {\n}\n\nexport enum iViewStep {\n intro = 0,\n needExplorer,\n prescription,\n demonstrations,\n conclusion\n}\nconst ProgressBar:React.FC = () => {\n const [B, E] = useBEM('varilux-progress')\n const [multiplier, setMultiplier] = useState(1)\n const width:number = multiplier * 25\n const {view } = useSelector(getVariluxG9)\n\n\n\n useEffect(() => {\n setMultiplier(iViewStep[view])\n }, [view])\n \n\n return (\n
    \n
    \n {`${width}%`}\n
    \n\n
    \n \n
    \n
    \n )\n}\n\nexport default ProgressBar","import React, { Fragment, useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport Button from '../../../components/ui/Button';\nimport Checkbox from '../../../components/ui/Checkbox';\nimport iLensProposalField from '../../../interface/lens-proposal-field.interface';\nimport { getApp } from '../../../store/slices/app.slice';\nimport prescriptionSlice, { getPrescription } from '../../../store/slices/prescription.slice';\nimport { getUser } from '../../../store/slices/user.slice';\nimport AgeCategoryType from '../../../types/age-category.type';\nimport LensCategoryType from '../../../types/lens-category.type';\nimport LensEnhanceType from '../../../types/lens-enhance.type';\nimport LensFamilyType from '../../../types/lens-family.type';\nimport LensProposalEquipmentType from '../../../types/lens-proposal-section.type';\nimport LensProtectType from '../../../types/lens-protect.type';\nimport PrescriptionViewType from '../../../types/prescription-view.type';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport useTranslation from '../../../utils/hooks/useTranslation';\n\ninterface Props {\n\n}\n\nconst PrescriptionLensProposal : React.FC = () => {\n // VARIABLES\n const [B, E] = useBEM('prescription-lens-proposal');\n const { \n tempGeneralEquipment, \n tempComplementaryEquipment, \n tempPrescriptionData\n } = useSelector(getPrescription);\n const { \n generalEquipment, \n complementaryEquipment, \n ageCategory\n } = useSelector(getUser);\n const dispatch = useDispatch();\n const { t } = useTranslation(useSelector(getApp));\n const [showPersonalized, setShowPersonalized] = useState(false);\n const [showCorrect, setShowCorrect] = useState(false);\n\n // HOOKS\n useEffect(() => { \n setPreSelectedValues();\n }, [])\n\n // METHODS\n const setPreSelectedValues = () => {\n let general = generalEquipment || tempGeneralEquipment;\n let complementary = complementaryEquipment || tempComplementaryEquipment;\n\n const sphereValues = tempPrescriptionData.values.sphere;\n const highest = Number(sphereValues?.od) > Number(sphereValues?.os) ? \n sphereValues.od : \n sphereValues.os;\n\n // Note: preselect only if theres no saved data\n // if(!generalEquipment){\n if(ageCategory?.value === AgeCategoryType.KIDS){\n const correctPreSelectedValue = Number(highest) >= -0.5 ? \n LensCategoryType.SINGLE_VISION : \n LensCategoryType.MYOPIA;\n\n const protectPreSelectedValue = Number(highest) >= -0.5 ? \n LensProtectType.BLUE_CUT : undefined;\n\n general = preSelectValue(general , LensFamilyType.CORRECT, correctPreSelectedValue);\n general = preSelectValue(general, LensFamilyType.PROTECT, protectPreSelectedValue);\n\n if(!generalEquipment){\n general = preSelectValue(general, LensFamilyType.ENHANCE, LensEnhanceType.AR);\n }\n\n // general = hideProtectTinted(general)\n } else {\n const correctPreSelectedValue = !tempPrescriptionData.values.addition ? \n LensCategoryType.SINGLE_VISION : \n LensCategoryType.PROGRESSIVE;\n\n general = preSelectValue(general, LensFamilyType.CORRECT, correctPreSelectedValue);\n }\n // }\n \n dispatch(prescriptionSlice.actions.saveTemporaryLensEquipment({\n general,\n complementary\n }))\n }\n\n const hideProtectTinted = (equipment: iLensProposalField[]) => {\n const hideTinted = true; \n return equipment.map( x => {\n if(x.field === LensFamilyType.PROTECT) {\n return {\n ...x,\n options: x.options.map ( o => {\n if(o.value === LensProtectType.TINTED)return { ...o, hidden: hideTinted }\n return o;\n }),\n value: (hideTinted && x.value?.value === LensProtectType.TINTED) ? undefined : x.value\n }\n }\n return x;\n })\n }\n\n const preSelectValue = (\n general: iLensProposalField[],\n family: LensFamilyType, \n value: LensCategoryType | LensProtectType | LensEnhanceType | undefined\n ) => { \n const familyType = general.filter( x => x.field === family)[0];\n const preSelectedValue = familyType.options.filter( x => x.value === value)[0];\n general = general.map( x => {\n if(x.field === family){\n return { ...x, value: preSelectedValue }\n }\n return x;\n });\n return general;\n }\n \n const back = () => {\n dispatch(prescriptionSlice.actions.changeView(PrescriptionViewType.PRESCRIPTION));\n }\n\n const onSelectFieldOption = (\n equipment: LensProposalEquipmentType, \n field:iLensProposalField, \n option: any,\n unSelectSelected = true\n ) => {\n const dataToUpdate = (equipment === LensProposalEquipmentType.GENERAL) ? \n tempGeneralEquipment : tempComplementaryEquipment;\n\n const newState: iLensProposalField[] = dataToUpdate.map( f => {\n if (f.field === field.field) {\n if(field.field=== \"correct\" && option.value !== 'personalized'){\n if(!showPersonalized) setShowCorrect(true);\n else setShowCorrect(!showCorrect);\n if(showPersonalized)setShowPersonalized(true);\n }\n if(field.field=== \"correct\" && option.value === 'personalized'){\n const condition = !showPersonalized;\n setShowPersonalized(condition);\n }\n const isSameValue = (field.value?.value === option.value && !field.required) && unSelectSelected;\n return { ...f, value: !isSameValue ? option : null}\n }\n \n \n return f;\n });\n\n\n dispatch(prescriptionSlice.actions.updateLensEquipment({\n data: newState,\n equipment\n }));\n }\n \n const renderFiendOptions = (field: iLensProposalField, equipment: LensProposalEquipmentType) => {\n \n return field.options.map( (option ) => {\n // Note: filter options base on age category\n if( option.ageCategories && \n !option.ageCategories.includes(ageCategory?.value as AgeCategoryType)) {\n return null;\n }\n if(field.field === \"correct\")\n {\n let renderData;\n if(option.value !== 'personalized'){\n renderData = \n
  • onSelectFieldOption(equipment ,field, option)} \n key={option.value}>\n \n {t(option.label)}\n \n
  • \n }\n else{\n \n renderData = \n
  • onSelectFieldOption(equipment ,field, option)} \n key={option.value}>\n \n {t(option.label)}\n \n
  • \n }\n return renderData;\n }\n\n if(option.label === \"Correct\" || option.hidden)return null;\n\n return
  • onSelectFieldOption(equipment ,field, option)} \n key={option.value}>\n \n {t(option.label)}\n \n\n
  • \n })\n }\n\n const renderFields = (fields: iLensProposalField[], section: LensProposalEquipmentType) => { \n return fields.map((field: any) => (\n \n { field.label && }\n
      \n {renderFiendOptions(field, section)}\n
    \n
    \n ))\n \n }\n\n return (\n
    \n \n
    \n )\n}\n\nexport default PrescriptionLensProposal;","const PRESCRIPTION_RULES = {\n standard: {\n sphere: {\n increment: 0.25,\n min: -20.00,\n max: 20.00,\n validation: {\n required: true,\n requiredSign: true\n }\n },\n cylinder: {\n increment: 0.25,\n min: -6,\n max: 6,\n validation: {\n required: false,\n requiredSign: true\n }\n },\n axis: {\n increment: 1,\n min: 0,\n max: 180,\n suffix: '°',\n validation: {\n required: false,\n requiredSign: false,\n }\n },\n addition: {\n increment: 0.25,\n min: 0.50,\n max: 4.00,\n validation: {\n required: false,\n requiredSign: true\n }\n }\n },\n ava: {\n sphere: {\n increment: 0,\n min: -20.00,\n max: 20.00,\n validation: {\n required: true,\n requiredSign: true\n }\n },\n cylinder: {\n increment: 0,\n min: -6,\n max: 6,\n validation: {\n required: false,\n requiredSign: true\n }\n },\n axis: {\n increment: 1,\n min: 0,\n max: 180,\n suffix: '°',\n validation: {\n required: false,\n requiredSign: false\n }\n },\n addition: {\n increment: 0.25,\n min: 0.50,\n max: 4.00,\n validation: {\n required: false,\n requiredSign: true\n }\n }\n }\n}\nconst PRESCRIPTION_RULES_VARILUX = {\n standard: {\n sphere: {\n increment: 0.25,\n min: -20.00,\n max: 20.00,\n validation: {\n required: true,\n requiredSign: true\n }\n },\n cylinder: {\n increment: 0.25,\n min: -6,\n max: 6,\n validation: {\n required: false,\n requiredSign: true\n }\n },\n axis: {\n increment: 1,\n min: 0,\n max: 180,\n suffix: '°',\n validation: {\n required: false,\n requiredSign: false,\n }\n },\n addition: {\n increment: 0.25,\n min: 0.50,\n max: 4.00,\n validation: {\n required: true,\n requiredSign: true\n }\n }\n },\n ava: {\n sphere: {\n increment: 0,\n min: -20.00,\n max: 20.00,\n validation: {\n required: true,\n requiredSign: true\n }\n },\n cylinder: {\n increment: 0,\n min: -6,\n max: 6,\n validation: {\n required: false,\n requiredSign: true\n }\n },\n axis: {\n increment: 1,\n min: 0,\n max: 180,\n suffix: '°',\n validation: {\n required: false,\n requiredSign: false\n }\n },\n addition: {\n increment: 0.25,\n min: 0.50,\n max: 4.00,\n validation: {\n required: false,\n requiredSign: true\n }\n }\n }\n}\n\n\n\nconst PRESCRIPTION_FORM = [\n {\n label: 'prescription_rx_sphere',\n name: 'sphere',\n fields: [\n {\n position: 'od',\n label: 'rx_righ_teye'\n },\n {\n position: 'os',\n label: 'rx_left_eye'\n }\n ]\n },\n {\n label: 'prescription_rx_cylinder_',\n name: 'cylinder',\n fields: [\n {\n position: 'od',\n label: 'rx_righ_teye'\n },\n {\n position: 'os',\n label: 'rx_left_eye'\n }\n ]\n },\n {\n label: 'prescription_rx_axis_',\n name: 'axis',\n fields: [\n {\n position: 'od',\n label: 'rx_righ_teye'\n },\n {\n position: 'os',\n label: 'rx_left_eye'\n }\n ]\n },\n {\n label: 'prescription_rx_addition_',\n name: 'addition',\n fields: [\n {}\n ]\n }\n]\nconst PRESCRIPTION_FORM_VARILUX = [\n {\n label: 'prescription_rx_sphere',\n name: 'sphere',\n fields: [\n {\n position: 'od',\n label: 'rx_righ_teye'\n },\n {\n position: 'os',\n label: 'rx_left_eye'\n }\n ]\n },\n {\n label: 'prescription_rx_addition_',\n name: 'addition',\n fields: [\n {}\n ]\n }\n]\n\nexport {\n PRESCRIPTION_FORM,\n // NO_RX_DATA,\n // PRESCRIPTION_LENS_DATA,\n // PRESCRIPTION_SUNWEAR_DATA,\n PRESCRIPTION_FORM_VARILUX,\n PRESCRIPTION_RULES_VARILUX,\n}\nexport default PRESCRIPTION_RULES;\n","import React from 'react';\nimport iPrescriptionRule from '../../../interface/prescription-rules.interface';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport { useDispatch, useSelector } from 'react-redux';\nimport lensThicknessSlice from '../../../store/slices/lens-thickness.slice';\ninterface Props {\n valid: boolean,\n validation: {\n valid: boolean,\n message: string\n },\n label?: string,\n value?: number | undefined | string,\n rules: iPrescriptionRule,\n readOnly: boolean,\n onChange?: (value: number) => void,\n parent?: 'lens-consultation'\n}\n\nconst PrescriptionInput : React.FC = ({\n valid,\n validation,\n label,\n value,\n rules,\n readOnly = false,\n onChange,\n parent\n}) => {\n // VARIABLES\n const [B, E] = useBEM('prescription-input'); \n const dispatch = useDispatch()\n // METHODS\n const onChangeHandler = (event: any) => {\n const target = event.target;\n if(onChange)onChange(target.value);\n }\n\n const onBlurHandler = () => {\n dispatch(lensThicknessSlice.actions.changeError('prescription'))\n submitData()\n }\n\n const onKeyDownHandler = (event: any) => {\n const key = String(event.key).toLocaleLowerCase();\n if (key === 'enter') {\n submitData();\n }\n }\n\n const submitData = () => {\n if(!validation.valid || String(value).length === 0) return;\n let fieldValue = value;\n\n if(rules.suffix) fieldValue = String(fieldValue).replace(rules.suffix, '');\n\n let transformedData = incrementValue(Number(fieldValue));\n \n // Note: convert to 2 decimal\n if(transformedData || transformedData === 0) transformedData = Number(transformedData).toFixed(2); \n \n // Note: append + sign\n if(rules.validation.requiredSign)transformedData = appendSign(transformedData); \n\n // Note: append degrees sign\n if(rules.suffix && value )transformedData = transformedData + ' '+ rules.suffix;\n \n if(transformedData === value)return;\n if(onChange)onChange(transformedData)\n }\n \n const appendSign = (value: string) => {\n if(!value || value.length === 0)return value;\n\n const firstCharacter = value.substr(0,1);\n const withSign = ['-','+'].includes(firstCharacter);\n if(withSign || value === '0.00')return value;\n return `+${value}`;\n }\n \n const incrementValue = (data: number) => {\n if(rules.increment === 0)return data;\n\n // Note: get decimal value\n const isNegative = (data || 0) < 0;\n const fieldValue = Math.abs(data || 0);\n let decimalValue = fieldValue % 1;\n const floorValue = Math.floor(fieldValue);\n const incrementBase = Math.floor(decimalValue / rules.increment) * rules.increment;\n\n\n if( decimalValue > 0) { \n const halfOfIncrement = rules.increment / 2;\n const difference = decimalValue - incrementBase;\n let finalValue:any = floorValue + \n incrementBase + \n ( halfOfIncrement > difference ? 0 : rules.increment ); \n \n finalValue = rules.validation.requiredSign ? addSign(finalValue, isNegative) : finalValue;\n\n return finalValue;\n }\n return data;\n }\n\n const addSign = (data: number, isNegative: boolean) => {\n return `${isNegative ? '-' : '+'}${data}`\n }\n\n return (\n
    \n \n { label && \n }\n \n onKeyDownHandler(event)}\n onChange={(event) => onChangeHandler(event)}\n readOnly={readOnly}\n />\n D\n\n {\n !valid && !readOnly &&\n {validation.message}\n }\n\n
    \n )\n}\n\nexport default PrescriptionInput;","import React, { useEffect, useRef, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport PRESCRIPTION_RULES, { PRESCRIPTION_FORM, PRESCRIPTION_FORM_VARILUX, PRESCRIPTION_RULES_VARILUX } from '../../../constants/prescription.constants';\nimport iPrescriptionRule from '../../../interface/prescription-rules.interface';\nimport { getApp } from '../../../store/slices/app.slice';\nimport prescriptionSlice, { getPrescription } from '../../../store/slices/prescription.slice';\nimport { getUser } from '../../../store/slices/user.slice';\nimport variluxgG9Slice, { getVariluxG9 } from '../../../store/slices/variluxG9.slice';\nimport AgeCategoryType from '../../../types/age-category.type';\nimport PrecisionType from '../../../types/precision.type';\nimport PrescriptionFieldType from '../../../types/prescription-field.type';\nimport PrescriptionProductTypeVarilux from '../../../types/prescription-product-varilux.type';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport PrescriptionInput from './PrescriptionInput';\n\ninterface Props {\n parent?: 'lens-consultation',\n readOnly?: boolean,\n use?: 'default' | 'varilux'\n}\n\nconst PrescriptionForm : React.FC = ({\n parent,\n readOnly = false,\n use = 'default'\n}) => {\n // VARIABLES\n const [B, E] = useBEM('prescription-form');\n\n const { prescription,ageCategory } = useSelector(getUser);\n const { tempPrescriptionData, valueSign } = useSelector(getPrescription);\n const {prescriptionVarilux} = useSelector(getVariluxG9)\n const [dirtyFields, setDirtyFields] = useState([]);\n const dispatch = useDispatch();\n const prescriptionFormFields = use === 'default' ? PRESCRIPTION_FORM : PRESCRIPTION_FORM_VARILUX;\n const prescriptionRule = use === 'default' ? PRESCRIPTION_RULES : PRESCRIPTION_RULES_VARILUX;\n const prescriptionRules = useRef(prescriptionRule);\n const [isFirstLoad, setIsFirstLoad] = useState(true);\n const appStore = useSelector(getApp);\n const { experience } = appStore;\n const { t } = useTranslation(appStore);\n const forVarilux = use === 'varilux'\n const tempPrescriptionDataState = forVarilux ? prescriptionVarilux.values : tempPrescriptionData.values\n const [prescriptionValues, setPrescriptionValues] = useState(tempPrescriptionDataState);\n const productSelected = prescriptionVarilux.productSelected\n // HOOKS\n useEffect(() => {\n\n if(isFirstLoad)return;\n // Note: dont execute on first load on component\n if(!forVarilux){\n updateFormFieldValuesBaseOnPrecision();\n }\n\n }, [tempPrescriptionData.precision]);\n\n useEffect(()=>{\n if(forVarilux && productSelected === PrescriptionProductTypeVarilux.NONE){\n setPrescriptionValues({\n sphere: { od: '', os: '' },\n addition: ''\n })\n setDirtyFields([])\n }\n }, [productSelected])\n\n useEffect(() => {\n if(!tempPrescriptionData.values.sphere.od && !forVarilux){\n prescription.values && setPrescriptionValues(prescription.values);\n changePrecision(prescription.precision)\n }\n\n setTimeout(() => setIsFirstLoad(false), 250);\n }, [])\n\n useEffect(() => {\n updatePrescriptionRules();\n \n // Note: Check if prscirption form is valid\n let isValidPrescription = true;\n prescriptionFormFields.forEach( f => {\n const row = f.name;\n f.fields.forEach( (c: any) => {\n const res = validate(row, c.position, true);\n if(!res.valid){\n isValidPrescription = false;\n return;\n }\n })\n });\n\n \n if(!forVarilux){\n dispatch(prescriptionSlice.actions.validPrescription(isValidPrescription))\n dispatch(prescriptionSlice.actions.saveTempPrescriptionData({\n values: prescriptionValues,\n precision: tempPrescriptionData.precision\n }));\n activateLabel();\n }else{\n // varilux prescription\n dispatch(variluxgG9Slice.actions.savePrescription({\n addition:prescriptionValues.addition,\n sphere:prescriptionValues.sphere,\n }))\n\n const {addition, sphere} = prescriptionValues\n if( addition === '' && sphere.os === '' && sphere.od === ''){\n setDirtyFields([])\n }\n }\n \n }, [prescriptionValues])\n\n // METHODS\n const activateLabel = () =>{\n if(prescriptionValues && prescriptionValues.sphere.od){\n dispatch(prescriptionSlice.actions.saveValueSign({\n presicription: 'sphere',\n sign: prescriptionValues.sphere.od.charAt(0)\n }));\n }\n if(prescriptionValues && prescriptionValues.cylinder.od){\n dispatch(prescriptionSlice.actions.saveValueSign({\n presicription: 'cylinder',\n sign: prescriptionValues.cylinder.od.charAt(0)\n }));\n }\n }\n const updateFormFieldValuesBaseOnPrecision = () => {\n if(tempPrescriptionData.precision === PrecisionType.AVA)return;\n\n const sphereOD = incrementValue(prescriptionValues.sphere.od, tempPrescriptionData.precision, 'sphere');\n const sphereOS = incrementValue(prescriptionValues.sphere.os, tempPrescriptionData.precision, 'sphere');\n const cylinderOD = incrementValue(prescriptionValues.cylinder.od, tempPrescriptionData.precision, 'cylinder');\n const cylinderOS = incrementValue(prescriptionValues.cylinder.os, tempPrescriptionData.precision, 'cylinder');\n\n setPrescriptionValues((prev: any) => ({\n ...prev,\n sphere: { od: sphereOD, os: sphereOS },\n cylinder: { od: cylinderOD, os: cylinderOS },\n }));\n }\n\n // TODO: create hook for prescription function, include this method\n const incrementValue = (data: number, precission: PrecisionType, fieldName: string) => {\n let rules = prescriptionRules.current[precission][fieldName as PrescriptionFieldType];\n if(rules.increment === 0 || !data)return data;\n\n // Note: get decimal value\n const isNegative = (data || 0) < 0;\n const fieldValue = Math.abs(data || 0);\n let decimalValue = fieldValue % 1;\n const floorValue = Math.floor(fieldValue);\n const incrementBase = Math.floor(decimalValue / rules.increment) * rules.increment;\n\n if( decimalValue > 0) {\n const halfOfIncrement = rules.increment / 2;\n const difference = decimalValue - incrementBase;\n let finalValue:any = floorValue +\n incrementBase +\n ( halfOfIncrement > difference ? 0 : rules.increment );\n\n finalValue = rules.validation.requiredSign ? addSign(finalValue, isNegative) : finalValue;\n\n return finalValue;\n }\n return data;\n }\n const addSign = (data: number, isNegative: boolean) => {\n return `${isNegative ? '-' : '+'}${data}`\n }\n\n const precisionActiveClass = (value: PrecisionType) => {\n return tempPrescriptionData?.precision === value ? 'active' : ''\n }\n\n const changePrecision = (value: PrecisionType) => {\n dispatch(prescriptionSlice.actions.setPrescriptionPrecision(value))\n }\n\n const updatePrescription = (field: string, value: number, position?: string) => {\n const newState = {\n ...prescriptionValues,\n [field]: position ? {\n ...prescriptionValues[field],\n [position]: value\n } : value\n }\n setPrescriptionValues(newState);\n setFieldsDirty(field);\n dispatch(prescriptionSlice.actions.setTemporaryData(newState))\n }\n\n const setFieldsDirty = (field: string) => {\n if(!dirtyFields.includes(field)){\n let newDirtyFields = [\n ...dirtyFields,\n field\n ];\n\n // Note: make axis dirty when cylinder has value, vice versa\n if(newDirtyFields.includes('cylinder') && !newDirtyFields.includes('axis'))newDirtyFields.push('axis');\n if(newDirtyFields.includes('axis') && !newDirtyFields.includes('cylinder'))newDirtyFields.push('cylinder');\n setDirtyFields(newDirtyFields);\n }\n }\n\n const getRules = (precission: PrecisionType, fieldName: string): iPrescriptionRule => {\n let rules = prescriptionRules.current[precission][fieldName as PrescriptionFieldType];\n const partnerFields = ['cylinder', 'axis'];\n if(partnerFields.includes(fieldName)){\n\n const currentIndex = fieldName === partnerFields[1] ? 1 : 0;\n const currentField = partnerFields[currentIndex];\n if(prescriptionValues[currentField].od || prescriptionValues[currentField].os){\n rules = {\n ...rules,\n validation: {\n ...rules.validation,\n required: true\n }\n }\n }\n\n // Note: update the required validation of cylinder whe axis has value, vice versa\n const partnerIndex = fieldName === partnerFields[1] ? 0 : 1;\n const partnerField = partnerFields[partnerIndex];\n if(prescriptionValues[partnerField].od || prescriptionValues[partnerField].os){\n rules = {\n ...rules,\n validation: {\n ...rules.validation,\n required: true\n }\n }\n }\n }\n return rules;\n }\n\n const isWithSign = (value: any) => {\n const firstCharacter = String(value || '').charAt(0);\n return ['+','-'].includes(firstCharacter);\n }\n\n const isKids = () => {\n return ageCategory && ageCategory.value === AgeCategoryType.KIDS;\n }\n\n const validate = (row: string, column: string, ignoreDirtyCondition = false) => {\n const data = getValue(row, column);\n const rules = getRules(tempPrescriptionData.precision, row);\n let result = { valid: true, message: '' }\n let fieldValue = data || 0;\n\n // Note: remove suffix before validation\n if(rules.suffix)fieldValue = String(fieldValue).replace(rules.suffix, '');\n\n // Note: validate only when field is dirty\n if(!dirtyFields.includes(row) && !ignoreDirtyCondition) return result;\n\n if(rules.validation.required && !data && String(data) !== '0'){\n result = { valid: false, message: t('message_messrequired_rx') }\n } else if(\n ( fieldValue && (fieldValue < rules.min || fieldValue > rules.max) ) ||\n isNaN(fieldValue) ||\n // Note: Invalid if with sign (+/-)\n ( !rules.validation.requiredSign && isWithSign(fieldValue) )\n ) {\n result = { valid: false, message: t('message_mess_invalid_value_rx') }\n }\n\n return result;\n }\n\n const getValue = (row: string, column: string) => {\n let field = prescriptionValues[row];\n if(column)field = field[column];\n return field;\n }\n\n const changeSign = (row:string, sign:string) =>{\n let field = prescriptionValues[row];\n if( prescriptionValues[row].os !== undefined || prescriptionValues[row].od !== undefined){\n\n setPrescriptionValues({\n ...prescriptionValues,\n [row]: {\n od: sign+(field.od || '').substring(1),\n os: sign+((field.os || '').substring(1)),\n }\n });\n }\n }\n\n const modifier = () => {\n return parent || ''\n }\n\n\n // Note: Make sphere required if sphere od or os has a value\n const updatePrescriptionRules = () => {\n if(parent !== 'lens-consultation') return;\n const required = (prescriptionValues.sphere.od || prescriptionValues.sphere.os) ? true : false;\n prescriptionRules.current = {\n ...prescriptionRules.current,\n standard: {\n ...prescriptionRules.current.standard,\n sphere: {\n ...prescriptionRules.current.standard.sphere,\n validation: {\n required,\n requiredSign: true\n }\n }\n }\n }\n }\n\n\n const validateVariluxAdd = (row:string, column:string) => {\n const data = getValue(row, column)\n const osData = getValue('sphere', 'os')\n const odData = getValue('sphere', 'od')\n if(validate('sphere', 'os').message === t('message_messrequired_rx') && \n !validate('sphere', 'os').valid && !data){\n return validate('sphere', 'os')\n }else if(validate('sphere', 'od').message === t('message_messrequired_rx') && \n !validate('sphere', 'ood').valid && !data){\n return validate('sphere', 'od')\n }\n if( validate('sphere', 'os').valid &&\n validate('sphere', 'od').valid && \n osData &&\n odData &&\n !data){ \n return { valid: false, message: t('message_messrequired_rx')}\n }\n return validate(row, column)\n }\n\n return (\n
    \n\n {\n // !readOnly &&\n //
    \n // \n // {/* */}\n // {/* {\n // !isKids() &&\n // \n // } */}\n\n //
    \n }\n\n { prescriptionFormFields.map( (row, index:number) => {\n // Note: hide addition for kids\n if(row.name === 'addition' && isKids())return ;\n\n return
    \n
    \n \n
    \n {\n\n (row.name === 'sphere' || row.name === 'cylinder') && !readOnly &&\n
    \n
    changeSign(row.name, '-')}>-
    \n
    changeSign(row.name, '+')}>+
    \n
    \n }\n\n
    \n\n {\n parent != 'lens-consultation' &&\n \n }\n \n\n { row.fields.map((column: any, index: number) => (\n updatePrescription(row.name, v, column.position)}\n parent={parent}\n />\n )) }\n
    \n })}\n\n\n
    \n )\n}\n\nexport default PrescriptionForm;\n","import React from 'react';\nimport useBEM from '../../utils/hooks/useBEM';\n\ninterface Props {\n children: React.ReactNode\n}\n\nconst SideBoxBordered : React.FC = ({\n children\n}) => {\n // VARIABLES\n const [B] = useBEM('side-box-bordered');\n // HOOKS\n\n // METHODS\n \n\n return (\n
    \n {children}\n
    \n )\n}\n\nexport default SideBoxBordered;","import iLensThicknessSetting from \"../../interface/lens-thickness-setting\";\nimport iSubProduct from \"../../interface/sub-product.inteface\";\n\ntype hookType = {\n getRecommendedLensThickness: (sphere: {od: number, os: number}, rules: any) => number,\n getRecommendedSubProductByIndex : (subProducts: iSubProduct[], index: number) => iSubProduct | undefined,\n filterSubProductsWithEnabledIndex : (subProducts: iSubProduct[], lensThicknessSettings: iLensThicknessSetting[]) => iSubProduct[]\n}\n\n\nconst useLensThickness = (): hookType => {\n\n const getRecommendedLensThickness = (sphere: {od: number, os: number}, rules: any) => {\n let lensThickness = 0;\n rules.forEach( (rule: any) => {\n if(rule.range){\n const odRange = sphere.od < 0 ? rule.range.negative : rule.range.positive;\n const osRange = sphere.os < 0 ? rule.range.negative : rule.range.positive;\n const odCondition = sphere.od >= odRange.min && sphere.od <= odRange.max;\n const osCondition = sphere.os >= osRange.min && sphere.os <= osRange.max;\n\n if(odCondition || osCondition) {\n // Note: get the highest index\n lensThickness = rule.value > lensThickness ? rule.value : lensThickness;\n }\n }\n });\n return lensThickness;\n }\n\n const getRecommendedSubProductByIndex = (subProducts: iSubProduct[], index: number) => {\n let recommended = subProducts.filter( x => x.index === index);\n if(recommended.length === 0) {\n recommended = getTheClosestSubProductByIndex(subProducts, index);\n } \n return recommended[0]\n }\n\n const getTheClosestSubProductByIndex = (subProducts: iSubProduct[], index: number) => {\n const indexes = subProducts.map( x => x.index); \n const closest = indexes.reduce(function(prev, curr) {\n return (Math.abs(curr - index) < Math.abs(prev - index) ? curr : prev);\n }, 0);\n return subProducts.filter( x => x.index === closest);\n }\n\n const filterSubProductsWithEnabledIndex = (subProducts: iSubProduct[], lensThicknessSettings: iLensThicknessSetting[]) => {\n const allIndex = lensThicknessSettings\n .filter( x => x.enabled)\n .map( x => x.value);\n return subProducts.filter( x => allIndex.includes(x.index));\n }\n\n return {\n getRecommendedLensThickness,\n getRecommendedSubProductByIndex,\n filterSubProductsWithEnabledIndex\n }\n}\n\nexport default useLensThickness;","import React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useHistory } from 'react-router';\nimport Modal from '../../../components/Modal';\nimport Button from '../../../components/ui/Button';\nimport Icon from '../../../components/ui/Icon';\nimport SideBoxBordered from '../../../components/ui/SideBoxBordered';\nimport { LENS_THICKNESS_RULES } from '../../../constants/lens-thickness.constants';\nimport routes from '../../../constants/routes.constant';\nimport lensThicknessSlice from '../../../store/slices/lens-thickness.slice';\nimport lensConsultationSlice, { getLensConsultation } from '../../../store/slices/lens-consultation.slice';\nimport prescriptionSlice, { getPrescription } from '../../../store/slices/prescription.slice';\nimport { getProducts } from '../../../store/slices/products.slice';\nimport userSlice, { getUser } from '../../../store/slices/user.slice';\nimport LensCategoryType from '../../../types/lens-category.type';\nimport LensEnhanceType from '../../../types/lens-enhance.type';\nimport LensFamilyType from '../../../types/lens-family.type';\nimport LensProtectType from '../../../types/lens-protect.type';\nimport PrescriptionViewType from '../../../types/prescription-view.type';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport useLensConsultation from '../../lens-consultation/useLensConsultation';\nimport useLensThickness from '../../lens-thickness/useLensThickness';\nimport PrecisionType from './../../../types/precision.type';\nimport LensPairType from '../../../types/lens-pair.type';\nimport ComplementaryEquipmentType from '../../../types/complementary-equipment.type';\nimport AgeCategoryType from '../../../types/age-category.type';\n\nimport clearLens from '../../../assets/images/prescription/Clear_Lens.png';\nimport useGoogleAnalytics from '../../../utils/hooks/useGoogleAnalytics';\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport { getApp } from '../../../store/slices/app.slice';\nimport iProductFamily from '../../../interface/product-family.interface';\nimport iProductBrand from '../../../interface/product-brand.interface';\nimport iProduct from '../../../interface/product.inteface';\nimport useGoto from '../../../utils/hooks/useGoto';\n\ninterface Props {\n\n}\n\nconst PrescriptionSide : React.FC = () => {\n // VARIABLES\n const [B, E] = useBEM('prescription-side');\n const { temporaryProductList } = useSelector(getProducts);\n const { ageCategory } = useSelector(getUser);\n const appStore = useSelector(getApp);\n const { experience, accountDetails } = appStore;\n const country = accountDetails?.shop.country\n const { t } = useTranslation(appStore);\n\n const { \n view, \n isValidPrescription, \n tempPrescriptionData,\n tempGeneralEquipment,\n tempComplementaryEquipment,\n } = useSelector(getPrescription);\n const dispatch = useDispatch();\n const history = useHistory();\n const [showImportModal, setShowImportModal] = useState(false);\n const lensThicknessRules = LENS_THICKNESS_RULES;\n const { getRecommendedLensThickness } = useLensThickness();\n const { \n rxLensRecommendation,\n } = useLensConsultation();\n const ga = useGoogleAnalytics();\n const user = useSelector(getUser);\n const noRecommendation: any = {\n product: undefined,\n brand: undefined\n }\n\n const goto = useGoto();\n const { lensRecommendation } = useSelector(getLensConsultation);\n\n // Note: save recommended lens on user order data\n useEffect(() => {\n if(!lensRecommendation)return;\n\n dispatch(userSlice.actions.saveLensRecommendationData(lensRecommendation));\n }, [lensRecommendation])\n\n // METHODS\n const next = () => {\n if(view === 'lens-proposal') { \n dispatch(lensThicknessSlice.actions.clearLensThicknessCalculationData()); \n dispatch(userSlice.actions.savePrescriptionData(tempPrescriptionData)); \n \n const sphere: any = tempPrescriptionData.values.sphere;\n const thickness = getRecommendedLensThickness({\n od: sphere.od,\n os: sphere.os\n }, lensThicknessRules);\n\n saveRecommendLensThickness(thickness);\n if(isKids()) {\n recommendProductsForKids();\n } else {\n recommendProducts();\n }\n\n\n dispatch(userSlice.actions.saveLensEquipment({\n general: tempGeneralEquipment,\n complementary: tempComplementaryEquipment\n })); \n\n savePrescriptionOnGA();\n goto.route(routes.lensProposalBuilder, 500);\n return;\n }\n dispatch(lensConsultationSlice.actions.setShowDialogue(true))\n dispatch(lensConsultationSlice.actions.setShowWarning(true))\n dispatch(userSlice.actions.savePrescriptionData(tempPrescriptionData));\n dispatch(prescriptionSlice.actions.changeView(PrescriptionViewType.LENSPROPOSAL));\n }\n\n const savePrescriptionOnGA = () => {\n const correct = getGeneralEquipmentValue(LensFamilyType.CORRECT);\n const protect = getGeneralEquipmentValue(LensFamilyType.PROTECT) || '';\n const enhance = getGeneralEquipmentValue(LensFamilyType.ENHANCE) || '';\n const complementary = getComplementaryEquipmentValue() || '';\n\n const finalText = [\n ...( correct ? [correct] : [] ),\n ...( protect ? [protect] : [] ),\n ...( enhance ? [enhance] : [] ),\n ...( complementary ? [complementary] : [] )\n ].join(',');\n ga.event({\n category: `Prescription - ${tempPrescriptionData.precision}`,\n action: 'Button Click',\n label: `Complete Perscription - ${finalText}`,\n variable_id: 'prescription_completed'\n });\n }\n const getGeneralEquipmentValue = (family: LensFamilyType) => {\n return tempGeneralEquipment\n .filter( o => o.field === family)\n .map( o => o.value?.value)[0];\n }\n\n const getComplementaryEquipmentValue = () => {\n return tempComplementaryEquipment[0].value?.value as ComplementaryEquipmentType\n }\n\n const recommendProductsForKids = () => {\n const correctLensCategory = getGeneralEquipmentValue(LensFamilyType.CORRECT) as LensCategoryType;\n const protectLensCategory = getGeneralEquipmentValue(LensFamilyType.PROTECT) as LensProtectType;\n const enhanceLensCategory = getGeneralEquipmentValue(LensFamilyType.ENHANCE) as LensEnhanceType; \n\n const pair1Correct = rxLensRecommendation({\n products: temporaryProductList,\n ageCategory: AgeCategoryType.KIDS,\n family: LensFamilyType.CORRECT,\n pair: LensPairType.PAIR1,\n category: correctLensCategory\n });\n let pair1Protect:any = {...noRecommendation};\n\n if(pair1Correct.product?.id !== 'stellest'){\n pair1Protect = rxLensRecommendation({\n products: temporaryProductList,\n ageCategory: AgeCategoryType.KIDS,\n family: LensFamilyType.PROTECT,\n pair: LensPairType.PAIR1,\n category: protectLensCategory != LensProtectType.PHOTOCROMIC ? correctLensCategory : LensProtectType.PHOTOCROMIC\n });\n }\n\n let pair1Enhance:any = {...noRecommendation};\n\n if(enhanceLensCategory){\n pair1Enhance = rxLensRecommendation({\n products: temporaryProductList,\n ageCategory: AgeCategoryType.KIDS,\n family: LensFamilyType.ENHANCE,\n pair: LensPairType.PAIR1,\n category: correctLensCategory\n });\n }\n\n saveRecommendedProducts({\n correct: pair1Correct,\n protect: pair1Protect,\n enhance: pair1Enhance\n }, LensPairType.PAIR1)\n\n // PAIR 2\n const selectedEquipment = getComplementaryEquipmentValue();\n \n const pair2Correct = rxLensRecommendation({\n products: temporaryProductList,\n ageCategory: AgeCategoryType.KIDS,\n family: LensFamilyType.CORRECT,\n pair: LensPairType.PAIR2\n });\n\n const pair2Protect = rxLensRecommendation({\n products: temporaryProductList,\n ageCategory: AgeCategoryType.KIDS,\n family: LensFamilyType.PROTECT,\n pair: LensPairType.PAIR2,\n equipment: selectedEquipment\n });\n\n const pair2Enhance = rxLensRecommendation({\n products: temporaryProductList,\n ageCategory: AgeCategoryType.KIDS,\n family: LensFamilyType.ENHANCE,\n pair: LensPairType.PAIR2,\n equipment: selectedEquipment\n });\n\n saveRecommendedProducts({\n correct: pair2Correct,\n protect: selectedEquipment ? pair2Protect : noRecommendation,\n enhance: selectedEquipment ? pair2Enhance : noRecommendation\n }, LensPairType.PAIR2)\n }\n\n const recommendProducts = () => {\n const selectedCorrect = getGeneralEquipmentValue(LensFamilyType.CORRECT) as LensCategoryType;\n const selectedProtect = getGeneralEquipmentValue(LensFamilyType.PROTECT) as LensProtectType;\n let selectedEnhance = getGeneralEquipmentValue(LensFamilyType.ENHANCE) as LensEnhanceType;\n if(!selectedEnhance && selectedProtect === LensProtectType.TINTED){\n selectedEnhance = LensEnhanceType.TINTED\n }\n const ageCategory = AgeCategoryType.ADULT;\n \n // PAIR 1 RECOMMENDATION\n const pair1Correct = rxLensRecommendation({\n products: temporaryProductList,\n ageCategory,\n family: LensFamilyType.CORRECT,\n pair: LensPairType.PAIR1,\n category: selectedCorrect,\n country:country,\n });\n\n const pair1Protect = rxLensRecommendation({\n products: temporaryProductList,\n ageCategory,\n family: LensFamilyType.PROTECT,\n pair: LensPairType.PAIR1,\n category: selectedProtect\n });\n\n const pair1Enhance = rxLensRecommendation({\n products: temporaryProductList,\n ageCategory,\n family: LensFamilyType.ENHANCE,\n pair: LensPairType.PAIR1,\n category: selectedEnhance\n });\n\n saveRecommendedProducts({\n correct: pair1Correct,\n protect: pair1Protect,\n enhance: pair1Enhance\n }, LensPairType.PAIR1)\n\n // PAIR 2 RECOMMENDATION\n const selectedEquipment = getComplementaryEquipmentValue();\n\n let pair2Correct = pair1Correct;\n if(\n ![ComplementaryEquipmentType.SUN, ComplementaryEquipmentType.DRIVING ].includes(selectedEquipment)\n ){\n pair2Correct = rxLensRecommendation({\n products: temporaryProductList,\n ageCategory,\n family: LensFamilyType.CORRECT,\n pair: LensPairType.PAIR2,\n category: selectedCorrect,\n equipment: selectedEquipment,\n country:country,\n });\n }\n const pair2Protect = rxLensRecommendation({\n products: temporaryProductList,\n ageCategory,\n family: LensFamilyType.PROTECT,\n pair: LensPairType.PAIR2,\n equipment: selectedEquipment\n });\n\n let pair2Enhance = rxLensRecommendation({\n products: temporaryProductList,\n ageCategory,\n family: LensFamilyType.ENHANCE,\n pair: LensPairType.PAIR2,\n equipment: selectedEquipment\n });\n\n if(!pair2Enhance.product) {\n pair2Enhance = rxLensRecommendation({\n products: temporaryProductList,\n ageCategory,\n family: LensFamilyType.ENHANCE,\n pair: LensPairType.PAIR2,\n equipment: selectedEquipment,\n index: 1\n }); \n }\n\n saveRecommendedProducts({\n correct: selectedEquipment ? pair2Correct : noRecommendation ,\n protect: selectedEquipment ? pair2Protect : noRecommendation,\n enhance: selectedEquipment ? pair2Enhance : noRecommendation\n }, LensPairType.PAIR2)\n }\n\n const saveRecommendedProducts = (products: {\n correct: any, \n protect: any, \n enhance: any\n }, pair: LensPairType) => {\n const {correct, protect, enhance} = products;\n\n dispatch(lensConsultationSlice.actions.selectProduct({\n lensFamily: LensFamilyType.CORRECT,\n product: correct.product,\n subProduct: correct.subProduct,\n pair\n }));\n\n dispatch(lensConsultationSlice.actions.selectProduct({\n lensFamily: LensFamilyType.PROTECT,\n product: protect.product,\n brand: protect.brand,\n manual: false,\n pair\n }));\n\n dispatch(lensConsultationSlice.actions.selectProduct({\n lensFamily: LensFamilyType.ENHANCE,\n brand: enhance.brand,\n product: enhance.product,\n pair\n }));\n }\n\n const clearRecommendedPair2 = () => {\n dispatch(lensConsultationSlice.actions.selectProduct({\n lensFamily: LensFamilyType.CORRECT,\n product: undefined,\n pair: LensPairType.PAIR2\n }));\n dispatch(lensConsultationSlice.actions.selectProduct({\n lensFamily: LensFamilyType.ENHANCE,\n product: undefined,\n pair: LensPairType.PAIR2\n }));\n dispatch(lensConsultationSlice.actions.selectProduct({\n lensFamily: LensFamilyType.PROTECT,\n product: undefined,\n pair: LensPairType.PAIR2\n }));\n }\n\n const saveRecommendLensThickness = (thickness: any) => {\n dispatch(lensThicknessSlice.actions.setLensThickness({\n pair1: thickness,\n pair2: thickness\n }));\n dispatch(userSlice.actions.saveLensThickness({\n pair1: thickness,\n pair2: thickness\n }));\n }\n\n const renderNextButtonLabel = () => {\n return (view === 'prescription') ? t('prescription_rx_next') : t('prescription_rx_save_&_next');\n }\n\n const renderSideImage = () => {\n if (view === 'lens-proposal') {\n return <>\n \"\"\n {/* */}\n ;\n }\n // return `eye-reader-${tempPrescriptionData?.precision}`;\n return
    \n \n \n
    \n }\n\n const onSelect = (id: string) => {\n // alert(id);\n }\n const isKids = () => {\n return ageCategory && ageCategory.value === AgeCategoryType.KIDS;\n }\n\n const getLabelText = () => {\n if(view === 'prescription')return t('prescription_rx_prescription');\n else if(view === 'lens-proposal') return t('lens_thickness_lt_completed');\n return '';\n }\n\n const getLabelIcon = () => {\n const { prescription } = user;\n if(view === 'prescription') return ;\n else if(view === 'lens-proposal') return ;\n return '';\n }\n\n return (\n \n
    \n \n
    \n \n {isKids() &&(\n
    \n \n\n {renderSideImage()}\n\n
    \n {/*
    \n\n setShowImportModal(false)}>\n
    \n

    Import

    \n \n
    \n
    \n\n
    \n
    \n
    \n
    \n )\n}\n\nexport default PrescriptionSide;","import React, { useEffect } from 'react';\nimport useBEM from '../../utils/hooks/useBEM';\nimport PrescriptionLensProposal from './components/PrescriptionLensProposal';\nimport PrescriptionForm from './components/PrescriptionForm';\nimport PrescriptionSide from './components/PrescriptionSide';\nimport { useDispatch, useSelector } from 'react-redux';\nimport prescriptionSlice, { getPrescription } from '../../store/slices/prescription.slice';\nimport PrescriptionViewType from '../../types/prescription-view.type';\n\ninterface Props {\n\n}\n\nconst Prescription : React.FC = () => {\n // VARIABLES\n const [B, E] = useBEM('prescription');\n const { view } = useSelector(getPrescription);\n const dispatch = useDispatch();\n\n // HOOKS\n useEffect(() => {\n return () => {\n dispatch(prescriptionSlice.actions.changeView(PrescriptionViewType.PRESCRIPTION))\n dispatch(prescriptionSlice.actions.resetData());\n }\n },[])\n\n // METHODS\n\n return (\n
    \n \n \n \n
    \n\n { view === 'prescription' && } \n { view === 'lens-proposal' && } \n \n
    \n
    \n )\n}\n\nexport default Prescription;","import iMeasureStep from \"../interface/measure-step.interface\";\n\nconst measuresSteps: iMeasureStep[] = [\n {\n navigationTitle: 'measures_mes_title_left',\n backgroundImage: 'measure-step-1',\n label: 'measures_mes_measure_subtitle_right',\n description: 'measures_mes_body_right',\n },\n {\n navigationTitle: 'measures_mes_2_title_left',\n backgroundImage: 'measure-step-2',\n label: 'measures_mes_2_subtitle_right',\n description: \"measures_mes_2_body_right\",\n },\n {\n navigationTitle: 'measures_mes__3_title_left',\n backgroundImage: 'measure-step-3',\n label: 'measures_mes__3subtitle_right',\n description: \"measures_mes__3_body_right\",\n }\n]\n\nexport default measuresSteps;","import axios, { AxiosResponse } from 'axios'\nimport ENDPOINTS from '../../constants/endpoints'\n\nexport const getFrametraceList = async (\n countryCode: string, shopId:string\n) => {\n const endpoint = ENDPOINTS.frametraces(countryCode,shopId)\n\n return axios.get(endpoint).then((res: AxiosResponse) => res.data)\n}\n\nexport const getFrametrace = async (\n id: string\n) => {\n const endpoint = ENDPOINTS.frametrace(id)\n\n return axios.get(endpoint).then((res: AxiosResponse) => res.data)\n}\n\nexport const deleteFrametrace = async (\n id: string\n) => {\n const endpoint = ENDPOINTS.frametrace(id)\n\n return axios.delete(endpoint).then((res: AxiosResponse) => res.data)\n}\n","import React, { useState, useEffect } from 'react'\nimport useBEM from '../../../utils/hooks/useBEM'\nimport Modal from '../../../components/Modal'\nimport useTranslation from '../../../utils/hooks/useTranslation'\nimport { useDispatch, useSelector } from 'react-redux'\nimport measureSlice, { getMeasure } from '../../../store/slices/measure.slice'\nimport { getApp } from '../../../store/slices/app.slice'\nimport refresh from '../../../assets/svg/refresh.svg'\nimport { deleteFrametrace, getFrametraceList } from '../../../utils/api/frametrace'\nimport Spinner from '../../../components/ui/Spinner'\nimport Frametrace from '../../../interface/frametrace.interface'\nimport Button from '../../../components/ui/Button'\nimport userSlice from '../../../store/slices/user.slice'\n\ninterface Props {\n showModal?: boolean,\n onHideModal?: () => void,\n displayModal: () => void\n}\n\nconst FrametraceListModal : React.FC = ({\n showModal,\n onHideModal,\n displayModal\n}) => {\n const [B, E] = useBEM('patient-list-modal')\n const [frametraces, setFrametraces] = useState([])\n const { t } = useTranslation(useSelector(getApp))\n const [isLoading, setIsLoading] = useState(false)\n const modalStyle = {\n width: \"70.5rem\",\n height: \"52.1rem\",\n borderRadius: \"2rem\"\n }\n const appStore = useSelector(getApp);\n const { accountDetails } = appStore\n const dispatch = useDispatch();\n\n useEffect(() => {\n loadFrametraces()\n }, [])\n\n const loadFrametraces = async () => {\n setIsLoading(true)\n\n try {\n if (accountDetails && accountDetails?.shop?.country && accountDetails?.shop?.shop_account_no) {\n const shopId = accountDetails?.shop?.shop_account_no\n const countryCode = accountDetails?.shop?.country\n const response = await getFrametraceList(countryCode,shopId)\n\n if (!response.data) {\n throw new Error('Invalid data')\n }\n\n setFrametraces(response.data)\n setIsLoading(false)\n }\n\n } catch(err) {\n setIsLoading(false)\n }\n }\n\n const deleteSelectedFrametrace = async (frametrace: Frametrace) => {\n try {\n const response = await deleteFrametrace(frametrace._id)\n if (response.status === 200) displayModal()\n } catch(err) {\n displayModal()\n }\n }\n\n const buildMeasureData = (ft: Frametrace) => {\n if (ft) {\n const measureData = {\n one: [{\n price: { value: 0 },\n a: {\n value: ft.HBOX,\n error: false,\n },\n b: {\n value: ft.VBOX,\n error: false,\n },\n d: {\n value: ft.DBL,\n error: false,\n }\n }],\n two: [{\n left: {\n height: {\n value: ft.OCHT.left,\n error: false,\n },\n pd: {\n value: ft.IPD.left,\n error: false\n }\n },\n right: {\n height: {\n value: ft.OCHT.right,\n error: false\n },\n pd: {\n value: ft.IPD.right,\n error: false\n }\n }\n }],\n three: [{\n pantoscopicAngle: {\n value: ft.PANTO,\n error: false,\n },\n wrapAngle: {\n value: ft.ZTILT,\n error: false,\n },\n vertexDistance: {\n value:ft.BVD,\n ivsValue: {\n left:ft.BVDV2.left,\n right:ft.BVDV2.right\n },\n error: false,\n },\n readingDistance: {\n value: 0,\n error: false,\n },\n }]\n }\n\n return measureData\n }\n }\n\n const onSelectFrametrace = (id: string) => {\n const frametrace = frametraces.find(({ _id }) => _id === id)\n const measureData = frametrace ? buildMeasureData(frametrace) : ''\n\n if (measureData !== '') {\n dispatch(measureSlice.actions.saveFrametraceMeasure(measureData))\n dispatch(userSlice.actions.saveFrametraceMeasure(measureData))\n dispatch(measureSlice.actions.generateIvs(true))\n\n if (frametrace) deleteSelectedFrametrace(frametrace)\n }\n }\n\n\n\n return (<>\n \n
    \n\n
    \n \n {frametraces.length} {t('waiting_list_wl_results')}\n \n\n loadFrametraces()}\n />\n
    \n\n {\n isLoading &&
    \n \n
    \n }\n\n
    \n {\n frametraces.map((ft: Frametrace, i: number) => (\n
    \n
    \n {new Date(ft.created_at).toLocaleTimeString()}\n
    \n
    \n {new Date(ft.created_at).toLocaleDateString()}\n
    \n
    \n {ft.FNCLIENT + \" \" + ft.LNCLIENT}\n
    \n
    \n onSelectFrametrace(ft._id)}\n text={t('waiting_list_wl_select')}\n />\n
    \n
    \n ))\n }\n
    \n {!navigator.onLine && \n
    \n

    You are in offline mode. Please connect to the internet to donwload data in IVS.

    \n }\n
    \n
    \n )\n}\n\nexport default FrametraceListModal\n","import { useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport Button from '../../../components/ui/Button';\nimport { KIDS_THEMES } from '../../../constants/theme.constants';\nimport { getApp } from '../../../store/slices/app.slice';\nimport { getMeasure } from '../../../store/slices/measure.slice';\nimport { getUser } from '../../../store/slices/user.slice';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport Utils from '../../../utils/Utils';\nimport FrametraceListModal from './FrametraceListModal';\n\ninterface Props {\n label: string,\n description: string,\n step: number,\n children: React.ReactNode,\n onImport: () => void\n}\n\nconst MeasureModal : React.FC = ({\n label,\n description,\n step = 1,\n children,\n onImport\n}) => {\n // VARIABLES\n const [B, E] = useBEM('measure-modal');\n const { activeDataIndex } = useSelector(getMeasure);\n const { ageCategory } = useSelector(getUser);\n const { generateRandomNumbers, getThemeVariables } = Utils();\n const { theme } = useSelector(getApp);\n const themes = KIDS_THEMES;\n const { t } = useTranslation(useSelector(getApp));\n const pairTranslationKeys = ['measures_mes__3_pair_1_new', 'delivery_del_3_pair_2']\n const [showFrametradeModal, setShowFrametraceModal] = useState(false)\n\n // HOOKS\n\n // METHODS\n const displayModal = () => {\n setShowFrametraceModal(false)\n }\n const getAge = () => {\n const age = ageCategory?.value;\n return age ? age : ''\n }\n\n const themeStyle = () => {\n if(!theme || theme.id !== 'multi')return {};\n const randomNumbers = generateRandomNumbers(themes.length - 1);\n const randomTheme = themes[randomNumbers[0]];\n return getThemeVariables(randomTheme)\n }\n\n const closeFrametraceModal = () => {\n setShowFrametraceModal(false)\n }\n\n return (\n\n
    \n
    \n \n {t(pairTranslationKeys[activeDataIndex])}\n \n\n
    \n \n {/* {\"Data can only generate from Eyeruler2. For other IVS Device such as Visioffice X & Visioffice 3 will be coming soon.\"} */}\n \n\n { activeDataIndex === 0 &&\n setShowFrametraceModal(true)}\n />\n }\n
    \n\n
    \n\n \n\n

    \n {description}\n

    \n\n {\n showFrametradeModal && closeFrametraceModal()}\n displayModal={() => displayModal()}\n />\n }\n\n\n {children}\n
    \n\n )\n}\n\nexport default MeasureModal;\n","import React from 'react';\nimport iMeasureStep from '../../../interface/measure-step.interface';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport { useSelector } from 'react-redux';\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport { getApp } from '../../../store/slices/app.slice';\n\ninterface Props {\n step: number,\n steps: iMeasureStep[],\n onChange: (step: number) => void,\n}\n\nconst MeasureStepNavigation : React.FC = ({\n step,\n steps,\n onChange\n}) => {\n // VARIABLES\n const [B, E] = useBEM('measure-step-navigation');\n const { t } = useTranslation(useSelector(getApp));\n const measuresTranslationKeys = ['pair_1_tab_del_p1__measure_1', 'pair_1_tab_del_p1_measure_2', 'pair_1_tab_del_p1_measure_3'] \n // HOOKS\n\n // METHODS\n const activeStepClass = (s: number) => {\n return s === step ? 'active' : ''\n }\n\n return (\n
    \n {\n steps.map( (s, index ) => (\n
    onChange( index)}>\n \n \n

    \n {t(s.navigationTitle)}\n

    \n\n
    \n ))\n }\n
    \n )\n}\n\nexport default MeasureStepNavigation;","const measuresValidations = [\n {\n key: 'a',\n min: 10,\n max: 100\n },\n {\n key: 'b',\n min: 10,\n max: 100\n },\n {\n key: 'd',\n min: 5,\n max: 75\n },\n {\n key: 'pd',\n min: 15,\n max: 45\n },\n {\n key: 'height',\n min: 10,\n max: 40\n },\n {\n key: 'pantoscopicAngle',\n min: 0,\n max: 25\n },\n {\n key: 'wrapAngle',\n min: 0,\n max: 25\n },\n {\n key: 'vertexDistance',\n min: 1,\n max: 20\n },\n {\n key: 'readingDistance',\n min: 20,\n max: 50,\n allowZero:true\n }\n]\n\nexport default measuresValidations;","import measuresValidations from \"../constants/measures-validation.constants\"\n\nexport const validateMeasures = (\n number: number,\n value: any, \n key: string,\n) => {\n const validations = measuresValidations.filter((i:any) => { return i.key === key } )\n const validation = validations[0]\n\n if(validation){\n if(\n (value >= validation.min && value <= validation.max && value !== '') || \n (value === '0' && validation.allowZero)\n ){\n \n return {\n isError: false,\n // errorMsg: `Value should be ${validation.min} - ${validation.max}`\n errorMsg: `message_-_measures_${number}_mess_value_should_be_${validation.min}_-_${validation.max}`\n }\n }else{\n return {\n isError: true,\n // errorMsg: `Value should be ${validation.min} - ${validation.max}`\n errorMsg: `message_-_measures_${number}_mess_value_should_be_${validation.min}_-_${validation.max}`\n }\n }\n }\n}","import React, { useEffect, useState } from 'react';\nimport Button from '../../../components/ui/Button';\nimport InputText from '../../../components/ui/InputText';\nimport iMeasurementDataOne from '../../../interface/measurement-one-data.inteface';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport { validateMeasures } from '../../../utils/MeasuresValidation';\nimport { useSelector } from 'react-redux';\nimport { getLensConsultation } from '../../../store/slices/lens-consultation.slice';\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport { getApp } from '../../../store/slices/app.slice';\nimport CircleArrow from '../../../components/ui/CircleArrow';\nimport { getMeasure } from '../../../store/slices/measure.slice';\nimport useDisableCountry from '../../../utils/hooks/useDisableCountry';\n\ninterface Props {\n onSave: (data: iMeasurementDataOne) => void,\n data?: iMeasurementDataOne,\n isKids: boolean\n // experience: ExperienceType\n}\n\nconst MeasureStepOne : React.FC = ({\n onSave,\n data,\n isKids,\n // experience\n}) => {\n // VARIABLES\n const defaultData = {\n price: {\n value: 0,\n error: false,\n errorMsg: ''\n },\n a:{\n value: 0,\n error: false,\n errorMsg: ''\n },\n b:{\n value: 0,\n error: false,\n errorMsg: ''\n },\n d:{\n value: 0,\n error: false,\n errorMsg: ''\n },\n }\n const [B, E] = useBEM('measures-step');\n const { t } = useTranslation(useSelector(getApp));\n const [localData, setLocalData] = useState(defaultData)\n const { breakdown } = useSelector(getLensConsultation);\n const {activeDataIndex, isIvsGenerated} = useSelector(getMeasure)\n const { accountDetails }= useSelector(getApp);\n const country = accountDetails?.shop.country;\n // const hide = country && ['in', 'in2', 'gr'].includes(country)\n const [ hidePrice ] = useDisableCountry(['gr'])\n\n // HOOKS\n useEffect(() => {\n setLocalData(data || defaultData)\n }, [data])\n\n // METHODS\n const onSaveHandler = () => {\n onSave(localData);\n }\n\n const inputChangeHandler = (e: any, key: string) => {\n let value = e.target.value\n const result = validateMeasures(1,value, key)\n const floatRegExp = new RegExp('^[+-]?([0-9]+([.][0-9]*)?|[.][0-9]+)$')\n if(value === '' || floatRegExp.test(value)){\n setLocalData((prev: any) => {\n return {\n ...prev,\n [key]: {\n value: value ? Number(value) : 0,\n error: result?.isError,\n errorMsg: result?.errorMsg\n }\n }\n })\n }\n\n }\n\n const validateCurrentState = () => {\n return localData.price.error === true ||\n localData.a.error === true ||\n localData.b.error === true ||\n localData.d.error === true ||\n localData.a.value === 0 ||\n localData.b.value === 0 ||\n localData.d.value === 0\n }\n\n const getNextButtonIcon = () => {\n if(isKids)return \"right-arrow-circle\";\n return \n }\n\n return (\n
    \n\n
    \n\n {\n !hidePrice && (\n <>\n \n\n
    \n inputChangeHandler(v, 'price')}\n \n />\n {localData?.price.error && {t(localData?.price.errorMsg)}}\n
    \n \n )\n }\n\n \n\n
    \n inputChangeHandler(v, 'a')}/>\n {localData?.a.error && {t(localData?.a.errorMsg)}}\n
    \n\n
    \n inputChangeHandler(v, 'b')}/>\n {localData?.b.error && {t(localData?.b.errorMsg)}}\n
    \n\n \n\n
    \n inputChangeHandler(v, 'd')}/>\n {localData?.d.error && {t(localData?.d.errorMsg)}}\n
    \n
    \n\n \n\n
    \n )\n}\n\nexport default MeasureStepOne;\n","import React, { useEffect, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport Button from '../../../components/ui/Button';\nimport CircleArrow from '../../../components/ui/CircleArrow';\nimport InputText from '../../../components/ui/InputText';\nimport iMeasurementDataThree from '../../../interface/measurement-three-data.inteface';\nimport { getApp } from '../../../store/slices/app.slice';\nimport { getMeasure } from '../../../store/slices/measure.slice';\nimport ExperienceType from '../../../types/experience.type';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport { validateMeasures } from '../../../utils/MeasuresValidation';\nimport useGoogleAnalytics from '../../../utils/hooks/useGoogleAnalytics';\nimport Utils from '../../../utils/Utils';\nimport { getNeedExplorer } from '../../../store/slices/need-explorer.slice';\n\ninterface Props {\n onSave: (data: iMeasurementDataThree) => void,\n data?: iMeasurementDataThree,\n isKids: boolean\n}\n\nconst MeasureStepThree : React.FC = ({\n onSave,\n data,\n isKids\n}) => {\n const {activeDataIndex, isIvsGenerated} = useSelector(getMeasure)\n // VARIABLES\n \n const defaultData = {\n pantoscopicAngle: {\n value: 0,\n error: false,\n errorMsg: ''\n },\n wrapAngle: {\n value: 0,\n error: false,\n errorMsg: ''\n },\n vertexDistance: {\n value:0,\n ivsValue: {\n left:0,\n right:0\n },\n error: false,\n errorMsg: ''\n },\n readingDistance: {\n value: 0,\n error: false,\n errorMsg: ''\n }\n }\n\n\n const [B, E] = useBEM('measures-step');\n const [localData, setLocalData] = useState(defaultData)\n const { t } = useTranslation(useSelector(getApp));\n // HOOKS\n const [left, setLeft] = useState(0)\n const [right, setRight] = useState(0)\n const ga = useGoogleAnalytics()\n const { getDateTimeDifference } = Utils();\n const currentNeedExplorerData = useSelector(getNeedExplorer);\n\n useEffect(() => {\n setLocalData(data || defaultData)\n }, [data])\n\n useEffect(()=>{\n if(activeDataIndex === 0 && isIvsGenerated){\n setLeft(localData.vertexDistance.ivsValue.left)\n setRight(localData.vertexDistance.ivsValue.right)\n }\n\n })\n // METHODS\n const validateCurrentState = () => {\n return localData.pantoscopicAngle.error === true ||\n localData.wrapAngle.error === true ||\n localData.vertexDistance.error === true ||\n localData.readingDistance.error === true\n }\n\n const onSaveHandler = () => {\n onSave(localData);\n\n ga.event({\n category: 'Measurement',\n action: 'Measurement - Save & Next',\n variable_id: 'measurement_completed',\n });\n\n }\n \n const inputChangeHandler = (e: any, key: string, handedness:string) => {\n const value = e.target.value\n const result = validateMeasures(3, value, key);\n const floatRegExp = new RegExp('^[+-]?([0-9]+([.][0-9]*)?|[.][0-9]+)$')\n if(value === '' || floatRegExp.test(value)){\n setLocalData((prev: any) => {\n if(key === \"vertexDistance\" && handedness === 'left'){\n return {...prev,\n [key]:{\n value:0,\n ivsValue:{\n right:right,\n left: value && handedness === 'left'? Number(value): 0\n },\n error: result?.isError,\n errorMsg: result?.errorMsg\n }}\n }\n if(key === \"vertexDistance\" && handedness === 'right'){\n return {...prev,\n [key]:{\n value:0,\n ivsValue:{\n left:left,\n right: value && handedness === 'right'? Number(value): 0\n },\n error: result?.isError,\n errorMsg: result?.errorMsg\n }}\n }\n\n return {\n ...prev,\n [key]: {\n value: value ? Number(value) : 0,\n error: result?.isError,\n errorMsg: result?.errorMsg\n }\n }\n })\n }\n\n }\n\n const getNextButtonIcon = () => {\n if(isKids)return \"right-arrow-circle\";\n return \n }\n\n return (\n
    \n
    \n\n \n\n
    \n inputChangeHandler(v, 'pantoscopicAngle','')}/>\n {localData?.pantoscopicAngle.error && {t(localData?.pantoscopicAngle.errorMsg)}}\n
    \n\n \n\n
    \n inputChangeHandler(v, 'wrapAngle','')}/>\n {localData?.wrapAngle.error && {t(localData?.wrapAngle.errorMsg)}}\n
    \n\n \n\n
    \n\n { activeDataIndex === 0 && isIvsGenerated ?\n
    \n
    Left:
    \n inputChangeHandler(v, 'vertexDistance','left')}/>\n
    Right:
    \n inputChangeHandler(v, 'vertexDistance','right')}/>\n
    \n :\n
    \n inputChangeHandler(v, 'vertexDistance','')}/> \n
    \n }\n {localData?.vertexDistance.error && {t(localData?.vertexDistance.errorMsg)}}\n
    \n\n \n\n
    \n inputChangeHandler(v, 'readingDistance','')}/>\n {localData?.readingDistance.error && {t(localData?.readingDistance.errorMsg)}}\n
    \n\n
    \n\n \n
    \n )\n}\n\nexport default MeasureStepThree;\n","import React, { useEffect, useState } from 'react';\nimport Button from '../../../components/ui/Button';\nimport InputText from '../../../components/ui/InputText';\nimport iMeasurementDataTwo from '../../../interface/measurement-two-data.inteface';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport { validateMeasures } from '../../../utils/MeasuresValidation';\nimport { useSelector } from 'react-redux';\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport { getApp } from '../../../store/slices/app.slice';\nimport CircleArrow from '../../../components/ui/CircleArrow';\nimport ExperienceType from '../../../types/experience.type';\ninterface Props {\n onSave: (data: iMeasurementDataTwo) => void,\n data?: iMeasurementDataTwo,\n isKids: boolean,\n // experience: ExperienceType\n}\n\nconst MeasureStepTwo : React.FC = ({\n onSave,\n data,\n isKids,\n // experience\n}) => {\n // VARIABLES\n const defaultData = {\n left: {\n height: {\n value: 0,\n error: false,\n errorMsg: ''\n },\n pd: {\n value: 0,\n error: false,\n errorMsg: ''\n }\n },\n right: {\n height: {\n value: 0,\n error: false,\n errorMsg: ''\n },\n pd: {\n value: 0,\n error: false,\n errorMsg: ''\n }\n }\n }\n const [B, E] = useBEM('measures-step');\n const { t } = useTranslation(useSelector(getApp));\n const [localData, setLocalData] = useState(defaultData)\n\n // HOOKS\n useEffect(() => {\n setLocalData(data || defaultData)\n }, [data])\n\n // METHODS\n const onSaveHandler = () => {\n onSave(localData);\n }\n\n const inputChangeHandler = (e: any, position: 'left' | 'right', key: 'pd' | 'height') => {\n const value = e.target.value\n const result = validateMeasures(2, value, key)\n const floatRegExp = new RegExp('^[+-]?([0-9]+([.][0-9]*)?|[.][0-9]+)$')\n if(value === '' || floatRegExp.test(value)){\n setLocalData((prev: any) => {\n return {\n ...prev,\n [position]: {\n ...prev[position],\n [key]: {\n value: value ? Number(value) : 0,\n error: result?.isError,\n errorMsg: result?.errorMsg\n }\n }\n }\n })\n }\n\n\n }\n\n const validateCurrentState = () => {\n return localData.left.pd.error === true ||\n localData.right.pd.error === true ||\n localData.left.height.error === true ||\n localData.right.height.error === true ||\n localData.left.pd.value === 0 ||\n localData.right.pd.value === 0 ||\n localData.left.height.value === 0 ||\n localData.right.height.value === 0\n }\n\n const getNextButtonIcon = () => {\n if(isKids)return \"right-arrow-circle\";\n return \n }\n\n return (\n
    \n\n
    \n \n \n\n \n \n\n
    \n inputChangeHandler(v, 'left', 'pd')}/>\n {localData?.left.pd.error && {t(localData?.left.pd.errorMsg)}}\n
    \n\n
    \n inputChangeHandler(v, 'right', 'pd')}/>\n {localData?.right.pd.error && {t(localData?.right.pd.errorMsg)}}\n
    \n\n \n \n\n
    \n inputChangeHandler(v, 'left', 'height')}/>\n {localData?.left.height.error && {t(localData?.left.height.errorMsg)}}\n
    \n\n
    \n inputChangeHandler(v, 'right', 'height')}/>\n {localData?.right.height.error && {t(localData?.right.height.errorMsg)}}\n
    \n\n
    \n\n \n\n
    \n )\n}\n\nexport default MeasureStepTwo;\n","import { useSelector } from \"react-redux\";\nimport pricingBreakdown from \"../../constants/pricing-breakdown\";\nimport iLensRecommendationPair from \"../../interface/lens-recommendaiton-pair.interface\";\nimport iPriceBreakdown from \"../../interface/price-breakdown.interface\";\nimport iProductDetails from \"../../interface/product-details.interface\";\nimport iProductCombi from \"../../store/interface/product-combi.interface\";\nimport { getApp } from \"../../store/slices/app.slice\";\nimport { getLensConsultation } from \"../../store/slices/lens-consultation.slice\";\nimport { getMyCompanion } from \"../../store/slices/mycompanion.slice\";\nimport { getProducts } from \"../../store/slices/products.slice\";\nimport { getUser } from \"../../store/slices/user.slice\";\nimport LensCategoryType from \"../../types/lens-category.type\";\nimport { fetchProductDetailsViaId, fetchSubProductDetailsViaSubProductId } from \"../misc\";\nimport useTranslation from \"./useTranslation\";\n\ntype hookType = {\n getBreakdown: () => iPriceBreakdown,\n getDetails: (lrpair: iLensRecommendationPair) => iProductDetails,\n getDiscount: (isPair1: boolean, total: number) => number,\n getCurrency: () => string,\n getPackageOfferPrice: (\n correct_id: string | undefined,\n correct_code: string | undefined,\n correct_index: number | undefined,\n protect_id: string | undefined,\n protect2_id: string | undefined,\n enhance_id: string | undefined\n ) => number\n}\n\nconst usePricing = (): hookType => {\n const app = useSelector(getApp)\n const lensRecom = useSelector(getLensConsultation)\n const { myCompannion } = useSelector(getApp)\n const { measures } = useSelector(getUser)\n const { temporaryProductList } = useSelector(getProducts);\n const { productCombi } = app; \n const { t } = useTranslation(app);\n const { breakdown } = useSelector(getLensConsultation)\n\n const defaultVal:iPriceBreakdown = breakdown\n const orig:iPriceBreakdown = pricingBreakdown\n\n const get = (lensDesign: string | undefined) => {\n switch(lensDesign){\n case LensCategoryType.PROGRESSIVE: return t('delivery_design_lens1')\n case LensCategoryType.SINGLE_VISION: return t('delivery_design_lens2')\n case LensCategoryType.PROGRESSIVE_SV_LENS: return t('delivery_design_lens3')\n case 'both': return t('delivery_design_lens3')\n default: return ''\n }\n }\n\n const pair = (isPair1: boolean) => {\n const { lensRecommendation } = lensRecom\n const lrpair = isPair1 ? lensRecommendation?.pair1 : lensRecommendation?.pair2\n const { tempDiscountSettings } = myCompannion\n const p1Percentage = tempDiscountSettings[1].discountPercentage\n const p2Percentage = tempDiscountSettings[2].discountPercentage\n const disc = isPair1 ? p1Percentage : p2Percentage\n\n if(lrpair){\n const index = getDetails(lrpair).index\n const discount = getDiscount(isPair1, getPrice(lrpair) + getLensThickness(index))\n const hasNocombi = myCompannion.essilorRecommend && getPrice(lrpair) === 0 ? true : false\n const enabled = lrpair && lrpair.correct === null ? false : true\n\n return {\n enabled: enabled,\n categoryLens: get(getDetails(lrpair).lensDesign),\n\n summaryPrice: getPrice(lrpair) + getLensThickness(index) - discount,\n deliveryPrice: getPrice(lrpair) + getLensThickness(index) + getMeasureData(isPair1) - discount,\n\n price: getPrice(lrpair),\n discount: discount,\n discountPercentage: disc,\n lensThickness: getLensThickness(index),\n measures: getMeasureData(isPair1),\n \n correctPrice: getManualSubProductPrice(getDetails(lrpair).correct),\n protectPrice: getManualPrice(getDetails(lrpair).protect),\n protect2Price: getManualPrice(getDetails(lrpair).protect2),\n enhancePrice: getManualPrice(getDetails(lrpair).enhance),\n\n hasNocombi: hasNocombi\n }\n }else{\n return isPair1 ? {\n ...orig.pair1,\n enabled: false\n } : {\n ...orig.pair2,\n enabled: false\n }\n }\n }\n\n const getLensThickness = (thickVal: number | undefined) => {\n if(thickVal){\n const { tempLensThicknessSettings, essilorRecommend } = myCompannion\n const val = tempLensThicknessSettings.filter((thick) => { return thick.value === thickVal && thick.enabled } )\n \n return essilorRecommend ? 0 : (Array.isArray(val) && val.length > 0 ? val[0].price : 0)\n }else{\n return 0\n }\n\n }\n\n const getDiscount = (isPair1: boolean, total: number) => {\n const { tempDiscountSettings } = myCompannion\n const isAmountEnabled = tempDiscountSettings[0].amountEnabled\n const p1Amount = tempDiscountSettings[1].discountAmount\n const p2Amount = tempDiscountSettings[2].discountAmount\n const p1Percentage = tempDiscountSettings[1].discountPercentage\n const p2Percentage = tempDiscountSettings[2].discountPercentage\n\n return isPair1 ? (isAmountEnabled ? p1Amount : (total*(p1Percentage/100)) ) : ( isAmountEnabled ? p2Amount : (total*(p2Percentage/100)) )\n }\n\n const getPrice = (lrpair: iLensRecommendationPair) => {\n const correct = getManualSubProductPrice(getDetails(lrpair).correct)\n const protect = getManualPrice(getDetails(lrpair).protect)\n const protect2 = getManualPrice(getDetails(lrpair).protect2)\n const enhance = getManualPrice(getDetails(lrpair).enhance)\n\n return myCompannion.essilorRecommend ? getPackagePrice(lrpair) :\n correct + protect + protect2 + enhance\n }\n\n const getDetails = (lrpair: iLensRecommendationPair):iProductDetails => {\n const correct = lrpair.hasOwnProperty('correct') && lrpair.correct !== null && lrpair.correct !== undefined ? lrpair.correct.product : false\n const correctSub = lrpair.hasOwnProperty('correct') && lrpair.correct !== null && lrpair.correct !== undefined ? lrpair.correct.subProduct : false\n const protect = lrpair.hasOwnProperty('protect') && lrpair.protect !== undefined && (lrpair.protect || []).length > 0 ? lrpair.protect[0].product : false\n const protect2 = lrpair.hasOwnProperty('protect') && lrpair.protect !== undefined && (lrpair.protect || []).length > 0 && lrpair.protect[1] ? lrpair.protect[1].product : false\n const enhance = lrpair.hasOwnProperty('enhance') && lrpair.enhance !== null && lrpair.enhance !== undefined ? lrpair.enhance.product : false\n\n return {\n correct: correctSub ? correctSub?.id : '',\n correctCode: correctSub ? correctSub?.code : '',\n protect: protect ? protect?.id : '',\n protect2: protect2 ? protect2.id : '',\n enhance: enhance ? enhance.id : '',\n index: correctSub ? correctSub?.index : 0,\n lensDesign: correct ? correct.lensDesign : ''\n }\n }\n\n const getMeasureData = (isPair1: boolean) => {\n const { one } = measures\n \n const mp1 = one.length > 0 ? one[0].price.value : 0\n const mp2 = one.length > 1 ? one[1].price.value : 0\n\n return isPair1 ? mp1 : mp2\n }\n\n const getManualPrice = (id: string | undefined) => {\n if(id){\n return fetchProductDetailsViaId(id, temporaryProductList).price\n }\n\n return 0\n }\n\n const getManualSubProductPrice = (id: string | undefined) => {\n if(id){\n return fetchSubProductDetailsViaSubProductId(id, temporaryProductList).price\n }\n\n return 0\n }\n\n const getPackagePrice = (lrpair: iLensRecommendationPair) => {\n\n const price = fetchProductCombi(\n productCombi,\n getDetails(lrpair).correctCode,\n getDetails(lrpair).protect,\n getDetails(lrpair).protect2,\n getDetails(lrpair).enhance,\n getDetails(lrpair).index\n )\n\n return Number(price)\n }\n\n const getPackagePriceViaId = (\n correct_id: string | undefined,\n protect_id: string | undefined,\n protect2_id: string | undefined,\n enhance_id: string | undefined,\n index: number | undefined\n ) => {\n\n // console.log('getPackagePriceViaId---------------')\n // console.log('correct', correct_id)\n // console.log('protect', protect_id)\n // console.log('protect2', protect2_id)\n // console.log('enhance', enhance_id)\n // console.log('correctIndex', index)\n\n const price = fetchProductCombi(\n productCombi,\n correct_id ? correct_id : '',\n protect_id ? protect_id : '',\n protect2_id ? protect2_id : '',\n enhance_id ? enhance_id : '',\n index ? index: 0\n )\n\n return Number(price)\n }\n\n const getPackageOfferPrice = (\n correct_id: string | undefined,\n correct_code: string | undefined,\n correct_index: number | undefined,\n protect_id: string | undefined,\n protect2_id: string | undefined,\n enhance_id: string | undefined\n ) => {\n // console.log('correct_id',correct_id)\n // console.log('correct_code',correct_code)\n // console.log('correct_index',correct_index)\n // console.log('protect_id',protect_id)\n // console.log('protect2_id',protect2_id)\n // console.log('enhance_id',enhance_id)\n\n const correct = getManualSubProductPrice(correct_id)\n const protect = getManualPrice(protect_id)\n const protect2 = getManualPrice(protect2_id)\n const enhance = getManualPrice(enhance_id)\n\n return myCompannion.essilorRecommend ? getPackagePriceViaId(\n correct_code,\n protect_id,\n protect2_id,\n enhance_id,\n correct_index\n ) :\n correct + protect + protect2 + enhance + getLensThickness(correct_index)\n }\n\n const fetchProductCombi = (\n productCombi: iProductCombi[],\n cs:string | undefined,\n p1:string,\n p2:string,\n e:string,\n index:number\n ) => {\n // console.log('---------------')\n // console.log('correct', cs)\n // console.log('protect', p1)\n // console.log('protect2', p2)\n // console.log('enhance', e)\n // console.log('correctIndex', index)\n\n const res = productCombi.filter((pc:any)=>{\n return pc.correct_sub === cs && \n pc.protect1 === p1 &&\n pc.protect2 === p2 && \n pc.enhance === e && \n pc.index === index\n })\n\n // console.log('res---', res)\n // console.log('---------------')\n \n return res.length > 0 && Array.isArray(res) ? res[0].price : 0\n }\n\n const getCurrency = () => {\n return defaultVal.currency\n }\n\n const getBreakdown = (): iPriceBreakdown => {\n // console.log('--lensRecom', lensRecom)\n // console.log('--myCompannion', myCompannion)\n // console.log('--measure', measure)\n\n const breakdown = {\n ...defaultVal,\n currency: defaultVal.currency,\n summaryTotal: pair(true).summaryPrice + pair(false).summaryPrice,\n deliveryTotal: pair(true).deliveryPrice + pair(false).deliveryPrice,\n pair1: pair(true),\n pair2: pair(false)\n } \n \n return breakdown\n }\n\n return {\n getBreakdown,\n getDetails,\n getPackageOfferPrice,\n getDiscount,\n getCurrency\n }\n}\n\nexport default usePricing;","import React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport Modal from '../../../components/Modal';\nimport Button from '../../../components/ui/Button';\nimport RouterLink from '../../../components/ui/RouterLink';\nimport measuresSteps from '../../../constants/measure-steps.contants';\nimport routes from '../../../constants/routes.constant';\nimport iMeasureStep from '../../../interface/measure-step.interface';\nimport iMeasurementDataOne from '../../../interface/measurement-one-data.inteface';\nimport iMeasurementDataThree from '../../../interface/measurement-three-data.inteface';\nimport iMeasurementDataTwo from '../../../interface/measurement-two-data.inteface';\nimport measureSlice, { getMeasure } from '../../../store/slices/measure.slice';\nimport userSlice, { getUser } from '../../../store/slices/user.slice';\nimport AgeCategoryType from '../../../types/age-category.type';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport MeasureModal from './MeasureModal';\nimport MeasureStepNavigation from './MeasureStepNavigation';\nimport MeasureStepOne from './MeasureStepOne';\nimport MeasureStepThree from './MeasureStepThree';\nimport MeasureStepTwo from './MeasureStepTwo';\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport { getApp } from '../../../store/slices/app.slice';\nimport usePricing from '../../../utils/hooks/usePricing';\nimport lensConsultationSlice, { getLensConsultation } from '../../../store/slices/lens-consultation.slice';\n\ninterface Props {\n\n}\n\nconst MeasuresContainer : React.FC = () => {\n // VARIABLES\n const [B, E] = useBEM('measures-container');\n // const [step ,setStep] = useState(0);\n const {step ,activeDataIndex, measurementData} = useSelector(getMeasure);\n const steps: iMeasureStep[] = measuresSteps;\n const [showImportModal, setShowImportModal] = useState(false);\n const [showNewPairModal, setShowNewPairModal] = useState(false);\n const dispatch = useDispatch();\n const { ageCategory, measures } = useSelector(getUser);\n const { t } = useTranslation(useSelector(getApp));\n const { getBreakdown } = usePricing();\n const currentLensConsultation = useSelector(getLensConsultation);\n const appStore = useSelector(getApp);\n const { experience } = appStore;\n\n // HOOKS\n useEffect(()=>{\n dispatch(userSlice.actions.saveMeasuresData(measurementData));\n },[measurementData])\n\n useEffect(()=>{\n const breakdown = getBreakdown()\n console.log('breakdown-measures', breakdown)\n dispatch(lensConsultationSlice.actions.setBreakdown(breakdown));\n dispatch(userSlice.actions.savePrefilledData({\n ...currentLensConsultation,\n breakdown: breakdown\n } ));\n },[measures])\n\n // METHODS\n const activeStep = () => {\n\n return steps[step || 0];\n }\n\n const getAge = () => {\n const age = ageCategory?.value;\n return age ===AgeCategoryType.KIDS ? true : false\n }\n\n const nextStep = (\n key: 'one' | 'two' | 'three',\n data: iMeasurementDataOne | iMeasurementDataTwo | iMeasurementDataThree) =>\n {\n\n dispatch(measureSlice.actions.saveMeasureData({\n key,\n data\n }));\n\n if(step === (steps.length - 1)) {\n dispatch(measureSlice.actions.savePairData(activeDataIndex + 1));\n setShowNewPairModal(true);\n return;\n }\n setStep(step + 1, false);\n }\n const renderMeasureStep = () => {\n switch (step) {\n // case 0: return nextStep('one', data)}/>\n // case 1: return nextStep('two', data)}/>\n case 0: return nextStep('one', data)}/>\n case 1: return nextStep('two', data)}/>\n case 2: return nextStep('three', data)}/>\n default: break;\n }\n }\n\n const addNewPair = () => {\n dispatch(userSlice.actions.saveMeasuresData(measurementData));\n if(isMaxPair()) {\n dispatch(measureSlice.actions.changeView('data'));\n return;\n }\n\n\n setShowNewPairModal(false);\n dispatch(measureSlice.actions.changeView('measure'));\n dispatch(measureSlice.actions.changeStep(0));\n dispatch(measureSlice.actions.addPair());\n }\n\n const setStep = (newStep: number, cond: boolean = true) => {\n if((!measurementData.one[activeDataIndex] && step === 0 && newStep === 1) && cond)\n newStep = 0\n\n else if((!measurementData.two[activeDataIndex] && step === 1 && newStep === 2) && cond)\n newStep = 1\n\n else if (newStep === 2 && step < 1) return\n\n dispatch(measureSlice.actions.changeStep(newStep));\n }\n\n const isMaxPair = () => {\n return measurementData.three.length > 1;\n }\n\n return (\n
    \n\n {/* */}\n\n setStep(s)} steps={steps}/>\n\n setShowImportModal(true)}\n step={step} label={t(activeStep().label)} description={t(activeStep().description)}>\n {renderMeasureStep()}\n \n\n\n setShowImportModal(false)}>\n
    \n

    Import

    \n
    \n
    \n
    \n
    \n\n setShowNewPairModal(false)}>\n
    \n

    {t('measures_mes__3_measures')}

    \n\n \n\n \n {t('measures_mes__3_back_to_lpb')}\n \n
    \n
    \n
    \n )\n}\n\nexport default MeasuresContainer;\n","import React, { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport Button from '../../../components/ui/Button';\nimport Icon from '../../../components/ui/Icon';\nimport { KIDS_THEMES } from '../../../constants/theme.constants';\nimport iMeasurementDataOne from '../../../interface/measurement-one-data.inteface';\nimport iMeasurementDataThree from '../../../interface/measurement-three-data.inteface';\nimport iMeasurementDataTwo from '../../../interface/measurement-two-data.inteface';\nimport { getApp } from '../../../store/slices/app.slice';\nimport measureSlice, { getMeasure } from '../../../store/slices/measure.slice';\nimport { getUser } from '../../../store/slices/user.slice';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport Utils from '../../../utils/Utils';\nimport { getLensConsultation } from '../../../store/slices/lens-consultation.slice';\n\ninterface Props {\n // TEMP\n empty?:boolean,\n\n one?: iMeasurementDataOne,\n two?: iMeasurementDataTwo,\n three?: iMeasurementDataThree,\n index: number\n}\n\nconst MeasureDataCard : React.FC = ({\n empty = false,\n one,\n two,\n three,\n index\n}) => {\n // VARIABLES\n const [B, E] = useBEM('measure-data-card');\n const dispatch = useDispatch();\n const { ageCategory } = useSelector(getUser);\n const { generateRandomNumbers, getThemeVariables } = Utils();\n const themes = KIDS_THEMES;\n const { theme } = useSelector(getApp);\n const { t } = useTranslation(useSelector(getApp));\n const pairTranslationKeys = ['measures_mes__3_pair_1_new', 'delivery_del_3_pair_2']\n const { breakdown } = useSelector(getLensConsultation);\n const {activeDataIndex, isIvsGenerated} = useSelector(getMeasure)\n // HOOKS\n\n // METHODS\n const onEdit = () => {\n dispatch(measureSlice.actions.changeView('measure'));\n dispatch(measureSlice.actions.changeStep(0));\n dispatch(measureSlice.actions.editPair(index));\n \n }\n\n const onAdd = () => {\n dispatch(measureSlice.actions.changeView('measure'));\n dispatch(measureSlice.actions.changeStep(0));\n dispatch(measureSlice.actions.addPair());\n }\n\n const getAge = () => {\n const age = ageCategory?.value;\n return age ? age : ''\n }\n\n const themeStyle = () => {\n if(!theme || theme.id !== 'multi')return {};\n const randomNumbers = generateRandomNumbers(themes.length - 1);\n const randomTheme = themes[randomNumbers[0]];\n return getThemeVariables(randomTheme)\n }\n\n const aAndB = () => {\n const sum = (one?.a.value || 0) + (one?.b.value || 0);\n return sum.toFixed(2);\n }\n\n return (\n
    \n
    \n \n {`${one?.price.value} ${breakdown.currency}`}\n
    \n\n
    \n
    \n \n
    \n
    \n
    \n \n {one?.a.value} mm \n
    \n
    \n \n {one?.d.value} mm \n
    \n
    \n \n {one?.b.value} mm\n
    \n
    \n
    \n
    \n\n
    \n \n\n
    \n \n {two?.left.pd.value} mm \n
    \n
    \n \n {two?.left.height.value} mm \n
    \n
    \n \n {two?.right.pd.value} mm \n
    \n
    \n \n {two?.right.height.value} mm \n
    \n
    \n\n
    \n \n\n
    \n \n {three?.pantoscopicAngle.value} ° \n
    \n
    \n \n {three?.wrapAngle.value} ° \n
    \n\n {index === 0 && isIvsGenerated? \n
    \n \n Left:{three?.vertexDistance.ivsValue?.left} | Right:{three?.vertexDistance.ivsValue?.right}mm \n
    :\n
    \n \n {three?.vertexDistance.value}mm \n
    \n }\n\n
    \n \n {three?.readingDistance.value} cm \n
    \n
    \n
    {/* CONTENT END*/}\n \n\n
    \n {t('measures_mes__3_edit')} \n
    \n\n { \n empty && \n
    \n )\n}\n\nexport default MeasureDataCard;","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport { getApp } from '../../../store/slices/app.slice';\nimport { getMeasure } from '../../../store/slices/measure.slice';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport MeasureDataCard from './MeasureDataCard';\n\ninterface Props {\n\n}\n\nconst MeasuresData : React.FC = () => {\n // VARIABLES\n const [B, E] = useBEM('measures-data');\n const { measurementData } = useSelector(getMeasure);\n const { t } = useTranslation(useSelector(getApp));\n\n // HOOKS\n \n // METHODS\n\n return (\n
    \n \n
    \n \n
    \n

    {t('measures_mes__3_measures_new')}

    \n\n {/*
    \n\n\n
    \n\n {\n measurementData.one.map( (o,i) => (\n \n ))\n }\n \n {\n measurementData.one.length <= 1 && \n \n } \n \n
    \n\n
    \n\n
    \n )\n}\n\nexport default MeasuresData;","import React, { useEffect, useRef, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport measureSlice, { getMeasure } from '../../store/slices/measure.slice';\nimport useBEM from '../../utils/hooks/useBEM';\nimport MeasuresContainer from './components/MeasuresContainer';\nimport MeasuresData from './components/MeasuresData';\n// import measurementAnimation from './../../assets/videos/measurement.mp4';\n// import Spinner from '../../components/ui/Spinner';\nimport { getApp } from '../../store/slices/app.slice';\nimport Spinner from '../../components/ui/Spinner';\nimport useGoogleAnalytics from '../../utils/hooks/useGoogleAnalytics';\nimport { IndexedDBContext, IndexedDBContextType } from '../../utils/context/indexedDBContext';\n\n\ninterface Props {\n\n}\n\nconst Measures : React.FC = () => {\n // VARIABLES\n const [B, E] = useBEM('measures');\n const { view, step } = useSelector(getMeasure);\n const animationRef = useRef(); \n const timeoutDelays = useRef([]);\n const dispatch = useDispatch();\n // const { videos } = useSelector(getApp);\n const { get } = React.useContext(IndexedDBContext) as IndexedDBContextType;\n const [animation, setAnimation] = useState();\n\n\n // HOOKS\n useEffect(() => { \n const downloadVideo = async () => {\n const vid = await get('localAssetsStore', 'measurementAnimation');\n if(vid)setAnimation(vid.asset);\n } \n downloadVideo();\n \n dispatch(measureSlice.actions.savePairData(0));\n dispatch(measureSlice.actions.sessionStart(new Date().toISOString()));\n\n return () => {\n dispatch(measureSlice.actions.editPair(0));\n dispatch(measureSlice.actions.changeView('measure'));\n dispatch(measureSlice.actions.changeStep(0)); \n }\n }, [])\n\n useEffect(() => {\n if(view === 'data')return; \n return () => {\n clearTimeouts();\n // dispatch(measureSlice.actions.changeStep(0));\n }\n }, [view]);\n\n useEffect(() => {\n clearTimeouts();\n \n if(step === 0){ \n if(!animationRef.current) return;\n animationRef.current.currentTime = 0.25;\n animationRef.current.play(); \n addDelay(() => {\n animationRef.current.pause();\n }, 3500);\n }\n\n if(step === 1){\n if(!animationRef.current)return;\n animationRef.current.currentTime = 5;\n animationRef.current.play(); \n addDelay(() => {\n animationRef.current.pause();\n }, 1300);\n }\n\n if(step === 2){\n if(!animationRef.current)return;\n animationRef.current.currentTime = 8.8;\n animationRef.current.play();\n addDelay(() => {\n animationRef.current.pause();\n }, 3000);\n }\n\n }, [step, animation])\n\n // METHODS\n\n const addDelay = (callback: any, delay: number) => {\n const timeout = setTimeout(() => {\n callback();\n }, delay);\n timeoutDelays.current.push(timeout);\n }\n\n const clearTimeouts = () => {\n timeoutDelays.current.forEach( (d:any) => clearTimeout(d) );\n timeoutDelays.current = [];\n }\n\n return (\n
    \n\n {/* {\n !animation &&\n \n } */}\n\n { view === 'measure' && animation &&\n
    \n \n
    \n }\n { view === 'measure' && }\n { view === 'data' && } \n \n
    \n )\n}\n\nexport default Measures;","import React, { useEffect, useRef, useState } from 'react';\nimport HalfCircleProgress from '../../../components/ui/HalfCircleProgress';\nimport Icon from '../../../components/ui/Icon';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport Slider from \"react-input-slider\";\nimport Button from '../../../components/ui/Button';\nimport { useDispatch, useSelector } from 'react-redux';\nimport lensThicknessSlice, { getlensThickness } from '../../../store/slices/lens-thickness.slice';\nimport userSlice, { getUser } from '../../../store/slices/user.slice';\nimport lensConsultationSlice, { getLensConsultation } from '../../../store/slices/lens-consultation.slice';\nimport LensPairType from '../../../types/lens-pair.type';\nimport iSubProduct from '../../../interface/sub-product.inteface';\nimport LensFamilyType from '../../../types/lens-family.type';\nimport useLensConsultation from '../../lens-consultation/useLensConsultation';\nimport appSlice, { getApp } from '../../../store/slices/app.slice';\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport axios from 'axios';\nimport ENDPOINTS from '../../../constants/endpoints';\nimport iPrescriptionData from '../../../interface/prescription-data.interface';\nimport iLensThicknessCalculation from '../../../interface/lens-thickness-calculation';\nimport useLensThickness from '../useLensThickness';\nimport iProduct from '../../../interface/product.inteface';\nimport eyeGif from './../../../assets/gif/eye.gif';\nimport iLensRecommendationPair from '../../../interface/lens-recommendaiton-pair.interface';\nimport productsSlice from '../../../store/slices/products.slice';\nimport iProductBrand from '../../../interface/product-brand.interface';\nimport productDemoSlice from '../../../store/slices/products-demo.slice';\nimport routes from '../../../constants/routes.constant';\nimport useGoto from '../../../utils/hooks/useGoto';\nimport eyeSVG from './../../../assets/svg/eye.svg';\nimport Alert from '../../../components/ui/Alert';\nimport CircleArrow from '../../../components/ui/CircleArrow';\nimport ExperienceType from '../../../types/experience.type';\nimport SvgIcon from '../../../components/ui/svg-icon/SvgIcon';\nimport EPROM_MOCK_DATA from '../../../constants/eprom.constants';\nimport useEprom from '../../../utils/hooks/useEprom';\n\ninterface Props {\n\n}\n\nconst LensThicknessControl: React.FC = () => {\n // VARIABLES\n const [B, E] = useBEM('lens-thickness-control');\n // const [slider, setSlider] = useState(0);\n const dispatch = useDispatch();\n const goto = useGoto();\n const { isLensThickness } = useSelector(getLensConsultation)\n const {\n getSubProductsByLabel,\n getRequestType,\n skipEPROMValidation\n } = useLensConsultation();\n const { prescription, measures } = useSelector(getUser);\n const { lensThicknessSettings, accountDetails, experience } = useSelector(getApp);\n const { activePair, lensRecommendation, sliderPage, temporaryByPassProduct } = useSelector(getLensConsultation);\n // const { activePairSun, lensRecommendationSun } = useSelector(getLensConsultationSun);\n const [subProducts, setSubProducts] = useState([]);\n const { t } = useTranslation(useSelector(getApp));\n const { filterSubProductsWithEnabledIndex } = useLensThickness();\n const { tempBaseLensThicknessCalculation, tempLensThicknessCalculation, error, sliderCount, sliderValue, tempLensThickness } = useSelector(getlensThickness);\n const online = navigator.onLine;\n const [recommendationToDemo, setRecommendationToDemo] = useState<{\n correct?: iProduct,\n protect?: iProduct,\n enhance?: iProduct,\n }>();\n const [onHoverEye, setOnHoverEye] = useState(false);\n const isSunExp = experience === ExperienceType.SUN\n const lensRecommendationByExperience = lensRecommendation\n const activePairByExperience = activePair\n\n const [recommendationToDemoBrands, setRecommendationToDemoBrands] = useState<{\n correct?: iProductBrand,\n protect?: iProductBrand,\n enhance?: iProductBrand,\n }>();\n const {\n getMeasuresHighestValues,\n getLeftAndRightPrescription\n } = useLensConsultation();\n const [isConfirmEPROM, setConfirmEPROM] = useState(false);\n const isInitialLoad = useRef(true);\n const previousRequestBody = useRef('');\n const {\n checkIfValidMassTint,\n checkIfValidTreatment,\n filterByAvailableIndex,\n getEpromApiEndpoint,\n isValidOnEPROM\n } = useEprom();\n\n useEffect(() => {\n if (!lensRecommendation) return;\n const pair: iLensRecommendationPair = lensRecommendation[activePair] as iLensRecommendationPair;\n if (!pair) return;\n const withDemo = (product?: iProduct) => {\n if (!product ||\n !product.demo ||\n product.demo.length < 1\n ) return undefined;\n return product;\n }\n\n const recommendation = {\n correct: withDemo(pair.correct?.product),\n protect: pair.protect && pair.protect.length > 0 ? withDemo(pair.protect[0].product) : undefined,\n enhance: withDemo(pair.enhance?.product),\n }\n\n const recommendationBrands = {\n correct: pair?.correct?.brand || undefined,\n protect: pair.protect && pair.protect.length > 0 ? pair.protect[0].brand : undefined,\n enhance: pair?.enhance?.brand || undefined\n }\n setRecommendationToDemoBrands(recommendationBrands);\n setRecommendationToDemo(recommendation);\n }, [lensRecommendation, activePair])\n\n useEffect(() => {\n if (sliderPage < 3) return;\n const initialSubProducts = getSubProducts(activePair);\n let finalSubProducts = filterSubProductsWithEnabledIndex(initialSubProducts, lensThicknessSettings);\n\n if (accountDetails?.shop.eprom && lensRecommendation) {\n const correct = lensRecommendation[activePair]?.correct?.subProduct?.code;\n finalSubProducts = filterByAvailableIndex(correct as string, finalSubProducts);\n }\n\n const isWithOnePointFive = finalSubProducts.filter(x => x.index === 1.5).length > 0;\n if (!isWithOnePointFive) {\n finalSubProducts = [{\n id: '',\n label: '',\n index: 0,\n price: 0\n }, ...finalSubProducts];\n }\n\n setSubProducts(finalSubProducts);\n setSliderValuePairLoad(finalSubProducts);\n }, [activePair, sliderPage])\n\n useEffect(() => {\n const familyBE = lensRecommendation ? lensRecommendation[activePair] : ''\n const correctSubProductId = familyBE ? familyBE?.correct?.subProduct?.code : ''\n const protect = lensRecommendation ? lensRecommendation[activePair]?.protect : ''\n const isItaly = accountDetails?.shop?.country === 'it'\n const isBelgium = accountDetails?.shop?.country === 'be'\n const productItalyBypass = ['xperio_tinted','xperio_mirrors']\n const productBelgiumBypass = ['eyezen_kids','stellest', 'kids_standard_design']\n \n if(isBelgium && correctSubProductId){\n if(productBelgiumBypass.includes(correctSubProductId))return\n }\n\n if (sliderPage < 3 || !lensRecommendation) return;\n const family = lensRecommendation[activePair];\n const base = tempBaseLensThicknessCalculation[activePair];\n const isWithRX = prescription.values.sphere.od ? true : false;\n\n // localStorage.setItem(\"selectedIndex\", JSON.stringify(family?.correct.subProduct?.index))\n const product = family?.correct.product;\n const subProductCode = family?.correct.subProduct?.code;\n const skipEPROM = skipEPROMValidation(\n accountDetails?.shop.region as string,\n product?.id as string,\n subProductCode as string\n );\n\n const isValidateEPROM = (accountDetails?.shop.eprom as boolean) && !skipEPROM;\n\n if (!base) {\n const pair = activePair === LensPairType.PAIR1 ? 0 : 1;\n\n if (!lensRecommendation) return;\n const data = {\n index: family?.correct.subProduct?.index,\n product_code: handleProductCode(product?.id as string),\n sub_product_code: handleSubProductCode(subProductCode as string),\n prescription: getLeftAndRightPrescription(prescription.values),\n measures: getMeasuresHighestValues(measures, pair),\n request_type: getRequestType(isWithRX, isValidateEPROM)\n }\n const dataString = JSON.stringify(data);\n // Note: dont call API if data is the same with previous data\n if (dataString === previousRequestBody.current) return;\n previousRequestBody.current = dataString;\n\n\n\n\n axios.post(getEpromApiEndpoint(), { data }).then(x => {\n if (family && isValidateEPROM) {\n const isBelgium = accountDetails?.shop.country === \"be\";\n const productIdsToCheck = getProductIdsToCheck(family, isBelgium);\n const validProducts = x.data.data.eprom_recommendation;\n isValidOnEPROM(productIdsToCheck, validProducts, (result: boolean) => {\n setConfirmEPROM(!result);\n const epromBOValidation = validateEPROMIndexes(data.index as number);\n dispatch(lensConsultationSlice.actions.setValidOnEPROM(!!(result && epromBOValidation)))\n })\n }\n\n if (\n x.data.statuscode !== 200 ||\n !x.data.data.lens_thickness ||\n Object.keys(!x.data.data.lens_thickness).length === 0\n ) {\n return\n }\n\n const {\n max_edge_thk,\n weight,\n center_thk,\n index\n } = x.data.data.lens_thickness;\n \n dispatch(lensThicknessSlice.actions.saveBaseLensThickness({\n pair: activePair,\n data: {\n index: index,\n productCode: data.product_code as string,\n edge: max_edge_thk,\n weight: weight,\n center: center_thk,\n prescription: getLeftAndRightPrescription(prescription.values),\n measures: data.measures\n }\n }))\n })\n return;\n }\n const recommendedIndex = recommendedSubProduct()?.index;\n \n // Additional Business Rule: when recommendation index and slider index are the same, do not return any value\n if ((tempLensThickness?.pair1 === recommendedIndex) || (tempLensThickness?.pair2 === recommendedIndex)) {\n dispatch(lensThicknessSlice.actions.saveLensThicknessDifference({\n pair: activePair,\n data: undefined\n }));\n return;\n }\n \n // const currentDiff = tempLensThicknessCalculation[activePair];\n const currentDiff = tempBaseLensThicknessCalculation[activePair];\n\n // Note: Compute only lens thickness and EPROM\n // when new product is not equal to previous product\n // and new index is not equal to previous index\n // and apply only this conditions on first load of the component\n // changing prescription will always compute\n if (\n currentDiff && \n currentDiff?.index === recommendedIndex\n // currentDiff?.productCode === base.productCode &&\n // isInitialLoad.current\n ) {\n // if ((currentDiff?.index === 1.5 || recommendedIndex === 1.5) && isInitialLoad.current) return\n if ((currentDiff?.index === 1.5) && isInitialLoad.current) return\n // if (isInitialLoad.current) return\n dispatch(lensThicknessSlice.actions.saveLensThicknessDifference({\n pair: activePair,\n data: undefined\n }));\n isInitialLoad.current = false;\n return;\n }\n\n const data = {\n index: recommendedIndex,\n product_code: handleProductCode(base.productCode),\n sub_product_code: handleSubProductCode(subProductCode as string),\n prescription: getLeftAndRightPrescription(prescription.values),\n measures: base.measures,\n request_type: getRequestType(isWithRX, isValidateEPROM)\n }\n const dataString = JSON.stringify(data);\n\n // Note: dont call API if data is the same with previous data\n if (dataString === previousRequestBody.current) return;\n previousRequestBody.current = dataString;\n\n axios.post(getEpromApiEndpoint(), { data }).then(x => {\n if (family && isValidateEPROM) {\n const isBelgium = accountDetails?.shop.country === \"be\";\n const productIdsToCheck = getProductIdsToCheck(family, isBelgium);\n const validProducts = x.data.data.eprom_recommendation;\n isValidOnEPROM(productIdsToCheck, validProducts, (result: boolean) => {\n setConfirmEPROM(!result);\n const epromBOValidation = validateEPROMIndexes(data.index as number);\n dispatch(lensConsultationSlice.actions.setValidOnEPROM(!!(result && epromBOValidation)))\n })\n }\n\n if (\n x.data.statuscode !== 200 ||\n !x.data.data.lens_thickness ||\n Object.keys(x.data.data.lens_thickness).length === 0\n ) {\n dispatch(lensThicknessSlice.actions.saveLensThicknessDifference({\n pair: activePair,\n data: undefined\n }));\n return\n }\n\n const {\n max_edge_thk,\n weight,\n center_thk\n } = x.data.data.lens_thickness;\n\n const diffData = {\n weight: computeDifferencePercentage(base.weight, weight),\n edge: computeDifferencePercentage(base.edge, max_edge_thk),\n center: computeDifferencePercentage(base.center, center_thk),\n }\n dispatch(lensThicknessSlice.actions.saveLensThicknessDifference({\n pair: activePair,\n data: {\n index: recommendedIndex,\n productCode: base.productCode,\n edge: diffData.edge,\n weight: diffData.weight,\n center: diffData.center\n }\n }))\n })\n }, [\n tempBaseLensThicknessCalculation,\n activePair,\n sliderPage,\n lensRecommendation,\n ])\n\n // useEffect(() => {\n // dispatch(lensThicknessSlice.actions.setSliderValue(slider))\n // dispatch(lensThicknessSlice.actions.setSliderCount(1))\n // }, [slider])\n\n useEffect(() => {\n if (!lensRecommendation || !lensRecommendation[activePair] || sliderPage < 3) return;\n setSliderValuePairLoad(subProducts);\n }, [lensRecommendation])\n\n useEffect(() => {\n return () => {\n isInitialLoad.current = true;\n }\n }, [])\n\n useEffect(() => {\n // setSlider(recommendedSubProduct() && isLensThickness ? recommendedSubProduct().id.charAt(0) : 0)\n dispatch(lensThicknessSlice.actions.setSliderValue(recommendedSubProduct() && isLensThickness ? recommendedSubProduct().id.charAt(0) : 0))\n dispatch(lensConsultationSlice.actions.setIsLensThickness(false))\n }, [])\n\n // METHODS\n\n // Rule: Substitute Varilux X Series product_codes and sub_product_codes when XR Series is selected\n // Only applicable for Varilux XR series\n const handleProductCode = (productCode: string) => {\n if (productCode === \"varilux_xr_series\") {\n return \"varilux_x_series\"\n } else {\n return productCode\n }\n }\n const handleSubProductCode = (subProductCode: string) => {\n switch (subProductCode) {\n case \"varilux_xr_design\":\n return \"varilux_x_design\";\n case \"varilux_xr_design_short\":\n return \"varilux_x_design_short\";\n case \"varilux_xr_fit\":\n return \"varilux_x_f360\";\n case \"varilux_xr_track\":\n return \"varilux_x_track\";\n case \"varilux_xr_4d\":\n return \"varilux_x_4d\";\n case \"varilux_xr_pro\":\n return \"varilux_xclusive_4d\";\n \n default:\n return subProductCode;\n }\n }\n\n\n const getProductIdsToCheck = (family: any, checkEnhance = false) => {\n const protectIdsToCheck = family?.protect ? family?.protect.map((p: any) => p.product?.id) : [];\n const enhanceIdsToCheck = (family?.enhance && checkEnhance) ? [family?.enhance.product?.id] : [];\n return [\n ...protectIdsToCheck,\n ...enhanceIdsToCheck\n ]\n }\n\n const setSliderValuePairLoad = (subp: iSubProduct[]) => {\n if (!lensRecommendation) return;\n let sliderIndex = 0;\n let actualIndex;\n subp.forEach((x, i) => {\n if (lensRecommendation[activePair]?.correct.subProduct?.index === x.index) {\n sliderIndex = i;\n actualIndex = x.index;\n }\n });\n if (actualIndex && !validateEPROMIndexes(actualIndex)) {\n dispatch(appSlice.actions.showGlobalAlert({\n show: true,\n message: t('eprom_popup'),\n }));\n return;\n }\n \n // setSlider(sliderIndex);\n dispatch(lensThicknessSlice.actions.setSliderValue(sliderIndex))\n }\n\n const recommendedSubProduct = (): iSubProduct | any => {\n if (!lensRecommendation || !lensRecommendation[activePair]) return null;\n return lensRecommendation[activePair]?.correct?.subProduct as iSubProduct;\n }\n\n const getSubProducts = (pair: LensPairType): iSubProduct[] => {\n if (!lensRecommendation) return [];\n\n const correct = lensRecommendation[pair]?.correct;\n const label = correct?.subProduct?.label || '';\n if (!correct?.product) return [];\n\n return getSubProductsByLabel(\n label,\n correct.product.subProducts as iSubProduct[],\n true\n );\n }\n\n const viewPrescription = () => {\n dispatch(lensThicknessSlice.actions.changeView('prescription'));\n }\n\n let timerThrottle: any = null;\n const setManualThickness = (value: number) => {\n dispatch(lensThicknessSlice.actions.changeError('lensThickness'))\n if (subProducts.length <= 1) return;\n if (value === 0 && subProducts[value].index != 1.5) {\n return;\n }\n\n if (!validateEPROMIndexes(subProducts[value].index)) {\n dispatch(appSlice.actions.showGlobalAlert({\n show: true,\n message: t('eprom_popup'),\n }));\n return;\n }\n\n if (timerThrottle) clearTimeout(timerThrottle);\n timerThrottle = setTimeout(() => {\n setFinalSubProduct(subProducts[value])\n }, 300);\n // setSlider(value);\n dispatch(lensThicknessSlice.actions.setSliderValue(value))\n }\n\n const validateEPROMIndexes = (index: number) => {\n if (!lensRecommendation || !accountDetails?.shop.eprom) return true;\n const family = lensRecommendation[activePair];\n const correctCode = family?.correct.subProduct?.code as string;\n let protectIds = (family?.protect || []).map(x => x.product?.id) || [];\n //belgium\n if (accountDetails?.shop?.country === 'be') {\n protectIds = protectIds.filter(id => id !== 'xperio_mirrors')\n }\n //italy\n const italyProductsByPass = ['xperio_mirrors', 'xperio_tinted']\n if(accountDetails?.shop?.country === 'it' && protectIds[0] && protectIds.length === 1){\n if(italyProductsByPass.includes(protectIds[0])){\n protectIds = protectIds.filter(id => id !== 'xperio_mirrors')\n protectIds = protectIds.filter(id => id !== 'xperio_tinted')\n }\n }\n if(accountDetails?.shop?.country === 'it' && protectIds[0] && protectIds[1]){\n if(italyProductsByPass.includes(protectIds[0]) || italyProductsByPass.includes(protectIds[1])){\n protectIds = protectIds.filter(id => id !== 'xperio_mirrors')\n protectIds = protectIds.filter(id => id !== 'xperio_tinted')\n }\n }\n const enhanceId = family?.enhance?.product?.id;\n const masstingResult = protectIds.length ? checkIfValidMassTint(\n correctCode,\n protectIds as string[],\n index\n ) : true;\n\n const treatmentResult = enhanceId ? checkIfValidTreatment(\n correctCode,\n enhanceId as string,\n index\n ) : true;\n\n return masstingResult && treatmentResult;\n }\n\n const setFinalSubProduct = (subProduct: iSubProduct) => {\n if (!lensRecommendation) return;\n const correct = lensRecommendation[activePair]?.correct;\n dispatch(lensConsultationSlice.actions.selectProduct({\n lensFamily: LensFamilyType.CORRECT,\n brand: correct?.brand,\n product: correct?.product,\n subProduct,\n manual: true,\n pair: activePair\n }));\n }\n\n const computeDifferencePercentage = (currentValue: number, newValue: number) => {\n let values = [currentValue, newValue];\n // if (newValue > currentValue) values = values.reverse();\n const diff = values[0] - values[1];\n const deffPercentage = (diff / values[0]) * 100;\n const finalPercent = newValue >= currentValue ? deffPercentage : (deffPercentage * -1);\n return Math.round(finalPercent);// Number(finalPercent.toFixed(2));\n }\n\n\n const updateThickness = (action: string) => {\n // Note: cannot update slider when you only 1 index\n if (subProducts.length <= 1) return;\n if (sliderValue === 0 && action === 'minus') return;\n if (sliderValue === subProducts.length - 1 && action === 'add') return \n\n const newIndex = action === 'add' ? ((sliderValue as number) + 1) : ((sliderValue as number) - 1);\n dispatch(lensThicknessSlice.actions.changeError('lensThickness'))\n setManualThickness(newIndex);\n }\n\n const isPrescriptionComplete = () => {\n return (prescription.values && prescription.values.sphere.od) ? true : false\n }\n\n const disableDemo = () => {\n if (!recommendationToDemo) return true;\n const {\n correct,\n protect,\n enhance\n } = recommendationToDemo;\n if (!correct && !protect && !enhance) return true;\n return false;\n }\n\n const eyeIconGif = () => {\n return
    onHoverHandler(true)}\n onMouseLeave={() => onHoverHandler(false)}\n >\n \"\"\n \"\"\n
    \n }\n\n const onHoverHandler = (isHover: boolean) => {\n setTimeout(() => {\n setOnHoverEye(isHover);\n }, isHover ? 0 : 500);\n }\n\n const demoProducts = () => {\n const initialDemo: any = getInitialDemo();\n if (!initialDemo) return;\n dispatch(productsSlice.actions.selectBrandTodemo(initialDemo.data.brand))\n dispatch(productsSlice.actions.selectProductTodemo(initialDemo.data.product))\n\n if (!recommendationToDemo || !recommendationToDemoBrands) return;\n\n dispatch(productDemoSlice.actions.setRecommendationDemo(recommendationToDemo));\n dispatch(productDemoSlice.actions.selectLensFamily(initialDemo.family));\n dispatch(productDemoSlice.actions.setDemoFrom(routes.lensConsultation));\n dispatch(productDemoSlice.actions.setRecommendationDemoBrands(recommendationToDemoBrands));\n\n goto.route(routes.demonstration);\n }\n\n const getInitialDemo = () => {\n if (!lensRecommendation) return;\n const pair: iLensRecommendationPair = lensRecommendation[activePair] as iLensRecommendationPair;\n const { correct, protect, enhance } = pair;\n if (isWithDemo(correct)) return { family: LensFamilyType.CORRECT, data: correct };\n if (isWithDemo(protect)) return { family: LensFamilyType.PROTECT, data: protect[0] };\n if (isWithDemo(enhance)) return { family: LensFamilyType.ENHANCE, data: enhance };\n }\n\n const isWithDemo = (family: any) => {\n if (Array.isArray(family)) {\n if (family && family.length > 0 && family[0].product && (family[0].product.demo || []).length > 0) return true;\n return false;\n }\n if (family && family.product && (family.product.demo || []).length > 0) return true;\n return false;\n }\n\n const confirmEPROM = (id: string) => {\n setConfirmEPROM(false);\n if (id === 'rx') return;\n sessionStorage.setItem('GLOBAL_EVENT', 'CHANGE_PROPOSAL')\n dispatch(lensConsultationSlice.actions.setSliderPage(0));\n }\n\n const dynamicErrorMessage = () =>{\n if(error === 'lensThickness')return 'Change Lens Thickness'\n else return t('eprom_popup_change_rx')\n }\n\n const byPassXR = () => {\n let isVariluxXRRecommended = (lensRecommendation?.pair1?.correct?.product?.id) === 'varilux_xr_series'\n let isXRSubProductSelected = (lensRecommendation?.pair1?.correct?.subProduct) === undefined ? false : true\n if (lensRecommendation?.pair1?.correct?.subProduct === undefined) return false\n const xrProductsCode = [\n 'varilux_xr_design',\n 'varilux_xr_design_short',\n 'varilux_xr_fit',\n 'varilux_xr_track',\n 'varilux_xr_4d',\n 'varilux_xr_pro'\n ]\n return xrProductsCode.includes(temporaryByPassProduct as string) || isVariluxXRRecommended\n }\n\n return (\n
    \n
    \n\n
    \n\n \n\n \n }\n soon\n />\n
    \n
    \n
    \n\n updateThickness('minus')}\n />\n setManualThickness(x)}\n />\n updateThickness('add')}\n />\n\n \n
    \n
    \n {recommendedSubProduct() && recommendedSubProduct().index}\n
    \n
    \n
    \n\n
    \n \n \n
    \n\n {\n !byPassXR() && (\n confirmEPROM(id)}\n />\n )\n }\n
    \n )\n}\n\nexport default LensThicknessControl;\n","import React from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useHistory } from 'react-router';\nimport Button from '../../../components/ui/Button';\nimport Icon from '../../../components/ui/Icon';\nimport SideBoxBordered from '../../../components/ui/SideBoxBordered';\nimport { LENS_THICKNESS_RULES } from '../../../constants/lens-thickness.constants';\nimport routes from '../../../constants/routes.constant';\nimport { getApp } from '../../../store/slices/app.slice';\nimport lensConsultationSlice, { getLensConsultation } from '../../../store/slices/lens-consultation.slice';\nimport lensThicknessSlice, { getlensThickness } from '../../../store/slices/lens-thickness.slice';\nimport prescriptionSlice, { getPrescription } from '../../../store/slices/prescription.slice';\nimport userSlice, { getUser } from '../../../store/slices/user.slice';\nimport LensPairType from '../../../types/lens-pair.type';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport useLensThickness from '../useLensThickness';\n\ninterface Props {\n\n}\n\nconst LensThicknessSide : React.FC = () => {\n // VARIABLES\n const [B, E] = useBEM('lens-thickness-side');\n const history = useHistory();\n const { activePair, lensRecommendation } = useSelector(getLensConsultation);\n\n const { view } = useSelector(getlensThickness);\n const { tempPrescriptionData, isValidPrescription } = useSelector(getPrescription);\n const { prescription } = useSelector(getUser);\n const dispatch = useDispatch();\n const lensThicknessRules = LENS_THICKNESS_RULES;\n const { getRecommendedLensThickness } = useLensThickness();\n const { tempLensThickness } = useSelector(getlensThickness)\n const { t } = useTranslation(useSelector(getApp));\n\n\n // HOOKS\n\n // METHODS\n const gotoSummary = () => {\n if(view === 'prescription') {\n dispatch(lensThicknessSlice.actions.changeView('controls'));\n dispatch(userSlice.actions.savePrescriptionData(tempPrescriptionData)); \n recommendLensThickness(tempPrescriptionData); \n dispatch(prescriptionSlice.actions.resetData());\n return;\n }\n \n if(lensRecommendation)dispatch(userSlice.actions.saveLensRecommendationData(lensRecommendation));\n if(tempLensThickness)dispatch(userSlice.actions.saveLensThickness(tempLensThickness));\n \n history.push(routes.summary.path);\n }\n\n const changePair = (pair: LensPairType) => {\n if(!lensRecommendation || !lensRecommendation[pair]?.correct)return;\n dispatch(lensConsultationSlice.actions.changePair(pair))\n }\n\n const recommendLensThickness = (prescription: any) => {\n const sphere = prescription.values.sphere;\n const thickness = getRecommendedLensThickness({\n od: sphere.od,\n os: sphere.os\n }, lensThicknessRules)\n\n dispatch(lensThicknessSlice.actions.setLensThickness({\n pair1: thickness,\n pair2: thickness\n }));\n dispatch(userSlice.actions.saveLensThickness({\n pair1: thickness,\n pair2: thickness\n }));\n }\n\n const isPrescriptionComplete = () => {\n return prescription.values.sphere.od ? true : false\n }\n\n const enableSaveNextButton = () => {\n if(view === 'prescription') return isValidPrescription;\n return isPrescriptionComplete();\n }\n\n return (\n
    \n \n
    \n \n\n
    \n changePair(LensPairType.PAIR1)}/>\n \n changePair(LensPairType.PAIR2)}/>\n
    \n
    \n\n \n\n
    \n
    \n
    \n
    \n )\n}\n\nexport default LensThicknessSide;","import React, { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport Button from '../../components/ui/Button';\nimport lensThicknessSlice, { getlensThickness } from '../../store/slices/lens-thickness.slice';\nimport prescriptionSlice from '../../store/slices/prescription.slice';\nimport useBEM from '../../utils/hooks/useBEM';\nimport PrescriptionForm from '../prescription/components/PrescriptionForm';\nimport LensThicknessControl from './components/LensThicknessControl';\nimport LensThicknessSide from './components/LensThicknessSide';\n\ninterface Props {\n\n}\n\nconst LensThickness : React.FC = () => {\n // VARIABLES\n const [B, E] = useBEM('lens-thickness');\n const { view } = useSelector(getlensThickness);\n const dispatch = useDispatch();\n\n // HOOKS\n useEffect(() => {\n return () => {\n dispatch(lensThicknessSlice.actions.changeView('controls'));\n }\n }, [])\n\n // METHODS\n const back = () => {\n dispatch(lensThicknessSlice.actions.changeView('controls'));\n dispatch(prescriptionSlice.actions.resetData());\n }\n\n return (\n
    \n \n \n\n { view === \"controls\" && }\n \n { view === \"prescription\" && \n
    \n
    \n }\n \n\n
    \n )\n}\n\nexport default LensThickness;","import React from 'react';\nimport { backgroundPerRow, flexSpaceBetween, footerLogo, footerText, h3, roundCorner, summaryRow } from '../../../constants/email-css.constants';\nimport Icon from '../../ui/Icon';\ninterface Props {\n title: string,\n text: string,\n iconDisplay: boolean\n}\n\nconst Footer : React.FC = ({\n title,\n text,\n iconDisplay\n}) => {\n //VARIABLES\n //HOOKS\n\n //METHOD\n return (\n
    \n

    \n {title.charAt(0).toUpperCase() + title.slice(1)}\n

    \n {/*

    \n Lorem ipsum dolor sit amet, consectetur adipiscing elit. In ut erat et ex rutrum congue eu non metus. Donec congue ullamcorper nulla eget pellentesque. Aliquam condimentum libero in orci consequat aliquet.\n

    */}\n
    \n

    \n {text.charAt(0).toUpperCase() + text.slice(1)}\n

    \n {iconDisplay && (\n
    \n \n \n
    \n )} \n
    \n \"\"\n
    \n


    \n


    \n
    \n )\n}\nexport default Footer;","import React, { useEffect } from 'react';\nimport { h3, imageLogo, paragraph } from '../../../constants/email-css.constants';\ninterface Props {\n \n title: string\n description: string\n}\n\nconst Header : React.FC = ({\n title,\n description\n}) => {\n //VARIABLES\n\n //METHOD\n\n return (\n
    \n
    \n \"Essilor\n
    \n
    \n

    \n {title}\n

    \n

    {description}

    \n
    \n
    \n )\n}\nexport default Header;","import React, { useEffect } from 'react';\nimport { useSelector } from 'react-redux';\nimport { backgroundPerRow, flexSpaceBetween, icon, mainIcon, pairContainer, pairHeader, pairSpan, summaryBenefitContainer, summaryBenefitContainerLI, summaryProductTitle, summaryRow, summaryRowBlock, summaryRowPadding, summaryRowTitle, summaryRowTitleII, summaryRowTitleLabel } from '../../../constants/email-css.constants';\nimport isummaryDetails from '../../../interface/summary.interface';\nimport { getApp } from '../../../store/slices/app.slice';\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport Icon from '../../ui/Icon';\ninterface Props {\n data: isummaryDetails[] | any,\n pair: number\n}\n\nconst SummaryDetails : React.FC = ({\n data,\n pair\n}) => {\n //VARIABLES\n const { t } = useTranslation(useSelector(getApp));\n //HOOKS\n\n //METHOD\n const groupBy = (data: any[], type: number) =>{\n const newData = data.filter((\n filter) => \n parseInt(filter.type) === type )\n return newData;\n }\n return (\n
    \n {\n data && (\n \n )\n }\n \n {/* Products and Lenses */}\n {\n data.map( (data: any,i: number) =>(\n data && data !=undefined && (\n
    \n {/* Category title */}\n
    \n \n

    \n {t(data.title)} {t(data.sub)}\n

    \n
    \n {/* Selected products and benefits */}\n
    \n {\n data.products.map( (product: any, ii: number) => (\n
    \n
    \n

    \n {t(product.title)}\n

    \n
    \n {\n product.descriptions && (\n
      \n {\n groupBy(product.descriptions, 1).map((desc: any, iii: number) => (\n
    • \n \n {/* {desc.icon} */}\n \n\n
    • \n ))\n } \n
    \n )\n } \n {\n product.descriptions && product.descriptions.length > 3 && (\n
      \n {\n groupBy(product.descriptions, 2).map((desc: any, iii: number) => (\n
    • \n {/* {desc.icon} */}\n \n \n\n
    • \n ))\n } \n
    \n )\n } \n \n
    \n ))\n }\n
    \n
    \n )\n ))\n }\n { \n data[0] && ( \n
    \n \n \n { data[0].thickness}\n
    \n )\n }\n \n
    \n )\n}\nexport default SummaryDetails;","import React from 'react';\n\nimport { Provider } from 'react-redux';\nimport { backgroundPerRow, roundCorner } from '../../constants/email-css.constants';\nimport iAppStore from '../../store/interface/app-store.interface';\nimport store from '../../store/store';\nimport useTranslation from '../../utils/hooks/useTranslation';\nimport Footer from './components/Footer';\nimport Header from './components/Header';\nimport SummaryDetails from './components/SummaryDetails';\ninterface Props {\n summaryList1: any;\n summaryList2: any;\n summaryNotes: any;\n appStore: iAppStore\n}\n\nconst SummaryTemplate: React.FC = ({ summaryList1, summaryList2, appStore, summaryNotes }) => {\n //VARIABLES\n const { t } = useTranslation(appStore);\n //HOOKS\n //METHOD\n const onNull = (list: any) => {\n if (!list) return false;\n const arr = list.filter((el: any) => el !== null);\n // const condition = arr.length !== 0 && arr !== undefined \n // ? true : false;\n return arr && arr.length > 0;\n }\n return (\n \n
    \n


    \n


    \n {/* rounded corners */}\n
    \n \"\"\n
    \n
    \n
    \n {onNull(summaryList1) && }\n {onNull(summaryList2) && }\n
    \n
    \n
    \n
    \n )\n}\nexport default SummaryTemplate;","import iLensDemoProtect from \"../../interface/lens-demo-protect\";\n\n\nconst PROTECT_LENS_DEMO: iLensDemoProtect[] = [\n\n { id: 'lensTransitionGreen',url:'lens-transitions-green' },\n { id: 'lensTransitionAmber',url:'lens-transitions-amber' },\n { id: 'lensTransitionAmethyst',url:'lens-transitions-amethyst' },\n { id: 'lensTransitionBrown',url:'lens-transitions-brown' },\n { id: 'lensTransitionEmerald',url:'lens-transitions-emerald' },\n { id: 'lensTransitionGrey',url:'lens-transitions-grey' },\n { id: 'lensTransitionSapphire',url:'lens-transitions-sapphire' },\n \n // Experio polarized\n { id: 'lensPolarizedAmber',url: 'lens-polarized-amber' },\n { id: 'lensPolarizedBlueInk',url:'lens-polarized-blue-ink' },\n { id: 'lensPolarizedBluePurple',url:'lens-polarized-blue-purple' },\n { id: 'lensPolarizedBlueSky',url:'lens-polarized-blue-sky' },\n { id: 'lensPolarizedBrown',url:'lens-polarized-brown' },\n { id: 'lensPolarizedGrey',url:'lens-polarized-grey' },\n { id: 'lensPolarizedGreyGreen',url:'lens-polarized-grey-green'},\n { id: 'lensPolarizedHerbal',url:'lens-polarized-herbal' },\n { id: 'lensPolarizedViolet',url:'lens-polarized-violet' },\n \n { id: 'lensTintedBlack',url:'lens-tinted-black' },\n { id: 'lensTintedBlueInk',url:'lens-tinted-blue-ink' },\n { id: 'lensTintedBrown',url:'lens-tinted-brown' },\n { id: 'lensTintedBurgundy',url:'lens-tinted-burgundy' },\n { id: 'lensTintedGreyGreen',url:'lens-tinted-grey-green' },\n { id: 'lensTintedGrey',url:'lens-tinted-grey' },\n { id: 'lensTintedHerbal',url:'lens-tinted-herbal' },\n { id: 'lensTintedNewBrown',url:'lens-tinted-new-brown' },\n \n { id: 'lensMirrorBronzeShadow',url:'lens-mirror-bronze-shadow' },\n { id: 'lensMirrorBronze',url:'lens-mirror-bronze' },\n { id: 'lensMirrorCandy',url:'lens-mirror-candy' },\n { id: 'lensMirrorForestGreen',url:'lens-mirror-forest-green' },\n { id: 'lensMirrorGoldPink',url:'lens-mirror-gold-pink' },\n { id: 'lensMirrorGreenShadow',url:'lens-mirror-green-shadow' },\n { id: 'lensMirrorKaki',url:'lens-mirror-kaki' },\n { id: 'lensMirrorMauveSilver',url:'lens-mirror-mauve-silver' },\n { id: 'lensMirrorNewBlue',url:'lens-mirror-new-blue' },\n { id: 'lensMirrorNewSilver',url:'lens-mirror-new-silver' },\n { id: 'lensMirrorOceanBlue',url:'lens-mirror-ocean-blue' },\n { id: 'lensMirrorOrange',url:'lens-mirror-orange' },\n { id: 'lensMirrorParma',url:'lens-mirror-parma' },\n { id: 'lensMirrorPinkSilver',url:'lens-mirror-pink-silver' },\n { id: 'lensMirrorSilverShadow',url:'lens-mirror-silver-shadow' },\n { id: 'lensMirrorSilver',url:'lens-mirror-silver' },\n { id: 'lensMirrorSkyBlueSilver',url:'lens-mirror-sky-blue-silver' },\n { id: 'lensMirrorViolet',url:'lens-mirror-violet' },\n] \n\nexport default PROTECT_LENS_DEMO;","import summarySunfit from \"../interface/sunfit-summary\";\n\n\nconst XPERIO_SUNFIT_SUMMARY: summarySunfit = {\n\n title: \"Xperio®Sunfit\",\n descriptions:[\n {\n icon: \"uv-protection\",\n label: \"sun_exp_lensbenefitxperiosun1\",\n type: 1,\n },\n {\n icon: \"vision-stability\",\n label: \"sun_exp_lensbenefitxperiosun2\",\n type: 1\n },\n {\n icon: \"vision-comfort\",\n label: \"sun_exp_lensbenefitxperiosun3\",\n type: 1\n },\n {\n icon: \"glare-cut\",\n label: \"sun_exp_lensbenefitxperiosun4\",\n type: 2\n },\n {\n icon: \"picto-style\",\n label: \"sun_exp_lensbenefitxperiosun5\",\n type: 2\n \n }]\n}\n\n export default XPERIO_SUNFIT_SUMMARY;","import React, { useEffect, useState } from 'react';\nimport Icon from '../../../components/ui/Icon';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport isummaryDetails from '../../../interface/summary.interface';\nimport { getApp } from '../../../store/slices/app.slice';\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport { useDispatch, useSelector } from 'react-redux';\nimport lensConsultationSlice, { getLensConsultation } from '../../../store/slices/lens-consultation.slice';\nimport PROTECT_LENS_DEMO from '../../../constants/lens-demo/lens-protect-summary.constants';\nimport XPERIO_SUNFIT_SUMMARY from '../../../constants/xperio-sunfit-benefit.constants';\nimport useGoto from '../../../utils/hooks/useGoto';\nimport routes from '../../../constants/routes.constant';\nimport LensPairType from '../../../types/lens-pair.type';\n\ninterface Props {\n data: isummaryDetails[] | any,\n title?: string,\n pair: number\n}\n\nconst SummaryDetails : React.FC = ({\n data,\n title,\n pair\n}) => {\n // VARIABLES\n const [B, E] = useBEM('summary-details');\n const { t } = useTranslation(useSelector(getApp));\n const goto = useGoto()\n const [assetSource, setAssetSource] = useState(\"\");\n const [isColorSelected, setColorSelected] = useState(false);\n const { lensRecommendation, activePair } = useSelector(getLensConsultation);\n const appStore = useSelector(getApp);\n const { experience, accountDetails } = appStore;\n const [isSunfit, setSunfit] = useState(false);\n const dispatch = useDispatch();\n const isSlovakia = accountDetails?.shop.country === 'sk'\n // HOOKS\n\n useEffect(() => {\n if (!lensRecommendation) return;\n const active = lensRecommendation[activePair];\n\n if (\n !active?.protect ||\n !active?.protect.length ||\n !active?.protect[0].color\n ) {\n setColorSelected(false);\n return;\n }\n\n setColorSelected(true);\n const selectedColor = active?.protect[0].color;\n const idColor = selectedColor.id;\n const test = PROTECT_LENS_DEMO.find((demo) => demo.id == idColor)\n const colorUrl = test?.url;\n setAssetSource(colorUrl);\n\n }, [lensRecommendation])\n\n // METHODS\n const groupBy = (data: any[], type: number) =>{\n const newData = data.filter((\n filter) =>\n parseInt(filter.type) === type )\n return newData;\n }\n const validateExisting = (data: any, order: number) =>{\n if(data === undefined || data.products.length === 1) return '';\n return 'translate';\n\n\n }\n\n const isSunProtect = (id: any) => {\n if (id === 'protect' && experience === 'sun') {\n return true;\n } else { return false }\n }\n const modify = (pair: number, isLensThickness: boolean) => {\n dispatch(lensConsultationSlice.actions.changePair(pair == 1 ? LensPairType.PAIR1 : LensPairType.PAIR2))\n dispatch(lensConsultationSlice.actions.setIsLensThickness(isLensThickness))\n isLensThickness && dispatch(lensConsultationSlice.actions.setSliderPage(3))\n goto.route(routes.lensConsultation)\n }\n\n return (\n
    \n
    \n
    \n {data.map((data: any, i: number) => (\n data && data !== undefined && (\n
    \n
    \n \n modify(pair, false)} className={E('icons-container')}>\n {/* temporary hidden */}\n {/* {data.products.map((product:any)=>{\n if(product?.title?.toLowerCase().includes('transitions') && !isSlovakia) \n return (\n
    \n {t('vto_transitions_label')}\n \n
    \n )\n })} */}\n {/* {\n isSunExp ?\n : */}\n \n {/* } */}\n
    \n
    \n
    \n {data.products.map((product: any, ii: number) => (\n
    \n {isSunProtect(data.id) ? : }\n
    \n {product.descriptions && (\n
      \n {groupBy(isSunProtect(data.id) ? XPERIO_SUNFIT_SUMMARY.descriptions : product.descriptions, 1).map((desc: any, iii: number) => (\n
    • \n \n \n
    • \n ))}\n
    \n )}\n {(product.descriptions && (product.descriptions.length) > 3 || isSunProtect(data.id)) && (\n
      \n {groupBy(isSunProtect(data.id) ? XPERIO_SUNFIT_SUMMARY.descriptions : product.descriptions, 2).map((desc: any, iii: number) => (\n
    • \n \n \n
    • \n ))}\n
    \n )}\n
    \n
    \n ))}\n
    \n
    \n )\n ))\n }\n {data[0] && (\n
    \n
    \n \n modify(pair, true)}>\n \n \n
    \n {data[0].thickness}\n
    \n )}\n
    \n
    \n
    \n )\n}\n\nexport default SummaryDetails;\n","import { useSelector } from \"react-redux\";\nimport iLensRecommendationPair from \"../../interface/lens-recommendaiton-pair.interface\";\nimport iAppStore from \"../../store/interface/app-store.interface\";\nimport iProductCombi from \"../../store/interface/product-combi.interface\";\n\ntype hookType = {\n isAdvancePricing: boolean,\n getPriceCombination: (params: {\n correct: string,\n enhance: string,\n protect1: string,\n protect2: string,\n index: number,\n }) => iProductCombi,\n getPairPriceCombination: (pair: iLensRecommendationPair) => iProductCombi,\n computePrice: (combi: iProductCombi, discountPair: 'p1' | 'p2') => {\n total: number,\n discount: number,\n originalPrice: number\n },\n getAdvancePricingTotal: (recommendation: {\n pair1?: iLensRecommendationPair,\n pair2?: iLensRecommendationPair\n }) => {\n [key: string]: {\n total:number,\n discount:number,\n originalPrice:number\n }\n }\n}\n\nconst useAdvancePricing = (appStore: iAppStore): hookType => {\n const { \n accountDetails, \n productCombi, \n myCompannion,\n discountSettings\n } = appStore;\n\n const isAdvancePricing = () => {\n const isAdvance = accountDetails?.advance_pricing ? true : false;\n const isEssilorPrice = myCompannion.essilorRecommend ? true : false;\n return isAdvance && isEssilorPrice;\n }\n\n const getDiscount = (setting: 'p1' | 'p2', price: number) => {\n const settings = discountSettings.filter( x => x.value === 'p0')[0];\n const p = discountSettings.filter( x => x.value === setting)[0];\n \n if(settings.amountEnabled) return p.discountAmount;\n if(p.discountPercentage === 0)return 0;\n return price * (p.discountPercentage / 100);\n }\n\n const getPairPriceCombination = (pair: iLensRecommendationPair): iProductCombi => {\n const subProduct = pair?.correct.subProduct;\n let protect1 = '',protect2 = '';\n\n if(pair.protect && pair.protect.length){\n protect1 = pair?.protect[0].product?.id || '' ;\n protect2 = pair?.protect[1] ? (pair?.protect[1].product?.id || '') : ''; \n }\n\n const enhance = pair?.enhance ? (pair?.enhance.product?.id || '') : '';\n\n return getPriceCombination({\n correct: subProduct?.code || '',\n enhance,\n protect1,\n protect2,\n index: subProduct?.index as number\n })\n }\n\n const getAdvancePricingTotal = (recommendation: {\n pair1?: iLensRecommendationPair,\n pair2?: iLensRecommendationPair\n }): {\n [key: string]: {\n total:number,\n discount:number,\n originalPrice:number\n }\n } => {\n const summary = {\n pair1: {\n total:0,\n discount:0,\n originalPrice:0\n },\n pair2: {\n total:0,\n discount:0,\n originalPrice:0\n }\n }\n\n if(!recommendation?.pair1)return summary;\n\n const pair1 = getPairPriceCombination(recommendation?.pair1);\n summary.pair1 = computePrice(pair1, 'p1');\n\n if(recommendation?.pair2){\n const pair2 = getPairPriceCombination(recommendation?.pair2);\n summary.pair2 = computePrice(pair2, 'p2'); \n }\n\n return summary\n }\n\n const getPriceCombination = (params: {\n correct: string,\n enhance: string,\n protect1: string,\n protect2: string,\n index: number,\n }) => {\n const found = productCombi.filter( x => {\n return (\n x.correct_sub === params.correct &&\n x.enhance === params.enhance &&\n x.protect1 === params.protect1 &&\n x.protect2 === params.protect2 &&\n x.index === params.index \n )\n });\n return found[0];\n }\n\n const computePrice = (combi: iProductCombi, discountType: 'p1' | 'p2'): {\n total: number,\n discount: number,\n originalPrice: number\n } => {\n if(!combi)return {\n total: 0,\n discount: 0,\n originalPrice: 0\n }\n\n const {\n protect1_price,\n protect2_price,\n protectModifier,\n correctEnhanceModifier,\n price,\n flatFee\n } = combi;\n\n const protectModifierValue = parseFloat(protectModifier?.value || '0');\n let protect = (protect1_price + protect2_price);\n\n protect = protectModifier?.type === 'actual' ? \n (protect + protectModifierValue) : // if actual addition\n (protect * (protectModifierValue || 1)) // else multiply\n \n const correctEnhanceModifierValue = parseFloat(correctEnhanceModifier?.value || '0');\n const correctEnhance = correctEnhanceModifier?.type === 'actual' ? \n (price + correctEnhanceModifierValue) : // if actual addition\n (price * (correctEnhanceModifierValue || 1)) // else multiply\n \n const flat = parseFloat(flatFee?.value || '0');\n\n const originalPrice = (protect + correctEnhance + flat);\n const discount = getDiscount(discountType, originalPrice) as number;\n const discountedPrice = originalPrice - discount;\n\n return {\n total: discountedPrice,\n discount,\n originalPrice,\n };\n }\n\n return {\n isAdvancePricing: isAdvancePricing(),\n getPriceCombination,\n getPairPriceCombination,\n computePrice,\n getAdvancePricingTotal\n }\n\n}\n\nexport default useAdvancePricing;","import React, { useEffect, useState } from 'react';\nimport Icon from '../../../components/ui/Icon';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport { useDispatch, useSelector } from 'react-redux';\nimport lensConsultationSlice, { getLensConsultation } from '../../../store/slices/lens-consultation.slice';\nimport LensPairType from '../../../types/lens-pair.type';\nimport { getSummary } from '../../../store/slices/summary.slice';\nimport { HashLink } from 'react-router-hash-link';\nimport clearLens from '../../../assets/images/prescription/Clear_Lens.png';\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport { getApp } from '../../../store/slices/app.slice';\nimport Modal from '../../../components/Modal';\nimport iPairBreakdown from '../../../interface/pair-breakdown.interface';\nimport useAdvancePricing from '../../advance-price-setting/useAdvancePricing';\nimport ExperienceType from '../../../types/experience.type';\n\ninterface Props {\n isShowPriceBreakDown: boolean,\n priceOn: boolean,\n showPriceBreakDown: (show: boolean) => void\n}\n\nconst SummarySide: React.FC = ({\n isShowPriceBreakDown,\n priceOn,\n showPriceBreakDown\n}) => {\n // VARIABLES\n const [B, E] = useBEM('summary-side');\n const dispatch = useDispatch();\n const appStore = useSelector(getApp);\n const { activePair, breakdown } = useSelector(getLensConsultation);\n const { summaryList1, summaryList2 } = useSelector(getSummary);\n const { lensRecommendation } = useSelector(getLensConsultation);\n const { t } = useTranslation(appStore);\n const { myCompannion, experience } = appStore;\n const { summaryTotal, currency, pair1, pair2 } = breakdown\n const { tempDiscountSettings } = myCompannion\n const { amountEnabled } = tempDiscountSettings[0];\n const [advancePrice, setAdvancePrice] = useState();\n const {\n isAdvancePricing,\n getAdvancePricingTotal\n } = useAdvancePricing(appStore);\n\n\n useEffect(() => {\n if (!lensRecommendation || !isAdvancePricing) return;\n setAdvancePrice(getAdvancePricingTotal(lensRecommendation));\n }, [])\n // METHODS\n\n const changePair = (pair: LensPairType) => {\n dispatch(lensConsultationSlice.actions.changePair(pair));\n }\n\n const showPricingModal = () => {\n showPriceBreakDown(true)\n }\n\n const renderPackageBreakdown = (show: boolean) => {\n return (\n showPriceBreakDown(false)}>\n
    \n

    {t('delivery_del_total')}

    \n {renderPackage()}\n
    \n
    \n )\n }\n\n const renderPackage = () => {\n const tableData = [\n {\n class: 'pp-pair1',\n icon: 'lens-pair-1',\n label: t('delivery_del_pair_1'),\n design: pair1.categoryLens,\n total: !advancePrice ? pair1.price : advancePrice.pair1.originalPrice,\n enabled: pair1.enabled,\n hasNocombi: pair1.hasNocombi\n },\n {\n class: 'pp-pair2',\n icon: 'lens-pair-1',\n label: t('delivery_del_3_pair_2'),\n design: pair2.categoryLens,\n total: !advancePrice ? pair2.price : advancePrice.pair2.originalPrice,\n enabled: pair2.enabled,\n hasNocombi: pair2.hasNocombi\n }\n ]\n\n const misc = () => {\n return (\n \n \n \n {t('price_bdown_pair_1_disc')}\n \n \n\n {\n !advancePrice ?\n pair1.discount.toFixed(2).replace('.00','') :\n advancePrice.pair1.discount.toFixed(1).replace('.0','')\n }\n \n \n {pair2.enabled && \n \n {t('price_bdown_pair_2_disc')}\n \n \n {\n !advancePrice ?\n pair2.discount.toFixed(2).replace('.00','') :\n advancePrice.pair2.discount.toFixed(1).replace('.0','')\n }\n \n }\n \n \n {t('delivery_del_total')}\n \n \n {\n !advancePrice ?\n summaryTotal.toFixed(2).replace('.00','') :\n (advancePrice.pair1.total + advancePrice.pair2.total).toFixed(2).replace('.00','')\n }\n \n \n \n )\n }\n\n return (\n \n \n \n {\n tableData.map((td, i) => {\n return td.enabled && \n \n \n \n \n \n })\n }\n {misc()}\n \n
    {td.label}{td.design}{td.hasNocombi ? '-' : td.total}
    \n
    \n )\n\n }\n\n const renderManualBreakdown = (show: boolean) => {\n const hasPair2 = pair2.enabled\n\n return (\n showPriceBreakDown(false)}>\n
    \n
    \n \n

    {t('delivery_del__pair_1')}

    \n

    {pair1.categoryLens}

    \n {renderBreakdown(pair1)}\n
    \n {\n hasPair2 &&\n
    \n \n

    {t('delivery_del__pair_2')}

    \n

    {pair2.categoryLens}

    \n {renderBreakdown(pair2)}\n
    \n }\n
    \n
    \n )\n }\n\n const renderBreakdown = (pair: iPairBreakdown) => {\n const tableData = [\n {\n icon: 'correct',\n label: 'my_practice_my_correct',\n value: `${pair.correctPrice} ${currency}`\n },\n ...(\n !isSunExp() ?\n [{\n icon: 'protect',\n label: 'my_practice_my_protect',\n value: `${pair.protectPrice} ${currency}`\n },\n {\n icon: 'protect',\n label: 'my_practice_my_protect',\n cond: true,\n value: `${pair.protect2Price} ${currency}`\n },\n {\n icon: 'enhance',\n label: 'my_practice_my_enhance',\n value: `${pair.enhancePrice} ${currency}`\n }] : []\n ),\n {\n icon: 'lens-thickness',\n label: 'price_bdown_thick',\n value: `${pair.lensThickness} ${currency}`\n },\n {\n icon: 'percentage',\n label: 'price_bdown_disc',\n value: `${amountEnabled ? pair.discount : pair.discountPercentage} ${amountEnabled ? currency : '%'}`\n }\n ]\n\n return \n \n \n {\n tableData.map((td) => {\n return \n \n {\n td.cond && \n }\n {\n !td.cond && \n }\n \n \n })\n }\n \n
    {td.icon === 'percentage' ?\n {!amountEnabled && '%'}\n : }{t(td.label).toUpperCase()} 2{t(td.label).toUpperCase()}{td.value}
    \n
    \n
    \n

    {t('delivery_del_total')}

    \n

    {`${pair.summaryPrice.toFixed(2).replace('.00','')} ${currency}`}

    \n
    \n
    \n
    \n }\n\n const isSunExp = () => {\n return experience === ExperienceType.SUN;\n }\n\n return (\n
    \n
    \n\n {\n !isSunExp() &&\n
    \n \n changePair(LensPairType.PAIR1)} />\n \n \n \n changePair(LensPairType.PAIR2)} />\n \n
    \n }\n \"\"\n
    \n {priceOn &&\n (!isAdvancePricing ?\n
    \n {`${summaryTotal.toFixed(2).replace('.00','')} ${currency}`}\n
    :\n\n // ADVANCE PRICING\n
    \n {`${(advancePrice.pair1.total + advancePrice.pair2.total).toFixed(2).replace('.00','')} ${currency}`}\n
    \n )\n }\n {myCompannion.essilorRecommend ? renderPackageBreakdown(isShowPriceBreakDown) : renderManualBreakdown(isShowPriceBreakDown)}\n
    \n )\n}\n\nexport default SummarySide;\n","import React, { useEffect, useState } from 'react';\nimport useBEM from '../../utils/hooks/useBEM';\n\ninterface Props {\n position?: 'top' | 'bottom' | 'left' | 'right' | 'bottom-left',\n show?: boolean,\n backgroundColor?: string[],\n onClick?: () => void\n}\n\nconst GenericToolTip : React.FC = ({\n children,\n position = 'right',\n show = true,\n backgroundColor = ['#000'],\n onClick\n}) => {\n // VARIABLES\n const [B, E] = useBEM('generic-tool-tip');\n const [animate, setAnimate] = useState(false);\n const [ localShow, setLocalShow ] = useState(false);\n\n // HOOKS\n useEffect(() => {\n const delay1 = show ? 0 : 100;\n const delay2 = !show ? 0 : 100;\n\n setTimeout(() => setLocalShow(show), delay1);\n setTimeout(() => setAnimate(show), delay2);\n\n }, [show])\n\n // METHODS\n const mainModifier = () => {\n const mods = [\n position,\n localShow ? 'show' : '',\n animate ? 'animate' : ''\n ]\n if(backgroundColor.length > 1) {\n mods.push('gradient');\n }\n return mods;\n }\n\n const onClickHandler = () => {\n if (onClick) onClick()\n }\n\n return (\n onClickHandler()}\n style={{\n \"--app-tooltip-bg\": backgroundColor[0],\n \"--app-tooltip-bg-gradient\": backgroundColor[1] || backgroundColor[0],\n } as React.CSSProperties}\n >\n
    \n {children}\n
    \n
    \n )\n}\n\nexport default GenericToolTip;\n","import { useEffect } from \"react\";\n\nconst useOnClickOutside = (ref: any, handler: (value: boolean) => void) => {\n useEffect(() => {\n const listener = (event: any) => {\n // Do nothing if clicking ref's element or descendent elements\n if (!ref.current || ref.current.contains(event.target)) {\n return;\n }\n handler(event);\n };\n document.addEventListener(\"mousedown\", listener);\n document.addEventListener(\"touchstart\", listener);\n return () => {\n document.removeEventListener(\"mousedown\", listener);\n document.removeEventListener(\"touchstart\", listener);\n };\n }, [ref, handler]);\n}\nexport default useOnClickOutside;","import React, { JSXElementConstructor, useEffect, useRef, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useHistory } from 'react-router';\nimport SummaryTemplate from '../../components/email-template/SummaryTemplate';\nimport Modal from '../../components/Modal';\nimport Button from '../../components/ui/Button';\nimport Icon from '../../components/ui/Icon';\nimport routes from '../../constants/routes.constant';\nimport iLensRecommendationPair from '../../interface/lens-recommendaiton-pair.interface';\nimport appSlice, { getApp } from '../../store/slices/app.slice';\nimport lensConsultationSlice, { getLensConsultation } from '../../store/slices/lens-consultation.slice';\nimport summarySlice, { getSummary } from '../../store/slices/summary.slice';\nimport userSlice, { getUser } from '../../store/slices/user.slice';\nimport LensPairType from '../../types/lens-pair.type';\nimport useBEM from '../../utils/hooks/useBEM';\nimport useGoogleAnalytics from '../../utils/hooks/useGoogleAnalytics';\nimport useTranslation from '../../utils/hooks/useTranslation';\nimport Utils from '../../utils/Utils';\nimport { saveToPdf, sendMail, SummaryExportType } from '../../utils/misc';\nimport SummaryDetails from './components/SummaryDetails';\nimport SummarySide from './components/SummarySide';\nimport ExperienceType from '../../types/experience.type';\nimport SvgIcon from '../../components/ui/svg-icon/SvgIcon';\nimport useAdvancePricing from '../advance-price-setting/useAdvancePricing';\nimport GenericToolTip from '../../components/ui/GenericToolTip';\nimport useGoto from '../../utils/hooks/useGoto';\nimport { $CombinedState } from 'redux';\nimport useOnClickOutside from '../../utils/hooks/useOnClickOutside';\nimport useDisableCountry from '../../utils/hooks/useDisableCountry';\n\ninterface Props {\n\n}\n\n\nconst Summary: React.FC = () => {\n // VARIABLES\n const [B, E] = useBEM('summary');\n const goto = useGoto()\n const [heightRef, setHeightRef] = useState(0)\n const [scrollVisible, setScrollVisible] = useState(\"\")\n const divRef = useRef(null)\n const [addOnHover, setAddOnHover] = useState(false);\n const [addOnClick, setAddOnClick] = useState(false);\n const [discountHover, setDiscountHover] = useState(false);\n const [discountClick, setDiscountClick] = useState(false);\n const [showToolTip, setShowToolTip] = useState(false);\n const [priceOn, setPriceOn] = useState(false);\n const { sessionStart, isValidated } = useSelector(getLensConsultation);\n const [isValidate, setIsValidate] = useState(isValidated);\n const [isShowExportModal, setShowExportModal] = useState(false);\n const history = useHistory();\n const dispatch = useDispatch();\n const ga = useGoogleAnalytics();\n const { getDateTimeDifference } = Utils();\n const timestamp = useRef();\n const user = useSelector(getUser);\n const currentLensConsultation = useSelector(getLensConsultation);\n const { summaryList1, summaryList2, summaryNotes } = useSelector(getSummary);\n const summaryContainer = useRef(null);\n const { token, globalInformation } = useSelector(getApp);\n const appStore = useSelector(getApp);\n const { t } = useTranslation(appStore);\n const { id, lensConsultation } = user;\n const [notes, setNotes] = useState(summaryNotes);\n const {\n isAdvancePricing,\n getAdvancePricingTotal\n } = useAdvancePricing(appStore);\n const {\n lensRecommendation,\n breakdown\n } = currentLensConsultation;\n const {\n accountDetails,\n experience,\n } = appStore;\n const [advancePrice, setAdvancePrice] = useState();\n const [isShowPriceBreakDown, showPriceBreakDown] = useState(false);\n const country = accountDetails?.shop.country;\n const [qrCountry, setQRCountry] = useState('');\n const [hide] = useDisableCountry(['in', 'in2', 'gr']) \n\n // HOOKS\n useOnClickOutside(divRef, () => setShowToolTip(false))\n useEffect(() => {\n if (!lensRecommendation || !isAdvancePricing) return;\n setAdvancePrice(getAdvancePricingTotal(lensRecommendation));\n }, [])\n\n useEffect(() => {\n timestamp.current = new Date();\n return () => {\n saveSummarySessionDuration();\n saveLensConsultationSessionDuration();\n getSummaryDetails();\n }\n }, [])\n\n useEffect(() => {\n if (country) {\n if (country.length > 2) return setQRCountry(country.slice(0, -1));\n return setQRCountry(country);\n }\n }, [])\n\n // METHODS\n const getSummaryDetails = () => {\n if (lensRecommendation?.pair1 !== undefined) {\n dispatch(summarySlice.actions.setPairDetails({\n brand: lensRecommendation?.pair1,\n pair: LensPairType.PAIR1\n }))\n dispatch(userSlice.actions.saveSummary1(summaryList1));\n }\n if (lensRecommendation?.pair2 !== undefined) {\n dispatch(summarySlice.actions.setPairDetails({\n brand: lensRecommendation?.pair2,\n pair: LensPairType.PAIR2\n }))\n dispatch(userSlice.actions.saveSummary2(summaryList2));\n }\n\n }\n\n const modify = () => {\n history.push(routes.lensConsultation.path);\n }\n\n\n const saveSummarySessionDuration = () => {\n if (!timestamp.current) return;\n const timediff = getDateTimeDifference(timestamp.current, new Date());\n ga.event({\n category: 'Lens Consulation',\n action: 'Summary',\n label: timediff\n });\n timestamp.current = undefined;\n }\n\n const saveLensConsultationSessionDuration = () => {\n if (!sessionStart) return;\n const timediff = getDateTimeDifference(new Date(sessionStart), new Date());\n ga.event({\n category: 'Lens Consulation',\n action: 'Completion',\n label: timediff\n });\n dispatch(lensConsultationSlice.actions.sessionStart(undefined));\n }\n\n const validate = () => {\n setIsValidate(!isValidate);\n dispatch(lensConsultationSlice.actions.validate(!isValidate));\n dispatch(userSlice.actions.savePrefilledData({ ...currentLensConsultation, isValidated: !isValidate }));\n dispatch(userSlice.actions.saveSummary1(summaryList1));\n dispatch(userSlice.actions.saveSummary2(summaryList2));\n\n if (!isValidate && user.sessionStart) {\n const products = getFinalProducts(LensPairType.PAIR1, lensRecommendation);\n const action = `Engagement - ${products.join(', ')}`;\n const timediff = getDateTimeDifference(new Date(user.sessionStart), new Date());\n\n ga.event({\n category: 'Patient Journey ',\n action,\n label: timediff\n });\n }\n\n }\n\n const getFinalProducts = (pairType: LensPairType, data: any) => {\n const pair: iLensRecommendationPair = data[pairType];\n const products: string[] = []\n if (!pair) return products;\n\n const correct = pair.correct;\n const protect = pair.protect;\n const enhance = pair.enhance;\n\n if (correct && correct.product) products.push(correct.product.label);\n if (protect && protect.length > 0) {\n products.push(protect.map(x => x.product?.label).join(', '));\n }\n if (enhance && enhance.product) products.push(enhance.product.label);\n return products;\n }\n\n const showExportModal = () => {\n setShowExportModal(true);\n\n ga.event({\n category: 'Lens Consultation - Summary',\n action: 'Button Click',\n label: 'Export'\n });\n\n setScrollVisible(\"-visible\")\n\n saveSummarySessionDuration();\n }\n\n const getPdfHeight = (scrollHeight: number) => {\n if (scrollHeight > heightRef) setHeightRef(scrollHeight)\n return heightRef\n }\n\n const exportSummary = (type: string) => {\n ga.event({\n category: 'Lens Consultation - Export',\n action: 'Button Click',\n label: type\n });\n\n dispatch(summarySlice.actions.saveSummaryNotes(notes || ''));\n\n takeExportSummaryAction(type);\n saveLensConsultationSessionDuration();\n }\n\n const closeExportModal = () => {\n setShowExportModal(false)\n setScrollVisible(\"\")\n }\n\n const takeExportSummaryAction = (type: string) => {\n switch (type) {\n case SummaryExportType.QRCODE: // qr code\n break;\n case SummaryExportType.PRINT:\n\n saveToPdf({\n inputDom: summaryContainer.current,\n pdfName: `${id}_lens_consultation_summary_${Date.now()}.pdf`,\n pageOptions: { containerWidth: !onNull(summaryList2) ? '1000px' : '1800px' }\n })\n\n break;\n case SummaryExportType.EMAIL:\n sendMail(globalInformation.email, `Lens Consultation Summary for ${id},`, token ?? '', )\n break;\n default: return;\n }\n }\n\n const onNull = (list: any) => {\n if (!list) return false;\n const arr = list.filter((el: any) => el != null);\n return arr.length > 0;\n }\n\n const handleChangetext = (event: any) => {\n setNotes(event.target.value);\n }\n\n const isSunXP = () => experience === ExperienceType.SUN;\n\n // Using Validate for now:\n // const save = () => {\n // goto.route(routes.lensProposalBuilder)\n // }\n\n const addOnToolTip = () => {\n return (\n
    \n \n
    \n
    \n {addOnClick ?\n
    { setAddOnClick(!addOnClick) }}>\n {`Add-on (${t('lens_thickness_lt_coming_soon')})`}\n \n
    \n :\n
    { setAddOnClick(!addOnClick) }} onMouseEnter={() => { setAddOnHover(true) }} onMouseLeave={() => { setAddOnHover(false) }}>\n {`Add-on (${t('lens_thickness_lt_coming_soon')})`}\n \n
    }\n {discountClick ?\n
    { setDiscountClick(!discountClick) }}>\n {`Discount (${t('lens_thickness_lt_coming_soon')})`}\n \n
    :\n
    { setDiscountClick(!discountClick) }} onMouseEnter={() => { setDiscountHover(true) }} onMouseLeave={() => { setDiscountHover(false) }}>\n {`Discount (${t('lens_thickness_lt_coming_soon')})`}\n \n
    }\n
    \n\n \n
    \n )\n }\n\n const isQRCodeExists = (country: string) => {\n try {\n return require(`../../assets/images/qrcode-${country}.png`);\n } catch (err) {\n return null;\n }\n }\n\n const qrCodeUrl = () => {\n if (!qrCountry) return 'qrcode-sample';\n return isQRCodeExists(qrCountry) ? `qrcode-${qrCountry}` : 'qrcode-sample';\n }\n\n return (\n
    \n showPriceBreakDown(show)}\n isShowPriceBreakDown={isShowPriceBreakDown}\n />\n
    \n
    \n { setShowToolTip(true) }}>\n \n {addOnToolTip()}\n \n {\n !hide && (\n setPriceOn(!priceOn)} \n />\n )\n }\n {\n isSunXP() && priceOn &&\n showPriceBreakDown(true)}\n />\n }\n {\n !isValidate &&\n <>\n \n \n }\n\n {\n isValidate &&\n <>\n
    \n
    \n
    \n {onNull(summaryList1) && }\n {onNull(summaryList2) && }\n
    \n \n
    \n {/* \"Co-Brand\"\n
    */}\n \n
    \n
    \n
    \n
    \n
    \n
    \n\n closeExportModal()}>\n
    \n

    {t('summary_sum_export')}

    \n
    \n exportSummary(SummaryExportType.PRINT)}\n />\n exportSummary(SummaryExportType.EMAIL)}\n disabled={globalInformation.email === ''}\n />\n
    \n
    \n
    \n
    \n )\n}\n\nexport default Summary;\n","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport Icon from '../../../components/ui/Icon';\nimport { getApp } from '../../../store/slices/app.slice';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport useDisableCountry from '../../../utils/hooks/useDisableCountry';\n\ninterface Props {\n price: string,\n name?: string | null,\n selected: boolean,\n categories: Array,\n isDisabled: boolean,\n label: string\n}\n\nconst PackageProduct : React.FC = ({\n price,\n name,\n selected,\n categories,\n isDisabled,\n label\n}) => {\n // VARIABLES\n const [B, E] = useBEM('package-product');\n const {t} = useTranslation(useSelector(getApp));\n const [hide] = useDisableCountry(['gr'])\n\n // HOOKS\n\n // METHODS\n\n return (\n
    \n \n {\n !isDisabled ? (\n
    \n {\n !hide && (\n

    \n {price}\n {t(label)}\n

    \n )\n } \n

    {name}

    \n\n { selected && }\n { !selected &&
    }\n
    \n ) : (\n
    \n

    Not available

    \n
    \n )\n }\n \n\n
      \n {\n categories.map((i:any, k:any)=>{\n return (\n
    • \n \n \n
    • \n )\n })\n\n }\n
    \n\n {/* * Le verre */}\n
    \n )\n}\n\nexport default PackageProduct;","import React, { useEffect, useState } from 'react';\nimport useBEM from '../utils/hooks/useBEM';\nimport Utils from '../utils/Utils';\nimport eyeGif from './../assets/gif/eye.gif';\nimport eyeSVG from './../assets/svg/eye.svg';\n\n\ninterface Props {\n\n}\n\nconst BlinkEye : React.FC = () => {\n // VARIABLES\n const [B, E] = useBEM('blink-eye');\n const [onHoverEye, setOnHoverEye] = useState(false);\n const {downloadAsset} = Utils();\n const [gifSource, setGifSource] = useState();\n const [svgSource, setSvgSource] = useState();\n\n\n // HOOKS\n useEffect(() => {\n downloadAsset(eyeGif).then( b => setGifSource(b))\n downloadAsset(eyeSVG).then( b => setSvgSource(b))\n }, [])\n\n // METHODS\n const onHoverHandler = (isHover: boolean) => {\n setTimeout(() => {\n setOnHoverEye(isHover);\n }, isHover ? 0 : 250);\n }\n\n return (\n
    onHoverHandler(true)}\n onMouseLeave={() => onHoverHandler(false)}\n >\n {/* { svgSource && \"\"/ } */}\n\n {\n gifSource &&\n \"\"/\n }\n
    \n )\n}\n\nexport default BlinkEye;","import React from 'react';\nimport useBEM from '../utils/hooks/useBEM';\nimport Spinner from './ui/Spinner';\nimport ReactDOM from 'react-dom';\n\ninterface Props {\n show: boolean,\n text?: string,\n textOnly?: boolean\n}\n\nconst Loading : React.FC = ({\n text,\n textOnly,\n show\n}) => {\n // VARIABLES\n const [B, E] = useBEM('loading');\n const portal: any = document.getElementById(\"portal\");\n\n // HOOKS\n\n // METHODS\n\n return ReactDOM.createPortal(\n
    \n {\n !textOnly &&\n \n }\n \n\n {\n text &&\n

    {text}

    \n }\n \n
    , portal\n )\n}\n\nexport default Loading;","import React, { useEffect, useRef, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useHistory } from 'react-router';\nimport Button from '../../components/ui/Button';\nimport routes from '../../constants/routes.constant';\nimport useBEM from '../../utils/hooks/useBEM';\nimport PackageProduct from './components/PackageProduct';\nimport packageOfferSlice, { getPackageOffer } from './../../store/slices/package-offer.slice';\nimport lensConsultationSlice, { getLensConsultation } from '../../store/slices/lens-consultation.slice';\nimport { fetchBrandDetailsViaProductId, fetchProductDetailsViaId, fetchSubProductDetailsViaSubProductId } from '../../utils/misc';\nimport userSlice from '../../store/slices/user.slice';\nimport LensPairType from '../../types/lens-pair.type';\nimport iPackages from '../../interface/packages.interface';\nimport useGoogleAnalytics from '../../utils/hooks/useGoogleAnalytics';\nimport useLensConsultation from '../lens-consultation/useLensConsultation';\nimport LensFamilyType from '../../types/lens-family.type';\nimport productsSlice, { getProducts } from '../../store/slices/products.slice';\nimport productDemoSlice from '../../store/slices/products-demo.slice';\nimport useGoto from '../../utils/hooks/useGoto';\nimport useTranslation from '../../utils/hooks/useTranslation';\nimport { getApp } from '../../store/slices/app.slice';\nimport BlinkEye from '../../components/bink-eye';\nimport Loading from '../../components/Loading';\nimport usePricing from '../../utils/hooks/usePricing';\nimport useAdvancePricing from '../advance-price-setting/useAdvancePricing';\n\ninterface Props {\n\n}\n\nconst PackageOffer : React.FC = () => {\n // VARIABLES\n const [B, E] = useBEM('package-offer');\n const history = useHistory();\n const [selectedPackage, setSelectedPackage] = useState()\n const { data } = useSelector(getPackageOffer); \n const { lensRecommendation, activePair } = useSelector(getLensConsultation); \n const dispatch = useDispatch();\n const currentLensConsultation = useSelector(getLensConsultation);\n const { temporaryProductList } = useSelector(getProducts);\n const [isPair1Active, setPair1Active] = useState()\n const ga = useGoogleAnalytics();\n const { getProductById } = useLensConsultation();\n const goto = useGoto();\n const isDemoClick = useRef();\n const [packageCount, setPackageCount] = useState(0);\n const appStore = useSelector(getApp);\n const { t } = useTranslation(appStore);\n const [loading, setLoading] = useState(false);\n const { getPackageOfferPrice, getDiscount, getCurrency } = usePricing();\n const { isAdvancePricing, getPriceCombination, computePrice} = useAdvancePricing(appStore);\n\n // HOOKS\n useEffect(()=>{\n setLoading(true)\n prefilledDataInPackageOffer()\n },[lensRecommendation, temporaryProductList]) \n\n useEffect(()=>{\n //preselect if there is disabled item\n if(data[1].isDisabled || data[2].isDisabled){\n setSelectedPackage(data[0])\n }\n\n setPackageCount(data.filter( p => !p.isDisabled).length)\n \n },[data]) \n\n // METHODS\n const prefilledDataInPackageOffer = () => {\n setTimeout(() => {\n setLoading(false)\n\n //Prefilled data based on Lens Consultation Products\n const { productDowngrade, brandDowngrade } = fetchDowngrade(lensRecommendation, activePair)\n setPair1Active(activePair === 'pair1')\n dispatch(packageOfferSlice.actions.setPackageOfferData({\n lensRecommendation: lensRecommendation,\n activePair: activePair,\n productDowngrade: productDowngrade,\n brandDowngrade: brandDowngrade,\n temporaryProductList: temporaryProductList,\n getPackageOfferPrice: getPackageOfferPrice,\n getDiscount: getDiscount,\n getCurrency: getCurrency,\n isAdvancePricing,\n getAdvancePrice\n }))\n \n }, 2000);\n }\n const getAdvancePrice = (params: {\n correct: string,\n enhance: string,\n protect1: string,\n protect2: string,\n index: number,\n }, pair: 'p1' | 'p2') => {\n const combi = getPriceCombination(params);\n const price = computePrice(combi, pair);\n return `${price.total} ${getCurrency()}`;\n }\n\n const back = () => {\n dispatch(lensConsultationSlice.actions.changePair(isPair1Active ? LensPairType.PAIR1 : LensPairType.PAIR2));\n history.push(routes.lensConsultation.path);\n }\n\n const fetchDowngrade = (lr:any, ap:any) => {\n const { pair1, pair2 } = lr\n const pair = ap === 'pair1' ? pair1 : pair2\n const downgrade = pair.correct.product.downgrade && pair.correct.product.downgrade.length > 0 ? pair.correct.product.downgrade : false\n\n if(downgrade){\n const downgrade1 = fetchProductDetailsViaId(downgrade[0], temporaryProductList)\n const downgrade2 = fetchProductDetailsViaId(downgrade[1], temporaryProductList)\n const downgrade3 = fetchProductDetailsViaId(downgrade[2], temporaryProductList)\n\n const downgrade1_brand = fetchBrandDetailsViaProductId(downgrade[0], temporaryProductList)\n const downgrade2_brand = fetchBrandDetailsViaProductId(downgrade[1], temporaryProductList)\n const downgrade3_brand = fetchBrandDetailsViaProductId(downgrade[2], temporaryProductList)\n\n return {\n productDowngrade: [downgrade1,downgrade2,downgrade3],\n brandDowngrade: [downgrade1_brand, downgrade2_brand, downgrade3_brand]\n }\n }\n\n return {\n productDowngrade: [],\n brandDowngrade: [],\n }\n }\n\n const onSave = () => {\n //Prefilled data in Lens Consultation\n const recom = prefilledDataInLC()\n\n const temp = {\n ...currentLensConsultation,\n lensRecommendation: recom\n }\n\n dispatch(userSlice.actions.savePrefilledData(temp)); \n dispatch(lensConsultationSlice.actions.setPrefilledDataFromNeedExplorer(recom));\n dispatch(lensConsultationSlice.actions.changePair(isPair1Active ? LensPairType.PAIR1 : LensPairType.PAIR2));\n\n history.push(routes.lensConsultation.path);\n }\n\n const prefilledDataInLC = () => {\n const { categories, product } = selectedPackage\n const { value } = categories[0]\n\n const protect = isPair1Active ? \n currentLensConsultation.lensRecommendation?.pair1?.protect :\n currentLensConsultation.lensRecommendation?.pair2?.protect\n\n const enhance = isPair1Active ? \n currentLensConsultation.lensRecommendation?.pair1?.enhance :\n currentLensConsultation.lensRecommendation?.pair2?.enhance\n\n const pair = {\n correct: {\n brand: fetchBrandDetailsViaProductId(product.id, temporaryProductList),\n product: fetchProductDetailsViaId(product.id, temporaryProductList),\n subProduct: fetchSubProductDetailsViaSubProductId(value, temporaryProductList)\n },\n protect: protect,\n enhance: enhance\n }\n\n return {\n pair1: isPair1Active ? pair : currentLensConsultation.lensRecommendation?.pair1,\n pair2: isPair1Active ? currentLensConsultation.lensRecommendation?.pair2 : pair\n }\n }\n\n const isSaveButtonDisabled = () => {\n return selectedPackage === undefined\n }\n\n const selectPackage = (item: iPackages) => {\n if(isDemoClick.current){\n isDemoClick.current = false;\n return;\n }\n\n if(item.isDisabled)return;\n setSelectedPackage(item);\n ga.event({\n category: 'Lens Consultation - Package',\n action: 'Button Click',\n label: t(item.label, 'enUS')\n });\n }\n\n\n const getPackageDemo = (obj: any) => {\n let correct = getProductById({\n id: obj.product.id,\n brandId: obj.product.brandId,\n family: LensFamilyType.CORRECT,\n list: temporaryProductList\n });\n correct = correct?.demo && correct?.demo.length > 0 ? correct : undefined;\n\n let protect = getProductById({\n id: obj.categories[1].value,\n family: LensFamilyType.PROTECT,\n list: temporaryProductList\n });\n protect = protect?.demo && protect?.demo.length > 0 ? protect : undefined;\n\n let enhance = getProductById({\n id: obj.categories[2].value,\n family: LensFamilyType.ENHANCE,\n list: temporaryProductList\n });\n enhance = enhance?.demo && enhance?.demo.length > 0 ? enhance : undefined;\n\n let initialDemo: any;\n if(correct)initialDemo = { family: LensFamilyType.CORRECT, product: correct };\n if(protect && !correct)initialDemo = { family: LensFamilyType.PROTECT, product: protect };\n if(enhance && !correct && !protect)initialDemo = { family: LensFamilyType.ENHANCE, product: enhance };\n\n return {\n data: {\n correct,\n protect,\n enhance\n },\n initial: initialDemo\n }\n }\n\n\n const demo = (obj: any) => {\n isDemoClick.current = true;\n const packageDemo = getPackageDemo(obj);\n if(!packageDemo.initial)return;\n dispatch(productsSlice.actions.selectProductTodemo(packageDemo.initial.product))\n dispatch(productDemoSlice.actions.setRecommendationDemo(packageDemo.data));\n dispatch(productDemoSlice.actions.selectLensFamily(packageDemo.initial.family));\n dispatch(productDemoSlice.actions.setDemoFrom(routes.packageOffer));\n\n goto.route(routes.demonstration2); \n }\n\n return (\n
    \n \n \n
    \n
    \n\n\n
    \n {\n !loading && data.map((item, index) => {\n if(item.isDisabled)return;\n\n return (
    selectPackage(item)}\n className={E('card', [item.id, selectedPackage?.id === item.id ? 'selected' : ''])} \n key={index}>\n\n
    \n \n {\n getPackageDemo(item).initial && \n
    demo(item)}>\n {/* \"\"/ */}\n \n
    \n } \n
    \n\n \n\n
    )\n })\n }\n
    \n\n
    \n )\n}\n\nexport default PackageOffer;","const landingCards = [\n { image: 'education-a', label: 'education_edu_eye_new', icon: 'eye', id: 'eye', soon: true},\n { image: 'education-b', label: 'education_edu_lens_new', soon: true },\n { image: 'education-c', label: 'Frame advices', soon: true }\n];\n\nconst controlOptions = {\n visualDefect1: [\n { label: 'Myopia', value: 'myopia' },\n { label: 'Hyperopia', value: 'hyperopia' },\n { label: 'Astigmatism', value: 'astigmatism' },\n { label: 'Presbyopia', value: 'presbyopia' },\n ],\n visualDefect2: {\n myopia: [\n { label: 'Astigmatism', value: 'astigmatism' },\n { label: 'Presbyopia', value: 'presbyopia' },\n ],\n hyperopia: [\n { label: 'Astigmatism', value: 'astigmatism' },\n { label: 'Presbyopia', value: 'presbyopia' },\n ],\n presbyopia: [\n { label: 'Myopia', value: 'myopia' },\n { label: 'Hyperopia', value: 'hyperopia' },\n { label: 'Astigmatism', value: 'astigmatism' },\n ],\n astigmatism: [\n { label: 'Presbyopia', value: 'presbyopia' },\n ],\n none:[]\n },\n item: [\n { label: 'Standard', value: 'standard' },\n { label: 'Car', value: 'car' },\n { label: 'Flower', value: 'flower' },\n ],\n environment: [\n { label:'education_edu_sunlight', value: 'sunlight' }, \n {label:'education_edu_night', value: 'night'}\n ],\n screenMode: [\n { label:'Simplify', value: 'simplify' }, \n {label:'Environment', value: 'environment'}\n ]\n}\n\n\nexport {\n controlOptions\n};\nexport default landingCards;","import React, { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport landingCards from '../../../constants/education.constants';\nimport iOption from '../../../interface/option.interface';\nimport { getApp } from '../../../store/slices/app.slice';\nimport educationSlice from '../../../store/slices/education.slice';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport Icon from '../../ui/Icon';\n\ninterface Props {\n onSelect?: (view: iOption) => void\n}\n\nconst EducationLanding : React.FC = ({\n onSelect\n}) => {\n // VARIABLES\n const [B, E] = useBEM('education-landing');\n const cards = landingCards;\n const dispatch = useDispatch();\n const { t } = useTranslation(useSelector(getApp));\n\n // HOOKS\n useEffect(() => {\n dispatch(educationSlice.actions.sessionStart(new Date().toISOString()));\n }, [])\n\n // METHODS\n const selectCard = ({id, label}: any) => {\n //remove after pilot\n // if(id && onSelect)onSelect({ value: id, label })\n }\n\n return (\n
    \n
    \n

    \n {t('education_header_ttile_engage')}\n

    \n {/*

    \n Etiam gravida est vel dolor finibus, at gravida nibh consectetur. Nunc feugiat ut metus at vestibulum. Aliquam in condimentum eros. Aliquam mollis nibh arcu.\n

    */}\n
    \n
    \n\n {cards.map((card, index) => {\n return
    selectCard(card)} key={index}> \n\n
    \n \n \n
    \n {\n card.icon &&\n \n \n \n }\n \n\n { card.soon && card.id !== 'eye'? : ''}\n {/* //remove after pilot */}\n { card.soon && card.id === 'eye'? : ''}\n
    \n
    \n
    \n })} \n\n
    \n
    \n )\n}\n\nexport default EducationLanding;","import React, { useState } from 'react';\nimport iOption from '../../interface/option.interface';\nimport useBEM from '../../utils/hooks/useBEM';\nimport Arrow from '../ui/Arrow';\n\ninterface Props {\n options: iOption[],\n onSelect?: (option: string) => void,\n value?: string,\n classExtend?:string,\n // defaultValue?: iOption\n}\n\nconst Dropdown : React.FC = ({\n options = [],\n onSelect,\n value,\n classExtend,\n}) => {\n // VARIABLES\n const [B, E] = useBEM('dropdown');\n\n // VARIABLES\n const [showOptions, setShowOptions ] = useState(false);\n\n // METHODS\n const toggleOptions = (show: boolean) => { \n const delay = show ? 0 : 200;\n setTimeout(() => {\n setShowOptions(show)\n }, delay);\n }\n\n const selectOption = (option: iOption) => {\n toggleOptions(false)\n if(onSelect)onSelect(option.value);\n }\n\n const focusHandler = () => {\n toggleOptions(!showOptions); \n }\n\n const blurHandler = () => {\n toggleOptions(false)\n }\n\n const getCurrentValue = () => {\n const found = options.filter( x => x.value === value );\n if(found.length === 0)return null;\n return found[0];\n }\n\n const selectedOptionClass = (option: iOption) => {\n if(option.value === getCurrentValue()?.value) {\n return 'selected';\n }\n return '';\n }\n\n return (\n
    \n \n \n \n\n {\n showOptions && \n
      \n {\n options && options.map( (opt, index) => (\n
    • selectOption(opt)} key={index} className={selectedOptionClass(opt)}>\n {opt.label}\n
    • \n ))\n }\n
    \n }\n\n
    \n )\n}\n\nexport default Dropdown;","import React from 'react';\nimport useBEM from '../../utils/hooks/useBEM';\n\ninterface Props {\n on: boolean,\n onChange?: (value: boolean) => void\n}\n\nconst ToggleRadio : React.FC = ({\n onChange,\n on\n}) => {\n // VARIABLES\n const [B, E] = useBEM('toggle-radio');\n\n // METHODS\n const click = () => {\n if(onChange)onChange(!on);\n }\n\n return (\n
    \n \n
    \n )\n}\n\nexport default ToggleRadio;","import React from 'react';\nimport iOption from '../../interface/option.interface';\nimport useBEM from '../../utils/hooks/useBEM';\n\ninterface Props {\n value?: string,\n options: iOption[],\n onChange?: (value: string) => void\n}\n\nconst ToggleButton : React.FC = ({\n value,\n options = [],\n onChange\n}) => {\n // VARIABLES\n const [B, E] = useBEM('toggle-button');\n\n\n // HOOKS\n \n\n // METHODS\n const activeClass = (option: iOption) => {\n if(!value) return '';\n return (value === option.value) ? 'selected' : '';\n }\n\n const setValue = (option: iOption) => {\n if(onChange)onChange(option.value);\n }\n\n return (\n
    \n {\n options.map((option, index) => (\n
    setValue(option)}>\n {option.label}\n
    \n ))\n }\n
    \n )\n}\n\nexport default ToggleButton;","import React, { useEffect, useState } from 'react';\nimport { controlOptions } from '../../../constants/education.constants';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport Dropdown from '../../ui/Dropdown';\nimport ToggleRadio from '../../ui/ToggleRadio';\nimport Slider from 'react-input-slider';\nimport ToggleButton from '../../ui/ToggleButton';\nimport { useSelector, useDispatch } from 'react-redux';\nimport educationSlice, { getEducation } from '../../../store/slices/education.slice';\nimport EnvironmentType from '../../../types/environment.type';\nimport { getApp } from '../../../store/slices/app.slice';\nimport useTranslation from '../../../utils/hooks/useTranslation';\n\n\ninterface Props {\n isOpen: boolean\n}\n\nconst EducationControls : React.FC = ({\n isOpen = true\n}) => {\n // VARIABLES\n const { \n isItemEnabled, \n isLensEnabled,\n environment\n } = useSelector(getEducation);\n const dispatch = useDispatch();\n\n const [B, E] = useBEM('education-controls');\n const [visualDefect1, setVisualDefect1] = useState();\n const [visualDefect2, setVisualDefect2] = useState();\n // const [toggleItem, setToggleItem] = useState<'on' | 'off'>('off');\n // const [toggleLens, setToggleLens] = useState<'on' | 'off'>('off');\n\n const [item, setItem] = useState();\n const [lensSlider, setLensSlider] = useState(5);\n const [screenMode, setScreenMode] = useState('');\n const { t } = useTranslation(useSelector(getApp));\n const sliderStyle = {\n track: {\n backgroundColor: \"#CFD3D7\"\n },\n active: {\n backgroundColor: \"transparent\",\n borderRadius: \"1em\"\n },\n thumb: {\n width: 20,\n height: 20,\n opacity: 1\n }\n }\n\n // HOOKS\n useEffect(() => {\n setVisualDefect2(undefined);\n }, [visualDefect1])\n\n useEffect(() => {\n setLensSlider(5);\n }, [isLensEnabled])\n\n useEffect(() => {\n setItem(undefined);\n }, [isItemEnabled])\n\n // METHODS\n const getVisualDefect2Options = () => {\n const key = visualDefect1 ? visualDefect1 : t('education_edu_none_new');\n const options = controlOptions.visualDefect2[key as 'myopia'];\n return options;\n }\n\n const toggleItem = (value: boolean) => {\n dispatch(educationSlice.actions.toggleItemControl());\n }\n\n const toggleLens = (value: boolean) => {\n dispatch(educationSlice.actions.toggleLensControl());\n }\n\n const setEnvironment = (env: string) => {\n dispatch(educationSlice.actions.setEnvironment(env as EnvironmentType))\n }\n\n return (\n
    \n \n
    \n \n\n setVisualDefect1(value)}\n value={visualDefect1}\n options={controlOptions.visualDefect1}\n />\n\n
    \n
    \n \n\n setVisualDefect2(v)}\n value={visualDefect2}\n options={getVisualDefect2Options()}/>\n
    \n
    \n \n \n {\n isItemEnabled &&\n setItem(v)}\n options={controlOptions.item}/>\n }\n\n
    \n
    \n \n {\n isLensEnabled && \n
    \n \n
    \n -10\n setLensSlider(x)}\n />\n +10\n
    \n
    \n }\n\n
    \n
    \n \n\n setEnvironment(v) }\n options={controlOptions.environment}/>\n
    \n
    \n \n\n setScreenMode(v)}\n options={controlOptions.screenMode}/>\n
    \n\n
    \n )\n}\n\nexport default EducationControls;","import React, { useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport { getApp } from '../../../store/slices/app.slice';\nimport EnvironmentType from '../../../types/environment.type';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport Arrow from '../../ui/Arrow';\n\ninterface Props {\n steps: any[],\n environment: EnvironmentType | undefined\n}\n\nconst EducationSteps : React.FC = ({\n steps = [],\n environment\n}) => {\n\n // VARIABLES\n const [B, E] = useBEM('education-steps');\n const [step, setStep] = useState(0);\n const { t } = useTranslation(useSelector(getApp));\n\n // HOOKS\n\n // METHODS\n const isFirstStep = () => {\n return step === 0;\n }\n\n const isLastStep = () => {\n return (steps.length === (step + 1));\n }\n\n const nextStep = () => {\n if (isLastStep())return;\n setStep(step + 1);\n }\n\n const prevStep = () => {\n if(isFirstStep())return;\n setStep(step - 1);\n }\n\n \n return (\n
    \n
    \n\n \n \n\n
    \n\n \n\n

    {t(steps[step].instruction)}

    \n\n
    \n {steps[step].guide && steps[step].guide}\n
    \n
    \n )\n}\n\nexport default EducationSteps;","import React from 'react';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport { useDispatch, useSelector } from 'react-redux';\nimport educationSlice, { getEducation } from '../../../store/slices/education.slice';\nimport ToggleRadio from '../../ui/ToggleRadio';\nimport EducationStep from './EducationSteps';\nimport Arrow from '../../ui/Arrow';\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport { getApp } from '../../../store/slices/app.slice';\n\ninterface Props {\n\n}\n\nconst EducationContent : React.FC = () => {\n // VARIABLES\n const { isItemEnabled, isLensEnabled, environment } = useSelector(getEducation);\n const dispatch = useDispatch();\n\n const [B, E] = useBEM('education-content');\n const { isControlsOpen } = useSelector(getEducation)\n\n const toggleItem = (value: boolean) => {\n dispatch(educationSlice.actions.toggleItemControl());\n }\n\n const toggleLens = (value: boolean) => {\n dispatch(educationSlice.actions.toggleLensControl());\n }\n const { t } = useTranslation(useSelector(getApp));\n\n const educationSteps = [\n {\n instruction: 'education_edu_step_1_new',\n guide: <> \n \n \n ,\n },\n {\n instruction: 'education_edu_step_2_new',\n guide: <>\n
    \n \n
    \n \n \n },\n {\n instruction: \"education_edu_step_3_new\",\n guide: <> \n \n \n \n },\n {\n instruction: \"education_edu_step_4_new\",\n guide: <>\n
    \n \n
    \n \n \n },\n {\n instruction: 'education_edu_step_5_new',\n },\n ]\n\n // HOOKS\n\n // METHODS\n const toggleControls = () => {\n dispatch(educationSlice.actions.toggleControls());\n }\n\n return (\n
    \n\n \n\n\n \n\n
    \n )\n}\n\nexport default EducationContent;","import React, { useEffect, useState } from 'react';\nimport sidebarSlice, { getSidebar } from '../../store/slices/sidebar.slice';\nimport { useSelector, useDispatch } from 'react-redux';\nimport useBEM from '../../utils/hooks/useBEM';\nimport Modal from '../Modal';\nimport EducationLanding from './components/EducationLanding';\nimport EducationControls from './components/EducationControls';\nimport educationSlice, { getEducation } from '../../store/slices/education.slice';\nimport Button from '../ui/Button';\nimport iOption from '../../interface/option.interface';\nimport EducationContent from './components/EducationContent';\nimport useGoogleAnalytics from '../../utils/hooks/useGoogleAnalytics';\nimport Utils from '../../utils/Utils';\nimport useTranslation from '../../utils/hooks/useTranslation';\nimport { getApp } from '../../store/slices/app.slice';\n\ninterface Props {\n\n}\n\nconst Education : React.FC = () => {\n // VARIABLES\n const { selectedMenu } = useSelector(getSidebar);\n const { view, sessionStart } = useSelector(getEducation);\n const { isControlsOpen } = useSelector(getEducation);\n const dispatch = useDispatch();\n const ga = useGoogleAnalytics();\n const { getDateTimeDifference } = Utils();\n const { t } = useTranslation(useSelector(getApp));\n\n const [show, setShow] = useState(false);\n const [B, E] = useBEM('education');\n const modalStyle = {\n width: \"95.4rem\",\n height: \"69.8rem\",\n borderRadius: \"15px\"\n }\n\n // HOOKS\n useEffect(() => {\n if(selectedMenu?.id !== 'education')return;\n setShow(true);\n }, [selectedMenu])\n\n // METHODS\n const onSelect = (view: iOption) => {\n dispatch(educationSlice.actions.changeView(view))\n }\n \n const backOnLanding = () => {\n saveEducationSessionDuration();\n dispatch(educationSlice.actions.resetState())\n }\n\n const saveEducationSessionDuration = () => {\n if(sessionStart){\n ga.event({\n category: 'Education',\n action: getDateTimeDifference(new Date(sessionStart), new Date()),\n label: t(view.label, 'enUS')\n });\n }\n }\n\n const modalOnClose = () => {\n if(view.value !== \"landing\"){\n saveEducationSessionDuration();\n }\n\n setShow(false);\n dispatch(educationSlice.actions.resetState());\n dispatch(sidebarSlice.actions.selectMenu({menu: undefined}))\n }\n\n return (\n \n \n
    \n
    \n \n {\n view.value !== 'landing' && \n \n }\n \n\n

    {t(view.label)}

    \n
    \n\n
    \n { view.value === 'landing' && onSelect(v)}/> }\n { view.value === 'eye' && \n <>\n \n \n \n } \n
    \n\n
    \n
    \n )\n}\n\nexport default Education;","import React, { MutableRefObject, useEffect } from \"react\"; \n\ntype bemType = {\n listen: () => void, \n stop: () => void, \n}\n\n\nconst useDragScroll = (element: HTMLElement ): bemType => {\n let draggable = false;\n let startingPoint = 0;\n let timer: any;\n let touchEnabled = window.matchMedia(\"(pointer: coarse)\").matches;\n\n const onMouseDown = (e:any) => {\n draggable = true;\n startingPoint = e.clientX;\n }\n\n const onMouseUp = (e:any) => {\n draggable = false;\n startingPoint = 0;\n }\n\n const onMouseMove = (e:any) => {\n if(!draggable)return;\n const a = (startingPoint - e.clientX);\n clearTimeout(timer);\n timer = setTimeout(() => {\n element.scrollLeft = element.scrollLeft + a;\n startingPoint = e.clientX;\n },50)\n }\n\n const listen = () => { \n if(!element || touchEnabled)return;\n stop();\n element.addEventListener('mousedown', onMouseDown);\n element.addEventListener('mouseup', onMouseUp);\n element.addEventListener('mousemove', onMouseMove);\n }\n\n const stop = () => {\n if(!element)return;\n element.removeEventListener('mousedown', onMouseDown);\n element.removeEventListener('mouseup', onMouseUp);\n element.removeEventListener('mousemove', onMouseMove);\n }\n\n return {\n listen,\n stop\n };\n}\n\nexport default useDragScroll;","import React, { useEffect, useRef, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport iProductBrand from '../../../interface/product-brand.interface';\nimport iProductFamily from '../../../interface/product-family.interface';\nimport productsSlice, { getProducts } from '../../../store/slices/products.slice';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport Button from '../../ui/Button';\nimport ProductCard from './ProductCard';\n\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport { getApp } from '../../../store/slices/app.slice';\nimport iProduct from '../../../interface/product.inteface';\nimport iProductDemo from '../../../interface/product-demo';\nimport iLensDemo from '../../../interface/lens-demo';\nimport ProductDemoType from '../../../types/product-demo.type';\nimport DemoDownloadType from '../../../types/product-download.type';\nimport { IndexedDBContext, IndexedDBContextType } from '../../../utils/context/indexedDBContext';\nimport Utils from '../../../utils/Utils';\nimport Alert from '../../ui/Alert';\nimport Loading from '../../Loading';\nimport useDragScroll from './../../../utils/hooks/useDragScroll';\n\ninterface Props {\n\n}\n\nconst ProductSelection : React.FC = () => {\n // VARIABLES\n const [B, E] = useBEM('product-selection');\n const { temporaryProductList, demoDownloadStatus, downloadStatus } = useSelector(getProducts);\n const [fadeIn, setFadeIn] = useState(false);\n const [brands, setBrands] = useState([]);\n const [dynamicWidth, setDynamicWidth] = useState('');\n const { t } = useTranslation(useSelector(getApp));\n const {get, insert} = React.useContext(IndexedDBContext) as IndexedDBContextType;\n const { downloadAssetBase64 } = Utils();\n const [ preloadingComplete, setPreloadingComplete ] = useState(true);\n const dispatch = useDispatch();\n const [showAlert, setShowAlert] = useState(false);\n const [isLoading, setLoading] = useState(false);\n const ref = useRef();\n const { listen, stop } = useDragScroll(ref.current);\n\n // HOOKS\n useEffect(() => {\n showDownloadAlertOnFirsttime();\n setTimeout(() => {\n setFadeIn(true);\n }, 500);\n return () => {\n dispatch(productsSlice.actions.resetDownloadPendingStatus());\n }\n }, []);\n\n useEffect(() => {\n document.querySelector('.product-card--open')?.scrollIntoView();\n\n listen();\n return () => {\n stop();\n }\n }, [brands])\n\n useEffect(() => {\n let tempBrands:iProductBrand[] = [];\n temporaryProductList.forEach((family: iProductFamily) => {\n tempBrands = [\n ...tempBrands,\n ...family.brands.filter( b => isDemoAvailable(b))\n ]\n });\n const newBrands = tempBrands.map( b => {\n return { \n ...b,\n download: downloadStatusIntinialData(b.id)\n }\n })\n setBrands(newBrands);\n setDynamicWidth(`${(tempBrands.length * 30)}rem`)\n\n }, [temporaryProductList])\n\n // METHODS\n\n const showDownloadAlertOnFirsttime = () => {\n const isFirstTime = localStorage.getItem('product-demo-accessed');\n if(!isFirstTime)setShowAlert(true);\n localStorage.setItem('product-demo-accessed', 'true');\n }\n\n const downloadStatusIntinialData = (brandId: string) => {\n const initial = (demoDownloadStatus || {})[brandId];\n return initial ? initial : {\n count: 0,\n total: 0,\n status: DemoDownloadType.WAITING\n }\n }\n\n const isDemoAvailable = (brand: iProductBrand) => {\n if(!brand.background)return false;\n const productsWithDemo = brand.products.filter( p => (p.demo || []).length > 0 && p.enabled); \n return productsWithDemo.length > 0;\n } \n\n const downloadAllDemo = async () => {\n brands.map((brand, brandIndex) => {\n \n const downloadInfo = demoDownloadStatus[brand.id];\n if(downloadInfo && downloadInfo.status === DemoDownloadType.COMPLETED)return;\n\n brand.products.map(async (product) => {\n await initBrandCount(brandIndex);\n await getAssetLength(product, brandIndex);\n })\n })\n }\n\n const isAlreadyPreloaded = async (demo: string, productId: string) => {\n const id = `${demo}_${productId}`;\n const asset = await get('lensDemoStore',id);\n return asset ? true : false; \n }\n\n const isNested = (type: ProductDemoType) => {\n return [\n ProductDemoType.NESTED_DEMO, \n ProductDemoType.NESTED_DEMO_TRANSVERSAL\n ].includes(type)\n }\n\n const getAssetLength = async (product: iProduct, brandIndex: number) => {\n const toPreloadAssets: any[] = [];\n product?.demo?.forEach( d => {\n\n if(d.is360){\n (d.products as iProductDemo[]).forEach( (p) => {\n\n if(!p.drawline)return;\n\n const leftright = Object.keys(p.drawline);\n for(const posKey of leftright){\n const pos = (p.drawline as any)[posKey];\n const blurline = Object.keys(pos);\n for(const imgType of blurline){\n const id = `${p.id}_${posKey}-${imgType}`;\n toPreloadAssets.push({\n demo: d.demo,\n productId: id,\n asset: pos[imgType]\n });\n\n }\n }\n });\n return;\n }\n\n if(isNested(d.demoType)) {\n (d.products as iLensDemo[]).forEach( d => {\n (d.products as iProductDemo[]).forEach( p => {\n if(!p.asset)return;\n toPreloadAssets.push({\n demo: d.demo,\n productId: p.id,\n asset: p.asset\n });\n }) \n });\n return;\n }\n\n // Note: stellest start\n let additionalAssets: any[] = [];\n if(d.control) {\n d.control.products.forEach( ( chp: any )=> {\n if(!chp.asset)return;\n toPreloadAssets.push({\n demo: d.control?.demo,\n productId: chp.id,\n asset: chp.asset\n });\n });\n\n d.control.children?.forEach( (ctrlChild) => { \n ctrlChild.products.forEach( ( ctrlChildProduct: any )=> {\n if(!ctrlChildProduct.asset)return;\n toPreloadAssets.push({\n demo: ctrlChild?.demo,\n productId: ctrlChildProduct.id,\n asset: ctrlChildProduct.asset\n });\n });\n })\n }\n\n const children = d.children;\n if(children && children.length > 0 ) {\n children.forEach( ch => {\n ch.products.forEach( ( chp: any )=> {\n if(!chp.asset)return;\n toPreloadAssets.push({\n demo: ch.demo,\n productId: chp.id,\n asset: chp.asset\n });\n });\n });\n }\n\n (d.products as iProductDemo[]).forEach( (p) => {\n if(!p.asset)return;\n toPreloadAssets.push({\n demo: d.demo,\n productId: p.id,\n asset: p.asset\n });\n });\n });\n let newBrands = [ ...brands ];\n newBrands.forEach((brand, newBrandIndex) => {\n if (newBrandIndex === brandIndex) {\n brand.download = {\n count: 0,\n total: toPreloadAssets.length + (brand.download?.total || 0)\n }\n }\n })\n setBrands(newBrands);\n setPreloadingComplete(false);\n dispatch(productsSlice.actions.changeDownloadStatus(DemoDownloadType.DOWNLOADING));\n \n for (const asset of toPreloadAssets) {\n const isAlreadyDownloaded = await isAlreadyPreloaded(asset.demo, asset.productId)\n \n if(!isAlreadyDownloaded){\n const base64 = await downloadAssetBase64(asset.asset);\n await insert('lensDemoStore', {\n ...asset, \n id: `${asset.demo}_${asset.productId}`,\n asset: base64,\n });\n } \n updateBrands(newBrands, brandIndex, updateDonwloadStatusOnStore )\n setBrands(newBrands);\n }\n const completedBrands = newBrands.filter(brand => brand.download?.status === 'completed');\n let count = completedBrands.length || 0;\n dispatch(productsSlice.actions.changeDownloadCount(`${count} of ${newBrands.length}`));\n if (completedBrands.length === newBrands.length) {\n setPreloadingComplete(true);\n setLoading(false);\n dispatch(productsSlice.actions.changeDownloadStatus(DemoDownloadType.COMPLETED))\n // To reset the count\n dispatch(productsSlice.actions.changeDownloadCount(`${0} of ${newBrands.length}`));\n }\n \n return toPreloadAssets.length;\n }\n\n const updateDonwloadStatusOnStore = (brandId: string, info: {\n count: number,\n total?: number,\n status?: DemoDownloadType\n }) => {\n dispatch(productsSlice.actions.updateDownloadStatus({\n brandId,\n info\n }))\n }\n\n const updateBrands = ( \n newBrands: iProductBrand[], \n brandIndex: number, \n onDoneUpdate: (brandId: string, downloadInfo: {\n count: number,\n total?: number,\n status?: DemoDownloadType\n }) => void \n ) => {\n newBrands.forEach((brand, newBrandIndex) => {\n if (newBrandIndex === brandIndex) {\n let status = DemoDownloadType.DOWNLOADING;\n let count = brand.download?.count || 0;\n let total = brand.download?.total || 0;\n if (count >= (total-1)) {\n status = DemoDownloadType.COMPLETED;\n }\n brand.download = {\n count: (brand.download?.count || 0) + 1,\n total: (brand.download?.total || 0),\n status: status\n }\n\n onDoneUpdate(brand.id, brand.download)\n }\n })\n }\n\n const initBrandCount = (brandIndex: number) => {\n brands.forEach((brand, index) => {\n if (index === brandIndex) {\n brand.download = {\n count: 0,\n total: 0\n }\n }\n })\n setBrands(brands);\n }\n\n const onAlertConfirm = (id: string) => {\n setShowAlert(false); \n if(id !== 'yes')return;\n setLoading(downloadStatus !== DemoDownloadType.COMPLETED);\n downloadAllDemo();\n }\n\n const XRaddition = () => {\n let variluxProducts = brands[0]?.products\n \n let XRProduct = {\n id: \"varilux_xr_series\",\n label: \"Varilux® XR series™\",\n lensDesign: \"progressive\"\n }\n\n }\n\n XRaddition()\n\n return (\n
    \n
    \n
      \n {\n brands.map( brand => {\n return (\n \n )\n }) \n }\n
    \n\n
    \n {\n downloadStatus !== 'completed' &&\n setShowAlert(true)}\n disabled={!preloadingComplete}\n icon=\"download\"\n />\n }\n\n onAlertConfirm(id)}\n />\n \n
    \n )\n}\n\nexport default ProductSelection;","const varluxDemoCategories = {\n INSTANT: \"GPS\",\n SHARP: \"LIVRE\",\n STABILIZED: \"STAIRS\",\n EXTENDED: \"TABLETTE\",\n PANOROMIC: \"TROTT\"\n}\nexport default varluxDemoCategories;","import settings from \"../constants/settings.constants\";\nimport CATEGORY from \"../constants/variluxG9/varilux-demo-categories\";\n\nconst newAssetsURL = (url: string) => {\n return `${settings[settings.environment].newAssetsUrl}VariluxG9/demo/${url}`;\n}\n\nconst variluxG9Videos = [\n {\n directory: CATEGORY.INSTANT,\n videos: [\n newAssetsURL(CATEGORY.INSTANT+\"/01_GPS A.mp4\"),\n newAssetsURL(CATEGORY.INSTANT+\"/01_GPS B.mp4\"),\n newAssetsURL(CATEGORY.INSTANT+\"/01_GPS C.mp4\"),\n newAssetsURL(CATEGORY.INSTANT+\"/01_GPS D.mp4\"),\n ],\n },\n {\n directory: CATEGORY.STABILIZED,\n videos: [\n newAssetsURL(CATEGORY.STABILIZED+\"/02_STAIRS A.mp4\"),\n newAssetsURL(CATEGORY.STABILIZED+\"/02_STAIRS B.mp4\"),\n newAssetsURL(CATEGORY.STABILIZED+\"/02_STAIRS C.mp4\"),\n newAssetsURL(CATEGORY.STABILIZED+\"/02_STAIRS D.mp4\"),\n ],\n }, \n {\n directory: CATEGORY.PANOROMIC,\n videos: [\n newAssetsURL(CATEGORY.PANOROMIC+\"/03_TROTT A.mp4\"),\n newAssetsURL(CATEGORY.PANOROMIC+\"/03_TROTT B.mp4\"),\n newAssetsURL(CATEGORY.PANOROMIC+\"/03_TROTT C.mp4\"),\n newAssetsURL(CATEGORY.PANOROMIC+\"/03_TROTT D.mp4\"),\n ],\n },\n {\n directory: CATEGORY.SHARP,\n videos: [\n newAssetsURL(CATEGORY.SHARP+\"/04_LIVRE A.mp4\"),\n newAssetsURL(CATEGORY.SHARP+\"/04_LIVRE B.mp4\"),\n newAssetsURL(CATEGORY.SHARP+\"/04_LIVRE C.mp4\"),\n newAssetsURL(CATEGORY.SHARP+\"/04_LIVRE D.mp4\"),\n ],\n },\n {\n directory: CATEGORY.EXTENDED,\n videos: [\n newAssetsURL(CATEGORY.EXTENDED+\"/05_TABLETTE A.mp4\"),\n newAssetsURL(CATEGORY.EXTENDED+\"/05_TABLETTE B.mp4\"),\n newAssetsURL(CATEGORY.EXTENDED+\"/05_TABLETTE C.mp4\"),\n newAssetsURL(CATEGORY.EXTENDED+\"/05_TABLETTE D.mp4\"),\n ],\n },\n {\n directory: 'PRESCRIPTIONS',\n videos:[\n newAssetsURL('PRESCRIPTIONS/varilux_prescription_video.mp4')\n ]\n }\n];\nexport default variluxG9Videos;","import React, { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport Demonstrations from '../../pages/demonstrations/Demonstrations';\nimport { getApp } from '../../store/slices/app.slice';\nimport productDemoSlice from '../../store/slices/products-demo.slice';\nimport productsSlice, { getProducts } from '../../store/slices/products.slice';\nimport DemoDownloadType from '../../types/product-download.type';\nimport useBEM from '../../utils/hooks/useBEM';\nimport useTranslation from '../../utils/hooks/useTranslation';\nimport Modal from '../Modal';\nimport Button from '../ui/Button';\nimport ProductSelection from './components/ProductSelection';\n// JUMP\nimport { IndexedDBContext, IndexedDBContextType } from '../../utils/context/indexedDBContext';\nimport variluxG9Videos from '../../utils/varilux-g9-videos'\nimport Utils from '../../utils/Utils';\n\ninterface Props {\n\n}\n\nconst Products : React.FC = () => {\n // VARIABLES\n const [B, E] = useBEM('products');\n const { isOpen, view, lensDemo, downloadStatus, downloadCountText } = useSelector(getProducts);\n const dispatch = useDispatch();\n const { t } = useTranslation(useSelector(getApp));\n const { get, insert } = React.useContext(IndexedDBContext) as IndexedDBContextType;\n const { downloadAssetBase64 } = Utils()\n\n const modalStyle = {\n width: \"100%\",\n height: \"69.8rem\",\n borderRadius: \"15px\"\n }\n\n\n // HOOKS\n // JUMP DOWNLOAD VARILUX ASSET HERE!\n useEffect(() => { \n downloadXRAssets() \n dispatch(productsSlice.actions.attachedProductDemo({\n demos: lensDemo\n }))\n }, [])\n\n\n useEffect(() => {\n if(view === 'selection'){\n dispatch(productDemoSlice.actions.setActiveProductDemo(undefined));\n dispatch(productDemoSlice.actions.setActiveCompareProductDemo(undefined));\n dispatch(productDemoSlice.actions.changeDemoType(undefined));\n dispatch(productsSlice.actions.selectBrandTodemo(undefined))\n }\n }, [view])\n\n // METHODS\n const closeProducts = () => {\n dispatch(productsSlice.actions.reset());\n }\n\n const back = () => {\n dispatch(productsSlice.actions.changeView('selection'));\n dispatch(productsSlice.actions.clearSelectedProduct())\n }\n\n const isDownloading = () => {\n return downloadStatus === DemoDownloadType.DOWNLOADING;\n }\n\n const downloadCount = () => {\n return `${t('demo_downloading')} ${downloadCountText}`;\n }\n\n // JUMP\n const isXRDemoAlreadyPreloaded = async (category: string, i: number) => {\n const id = `${category}_${i}`;\n const asset = await get('variluxG9Store', id);\n return asset ? true : false;\n }\n\n const downloadXRAssets = () => {\n for (const category of variluxG9Videos) {\n category?.videos?.map(async (asset, i) => {\n const isXRAlreadyDownloaded = await isXRDemoAlreadyPreloaded(category.directory, i);\n\n if (!isXRAlreadyDownloaded) {\n const base64 = await downloadAssetBase64(asset)\n await insert('variluxG9Store', {\n id: `${category.directory}_${i}`,\n asset: base64,\n });\n } else {\n }\n })\n }\n }\n // JUMP\n\n\n return (\n \n
    \n \n
    \n {\n view === 'demo' &&\n \n }\n \n { view === 'selection' &&

    {t('products_prod_products')}

    } \n
    \n\n { view === 'selection' && } \n { view === 'demo' && } \n \n
    \n
    \n )\n}\n\nexport default Products;","import React, { useEffect, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport Icon from '../../../components/ui/Icon';\nimport Text from '../../../components/ui/Text';\nimport { getApp } from '../../../store/slices/app.slice';\nimport { getUser } from '../../../store/slices/user.slice';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport useTranslation from '../../../utils/hooks/useTranslation';\n\ninterface Props {\n\n}\n\nconst DeliveryAdvices : React.FC = () => {\n // VARIABLES\n const [B, E] = useBEM('delivery-advices');\n const { lensConsultation } = useSelector(getUser);\n const { lensRecommendation } = lensConsultation;\n const { t } = useTranslation(useSelector(getApp))\n const [lensDesign, setLensDesign] = useState();\n\n const advicesContentMapping: {\n [key: string]: any\n } = {\n wearing: {\n singlevision: 'advices_adv__wearing_advices/text/single_vision',\n progressive: 'advices_adv__wearing_advices/text/progressive',\n stellest: 'advices_adv__wearing_advices/text/stellest',\n progressive_sv_lens: 'advices_adv__wearing_advices/text/single_vision',\n both: 'advices_adv__wearing_advices/text/single_vision',\n personalized:''\n },\n ergo: {\n singlevision: 'advices_adv__ergonomic/text/single_vision',\n progressive: 'advices_adv__ergonomic/text/progressive_lenses',\n stellest: 'advices_adv__ergonomic/text/stellest',\n progressive_sv_lens: 'advices_adv__wearing_advices/text/single_vision',\n both: 'advices_adv__wearing_advices/text/single_vision',\n personalized:''\n }\n }\n\n // HOOKS\n useEffect(() => {\n if(!lensRecommendation)return;\n \n if(lensRecommendation.pair1?.correct?.product &&\n lensRecommendation.pair1?.correct.product?.id && \n lensRecommendation.pair1?.correct.product?.lensDesign){\n const isStellest = lensRecommendation.pair1?.correct.product?.id.includes('stellest');\n const lensDesignValue = lensRecommendation.pair1?.correct.product?.lensDesign;\n \n setLensDesign(isStellest ? 'stellest' : lensDesignValue);\n }\n\n\n }, [lensRecommendation])\n\n // METHODS\n return (\n
    \n

    {t('delivery_del_advices')}

    \n\n
    \n
    \n

    {t('advices_adv__header_title')}

    \n\n \n {t('advices_adv__header_subtitle')}\n \n\n
      \n
    • \n \n \n \n

      \n {t('advices_adv__header_content_1')}\n

      \n
    • \n
    • \n \n \n \n

      \n {t('advices_adv__header_content_2')}\n

      \n
    • \n
    • \n \n \n \n

      \n {t('advices_adv__header_content_3')}\n

      \n
    • \n
    \n
    \n
    \n\n
    \n {/*
    \n
    a
    \n
    a
    \n
    \n
    \n
    b
    \n
    b
    \n
    */}\n\n
    \n \n\n
    \n \n \n

    \n {lensDesign && t(advicesContentMapping.wearing[lensDesign.replace(/\\s/g, '')])}\n

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

    \n\n {lensDesign && t(advicesContentMapping.ergo[lensDesign.replace(/\\s/g, '')])}\n

    \n
    \n
    \n\n
    \n \n\n
    \n \n
    \n \n {t('advices_adv__check_your_adaptation_and_questions_')}\n +\n
    \n\n \n\n
    \n \n {t('delivery_(advices)_frame_adjust')}\n +\n\n
    \n
    \n\n\n
    \n
    \n
    \n )\n}\n\nexport default DeliveryAdvices;","import React from 'react';\nimport { backgroundColorHeader, backgroundPerRow, containerWhite, h2, h3, headerImage1, headerImage2, icon, imageLogo, paragraph, summaryBenefitContainer, summaryBenefitContainerLI } from '../../../constants/email-css.constants';\nimport iLensProposalField from '../../../interface/lens-proposal-field.interface';\nimport iAppStore from '../../../store/interface/app-store.interface';\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport Icon from '../../ui/Icon';\n\ninterface Props {\n data: any,\n pair: number,\n appStore: iAppStore,\n breakdown: any,\n complementaryEquipment?:iLensProposalField[]\n}\nconst HeaderSummary : React.FC = ({\n data, pair, appStore, breakdown, complementaryEquipment = []\n}) => {\n //VARIABLES\n const headerVal = data[0]\n const { t } = useTranslation(appStore);\n //METHOD\n const groupBy = (data: any[], type: number) =>{\n const newData = data.filter((\n filter) => \n parseInt(filter.type) === type )\n return newData;\n }\n const returnPrice = (pair:number) =>{\n return pair === 1 ? `${breakdown.pair1.deliveryPrice} ${breakdown.currency}` : `${breakdown.pair2.deliveryPrice} ${breakdown.currency}`\n }\n const returnEquipment = (eq: string) =>{\n if(complementaryEquipment.length === 0 || pair === 1) return t(eq);\n const translationKey: {\n [key:string]: string \n } = {\n prescription_rx_driving: 'delivery_design_lens6',\n prescription_rx_computer: 'delivery_design_lens4',\n prescription_rx_sun: 'delivery_design_lens5'\n }\n const label = (complementaryEquipment as iLensProposalField[])[0].value?.label;\n return t(translationKey[label as string]) || t(eq);\n\n }\n return (\n
    \n
    \n
    \n
    \n
    \n

    {pair === 1 ? t('delivery_del_pair_1') : t('delivery_del_3_pair_2')} {returnPrice(pair)}

    \n
    \n \n {returnEquipment(headerVal.deliveryDescription.type)} \n

    {t(headerVal.deliveryDescription.desc)}

    \n
    \n
    \n
    \n {\n headerVal.products[0].descriptions && (\n
      \n {\n groupBy(headerVal.products[0].descriptions, 1).map((desc: any, iii: number) => (\n
    • \n {/* {desc.icon} */}\n \n \n
    • \n ))\n } \n
    \n )\n } \n {\n headerVal.products[0].descriptions && headerVal.products[0].descriptions.length > 3 && (\n
      \n {\n groupBy(headerVal.products[0].descriptions, 2).map((desc: any, iii: number) => (\n
    • \n {/* {desc.icon} */}\n \n \n
    • \n ))\n } \n
    \n )\n } \n
    \n
    \n )\n}\nexport default HeaderSummary;","import React from 'react';\nimport { backgroundPerRow, flexSpaceAround, h3, imageLogo, paragraph, prescriptionLabel, summaryBenefitContainer, valueContainer, valueContainerAdd } from '../../../constants/email-css.constants';\nimport iAppStore from '../../../store/interface/app-store.interface';\nimport useTranslation from '../../../utils/hooks/useTranslation';\ninterface Props {\n tempPrescriptionData: any;\n appStore: iAppStore\n}\n\nconst Prescription : React.FC = ({tempPrescriptionData, appStore}) => {\n //VARIABLES\n const { t } = useTranslation(appStore);\n //METHOD\n const onUndefinded = (value: any) =>{\n if(value === null || value === undefined) return \" \";\n return value;\n }\n return (\n
    \n


    \n
    \n

    {t('lens_proposal_builder_lpb__prescription')}

    \n {/* PRESCRIPTION VALUES */}\n
    \n {t('delivery_del__sphere_(sph)')}\n
    \n {t('rx_righ_teye')} {tempPrescriptionData.values.sphere.od}\n
    \n
    \n {t('rx_left_eye')} {tempPrescriptionData.values.sphere.os}\n
    \n
    \n
    \n {t('delivery_del__cylinder_(cyl)')}\n
    \n {t('rx_righ_teye')} {onUndefinded(tempPrescriptionData.values.cylinder.od) }\n
    \n
    \n {t('rx_left_eye')} {onUndefinded(tempPrescriptionData.values.cylinder.os) }\n
    \n
    \n
    \n {t('delivery_del__axis_(axe)')}\n
    \n {t('rx_righ_teye')} {onUndefinded(tempPrescriptionData.values.axis.od) }\n
    \n
    \n {t('rx_left_eye')} {onUndefinded(tempPrescriptionData.values.axis.os) }\n
    \n
    \n
    \n {t('delivery_del__addition_(add)')}\n
    \n {onUndefinded(tempPrescriptionData.values.addition) }\n
    \n
    \n
    \n
    \n \n )\n}\nexport default Prescription;","import React from 'react';\nimport { backgroundPerRow, roundCorner } from '../../constants/email-css.constants';\nimport iAppStore from '../../store/interface/app-store.interface';\nimport useTranslation from '../../utils/hooks/useTranslation';\nimport Footer from './components/Footer';\nimport Header from './components/Header';\nimport HeaderSummary from './components/HeaderSummary';\nimport Prescription from './components/Prescription';\ninterface Props {\n summaryList1: any;\n summaryList2: any;\n breakdown: any;\n tempPrescriptionData: any;\n appStore: iAppStore,\n complementaryEquipment: any,\n}\n\nconst DeliveryTemplate : React.FC = ({summaryList1, summaryList2, tempPrescriptionData, appStore,breakdown,\n complementaryEquipment}) => {\n //VARIABLES\n const { t } = useTranslation(appStore);\n //HOOKS\n //METHOD\n const onNull = (list:any) =>{\n if(!list) return false;\n const arr = list.filter((el: any) => el !== null);\n const condition = arr.length !== 0 && arr !== undefined \n ? true : false;\n return condition;\n }\n return (\n
    \n


    \n


    \n {/* rounded corners */}\n
    \n\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t\n
    \n
    \n
    \n \n {onNull(summaryList1) && }\n {onNull(summaryList2) && }\n
    \n
    \n \n
    \n\n )\n}\nexport default DeliveryTemplate;","import React, { useEffect, useRef, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport DeliveryTemplate from '../../../components/email-template/DeliveryTemplate';\nimport Modal from '../../../components/Modal';\nimport Arrow from '../../../components/ui/Arrow';\nimport Button from '../../../components/ui/Button';\nimport { getApp } from '../../../store/slices/app.slice';\nimport deliverySlice, { getDelivery } from '../../../store/slices/delivery.slice';\nimport { getMeasure } from '../../../store/slices/measure.slice';\nimport { getPrescription } from '../../../store/slices/prescription.slice';\nimport { getUser } from '../../../store/slices/user.slice';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport useGoogleAnalytics from '../../../utils/hooks/useGoogleAnalytics';\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport Utils from '../../../utils/Utils';\nimport { saveToPdf, sendMail, SummaryExportType } from '../../../utils/misc';\nimport useAdvancePricing from '../../advance-price-setting/useAdvancePricing';\nimport useDisableCountry from '../../../utils/hooks/useDisableCountry';\n\ninterface Props {\n summaryDomRef: any;\n}\n\nconst DeliveryNavigation : React.FC = (props) => {\n // VARIABLES\n const [B, E] = useBEM('delivery-navigation');\n const [isShowExportModal, setIsShowExportModal] = useState(false);\n const { activeSection, isWithInteraction } = useSelector(getDelivery);\n const { measurementData } = useSelector(getMeasure)\n\n const dispatch = useDispatch();\n const ga = useGoogleAnalytics();\n const { getDateTimeDifference } = Utils();\n const timestamp = useRef();\n const appStore = useSelector(getApp);\n const { t } = useTranslation(appStore);\n const { summaryList1, summaryList2, complementaryEquipment, measures } = useSelector(getUser);\n const { tempPrescriptionData } = useSelector(getPrescription);\n const { token, globalInformation } = appStore;\n const isWithInteractionRef = useRef(isWithInteraction);\n const { id, lensConsultation } = useSelector(getUser)\n const { breakdown } = lensConsultation\n const [ hidePrice ] = useDisableCountry(['gr'])\n\n const navigationItems = [\n {\n label: 'delivery_del__prescription',\n view: 'prescription'\n },\n {\n label:'delivery_del_2_pair_1',\n view:'pair1',\n },\n {\n label:'delivery_del_3_pair_2',\n view:'pair2',\n },\n {\n label: 'delivery_del_advices',\n view:'advices',\n },\n {\n label:'pair_2_tab__del_p2__vision_tests',\n view:'vision_test',\n },\n ];\n const [ advancePrice, setAdvancePrice ] = useState();\n const { \n isAdvancePricing,\n getAdvancePricingTotal\n } = useAdvancePricing(appStore);\n\n\n useEffect(() => {\n if(!lensConsultation.lensRecommendation || !isAdvancePricing)return;\n setAdvancePrice(getAdvancePricingTotal(lensConsultation.lensRecommendation));\n }, [])\n\n\n // HOOKS\n useEffect(() => {\n isWithInteractionRef.current = isWithInteraction;\n }, [isWithInteraction])\n\n useEffect(() => {\n timestamp.current = new Date();\n return () => {\n saveDeliverySessionDuration(); \n dispatch(deliverySlice.actions.reset())\n }\n },[])\n\n // METHODS\n const scrollTo = (view: string) => {\n dispatch(deliverySlice.actions.scrollToView(view));\n }\n\n const saveDeliverySessionDuration = () => {\n if(!timestamp.current || !isWithInteractionRef.current)return;\n const timediff = getDateTimeDifference(timestamp.current, new Date());\n ga.event({\n category: 'Delivery',\n action: 'Completion',\n label: timediff\n });\n timestamp.current = undefined;\n }\n\n const hideSummary = () => {\n dispatch(deliverySlice.actions.showSummaryDetails(false));\n dispatch(deliverySlice.actions.setActiveSection('prescription'));\n dispatch(deliverySlice.actions.scrollToView('prescription'));\n }\n\n const exportSummary = (type: string) => {\n ga.event({\n category: 'Delivery - Export',\n action: 'Button Click',\n label: type\n });\n\n takeExportSummaryAction(type);\n // saveDeliverySessionDuration();\n }\n \n const takeExportSummaryAction = (type: string) => {\n switch (type) {\n case SummaryExportType.QRCODE: //qr code \n break;\n case SummaryExportType.PRINT: \n // const pageOptions = Object.keys(breakdown?.pair2 ?? {}).length > 0 ? {topOffset: {2: 7, 3:15}} : {topOffset: {1: 22, 2: 25}}\n const pageOptions = {topOffset: {1: 22, 2: 25}}\n\n saveToPdf({\n inputDom: props.summaryDomRef.current, \n pdfName: `${id}_delivery_summary_${Date.now()}.pdf`, \n pageOptions: {...pageOptions, removeElements:['vision_test'], containerWidth: '1440px'},\n scale:1\n })\n\n break;\n case SummaryExportType.EMAIL: //email code\n sendMail(globalInformation.email, `Delivery Summary for ${id}`, token ?? '',)\n break;\n default: return;\n }\n }\n\n const getAdvancePairPrice = (pair: 'pair1' | 'pair2') => {\n if(!breakdown[pair].enabled)return 0;\n let price = advancePrice[pair].total;\n\n if(measures.one) {\n const measuresPair = measures.one[ pair === 'pair1' ? 0 : 1 ];\n price = price + ( measuresPair ? measuresPair.price.value : 0 );\n }\n return price;\n }\n\n const totalPrice = () => {\n if(advancePrice){\n return getAdvancePairPrice('pair1') + getAdvancePairPrice('pair2')\n }\n\n return breakdown.deliveryTotal;\n }\n\n const GA_pushEvent = () => {\n ga.event({\n category: 'Delivery',\n action: 'Delivery - Save & Export',\n variable_id: 'delivery_save_and_export',\n });\n setIsShowExportModal(true);\n }\n\n return (\n
    \n
    \n \n
    \n \n
      \n {\n navigationItems.map( ({label, view}) => (\n
    • scrollTo(view)}\n key={view} className={`${view === activeSection ? 'active' : ''}`}>\n {t(label)}\n
    • \n ))\n } \n
    \n
    \n {\n !hidePrice && (\n \n )\n } \n
    \n\n {setIsShowExportModal(false)}}>\n
    \n

    {t('summary_sum_export')}

    \n
    \n {/*
    \n
    \n
    \n
    \n )\n}\n\nexport default DeliveryNavigation;","import React, { useEffect, useState } from 'react';\nimport useBEM from '../../../utils/hooks/useBEM';\n\ninterface Props {\n onComplete?: () => void,\n trigger?: 'init' | 'class'\n}\n\nconst LensTransitionInAnimation : React.FC = ({\n onComplete,\n trigger = 'init'\n}) => {\n // VARIABLES\n const [B] = useBEM('lens-transition-in-animation');\n const [fadeOut, setFadeOut] = useState(false);\n\n // HOOKS\n useEffect(() => {\n setTimeout(() => {\n setFadeOut(true);\n\n setTimeout(() => {\n if(onComplete)onComplete();\n }, 500);\n }, 2000);\n }, [])\n \n\n return (\n
    \n )\n}\n\nexport default LensTransitionInAnimation;","import React, { Fragment } from 'react';\nimport Icon from '../../../components/ui/Icon';\nimport Text from '../../../components/ui/Text';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport LensTransitionInAnimation from '../../lens-consultation-v2/components/LensTransitionInAnimation';\n// import lensAll from './../../../assets/images/lens-consulatation/Lens_All.png';\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport { useSelector } from 'react-redux';\nimport { getApp } from '../../../store/slices/app.slice';\n\ninterface Props {\n // TEMPORARY\n pair: number\n\n data: any\n}\n\nconst DeliveryPairConsultation : React.FC = ({\n pair,\n data\n}) => {\n // VARIABLES\n const [B, E] = useBEM('delivery-pair-consultation');\n const { t } = useTranslation(useSelector(getApp));\n\n\n // HOOKS\n\n // METHODS\n const groupBy = (data: any[], type: number) =>{\n const newData = data.filter((\n filter) => \n parseInt(filter.type) === type )\n return newData;\n }\n const renderLensData = (product: any) => {\n return (\n <>\n \n { product.descriptions && (\n
      \n {\n groupBy(product.descriptions, 1).map( (item: any, index: number) => (\n \n
    • \n \n

      \n {\n Array.isArray(item.label) ? t(item.label[0], item.label[1]) : t(item.label)\n }\n

      \n
    • \n {\n groupBy(product.descriptions, 1).length !== (index + 1) && \n
    • \n } \n
      \n ))\n }\n
    \n \n )}\n { product.descriptions && product.descriptions.length > 3 &&(\n
      \n {\n groupBy(product.descriptions, 2).map( (item: any, index: number) => (\n \n
    • \n \n

      \n {\n Array.isArray(item.label) ? t(item.label[0], item.label[1]) : t(item.label)\n }\n

      \n
    • \n {\n groupBy(product.descriptions, 2).length !== (index + 1) && \n
    • \n } \n
      \n ))\n }\n
    \n )}\n \n )\n }\n\n return (\n
    \n
    \n \n
    \n\n
    \n

    {t('pair_2_tab__del_p2__lens_consultation_title')}

    \n\n \n {t('pair_2_tab__del_p2__lens_consultation')}\n \n\n \n \n
    \n {renderLensData(data[0].products[0])}\n
    \n \n\n {\n data[1] !== null && data[1] !== undefined && <>\n \n
    \n {\n data[1].products.map((val:any)=>{ \n return renderLensData(val)\n })\n }\n
    \n \n \n }\n \n {\n data[2] !== null && data[2] !== undefined && <>\n \n
    \n {renderLensData(data[2].products[0])}\n
    \n \n \n } \n\n\n
    \n
    \n )\n}\n\nexport default DeliveryPairConsultation;","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport Icon from '../../../components/ui/Icon';\nimport Text from '../../../components/ui/Text';\nimport iLensProposalField from '../../../interface/lens-proposal-field.interface';\nimport { getApp } from '../../../store/slices/app.slice';\nimport { getUser } from '../../../store/slices/user.slice';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport useDisableCountry from '../../../utils/hooks/useDisableCountry';\n\n\ninterface Props {\n pair:number,\n type: string,\n price: string | undefined,\n description: string,\n benefits: []\n}\n\nconst DeliveryPairDetails : React.FC = ({\n pair,\n type,\n price,\n description,\n benefits\n}) => {\n // VARIABLES\n const [B, E] = useBEM('delivery-pair-details');\n const { t } = useTranslation(useSelector(getApp));\n const { complementaryEquipment } = useSelector(getUser);\n // HOOKS\n\n // METHODS\n const groupBy = (data: any[], type: number) =>{\n const newData = data.filter((\n filter) => \n parseInt(filter.type) === type )\n return newData;\n }\n\n const withComplementaryEquipment = () => {\n return complementaryEquipment && complementaryEquipment[0].value;\n }\n\n const getPairVisionType = (): string => {\n if(pair === 1)return t(type);\n if(!withComplementaryEquipment())return t(type);\n const translationKey: {\n [key:string]: string \n } = {\n prescription_rx_driving: 'delivery_design_lens6',\n prescription_rx_computer: 'delivery_design_lens4',\n prescription_rx_sun: 'delivery_design_lens5'\n }\n const label = (complementaryEquipment as iLensProposalField[])[0].value?.label;\n return t(translationKey[label as string]);\n }\n\n const [hidePrice] = useDisableCountry(['in2', 'in', 'gr'])\n\n return (\n
    \n
    \n {\n !hidePrice && (\n \n )\n }\n

    \n {pair===1 ? t('delivery_del__pair_1') : t('delivery_del__pair_2')} \n {getPairVisionType()} \n

    \n\n \n {t(description)}\n \n\n { benefits && (\n
      \n {\n benefits.map((desc: any, iii: number) => (\n
    • \n \n \n
    • \n ))\n } \n
    \n ) \n }\n
    \n
    \n )\n}\n\nexport default DeliveryPairDetails;","import React, { useEffect, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport Icon from '../../../components/ui/Icon';\nimport Text from '../../../components/ui/Text';\nimport iMeasurementDataOne from '../../../interface/measurement-one-data.inteface';\nimport iMeasurementDataThree from '../../../interface/measurement-three-data.inteface';\nimport iMeasurementDataTwo from '../../../interface/measurement-two-data.inteface';\nimport { getApp } from '../../../store/slices/app.slice';\nimport { getMeasure } from '../../../store/slices/measure.slice';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport { getLensConsultation } from '../../../store/slices/lens-consultation.slice';\nimport useDisableCountry from '../../../utils/hooks/useDisableCountry';\n\ninterface Props {\n pair: number\n}\n\nconst DeliveryPairMeasures : React.FC = ({\n pair\n}) => {\n // VARIABLES\n const [B, E] = useBEM('delivery-pair-measures');\n // let measuresImage = \"measures01\";\n const [measuresImage, setMeasuresImage ] = useState('measures01');\n const [measureStep, setmeasureStep ] = useState(1);\n const [ref, setRef] = useState('');\n const { measurementData } = useSelector(getMeasure);\n const [data, setData] = useState<{\n one: iMeasurementDataOne,\n two: iMeasurementDataTwo,\n three: iMeasurementDataThree\n }>();\n const { t } = useTranslation(useSelector(getApp));\n const { breakdown } = useSelector(getLensConsultation);\n const { isIvsGenerated } = useSelector(getMeasure);\n const [ hidePrice ] = useDisableCountry([\"gr\"])\n\n\n // HOOKS\n useEffect(() => {\n const p = pair - 1;\n setData({\n one: measurementData.one[p],\n two: measurementData.two[p],\n three: measurementData.three[p]\n })\n }, [measurementData])\n\n // METHODS\n const slideShow = (action: string) =>{\n let tempStep = measureStep\n if(measureStep<=0) tempStep = 1;\n if(measureStep>3) tempStep = 3;\n if(action ===\"next\"){\n tempStep++;\n }else{\n tempStep--;\n }\n\n setMeasuresImage(\"measures0\"+tempStep);\n setmeasureStep(tempStep);\n\n }\n\n return (\n
    \n \n
    \n \n
    \n \n\n
    \n slideShow('prev')}/>\n slideShow('next')}/>\n
    \n
    \n\n
    \n \n
    \n \n

    {t('pair_1_tab_del_p1_measures_title')}

    \n \n \n {t('pair_1_tab_del_p1_measures')}\n \n\n {\n data &&\n
      \n
    • \n \n
      \n \n \n \n
      \n
    • \n
    • \n \n
      \n \n \n \n \n\n\n\n
      \n
    • \n
    • \n \n
      \n \n \n \n \n
      \n
    • \n
    \n }\n\n {\n !hidePrice && (\n
    \n

    {t('pair_1_tab_del_p1_frame_selection_title')}

    \n \n {t('pair_1_tab_del_p1_frame_selection')}\n \n \n
    \n \n \n setRef(e.target.value)}\n />\n \n {`${data?.one.price.value} ${breakdown.currency}`}\n
    \n
    \n )\n }\n\n
    \n\n
    \n )\n}\n\nexport default DeliveryPairMeasures;","import React, { useEffect, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport isummaryDetails from '../../../interface/summary.interface';\nimport { getApp } from '../../../store/slices/app.slice';\nimport { getMeasure } from '../../../store/slices/measure.slice';\nimport { getUser } from '../../../store/slices/user.slice';\nimport LensCategoryType from '../../../types/lens-category.type';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport useAdvancePricing from '../../advance-price-setting/useAdvancePricing';\nimport DeliveryPairConsultation from './DeliveryPairConsultation';\nimport DeliveryPairDetails from './DeliveryPairDetails';\nimport DeliveryPairMeasures from './DeliveryPairMeasure';\n\ninterface Props {\n // details: {\n // pair:number,\n // type: string,\n // price: string,\n // description: string \n // }\n details: isummaryDetails[] | any,\n pair:number\n}\n\nconst DeliveryPair : React.FC = ({\n details,\n pair\n}) => {\n // VARIABLES\n const [B] = useBEM('delivery-pair');\n const summaryDetails = details[0];\n const { measurementData } = useSelector(getMeasure);\n const { lensConsultation, lensRecommendation, measures } = useSelector(getUser)\n const { breakdown } = lensConsultation;\n const appStore = useSelector(getApp);\n const { t } = useTranslation(appStore);\n const [ advancePrice, setAdvancePrice ] = useState();\n const { \n isAdvancePricing,\n getAdvancePricingTotal\n } = useAdvancePricing(appStore);\n\n\n useEffect(() => {\n if(!lensConsultation.lensRecommendation || !isAdvancePricing)return;\n setAdvancePrice(getAdvancePricingTotal(lensConsultation.lensRecommendation));\n }, [])\n\n // HOOKS\n\n // METHODS\n\n const getAdvancePairPrice = (pair: number) => {\n let price = advancePrice[`pair${pair}`].total;\n\n if(measures.one) {\n const measuresPair = measures.one[ pair - 1 ];\n price = price + ( measuresPair ? measuresPair.price.value : 0 );\n }\n return price;\n }\n\n const returnPrice = (pair:number) => {\n if(advancePrice){\n return `${getAdvancePairPrice((pair))} ${breakdown.currency}`;\n }\n\n return pair === 1 ? `${breakdown.pair1.deliveryPrice} ${breakdown.currency}` : `${breakdown.pair2.deliveryPrice} ${breakdown.currency}`\n }\n const existingMeasurement = () =>{\n if(pair === 1 && measurementData.one.length >= 1) return true;\n if(pair === 2 && measurementData.one.length === 2) return true; \n return false;\n }\n const get = () => {\n const lensDesign = pair === 1 ? lensRecommendation?.pair1?.correct.product?.lensDesign : \n lensRecommendation?.pair2?.correct.product?.lensDesign;\n switch(lensDesign){\n case LensCategoryType.PROGRESSIVE: return t('pair_1_tab_del_2_p1progressive_vision')\n case LensCategoryType.SINGLE_VISION: return t('pair_1_tab_del_p1__single_vision')\n case LensCategoryType.PROGRESSIVE_SV_LENS: return t('delivery_design_lens3')\n default: return t('delivery_design_lens3')\n }\n }\n const getDesc = () => {\n if(lensRecommendation?.pair1?.correct){\n const lensDesign = pair === 1 ? lensRecommendation?.pair1?.correct.product?.lensDesign : \n lensRecommendation?.pair2?.correct.product?.lensDesign;\n switch(lensDesign){\n case LensCategoryType.PROGRESSIVE: return t('pair_1_tab_del_p1_progressive_vision_text')\n case LensCategoryType.SINGLE_VISION: return t('pair_1_tab_del_p1_single_vision')\n case LensCategoryType.PROGRESSIVE_SV_LENS: return t('pair_1_tab_del_p1_single_vision')\n default: return t('pair_1_tab_del_p1_single_vision')\n }\n }\n return ''\n \n }\n return (\n
    \n \n \n \n { existingMeasurement() && } \n\n
    \n )\n}\n\nexport default DeliveryPair;","import React from 'react';\nimport Icon from '../../../components/ui/Icon';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport Text from '../../../components/ui/Text';\nimport PrescriptionForm from '../../prescription/components/PrescriptionForm';\nimport { useSelector } from 'react-redux';\nimport { getApp } from '../../../store/slices/app.slice';\nimport useTranslation from '../../../utils/hooks/useTranslation';\n\ninterface Props {\n \n}\n\nconst DeliveryPrescription : React.FC = () => {\n // VARIABLES\n const [B, E] = useBEM('delivery-prescription');\n const { t } = useTranslation(useSelector(getApp));\n // HOOKS\n\n // METHODS\n\n return (\n
    \n \n
    \n {/* */}\n \n
    \n\n
    \n

    {t('delivery_del__prescription')}

    \n \n {t('delivery_del__text_underneath_rx')}\n \n\n \n
    \n\n
    \n )\n}\n\nexport default DeliveryPrescription;","import React from 'react';\nimport useBEM from '../../../utils/hooks/useBEM';\n\ninterface Props {\n name: string\n}\n\nconst DeliverySummarySection : React.FC = ({\n name,\n children\n}) => {\n // VARIABLES\n const [B, E] = useBEM('delivery-summary-section');\n\n // HOOKS\n\n // METHODS\n\n return (\n
    \n \n\n {children}\n\n
    \n {name}\n
    \n
    \n )\n}\n\nexport default DeliverySummarySection;","import iListMenuItem from '../interface/list-menu-item.interface';\n\nconst deliverySummary = {\n pair1:{\n details: {\n pair:1,\n type:\"Progressive vision\",\n description:\"Ut non eleifend turpis, a egestas diam. Cras mi leo, posuere sit amet tincidunt quis, aliquet ac nisl. Phasellus tellus orci, pharetra eu sodales in, viverra a urna. Fusce viverra congue tristique. Ut id mauris ac mauris convallis vehicula id eu ligula.\",\n price:\"450\"\n } \n },\n pair2:{\n details: {\n pair:2,\n type:\"Sun Vision\",\n description:\"Ut non eleifend turpis, a egestas diam. Cras mi leo, posuere sit amet tincidunt quis, aliquet ac nisl. Phasellus tellus orci, pharetra eu sodales in, viverra a urna. Fusce viverra congue tristique. Ut id mauris ac mauris convallis vehicula id eu ligula.\",\n price:\"250\"\n } \n }\n}\n\nexport const NearVisionMenuItems: iListMenuItem[] = \n[\n // {\n // value: 'smartwatch',\n // label: 'vision_test_vis_test_smartwatch',\n // icon: 'watch'\n // },\n {\n value: 'smartphone', \n label: 'vision_test_vis_test_smartphone',\n icon: 'mobile'\n },\n {\n value: 'laptop', \n label: 'vision_test_vis_test_laptop',\n icon: 'laptop'\n },\n {\n value: 'desktop', \n label: 'vision_test_vis_test_desktop',\n icon: 'computer2'\n }\n] \n\nexport const visionTestValues = \n[\n { \n m: '1', \n p: '4', \n va: '0,4', \n text: 'vision_test_vis_test_va=0,4_content'\n },\n { \n m: '0,8', \n p: '3,2', \n va: '0,5', \n text: 'vision_test_vis_test_va=0,5_content'\n },\n { \n m: '0,63', \n p: '2,5', \n va: '0,63', \n text: 'vision_test_vis_test_va=0,63_content'\n },\n { \n m: '0,5', \n p: '2', \n va: '0,8', \n text: 'vision_test_va=0,8_content'\n },\n { \n m: '0,4', \n p: '1,5', \n va: '1,0', \n text: 'vision_test_vis_test_va=1,0_content'\n }\n]\n\nexport default deliverySummary;","import React, { useState } from 'react';\nimport Accordion from '../../../components/ui/Accordion';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport ListMenu from '../../../components/ui/ListMenu';\nimport iListMenuItem from '../../../interface/list-menu-item.interface';\nimport {visionTestValues, NearVisionMenuItems} from '../../../constants/delivery.constants';\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport { useSelector } from 'react-redux';\nimport { getApp } from '../../../store/slices/app.slice';\n\ninterface Props {\n\n}\n\nconst DeliveryVisiontest : React.FC = () => {\n // VARIABLES\n const [B, E] = useBEM('delivery-vision-test');\n const [selectedMenuItem, setSelectedMenuItem] = useState(undefined);\n const { t } = useTranslation(useSelector(getApp));\n // HOOKS\n\n // METHODS\n\n const onDeviceSelect = ( menuItem: iListMenuItem ) => {\n setSelectedMenuItem(menuItem)\n }\n\n return (\n
    \n

    {t('vision_tests_tab_del__verify_your_vision')}

    \n
    \n
    \n \n \n \n
    \n
    \n {selectedMenuItem !== undefined ?\n visionTestValues.map( (testItem, index) => ( \n
    \n
    \n

    {`${testItem.m} M`}

    \n

    {`P ${testItem.p}`}

    \n

    {`VA = ${testItem.va}`}

    \n
    \n
    \n {t(testItem.text)}\n
    \n
    \n ))\n : \n

    \n {/* {`You must select\n a distance`} */}\n

    \n }\n
    \n
    \n
    \n )\n}\n\nexport default DeliveryVisiontest;","import React, { useEffect, useRef } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport deliverySlice, { getDelivery } from '../../../store/slices/delivery.slice';\nimport { getSummary } from '../../../store/slices/summary.slice';\nimport { getUser } from '../../../store/slices/user.slice';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport DeliveryAdvices from './DeliveryAdvices';\nimport DeliveryNavigation from './DeliveryNavigation';\nimport DeliveryPair from './DeliveryPair';\nimport DeliveryPrescription from './DeliveryPrescription';\nimport DeliverySummarySection from './DeliverySummarySection';\nimport DeliveryVisiontest from './DeliveryVisionTest';\n\ninterface Props {\n\n}\n\nconst DeliverySummary : React.FC = () => {\n // VARIABLES\n const [B, E] = useBEM('delivery-summary');\n const dispatch = useDispatch();\n const { scrollView, isShowSummaryDetails } = useSelector(getDelivery);\n const deliverySummaryRef = useRef(null);\n const { summaryList1, summaryList2 } = useSelector(getUser);\n\n // HOOKS\n useEffect(() => {\n const observer = viewObserver();\n const lensObserver = lensViewObserver();\n return () => {\n observer.disconnect();\n lensObserver.disconnect()\n }; \n }, [])\n\n useEffect(() => { \n scrollToView();\n }, [scrollView])\n\n // METHODS\n const viewObserver = () => {\n const options = {\n root: document.querySelector('#parent'),\n threshold: 0\n }\n const observer = new IntersectionObserver(checkView, options);\n const targetElements = document.querySelectorAll(\".target\");\n targetElements.forEach(el => observer.observe(el)); \n return observer;\n }\n\n const lensViewObserver = () => {\n const options = {\n root: document.querySelector('#parent'),\n threshold: 0.25\n }\n const observer = new IntersectionObserver(checkLensView, options);\n const targetElements = document.querySelectorAll(\".lens-transition-in-animation\");\n targetElements.forEach(el => observer.observe(el)); \n return observer;\n }\n\n const checkView = (entries: any[]) => {\n entries.forEach( entry => {\n if(entry.isIntersecting) {\n const view = entry.target.getAttribute('data-view');\n if(view)dispatch(deliverySlice.actions.setActiveSection(view)); \n }\n });\n }\n\n const checkLensView = (entries: any[]) => {\n entries.forEach( entry => {\n if(entry.isIntersecting) {\n if(!entry.target)return;\n if(entry.target.classList.contains('lens-transition-in-animation--animate'))return; \n entry.target.classList.add('lens-transition-in-animation--animate');\n }\n });\n }\n\n const onNull = (list:any) =>{\n if(!list)return false;\n const arr = list.filter((el: any) => el );\n const condition = arr && arr.length > 0 ? true: false; \n return condition;\n }\n\n const scrollToView = () => {\n if(!scrollView)return;\n const el = document.querySelector(`.${scrollView}`);\n if(!el)return;\n el?.scrollIntoView({\n behavior: \"smooth\",\n block: \"start\",\n }); \n }\n return (\n
    \n \n \n \n\n
    \n \n \n \n \n {\n onNull(summaryList1) && (\n \n \n \n )\n }\n {\n onNull(summaryList2) && (\n \n \n \n )\n }\n\n \n \n \n\n \n \n \n\n
    \n\n
    \n )\n}\n\nexport default DeliverySummary;","import React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport Button from '../../../components/ui/Button';\nimport iLensProposalField from '../../../interface/lens-proposal-field.interface';\nimport { getApp } from '../../../store/slices/app.slice';\nimport deliverySlice, { getDelivery } from '../../../store/slices/delivery.slice';\nimport { getUser } from '../../../store/slices/user.slice';\nimport LensCategoryType from '../../../types/lens-category.type';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport useAdvancePricing from '../../advance-price-setting/useAdvancePricing';\nimport useDisableCountry from '../../../utils/hooks/useDisableCountry';\n\ninterface Props {\n\n}\n\nconst DeliveryTotal : React.FC = () => {\n // VARIABLES\n const [B, E] = useBEM('delivery-total');\n const appStore = useSelector(getApp);\n const { isShowSummaryDetails } = useSelector(getDelivery);\n const { complementaryEquipment, lensConsultation, measures } = useSelector(getUser);\n const { isValidated, breakdown } = lensConsultation\n const { t } = useTranslation(appStore);\n const dispatch = useDispatch();\n const [ advancePrice, setAdvancePrice ] = useState();\n const { \n isAdvancePricing,\n getAdvancePricingTotal\n } = useAdvancePricing(appStore);\n\n\n useEffect(() => {\n if(!lensConsultation?.lensRecommendation || !isAdvancePricing)return;\n setAdvancePrice(getAdvancePricingTotal(lensConsultation.lensRecommendation));\n }, [])\n\n\n // HOOKS\n\n // METHODS\n const showSummary = () => {\n dispatch(deliverySlice.actions.showSummaryDetails(true));\n }\n\n const validate = () => {\n dispatch(deliverySlice.actions.validate());\n }\n\n const validatePairs = (isPair1: boolean) => {\n if(isValidated){\n if(isPair1){\n return breakdown.pair1.enabled\n } else{\n return breakdown.pair2.enabled\n }\n }else{\n return false\n }\n }\n\n const getBreakdown = () => {\n if(advancePrice){\n return `${(getPairPrice('pair1') + getPairPrice('pair2'))} ${breakdown.currency}`;\n }\n return `${breakdown.deliveryTotal} ${breakdown.currency}`\n }\n\n const get = (lensDesign: string | undefined) => {\n switch(lensDesign){\n case LensCategoryType.PROGRESSIVE: return t('delivery_design_lens1')\n case LensCategoryType.SINGLE_VISION: return t('delivery_design_lens2')\n case LensCategoryType.PROGRESSIVE_SV_LENS: return t('delivery_design_lens3')\n case 'both': return t('delivery_design_lens3')\n default: return ''\n }\n }\n\n const withComplementaryEquipment = () => {\n return complementaryEquipment && complementaryEquipment[0].value;\n }\n\n const getPair2VisionType = () => {\n let vision = '';\n const translationKey: {\n [key:string]: string \n } = {\n prescription_rx_driving: 'delivery_design_lens6',\n prescription_rx_computer: 'delivery_design_lens4',\n prescription_rx_sun: 'delivery_design_lens5'\n }\n const label = (complementaryEquipment as iLensProposalField[])[0].value?.label;\n\n if(withComplementaryEquipment() && label){\n vision = t(translationKey[label]);\n }\n return vision;\n }\n\n const getPairPrice = (pair: 'pair1' | 'pair2') => {\n let price = !advancePrice ? \n breakdown[pair].deliveryPrice :\n advancePrice[pair].total;\n\n if(validatePairs(pair === 'pair1') && advancePrice && measures.one){\n const measuresPair = measures.one[ pair === 'pair1' ? 0 : 1 ];\n price = price + ( measuresPair ? measuresPair.price.value : 0 );\n }\n\n return price;\n }\n\n // const buttonIcon = (color: string) => {\n // return (\n // \n // )\n // }\n // const isSunExp = experience === ExperienceType.SUN\n\n // const backgroundImageExperience = () => {\n // return isSunExp ? deliverySummarySun : deliverySummary\n // }\n\n const [ hidePrice ] = useDisableCountry(['gr'])\n\n return (\n
    \n \n
    \n

    {t('delivery_del__summary')}

    \n\n
      \n {\n validatePairs(true) ?\n
    • \n \n

      {breakdown.pair1.categoryLens}

      \n\n {\n !hidePrice && (\n {getPairPrice('pair1')} {breakdown.currency}\n )\n }\n \n
    • :
    • -
    • \n }\n {\n validatePairs(false) ?\n
    • \n \n \n { withComplementaryEquipment() && \n

      {getPair2VisionType()}

      }\n\n { !withComplementaryEquipment() && \n

      {breakdown.pair2.categoryLens}

      } \n\n {\n !hidePrice && (\n {getPairPrice('pair2')} {breakdown.currency}\n )\n }\n\n
    • :
    • -
    • \n }\n {\n (validatePairs(true) || validatePairs(false)) && !hidePrice ?\n
    • \n \n {getBreakdown()}\n
    • :
    • -
    • \n }\n
    \n\n
    \n
    \n
    \n\n
    \n
    \n )\n}\n\nexport default DeliveryTotal;","import React, { useEffect } from 'react';\nimport { useDispatch } from 'react-redux';\nimport lensConsultationSlice from '../../store/slices/lens-consultation.slice';\nimport userSlice from '../../store/slices/user.slice';\nimport useBEM from '../../utils/hooks/useBEM';\nimport usePricing from '../../utils/hooks/usePricing';\nimport DeliverySummary from './components/DeliverySummary';\nimport DeliveryTotal from './components/DeliveryTotal';\n\ninterface Props {\n\n}\n\nconst Delivery : React.FC = () => {\n // VARIABLES\n const [B] = useBEM('delivery-page');\n const { getBreakdown } = usePricing()\n const dispatch = useDispatch();\n\n // HOOKS\n useEffect(()=>{\n \n const breakdown = getBreakdown()\n console.log('breakdown', breakdown)\n dispatch(lensConsultationSlice.actions.setBreakdown(breakdown));\n \n },[])\n\n // METHODS\n\n return (\n
    \n\n \n \n\n
    \n )\n}\n\nexport default Delivery;","import moment from 'moment';\nimport React from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport Icon from '../../../components/ui/Icon';\nimport ematDetails from '../../../interface/emat-details';\nimport appSlice, { getApp } from '../../../store/slices/app.slice';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport useTranslation from '../../../utils/hooks/useTranslation';\ninterface Props {\n data?: ematDetails;\n}\nconst EmatCard : React.FC = (\n data,\n) => {\n // VARIABLES\n // HOOKS\n const [B, E] = useBEM('emat-card');\n const { t } = useTranslation(useSelector(getApp));\n const dispatch = useDispatch();\n // METHODS\n const returnImage = (value: string=\"\", condition: boolean = false, file:string=\"\") =>{\n switch(value.toLowerCase()){\n case 'pdf':\n case 'document':\n if(condition) return 'document-white'\n return 'document';\n case 'video':\n if(condition) return 'play-white'\n return 'play';\n case 'image':\n if(condition) return 'camera-white'\n return 'camera';\n default:\n if(file.toLowerCase() === 'jpg' || file.toLowerCase() === 'png') return 'camera';\n return value\n }\n }\n const openModal = (list:any) => {\n dispatch(appSlice.actions.setEmatModal({open: true, detail: list})); \n }\n const onTranslate = (word:string=\"\", file:string=\"\") =>{\n switch(word.toLowerCase()){\n case 'pdf':\n case 'document':\n return t('home_hom_pdf');\n case 'video':\n return t('home_hom_video');\n case 'photos':\n case 'image':\n return t('home_hom_photos');\n default:{\n if(file.toLowerCase() === 'jpg' || file.toLowerCase() === 'png') return t('home_hom_photos');\n else return word;\n }\n \n }\n }\n return (\n
    openModal(data.data)}>\n
    \n \n \n
    {moment(data.data?.created_date, \"YYYY-MM-DD\").format(\"MM/DD/YYYY\").toString()}
    \n
    \n
    \n

    {data.data?.description}

    \n \n
    \n
    \n )\n}\n\nexport default EmatCard;","import React, { createRef, useEffect, useRef, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport Icon from '../../../components/ui/Icon';\nimport { getApp } from '../../../store/slices/app.slice';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport EmatCard from './EmatCard';\ninterface Props {\n click?: () => void,\n}\n\nconst EmatSlider : React.FC = (\n click,\n) => {\n // VARIABLES\n const [positionSlider, setPositionSlider] = useState('');\n const [itemsLength, setItemsLength] = useState(0);\n const {recentNew, recentEmat} = useSelector(getApp);\n const [step, setStep] = useState(0);\n const [maxHeight, setMaxHeight] = useState(false);\n const [minHeight, setMinHeight] = useState(false);\n const sliderStep = 50;\n const myRef = React.createRef();\n \n const [B, E] = useBEM('emat-slider');\n const { t } = useTranslation(useSelector(getApp));\n const currUrl = window.location.pathname.split(\"/\").pop();\n \n // HOOKS\n // METHODS\n\n useEffect(() => {\n if(currUrl === 'emat') setItemsLength(getLength(recentEmat));\n else setItemsLength(getLength(recentNew));\n }, [recentNew, recentEmat]);\n const onClickNext = (position: string) => {\n let tempCount = step;\n let slider = sliderStep;\n if(step<=1) {\n tempCount = step;\n }\n if(step>(itemsLength)) {\n tempCount =itemsLength;\n }\n if(position === 'prev'){\n slider = slider-(sliderStep*tempCount) \n tempCount--;\n }else{\n \n tempCount++;\n slider = -(sliderStep*tempCount)\n \n }\n setStep(tempCount)\n setPositionSlider(`translateX(${slider}rem)`);\n }\n const getLength = (list:any = []) =>{\n let newList:any = [];\n list.map((ls:any)=>{\n if(ls !== 0) newList.push(ls)\n })\n return newList.length-2;\n }\n const onUndefined = () =>{\n let arr: any [] = [];\n if(currUrl === 'emat'){\n recentEmat.map((ls:any)=>{\n if(ls === 0) arr.push(false);\n else arr.push(true);\n })\n }else{\n recentNew.map((ls:any)=>{\n if(ls === 0) arr.push(false);\n else arr.push(true);\n })\n }\n const cond = arr.includes(true) ? true : false;\n return cond ;\n }\n\n const returnList = () =>{\n if(currUrl === 'emat') return recentEmat;\n else return recentNew;\n }\n\n const maxHeightScroll = () =>{\n const { scrollLeft, scrollWidth, clientWidth } = myRef.current;\n if (Math.round(scrollLeft + clientWidth) === scrollWidth) {\n // TO SOMETHING HERE\n setMaxHeight(true);\n setMinHeight(false);\n }\n // else if(Math.round(scrollLeft + clientWidth) !== scrollWidth){\n // setMaxHeight(false);\n // setMaxHeight(false);\n // }\n if(Math.round(scrollLeft + clientWidth) === 919){\n setMinHeight(true);\n setMaxHeight(false);\n }\n // else if (Math.round(scrollLeft + clientWidth) > 919){\n // setMaxHeight(false);\n // setMaxHeight(false);\n // }\n }\n \n const onNextScroll = (position:string) =>{\n let tempCount = step;\n let slider = sliderStep;\n \n if(step<=1) {\n tempCount = step;\n }\n if(step>(itemsLength)) {\n tempCount =itemsLength;\n }\n if(position === 'prev'){ \n myRef.current.scrollLeft -= slider*15; \n slider = (sliderStep*tempCount) \n tempCount--;\n }else{\n \n tempCount++;\n slider = (sliderStep*tempCount);\n myRef.current.scrollLeft += slider*15;\n \n }\n \n setStep(tempCount)\n \n }\n\n return <>\n {\n onUndefined() && (\n
    \n
    \n

    {t('home_hom_rfiles')}

    \n
    \n onClickNext('prev')}/>\n name=\"right-arrow-circle\" click={()=>onNextScroll('prev')}/>\n = (itemsLength-2) ? 'disabled': ''}\n // name=\"right-arrow-circle\" click={()=>onClickNext('next')}/>\n name=\"right-arrow-circle\" click={()=>onNextScroll('next')}/>\n\n
    \n
    \n
    \n {\n returnList()?.map((list:any, key:number) =>{\n return list !== 0 && (\n \n ) \n })\n }\n
    \n \n
    \n )\n }\n \n \n}\n\nexport default EmatSlider;","import React, { useEffect, useState } from 'react';\nimport Icon from '../../components/ui/Icon';\nimport useBEM from '../../utils/hooks/useBEM';\nimport { useDispatch, useSelector } from 'react-redux';\nimport useTranslation from '../../utils/hooks/useTranslation';\nimport appSlice, { getApp } from '../../store/slices/app.slice';\nimport EmatSlider from './components/EmatSlider';\nimport Button from '../../components/ui/Button';\nimport InfiniteScroll from 'react-infinite-scroll-component';\nimport axios from 'axios';\nimport Modal from '../../components/Modal';\nimport ENDPOINTS from '../../constants/endpoints';\nimport moment from 'moment';\nimport ematDetails from '../../interface/emat-details';\n\ninterface Props {\n\n}\n\nconst Emat : React.FC = () => {\n // VARIABLES\n\n const fileSort = [\n { label: 'home_hom_all', sortKey: 'all', selected: true},\n { label: 'home_hom_photos', sortKey: 'image', selected: false},\n { label: 'home_hom_video', sortKey: 'video', selected: false},\n { label: 'home_hom_pdf' , sortKey: 'pdf', selected: false},\n ];\n\n const modalStyle = {\n width: \"95.4rem\",\n height: \"69.8rem\",\n borderRadius: \"15px\"\n }\n const [Bfs, Efs] = useBEM('file-sort');\n const [Bfc, Efc] = useBEM('file-container');\n const [B, E] = useBEM('emat-model');\n const { t } = useTranslation(useSelector(getApp));\n const [sortKey, setSortKey] = useState('all');\n const [page, setPage] = useState(1);\n const [items, setItems] = useState([] as any);\n const dispatch = useDispatch();\n const { ematModal } = useSelector(getApp);\n const { token } = useSelector(getApp); \n const currUrl = window.location.pathname.split(\"/\").pop();\n // HOOKS\n // METHODS\n \n const onClickSort = (value:string) =>{\n setSortKey(value)\n }\n const modalOnClose = () => {\n dispatch(appSlice.actions.setEmatModal({open: false}));\n }\n useEffect(() => {\n fetchMore();\n }, []);\n\n\n const fetchMore = () =>{\n const axiosConfig = { headers: {\"Authorization\" : `Bearer ${token}`} }\n // const axiosConfig = { headers: {\"Authorization\" : `Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJFc3NpbG9yIENvbXBhbmlvbiIsImF1ZCI6IiIsImF2YWlsYWJsZV9kYXRlIjoiMjAyMS0wNi0wNCIsImlzcyI6InVybjpcL1wvYXBpZ2VlLWVkZ2UtZXNzaWxvci1KV1QiLCJtYWNoaW5lX2lkIjoiZDUyMGM3YTgtNDIxYi00NTYzLWI5NTUtZjVhYmM1NmI5N2VjIiwic3RhdGUiOiI4IiwiZXhwaXJhdGlvbl9kYXRlIjoiMjAyMS0wNy0wNCIsImlhdCI6MTYyMzI5NTk1MywianRpIjoiZmVjYTAwYmYtMjEyMy00MWU5LWE1MDctMTVkYTgxZmE3YTAyIiwibGljZW5zZV9udW1iZXIiOiJURVNULVczTUEtSk1BTS0xNU1MTSJ9.DmF_8MEBvCUeFmJCaA2pageG-NHrd_wt7sOf7XtHAN60Hbp2FK-09H3amNcyh3nxLAu7HgZzRDchXi-IBnzTvkE5hbDck72l3up1F__dY828hEFeYBdrQuhvu1xL9S48AJym_z_xxShEja32ZxoVZekLTSyOdfxBGy6U4yQjQmOsN-xk8R9rPI2u5eXUdgie59Vsni3AQFHdKkQDeVWict8yTwdZNVpzkzxn2uu6rZAiHMriBKStTpRRDIkIP209Z9POIdHf-kzh28JEgFLbuXcLwhIdA1hMzvVErISrysCDtqyxi9Gog4o9Z-KwKOkI6G7ZArk81H5ozGxWy4ETww`} }\n const url = currUrl === 'emat' ?\n `${ENDPOINTS.emats}?page=${page}` : \n `${ENDPOINTS.whatsnew}?page=${page}`\n setPage(page+1)\n axios\n .get(\n url, axiosConfig)\n .then(res => {\n res.data.sort(function(a:any,b:any){\n return moment(b.created_date,\"YYYY-MM-DD\").date() - moment(a.created_date,\"YYYY-MM-DD\").date()\n })\n setItems([...items, ...res.data]);\n const today = new Date();\n \n if(page===1 && currUrl === 'emat')\n dispatch(appSlice.actions.seteMatList({today: today, load: res.data}));\n if(page===1 && currUrl !== 'emat')\n dispatch(appSlice.actions.setNewList({today:today, load: res.data}));\n }).catch(onError);\n }\n const onError = (error: any) => {\n }\n const groupBy = (data: any[]) =>{\n \n if(sortKey === 'all') return data;\n if (sortKey === 'pdf') {\n return data.filter((\n filter) => \n filter.label.toLowerCase() === sortKey || filter.label.toLowerCase() === 'document')\n }\n if(sortKey === 'image'){\n return data.filter((\n filter) => \n filter.label.toLowerCase() === sortKey || filter.type.toLowerCase() === 'jpg'\n || filter.type.toLowerCase() === 'png')\n }\n const newData = data.filter((\n filter) => \n filter.label.toLowerCase() === sortKey )\n return newData;\n }\n\n const onTranslate = (word:string, file:string) =>{\n switch(word.toLowerCase()){\n case 'pdf':\n case 'document':\n return t('home_hom_pdf');\n case 'video':\n return t('home_hom_video');\n case 'photos':\n case 'image':\n return t('home_hom_photos');\n default:{\n if(file.toLowerCase() === 'jpg' || file.toLowerCase() === 'png') return t('home_hom_photos');\n else return word;\n }\n \n }\n }\n const renderFileSort = () => {\n let sort = fileSort.map((sort,key) => {\n return (\n \n )\n })\n\n return sort\n }\n const openModal = (type: string, file: ematDetails) =>{\n dispatch(appSlice.actions.setEmatModal({open: true, detail: file})); \n }\n\n\n const returnImage = (value: string, condition: boolean = false, file:string=\"\") =>{\n switch(value.toLowerCase()){\n case 'pdf':\n case 'document':\n if(condition) return 'document-white'\n return 'document';\n case 'video':\n if(condition) return 'play-white'\n return 'play';\n case 'image':\n if(condition) return 'camera-white'\n return 'camera';\n default:\n if(file.toLowerCase() === 'jpg' || file.toLowerCase() === 'png') return 'camera';\n return value\n }\n }\n const renderFiles = () => {\n return (\n \n groupBy(items).map((file,key) => {\n return
  • \n \n \n \n \n \n
  • \n })\n )\n\n }\n\n const onType = () =>{\n let type:string = '';\n if(ematModal.selected?.label){\n switch(ematModal.selected?.label.toLowerCase()){\n case 'pdf':\n case 'document':\n type = 'document';\n break;\n case 'video':\n type = 'video';\n break;\n case 'image':\n type = 'image';\n break;\n \n }\n if (ematModal.selected?.type.toLowerCase() === \"jpg\" || ematModal.selected?.type.toLowerCase() === \"png\")\n type = 'image';\n return type;\n }\n return ''\n\n \n }\n\n return
    \n \n
    \n
    \n
      \n {renderFileSort()}\n
    \n
    \n
    \n } \n next={fetchMore} hasMore={true} endMessage={

    Reached

    }\n style={{width: '85vw'}}\n scrollableTarget=\"scrollableDiv\" >\n
      \n {renderFiles()}\n
    \n
    \n \n
    \n
    \n modalOnClose()}>\n
    \n
    \n
    \n \n {\n onType() === 'document' && (\n \n \n \n )\n \n }\n {\n onType() === 'video' && (\n \n \n )\n \n }\n {\n onType() === 'image' && (\n \n \n )\n \n }\n \n
    \n
    \n
    \n}\n\nexport default Emat;\n","import React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport Button from '../../components/ui/Button';\nimport Icon from '../../components/ui/Icon';\nimport InputText from '../../components/ui/InputText';\nimport routes from '../../constants/routes.constant';\nimport useBEM from '../../utils/hooks/useBEM';\nimport useGoto from '../../utils/hooks/useGoto';\nimport useTranslation from '../../utils/hooks/useTranslation';\nimport appSlice, { getApp } from '../../store/slices/app.slice';\nimport axios from 'axios';\nimport { v4 as uuidv4 } from 'uuid';\nimport useENV from '../../utils/hooks/useEnv';\nimport ENDPOINTS from '../../constants/endpoints';\nimport productsSlice, { getProducts } from '../../store/slices/products.slice';\nimport useProducts from '../../utils/hooks/useProducts';\nimport { IndexedDBContext, IndexedDBContextType } from '../../utils/context/indexedDBContext';\nimport { TRANSLATIONS_DEFAULT } from '../../constants/translations.contants';\nimport eyePNG from '../../assets/svg/eyeIcon.svg'\nimport useEprom from '../../utils/hooks/useEprom';\nimport { IProductEprom } from '../../constants/eprom.constants';\ninterface Props {\n\n}\n\nconst LicenseActivation : React.FC = () => {\n // VARIABLES\n const [B, E] = useBEM('license-activation');\n const [id, setId] = useState('');\n const [password, setPassword] = useState('');\n const dispatch = useDispatch();\n const goto = useGoto();\n const { t, getTranslations2 } = useTranslation(useSelector(getApp));\n const { getProductData2, getPriceCombination2, mapProducts } = useProducts(useSelector(getProducts));\n const [deviceId, setDeviceId] = useState();\n const [errorMessage, setErrorMessage] = useState('');\n const { accountDetails } = useSelector(getApp);\n const {get, insert, update} = React.useContext(IndexedDBContext) as IndexedDBContextType;\n const { lensDemo } = useSelector(getProducts);\n const env = useENV()\n const {\n getEPROMData,\n formatData\n } = useEprom();\n\n // HOOKS\n useEffect(() => {\n // connect();\n setDeviceId(getDeviceID());\n }, [])\n\n // METHODS\n\n\n const activate = async () => {\n\n const machineID = await get('applicationStore', 'machineId');\n setErrorMessage('');\n axios.post(ENDPOINTS.activateLicense, {\n username: id,\n password: password,\n machine_id: machineID ? machineID.value : deviceId //'a168bdb7-3ad3-42a6-adb7-2275ba3b1b67'\n }).then((res) => {\n const token = res.data['bearer-token'];\n dispatch(appSlice.actions.setToken(token));\n dispatch(appSlice.actions.saveLicense(password));\n\n if(!machineID)insert('applicationStore', {\n id: 'machineId',\n value: deviceId\n });\n getAccountDetails();\n })\n .catch(onError);\n }\n\n const getAccountDetails = () => {\n dispatch(appSlice.actions.loading(true));\n\n axios.get(ENDPOINTS.account, { headers: {Authorization : true, background : true} }).then(async (res) => {\n \n const { shop } = res.data\n let currentCountry = shop.country\n localStorage.setItem(\"country\", currentCountry)\n\n dispatch(appSlice.actions.saveAccountDetails(res.data));\n\n try {\n const {responseData: {data: translationsData}} = await getTranslations2(res.data.shop.region);\n if(!translationsData){\n onError('No translation data found.');\n return\n }\n const currentLanguageData = await get('languageStore', 'translations');\n const todo = !currentLanguageData ? insert : update;\n\n await todo('languageStore', {\n id: 'translations',\n value: translationsData.country\n });\n dispatch(appSlice.actions.saveRegions(translationsData.region));\n dispatch(appSlice.actions.setTranslation(TRANSLATIONS_DEFAULT.enUS));\n const products = await getProductData2();\n const mappedProductData = mapProducts(products.responseData.data.products, false);\n dispatch(appSlice.actions.setProducts(mappedProductData));\n dispatch(productsSlice.actions.updateProductList(mappedProductData));\n dispatch(productsSlice.actions.attachedProductDemo({\n demos: lensDemo,\n productList: mappedProductData\n }))\n\n const prices = await getPriceCombination2();\n dispatch(appSlice.actions.setProductCombi({data: prices.responseData.data}));\n\n const {region, country, eprom} = res.data.shop;\n\n if(eprom) {\n const result: any = await getEPROMData(region, country);\n const formatted = formatData(result.data, country); \n dispatch(appSlice.actions.saveEPROMData(formatted));\n } \n pushGADataLayers(res.data.currency.code, password);\n dispatch(appSlice.actions.loading(false));\n goto.route(routes.home, 100);\n } catch (error: any) {\n onError(error.responseData);\n }\n\n })\n .catch(onError);\n }\n\n const pushGADataLayers = (code: string, license: string) => {\n const win: any = window;\n const gaCode = accountDetails?.ga_code;\n win.dataLayer.push({\n //for custom GA Code\n // trackingId: gaCode !== undefined || gaCode !== \"\" ? gaCode : env.GA,\n trackingId: env.GA,\n // license,\n });\n }\n const onError = (error: any) => {\n dispatch(appSlice.actions.loading(false));\n\n try {\n setErrorMessage(error.response.data.message);\n } catch (error) {\n console.log(error);\n setErrorMessage('Unknown Error: Please try again');\n }\n }\n\n const getDeviceID = () => {\n return accountDetails?.machine_id || uuidv4();\n }\n\n return (\n
    \n\n
    \n \n\n\n \n\n

    {t('license_activation_welc')}

    \n {t('license_activation_note')}\n\n
    \n setId(v.target.value.toUpperCase())}/>\n setPassword(v.target.value.toUpperCase())}\n />\n
    \n\n
    \n \n activate()}\n text={t('license_activation_la_conct')}\n icon=\"right-arrow-circle-white\"\n className={E('connect')}\n disabled={ (!id || !password) ? true : false }/>\n
    \n
    \n
    \n )\n}\n\nexport default LicenseActivation;\n","import React, { useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport Button from '../../../components/ui/Button';\nimport CircleArrow from '../../../components/ui/CircleArrow';\nimport Text from '../../../components/ui/Text';\nimport { getApp } from '../../../store/slices/app.slice';\nimport DiscoveryView from '../../../types/discovery-view.type';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport useGoogleAnalytics from '../../../utils/hooks/useGoogleAnalytics';\nimport useTranslation from '../../../utils/hooks/useTranslation';\n\ninterface Props {\n onNextView: (view: DiscoveryView) => void\n}\n\nconst DiscoveryIntro : React.FC = ({\n onNextView\n}) => {\n // VARIABLES\n const [B, E] = useBEM('discovery-intro');\n const [animate, setAnimate] = useState(false);\n const {t} = useTranslation(useSelector(getApp));\n const ga = useGoogleAnalytics();\n\n // HOOKS\n\n // METHODS\n const onNextViewHandler = () => {\n setAnimate(true);\n setTimeout(() => {\n onNextView(DiscoveryView.STEPS)\n }, 500);\n\n ga.event({\n category: 'Home page',\n action: 'Discover Essilor',\n label: 'Start Experience'\n })\n }\n\n return (\n
    \n \n \n {t('discovery_essilor_de_essilor_designs_')}\n \n\n
    \n )\n}\n\nexport default DiscoveryIntro;","import React from 'react';\nimport Arrow from '../../../components/ui/Arrow';\nimport useBEM from '../../../utils/hooks/useBEM';\n\ninterface Props {\n className: string,\n direction:\"up\" | \"down\" | \"left\" | \"right\",\n click: () => void\n}\n\nconst DiscoveryArrows : React.FC = ({\n className,\n direction,\n click\n}) => {\n // VARIABLES\n const [B] = useBEM('discovery-arrows');\n\n // HOOKS\n\n // METHODS\n\n return (\n
    \n \n \n \n
    \n )\n}\n\nexport default DiscoveryArrows;","import React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport discoverySlice, { getDiscovery } from '../../../store/slices/discovery.slice';\nimport useBEM from '../../../utils/hooks/useBEM';\n\nimport enhanceLensOuter from './../../../assets/images/discovery/enhance-lens-min.png';\nimport protectLensOuter from './../../../assets/images/discovery/protect-lens.png';\nimport correctLensOuter from './../../../assets/images/discovery/correct-lens.png';\nimport DiscoveryArrows from './DiscoveryArrows';\nimport LensFamilyType from '../../../types/lens-family.type';\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport { getApp } from '../../../store/slices/app.slice';\n\ninterface Props {\n\n}\n\nconst DiscoveryLens : React.FC = () => {\n // VARIABLES\n const [B, E] = useBEM('discovery-lens');\n const dispatch = useDispatch();\n const { selectedLens } = useSelector(getDiscovery);\n const [fadeIn, setFadeIn] = useState(false);\n const lensFamily = ['correct', 'protect', 'enhance'];\n const {t} = useTranslation(useSelector(getApp));\n const translationKey: {\n [key: string]: string\n } = {\n correct: 'discovery_essilor_de_correct',\n protect: 'discovery_essilor_de_protect_',\n enhance: 'discovery_essilor_de_enhance'\n }\n\n // HOOKS\n useEffect(() => {\n setFadeIn(true);\n }, [])\n\n // METHODS\n const selectLens = (lens: string) => {\n dispatch(discoverySlice.actions.selectLens(lens as LensFamilyType));\n }\n\n const showLensClass = (lens: string) => {\n return lens === selectedLens ? 'show' : ''\n }\n\n const gotoLens = (lens: string) => {\n if(!selectedLens || selectedLens.length < 1)return;\n selectLens(lens);\n }\n\n const renderArrow = (\n direction: \"up\" | \"down\" | \"left\" | \"right\", \n position: 'left' | 'right',\n goto: string\n ) => {\n return (\n gotoLens(goto)} \n className={E('sprite-arrow', position)}/>\n )\n }\n return (\n
    \n
    \n\n
    \n
    \n
    \n {renderArrow('right', 'right', 'protect')}\n
    \n \"\"\n \n
    \n
    \n
    \n {renderArrow('left', 'left', 'correct')}\n {renderArrow('right', 'right', 'enhance')}\n
    \n \"\"\n \n
    \n
    \n
    \n {renderArrow('left', 'left', 'protect')}\n
    \n\n \"\"\n \n
    \n\n
      \n {\n lensFamily.map((item, index) => (\n
    • selectLens(item)} \n key={index}>\n {t(translationKey[item])}\n
    • \n ))\n }\n
    \n\n
    \n
    \n )\n}\n\nexport default DiscoveryLens;","const LENS_FAMILY_DESCRIPTION = {\n correct: {\n title: 'discovery_essilor_de_correct_protect_title',\n description: 'discovery_essilor_de_correct_your_vision'\n },\n protect: {\n title: 'discovery_essilor_de_protect_your_eyes_title',\n description: 'discovery_essilor_de_protect_your_eyes'\n },\n enhance: {\n title: 'discovery_essilor_de_enhance_clarity_title',\n description: 'discovery_essilor_de_enhance_clarity_'\n }\n}\n\nconst DISCOVER_STEPS = [\n {\n title: 'discovery_essilor_de_leader_in_innovation_title',\n description: 'discovery_essilor_de_leader_in_innovation_'\n },\n {\n title: 'discovery_essilor_de_human_centric_title',\n description: 'discovery_essilor_de_human_centric'\n },\n {\n title: 'discovery_essilor_de_trustable_partner_title',\n description: 'discovery_essilor_de_trustable_partner_'\n },\n {\n title: 'discovery_essilor_de_expert_craftsmanship_title',\n description: 'discovery_essilor_de_expert_craftsmanship'\n }\n]\n\nexport {\n LENS_FAMILY_DESCRIPTION,\n DISCOVER_STEPS\n}","import React, { useEffect, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport Button from '../../../components/ui/Button';\nimport CircleArrow from '../../../components/ui/CircleArrow';\nimport Text from '../../../components/ui/Text';\nimport { DISCOVER_STEPS } from '../../../constants/discovery.constants';\nimport { getApp } from '../../../store/slices/app.slice';\nimport DiscoveryView from '../../../types/discovery-view.type';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport useTranslation from '../../../utils/hooks/useTranslation';\n\ninterface Props {\n onNextView: (view: DiscoveryView) => void\n}\n\nconst DiscoverySteps : React.FC = ({\n onNextView\n}) => {\n // VARIABLES\n const [B, E] = useBEM('discovery-steps');\n const [step, setStep] = useState(0);\n const [animateIn, setAnimateIn] = useState(false);\n const [animateOut, setAnimateOut] = useState(false);\n const [fadeInSprite, setFadeInSprite] = useState(false);\n const {t} = useTranslation(useSelector(getApp));\n\n const steps = DISCOVER_STEPS\n\n // HOOKS\n useEffect(() => {\n setAnimateIn(true);\n\n setTimeout(() => {\n setFadeInSprite(true);\n }, 1000);\n }, [])\n\n // METHODS\n const next = () => {\n if(step === (steps.length - 1)) { \n onNextView(DiscoveryView.LENS);\n setFadeInSprite(false);\n setTimeout(() => setAnimateOut(true),1000)\n return;\n }\n setStep(step + 1);\n }\n\n const generateStepDots = (count: number) => {\n return new Array(count).fill('').map( (item, index) =>
    \n {index+1}/{steps.length}\n
    );\n }\n\n const animationClass = () => {\n const clas: string[] = [];\n if(animateIn)clas.push('animate-in');\n if(animateOut)clas.push('animate-out'); \n return clas;\n }\n\n\n return (\n
    \n
    \n
    \n
    \n {generateStepDots(step + 1)}\n
    \n\n
    \n

    \n {t(steps[step].title)}\n

    \n {t(steps[step].description)}\n\n
    \n\n
    \n {generateStepDots(steps.length - (step + 1))}\n
    \n
    \n
    \n )\n}\n\nexport default DiscoverySteps;","import React, { useEffect, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport Button from '../../../components/ui/Button';\nimport { LENS_FAMILY_DESCRIPTION } from '../../../constants/discovery.constants';\nimport { getApp } from '../../../store/slices/app.slice';\nimport { getDiscovery } from '../../../store/slices/discovery.slice';\nimport LensFamilyType from '../../../types/lens-family.type';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport Utils from '../../../utils/Utils';\n\ninterface Props {\n onClose: () => void\n}\n\nconst DiscoveryLensInfo : React.FC = ({\n onClose\n}) => {\n // VARIABLES\n const [B, E] = useBEM('discovery-lens-info');\n const { selectedLens } = useSelector(getDiscovery);\n const {cloneObject} = Utils();\n const lensFamilyDescription = (LENS_FAMILY_DESCRIPTION);\n const [ lens, setLens ] = useState<{\n title: string,\n description: string\n }>();\n const { t } = useTranslation(useSelector(getApp));\n\n\n // HOOKS\n useEffect(() => {\n if(selectedLens){\n const lensFamily = cloneObject(lensFamilyDescription);\n setLens(lensFamily[selectedLens as LensFamilyType]);\n }\n }, [selectedLens])\n\n // METHODS\n const close = () => {\n onClose();\n }\n\n return (\n
    0 ? 'show' : '')}>\n \n
    \n )\n}\n\nexport default DiscoveryLensInfo;","import React from 'react';\nimport Spinner from '../../../components/ui/Spinner';\nimport useBEM from '../../../utils/hooks/useBEM';\n\ninterface Props {\n progress: string\n}\n\nconst DiscoverySplashScreen : React.FC = ({\n progress\n}) => {\n // VARIABLES\n const [B] = useBEM('discovery-splashscreen');\n\n // HOOKS\n\n // METHODS\n\n return (\n
    \n \n
    \n )\n}\n\nexport default DiscoverySplashScreen;","import React, { useEffect, useRef, useState } from 'react';\nimport DiscoveryView from '../../types/discovery-view.type';\nimport useBEM from '../../utils/hooks/useBEM';\nimport DiscoveryIntro from './components/DiscoveryIntro';\nimport DiscoveryLens from './components/DiscoveryLens';\nimport DiscoverySteps from './components/DiscoverySteps';\nimport DiscoveryLensInfo from './components/DiscoveryLensInfo';\nimport { useDispatch, useSelector } from 'react-redux';\nimport discoverySlice, { getDiscovery } from '../../store/slices/discovery.slice';\nimport Button from '../../components/ui/Button';\nimport CircleArrow from '../../components/ui/CircleArrow';\nimport useGoto from '../../utils/hooks/useGoto';\nimport routes from '../../constants/routes.constant';\nimport { getApp } from '../../store/slices/app.slice';\nimport DiscoverySplashScreen from './components/DiscoverySplashScreen';\nimport useTranslation from '../../utils/hooks/useTranslation';\nimport useGoogleAnalytics from '../../utils/hooks/useGoogleAnalytics';\nimport { IndexedDBContext, IndexedDBContextType } from '../../utils/context/indexedDBContext';\nimport poster from './../../assets/images/discovery/montage_background_00000-min.png';\n\ninterface Props {\n\n}\n\nconst Discovery : React.FC = () => {\n // VARIABLES\n const [B, E] = useBEM('discovery');\n const [darkNavBar, setDarkNavBar] = useState(false);\n const montageRef = useRef();\n const { view, selectedLens } = useSelector(getDiscovery);\n const dispatch = useDispatch();\n const timeoutDelays = useRef([]);\n const [fadeInEndExperience, setFadeInEndExperience] = useState(false);\n const [isFinalFrame, setIsFinalFrame] = useState(false);\n const [fadeInFinalFrame, setFadeInFinalFrame] = useState(false);\n const [fadeInTextture, setFadeInTextture] = useState(false);\n const { t } = useTranslation(useSelector(getApp));\n const ga = useGoogleAnalytics();\n const { get } = React.useContext(IndexedDBContext) as IndexedDBContextType;\n const goto = useGoto();\n const [montage, setMontage] = useState();\n\n // HOOKS\n useEffect(() => {\n const downloadVideo = async () => {\n const vid = await get('localAssetsStore', 'discoveryMontageAnimation');\n if(vid)setMontage(vid.asset);\n }\n\n downloadVideo();\n // Note: on page reload\n dispatch(discoverySlice.actions.reset())\n return () => {\n dispatch(discoverySlice.actions.reset());\n timeoutDelays.current.forEach( (d:any) => clearTimeout(d) );\n timeoutDelays.current = [];\n }\n }, [])\n\n // useEffect(() => {\n // downloadImages();\n // for (let index = 0; index <= 534; index++) {\n // const str = String(index);\n // const paddingLength = 5 - str.length;\n // const padding = new Array(paddingLength).fill('0').join('');\n // const filename = `montage_background_${padding}${index}.png`;\n // const img = await loadImage(filename);\n // console.log(img);\n // }\n // }, [])\n\n // METHODS\n // const downloadImages = async () => {\n // const images = [];\n // for (let index = 0; index <= 534; index++) {\n // const str = String(index);\n // const paddingLength = 5 - str.length;\n // const padding = new Array(paddingLength).fill('0').join('');\n // const filename = `montage_background_${padding}${index}.png`;\n // const img = await loadImage(filename);\n // images.push(img);\n // }\n // setSprites(images);\n // }\n\n const addDelay = (callback: any, delay: number) => {\n const timeout = setTimeout(() => {\n callback();\n }, delay);\n timeoutDelays.current.push(timeout);\n }\n\n\n const nextView = (newView: DiscoveryView) => {\n\n if(view === DiscoveryView.INTRO) {\n montageRef.current.play();\n\n addDelay(() => {\n dispatch(discoverySlice.actions.changeView(DiscoveryView.STEPS))\n }, 4000);\n addDelay(() => {\n setFadeInTextture(true);\n }, 4800);\n addDelay(() => {\n montageRef.current.pause();\n }, 6500);\n }\n\n if(view === DiscoveryView.STEPS) {\n montageRef.current.play();\n setFadeInTextture(false);\n\n addDelay(() => {\n setDarkNavBar(true);\n }, 3000);\n\n addDelay(() => {\n montageRef.current.pause();\n dispatch(discoverySlice.actions.changeView(DiscoveryView.LENS));\n }, 9000);\n }\n }\n\n // const loadImage = (imgName: string): Promise => {\n // const promise = new Promise((resolved, reject) => {\n // import(`../../assets/images/discovery/montage_background_seq/${imgName}`).then(img => {\n // resolved(img.default);\n // });\n // })\n // return promise;\n // };\n\n const onInfoClose = () => {\n dispatch(discoverySlice.actions.selectLens(undefined));\n setFadeInEndExperience(true);\n }\n\n const onEndExperience = () => {\n dispatch(discoverySlice.actions.changeView(DiscoveryView.EXIT))\n montageRef.current.play();\n\n setTimeout(() => {\n setDarkNavBar(false);\n }, 2000);\n setFadeInEndExperience(false);\n\n videoEnend();\n\n ga.event({\n category: 'Home page',\n action: 'Discover Essilor',\n label: 'End Experience'\n })\n }\n\n const videoEnend = () => {\n setTimeout(() => {\n setIsFinalFrame(true);\n setTimeout(() => {\n setFadeInFinalFrame(true)\n });\n goto.route(routes.home, 3000);\n }, 5150);\n\n }\n\n return (\n
    \n
    \n\n {\n !montage &&\n \n }\n {\n montage &&\n \n Your browser does not support the video tag.\n \n }\n\n\n { view === DiscoveryView.INTRO && }\n { view === DiscoveryView.STEPS && }\n { view === DiscoveryView.LENS && }\n\n \n\n }\n />\n\n { isFinalFrame &&
    }\n\n
    \n
    \n )\n}\n\nexport default Discovery;\n","import React, { useEffect, useState } from 'react';\nimport useBEM from '../utils/hooks/useBEM';\n\ninterface Props {\n id: string,\n numberOfSlides: number,\n currentSlide?: number\n}\n\nconst SlideView : React.FC = ({\n id,\n numberOfSlides,\n currentSlide,\n children, \n}) => {\n // VARIABLES\n const [B, E] = useBEM('slide-view');\n const [finalWidth, setFinalWidth] = useState();\n\n // HOOKS\n useEffect(()=> {\n const element = document.getElementById(id);\n const offsetWidth = element?.offsetWidth || 0;\n // convert to REM, devide by 10\n const finalWidth = `${(offsetWidth / 10) * numberOfSlides}rem`; \n setFinalWidth(finalWidth);\n }, [id, numberOfSlides])\n\n useEffect(() => {\n const assignActiveSlide = () => {\n const selector = `#${id} .slide-view__slider > div`;\n const slides = document.querySelectorAll(selector);\n slides.forEach((slide, index) => { \n if(currentSlide === index) {\n slide.classList.add('active-slide');\n } else {\n slide.classList.remove('active-slide');\n }\n });\n }\n\n setTimeout(() => {\n assignActiveSlide(); \n });\n }, [currentSlide, id])\n\n // METHODS\n const getDynamicStyle = () => {\n return {\n width: finalWidth,\n transform: `translateX(-${ ((100 / numberOfSlides) * (currentSlide || 0)) }%)`\n }\n }\n\n return (\n
    \n\n {\n finalWidth && \n
    \n {children}\n
    \n }\n \n
    \n )\n}\n\nexport default SlideView;","import React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport Icon from '../../../components/ui/Icon';\nimport EPROM_MOCK_DATA from '../../../constants/eprom.constants';\nimport iProductBrand from '../../../interface/product-brand.interface';\nimport iProduct from '../../../interface/product.inteface';\nimport { getApp } from '../../../store/slices/app.slice';\nimport lensConsultationSlice, { getLensConsultation } from '../../../store/slices/lens-consultation.slice';\nimport { getUser } from '../../../store/slices/user.slice';\nimport AgeCategoryType from '../../../types/age-category.type';\nimport LensFamilyType from '../../../types/lens-family.type';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport useTranslation from '../../../utils/hooks/useTranslation';\n\ninterface Props {\n\n}\n\nconst LensConsultationBrand : React.FC = () => {\n // VARIABLES\n const [B, E] = useBEM('lens-consultation-brand');\n const { productFamily, lensRecommendation, activePair, family } = useSelector(getLensConsultation);\n const dispatch = useDispatch();\n const { ageCategory } = useSelector(getUser);\n const appStore = useSelector(getApp);\n const {\n accountDetails,\n epromData\n } = appStore;\n const { t } = useTranslation(useSelector(getApp));\n\n // HOOKS\n // METHODS\n\n const selectBrand = (brand: iProductBrand) => {\n dispatch(lensConsultationSlice.actions.selectProductBrand(brand));\n dispatch(lensConsultationSlice.actions.setSliderPage(2));\n }\n\n const isBrandAlreadySelected = (brand: iProductBrand) => {\n // Note: hide brand if already selected on protect\n if(productFamily?.id !== LensFamilyType.PROTECT) return false;\n if(!lensRecommendation)return false;\n const protect = lensRecommendation[activePair]?.protect;\n\n //products for belgium new business rule\n const productsFamilyBelgium = ['transitions', 'xperio']\n const productBelgiumXperioMirrors = ['transitions_xtractive', 'xperio_polarised','xperio_tinted', 'transitions_xtractive_polarised']\n\n //products italy bypass\n const italyProductsByPass = ['xperio_mirrors', 'xperio_tinted']\n //italy business rule \n if(accountDetails?.shop?.country === 'it' && protect && protect[0]?.product){\n if(!italyProductsByPass.includes(protect[0]?.product?.id)){\n return brand.id !== 'xperio'\n }\n return !italyProductsByPass.includes(protect[0]?.product?.id)\n }\n \n\n if(accountDetails?.shop.country === 'be' && family === \"protect\" && protect && protect[0]?.product?.id){\n if(protect[0]?.product?.id === 'xperio_mirrors') return !productsFamilyBelgium.includes(brand.id)\n if(productBelgiumXperioMirrors.includes(protect[0]?.product?.id))return brand.id !== 'xperio'\n\n }\n\n if(!protect || protect.length === 0) return false;\n if (protect[0].brand !== undefined)\n return (protect[0] as any).brand.id === brand.id;\n else return false\n }\n\n const withAvailableProductsOnEprom = (brand: iProductBrand) => {\n if(\n !lensRecommendation ||\n !lensRecommendation[activePair]?.correct ||\n productFamily?.id === LensFamilyType.CORRECT ||\n !accountDetails?.shop.eprom\n )return true;\n const correctProductId = lensRecommendation[activePair]?.\n correct.subProduct?.code;\n\n if(!epromData || !correctProductId)return false;\n const epromProducts = epromData[correctProductId];\n const targetProducts = productFamily?.id === LensFamilyType.PROTECT ? 'masstint': 'treatment';\n\n if(!epromProducts || !epromProducts[targetProducts])return false;\n\n const epromProductIds = Object.keys(epromProducts[targetProducts] as any);\n const branchProductIds = brand.products.map( x => x.id);\n const isWithAvailableProducts = branchProductIds.filter( x => epromProductIds.includes(x));\n return !!isWithAvailableProducts.length;\n }\n\n const getClassName = (brand: iProductBrand) => {\n let show = false\n let productCtr = 0\n\n brand.products.map((product: iProduct) => {\n if (product.enabled) {\n if (\n product.ageCategoryId === ageCategory?.value ||\n product.ageCategoryId === AgeCategoryType.BOTH\n ) {\n productCtr++\n show = true\n return\n }\n if (\n product.ageCategoryId === AgeCategoryType.PRODUCT_YOUNG_ADULT &&\n product.ageCategoryId.includes(String(ageCategory?.value))\n ) {\n productCtr++\n show = true\n return\n }\n }\n })\n\n if (productCtr > 0) show = true\n return show ? '' : 'disabled'\n }\n\n\n return (\n
    \n\n {/* */}\n\n\n
      \n {\n productFamily?.brands\n .filter(withAvailableProductsOnEprom)\n .map( (brand) => (\n !isBrandAlreadySelected(brand) && \n
    • selectBrand(brand)} className={getClassName(brand)}>\n {t(brand.label)}\n \n
    • \n ))\n }\n
    \n
    \n )\n}\n\nexport default LensConsultationBrand;\n","import React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport Checkbox from '../../../components/ui/Checkbox';\nimport Icon from '../../../components/ui/Icon';\nimport { LENS_THICKNESS_RULES } from '../../../constants/lens-thickness.constants';\nimport iProduct from '../../../interface/product.inteface';\nimport iSubProduct from '../../../interface/sub-product.inteface';\nimport { getApp } from '../../../store/slices/app.slice';\nimport lensConsultationSlice, { getLensConsultation } from '../../../store/slices/lens-consultation.slice';\nimport { getMyCompanion } from '../../../store/slices/mycompanion.slice';\nimport { getUser } from '../../../store/slices/user.slice';\nimport AgeCategoryType from '../../../types/age-category.type';\nimport LensFamilyType from '../../../types/lens-family.type';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport useEprom from '../../../utils/hooks/useEprom';\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport useLensThickness from '../../lens-thickness/useLensThickness';\nimport useLensConsultation from '../useLensConsultation';\n\ninterface Props {\n\n}\n\nconst LensConsultationProduct : React.FC = () => {\n // VARIABLES\n const [B, E] = useBEM('lens-consultation-product');\n const { \n productFamily, \n productBrand, \n lensRecommendation, \n activePair,\n family\n } = useSelector(getLensConsultation);\n const dispatch = useDispatch();\n const [product, setProduct] = useState();\n const [subProduct, setSubProduct] = useState();\n const { getUniqueSubProducts } = useLensConsultation();\n const { ageCategory } = useSelector(getUser);\n const appStore = useSelector(getApp);\n const { t } = useTranslation(appStore);\n const {\n getRecommendedSubProductByIndex,\n getRecommendedLensThickness,\n filterSubProductsWithEnabledIndex\n } = useLensThickness();\n const {prescription} = useSelector(getUser);\n const { tempLensThicknessSettings } = useSelector(getMyCompanion);\n const {\n getAvailableProduct,\n isSubProducstAvailable,\n filterSubProductsAvailable,\n getTheLowestIndex\n } = useEprom();\n const enabledIndexes = appStore.lensThicknessSettings.filter( x => x.enabled).map( x => x.value);\n const { accountDetails } = useSelector(getApp);\n\n // Note: availabel eprom products for Protect and enhance\n const [availableEPROMProducts, setAvailableEPROMProducts] = useState([]);\n\n\n // HOOKS\n useEffect(() => {\n if(!subProduct)return;\n dispatch(lensConsultationSlice.actions.setSliderPage(0));\n }, [subProduct])\n\n useEffect(() => {\n setProduct(undefined);\n setSubProduct(undefined);\n }, [productFamily])\n\n useEffect(() => {\n if(!lensRecommendation || isFamilyCorrect())return;\n const correct = lensRecommendation[activePair]?.correct;\n if(!correct?.subProduct?.code)return;\n }, [lensRecommendation, productFamily])\n\n // METHODS\n // const back = () => {\n // dispatch(lensConsultationSlice.actions.setSliderPage(1));\n // }\n\n const countryBusinessRule = (id:string) =>{\n //products for italy bypass eprom \n const italyProductsByPass = ['xperio_mirrors', 'xperio_tinted']\n\n //products for belgium new business rule\n const productsBelgium = [\n 'transitions_xtractive',\n 'transitions_xtractive_polarised',\n 'xperio_polarised',\n 'xperio_tinted',\n 'xperio_mirrors']\n\n const productsBelgiumSunX = [\n 'transitions_xtractive',\n 'transitions_xtractive_polarised',\n 'xperio_polarised',\n 'xperio_tinted',\n 'xperio_mirrors',\n 'xperio_tinted_mirrors',\n 'xperio_polarised_mirrors',\n 'transitions_style_mirrors']\n\n const productBelgiumXperioMirrors = ['transitions_xtractive', 'xperio_polarised','xperio_tinted', 'transitions_xtractive_polarised']\n\n //for filtering protect belgium new business rule\n if(lensRecommendation){\n const protect = lensRecommendation[activePair]?.protect;\n\n if(accountDetails?.shop.country === 'be' && family ==='protect' && protect && protect[0] && protect[0]?.product?.id){\n if(productBelgiumXperioMirrors.includes(protect[0]?.product?.id)) return id !== 'xperio_mirrors'\n if(protect[0]?.product?.id === \"xperio_mirrors\") return !productsBelgium.includes(id)\n return protect[0]?.product?.id === id\n }\n //belgium new business rule for sun x protect enhance family (show crizal sun x protect depending on the protect product)\n if(accountDetails?.shop.country === 'be' && family === 'enhance' && lensRecommendation && protect && protect[0]?.product?.id && \n !productsBelgiumSunX.includes(protect[0]?.product?.id)){\n if(id === \"crizal_sun_xprotect\")return true\n }\n\n //ITALY BUSINESS RULE\n if(accountDetails?.shop?.country === 'it' && family === 'protect' && protect && protect[0]?.product){\n if(!italyProductsByPass.includes(protect[0]?.product?.id)){\n return !italyProductsByPass.includes(id)\n }\n }\n\n }\n\n }\n\n\n const isAlreadySelected = (id:string) =>{\n if(lensRecommendation){\n const protect = lensRecommendation[activePair]?.protect;\n if((accountDetails?.shop.country === 'be' || accountDetails?.shop?.country === 'it') && \n protect){\n return protect[0]?.product?.id === id\n }\n }\n}\n\n const isFamilyCorrect = () => {\n return productFamily?.id === LensFamilyType.CORRECT;\n }\n\n const selectProduct = (p: iProduct) => {\n setSubProduct(undefined);\n if(product?.id === p.id) {\n setProduct(undefined);\n return;\n }\n setProduct(p);\n if(p.subProducts) return;\n\n dispatch(lensConsultationSlice.actions.setSliderPage(0))\n setTimeout(() => {\n dispatch(lensConsultationSlice.actions.selectProduct({\n lensFamily: productFamily?.id as LensFamilyType,\n brand: productBrand,\n product: p\n }));\n dispatch(lensConsultationSlice.actions.selectProductFamily(null));\n }, 250);\n }\n\n const selectSubProduct = (p: iSubProduct) => {\n // temporary - JUMP\n dispatch(lensConsultationSlice.actions.setByPassXR(p.code as string))\n\n if(subProduct?.id === p.id) {\n setSubProduct(undefined);\n return;\n }\n dispatch(lensConsultationSlice.actions.setSliderPage(0))\n\n setTimeout(() => {\n setSubProduct(p);\n dispatch(lensConsultationSlice.actions.selectProductFamily(null));\n\n let recommendedSubProduct;\n if(prescription?.values?.sphere && product?.subProducts){\n const sphere = prescription.values.sphere;\n const thickness = getRecommendedLensThickness({\n od: sphere.od as number,\n os: sphere.os as number\n }, LENS_THICKNESS_RULES);\n const subProducts = filterSubProductsWithEnabledIndex(\n product.subProducts.filter(x => x.label === p.label),\n appStore.lensThicknessSettings\n );\n recommendedSubProduct = getRecommendedSubProductByIndex(subProducts, thickness);\n }\n dispatch(lensConsultationSlice.actions.selectProduct({\n lensFamily: productFamily?.id as LensFamilyType,\n brand: productBrand,\n product,\n subProduct: recommendedSubProduct || p\n }));\n }, 250);\n }\n\n const isSelectedProduct = (p: iProduct) => {\n return p.id === product?.id;\n }\n\n const isSelectedSubProduct = (p: iSubProduct) => {\n return p.id === subProduct?.id;\n }\n\n const renderSubProducts = (product: iProduct) => {\n if (!product.subProducts)return null;\n\n const targetIndex = tempLensThicknessSettings.filter( x => x.enabled)[0];\n const availableSubProductsOnEprom = filterSubProductsAvailable(product.subProducts);\n const lowestIndexOnEPROM = getTheLowestIndex(availableSubProductsOnEprom, enabledIndexes);\n\n const uniqueSubProducts = isEPROMisEnabled() ?\n lowestIndexOnEPROM : // Data from EPROM\n getUniqueSubProducts(product.subProducts, {\n targetIndex: targetIndex.value\n });\n \n return (\n
    \n
      \n {\n uniqueSubProducts.map( (p,index: number) => (\n selectSubProduct(p)}\n className={E('sub-list-item', [\n isSelectedSubProduct(p) ? 'selected' : '',\n !p.enabled ? 'disabled' : ''\n ])}>\n {t(p.label)} \n \n \n ))\n }\n
    \n
    \n\n )\n }\n\n const getClassName = (p: iProduct) => {\n const isCategoryKids = ageCategory?.value === AgeCategoryType.KIDS\n\n let disabled = true\n\n if(isCategoryKids){\n //KIDS\n disabled = (p.ageCategoryId === AgeCategoryType.KIDS ||\n p.ageCategoryId === AgeCategoryType.BOTH) && p.enabled ? false : true\n }else{\n //ADULT, YOUNG ADULT\n disabled = (p.ageCategoryId === AgeCategoryType.ADULT ||\n p.ageCategoryId === AgeCategoryType.PRODUCT_YOUNG_ADULT ||\n p.ageCategoryId === AgeCategoryType.BOTH) && p.enabled ? false : true\n }\n\n return [isSelectedProduct(p) ? 'selected' : '', disabled ? 'disabled' : '']\n }\n\n const isEPROMisEnabled = () => {\n return accountDetails?.shop.eprom\n }\n\n const filterOnEPROM = (product: iProduct) => {\n if(!isEPROMisEnabled())return true;\n if(!isFamilyCorrect() || !product.subProducts){\n if(!lensRecommendation)return false;\n const correctCode = lensRecommendation[activePair]?.correct?.subProduct?.code;\n if(!correctCode)return false;\n const productType = productFamily?.id === LensFamilyType.PROTECT ?\n 'masstint' : 'treatment';\n const available = getAvailableProduct(correctCode, productType);\n return available.includes(product.id);\n }\n\n const onlyUnique = (value: iSubProduct, index: number, self: any) => {\n return self.indexOf(value) === index;\n }\n const subProducts = product.subProducts.map( x => x.code);\n var unique = subProducts.filter(onlyUnique);\n return isSubProducstAvailable(unique);\n }\n\n return (\n
    \n
    \n
      \n { productBrand?.products.filter(filterOnEPROM).map( product => { \n if(!countryBusinessRule(product.id)&& !isAlreadySelected(product.id))return(\n
    • \n
      selectProduct(product)}>\n {t(product.label)}\n {product.subProducts && }\n {!product.subProducts && }\n\n
      \n {product.subProducts && renderSubProducts(product)}\n
    • )\n \n })}\n
    \n
    \n
    \n )\n}\n\nexport default LensConsultationProduct;\n","import React, { useEffect, useState } from 'react';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport { useSelector } from 'react-redux';\nimport { getLensConsultation } from '../../../store/slices/lens-consultation.slice';\nimport Slider from \"react-input-slider\";\nimport Icon from '../../../components/ui/Icon';\n\nimport lensAll from './../../../assets/images/lens-consulatation/Lens_All.png';\nimport lensNone from './../../../assets/images/lens-consulatation/Lens_None.png';\nimport lensCorrectLens from './../../../assets/images/lens-consulatation/Lens_Correct_Active.png';\nimport lensEnhanceLens from './../../../assets/images/lens-consulatation/Lens_Enhance_Active.png';\nimport lensProtectLens from './../../../assets/images/lens-consulatation/Lens_Protect_Active.png';\nimport lensCorrectProtect from './../../../assets/images/lens-consulatation/Lens_Correct_Protect_Active.png';\nimport lensCorrectEnhance from './../../../assets/images/lens-consulatation/Lens_Correct_Enhance_Active.png';\nimport lensProtectEnhance from './../../../assets/images/lens-consulatation/Lens_Protect_Enhance_Active.png';\n\n// TINTED LENS\n\n// Transitions\nimport lensTransitionGreen from './../../../assets/images/lens-consulatation/tinted-lens/transition/transition_green.png';\nimport lensTransitionAmber from './../../../assets/images/lens-consulatation/tinted-lens/transition/transition_amber.png';\nimport lensTransitionAmethyst from './../../../assets/images/lens-consulatation/tinted-lens/transition/transition_amethyst.png';\nimport lensTransitionBrown from './../../../assets/images/lens-consulatation/tinted-lens/transition/transition_brown.png';\nimport lensTransitionEmerald from './../../../assets/images/lens-consulatation/tinted-lens/transition/transition_emerald.png';\nimport lensTransitionGrey from './../../../assets/images/lens-consulatation/tinted-lens/transition/transition_grey.png';\nimport lensTransitionSapphire from './../../../assets/images/lens-consulatation/tinted-lens/transition/transition_saphirre.png';\n\n// Experio polarized\nimport lensPolarizedAmber from './../../../assets/images/lens-consulatation/tinted-lens/xperio/polarized/xperio_P_amber.png';\nimport lensPolarizedBlueInk from './../../../assets/images/lens-consulatation/tinted-lens/xperio/polarized/xperio_P_blue_ink.png';\nimport lensPolarizedBluePurple from './../../../assets/images/lens-consulatation/tinted-lens/xperio/polarized/xperio_P_blue_purple.png';\nimport lensPolarizedBlueSky from './../../../assets/images/lens-consulatation/tinted-lens/xperio/polarized/xperio_P_blue_sky.png';\nimport lensPolarizedBrown from './../../../assets/images/lens-consulatation/tinted-lens/xperio/polarized/xperio_P_brown.png';\nimport lensPolarizedGrey from './../../../assets/images/lens-consulatation/tinted-lens/xperio/polarized/xperio_P_grey.png';\nimport lensPolarizedGreyGreen from './../../../assets/images/lens-consulatation/tinted-lens/xperio/polarized/xperio_P_grey_green.png';\nimport lensPolarizedHerbal from './../../../assets/images/lens-consulatation/tinted-lens/xperio/polarized/xperio_P_herbal.png';\nimport lensPolarizedViolet from './../../../assets/images/lens-consulatation/tinted-lens/xperio/polarized/xperio_P_violet.png';\n\nimport lensTintedBlack from './../../../assets/images/lens-consulatation/tinted-lens/xperio/tinted/xperio_T_black.png';\nimport lensTintedBlueInk from './../../../assets/images/lens-consulatation/tinted-lens/xperio/tinted/xperio_T_blue_ink.png';\nimport lensTintedBrown from './../../../assets/images/lens-consulatation/tinted-lens/xperio/tinted/xperio_T_brown.png';\nimport lensTintedBurgundy from './../../../assets/images/lens-consulatation/tinted-lens/xperio/tinted/xperio_T_burgundy.png';\nimport lensTintedGreyGreen from './../../../assets/images/lens-consulatation/tinted-lens/xperio/tinted/xperio_T_grey_green.png';\nimport lensTintedGrey from './../../../assets/images/lens-consulatation/tinted-lens/xperio/tinted/xperio_T_grey.png';\nimport lensTintedHerbal from './../../../assets/images/lens-consulatation/tinted-lens/xperio/tinted/xperio_T_herbal.png';\nimport lensTintedNewBrown from './../../../assets/images/lens-consulatation/tinted-lens/xperio/tinted/xperio_T_newbrown.png';\n\nimport lensMirrorBronzeShadow from './../../../assets/images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_bronze_shadow.png';\nimport lensMirrorBronze from './../../../assets/images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_bronze.png';\nimport lensMirrorCandy from './../../../assets/images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_candy.png';\nimport lensMirrorForestGreen from './../../../assets/images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_forestgreen.png';\nimport lensMirrorGoldPink from './../../../assets/images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_goldpink.png';\nimport lensMirrorGreenShadow from './../../../assets/images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_green_shadow.png';\nimport lensMirrorKaki from './../../../assets/images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_kaki.png';\nimport lensMirrorMauveSilver from './../../../assets/images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_mauve_silver.png';\nimport lensMirrorNewBlue from './../../../assets/images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_new_blue.png';\nimport lensMirrorNewSilver from './../../../assets/images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_new_silver.png';\nimport lensMirrorOceanBlue from './../../../assets/images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_ocean_blue.png';\nimport lensMirrorOrange from './../../../assets/images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_orange.png';\nimport lensMirrorParma from './../../../assets/images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_parma.png';\nimport lensMirrorPinkSilver from './../../../assets/images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_pink_silver.png';\nimport lensMirrorSilverShadow from './../../../assets/images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_silver_shadow.png';\nimport lensMirrorSilver from './../../../assets/images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_silver.png';\nimport lensMirrorSkyBlueSilver from './../../../assets/images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_skyblue_silver.png';\nimport lensMirrorViolet from './../../../assets/images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_violet.png';\n\n\n//Lens Glow\nimport correctGlow from '../../../assets/videos/lens_glow/Lens_Correct_Glow.mp4'\nimport protectGlow from '../../../assets/videos/lens_glow/Lens_Protect_Glow.mp4'\nimport enhanceGlow from '../../../assets/videos/lens_glow/Lens_Enhance_Glow.mp4'\n\ninterface Props {\n\n}\n\ntype imageType = 'all' | 'correct' | 'protect' | 'enhance' | 'lensTransitionGreen' | 'correctProtect' | 'correctEnhance' | 'protectEnhance' | 'none';\n\nconst LensAnimation : React.FC = () => {\n // VARIABLES\n const [B, E] = useBEM('lens-animation');\n const [activeImage, setActiveImage] = useState();\n const [images, setImages] = useState<{\n all: string,\n none:string,\n correct: string,\n protect: string,\n enhance: string,\n correctProtect:string,\n correctEnhance:string,\n protectEnhance:string,\n lensTransitionGreen: string,\n lensTransitionAmber: string,\n lensTransitionAmethyst: string,\n lensTransitionBrown: string,\n lensTransitionEmerald: string,\n lensTransitionGrey: string,\n lensTransitionSapphire: string,\n\n lensPolarizedAmber: string,\n lensPolarizedBlueInk: string,\n lensPolarizedBluePurple: string,\n lensPolarizedBlueSky: string,\n lensPolarizedBrown: string,\n lensPolarizedGrey: string,\n lensPolarizedGreyGreen: string,\n lensPolarizedHerbal: string,\n lensPolarizedViolet: string,\n\n lensTintedBlack: string,\n lensTintedBlueInk: string,\n lensTintedBrown: string,\n lensTintedBurgundy: string,\n lensTintedGreyGreen: string,\n lensTintedGrey: string,\n lensTintedHerbal: string,\n lensTintedNewBrown: string,\n\n lensMirrorBronzeShadow: string,\n lensMirrorBronze: string,\n lensMirrorCandy: string,\n lensMirrorForestGreen: string,\n lensMirrorGoldPink: string,\n lensMirrorGreenShadow: string,\n lensMirrorKaki: string,\n lensMirrorMauveSilver: string,\n lensMirrorNewBlue: string,\n lensMirrorNewSilver: string,\n lensMirrorOceanBlue: string,\n lensMirrorOrange: string,\n lensMirrorParma: string,\n lensMirrorPinkSilver: string,\n lensMirrorSilverShadow: string,\n lensMirrorSilver: string,\n lensMirrorSkyBlueSilver: string,\n lensMirrorViolet: string\n }>();\n\n const { productFamily, sliderPage } = useSelector(getLensConsultation);\n const { lensRecommendation, activePair, selectedProtect } = useSelector(getLensConsultation);\n\n const [sliderValue, setSliderValue] = useState(0);\n const [show, setShow] = useState(false);\n const [isProtectXperio, setIsProtectXperio] = useState(false);\n const [withLensSlider, setWithLensSlider] = useState(false);\n\n const sliderStyle = {\n active: {\n backgroundColor: \"CCE7F7\",\n },\n thumb: {\n width: 24,\n height: 24,\n opacity: 1,\n }\n }\n \n useEffect(() => {\n if(productFamily){\n setActiveImage(productFamily?.id);\n setWithLensSlider(false);\n } else {\n const protect = getProtectLensImage();\n const imageId = protect ? protect.color?.id as imageType : null;\n setActiveImage(imageId ? imageId : 'all');\n setWithLensSlider(imageId ? true : false);\n }\n }, [productFamily]);\n\n useEffect(() => { \n if(!lensRecommendation)return setActiveImage('none')\n if(lensRecommendation && sliderPage === 0 && !withLensSlider){\n const correct = lensRecommendation[activePair]?.correct\n const protect = lensRecommendation[activePair]?.protect\n const enhance = lensRecommendation[activePair]?.enhance\n\n if(correct && validateProtect(protect) && enhance){\n setActiveImage('all')\n return\n }\n if(!correct && validateProtect(protect, false) && !enhance ){\n setActiveImage('none')\n return\n }\n if(correct && validateProtect(protect) && !enhance){\n setActiveImage('correctProtect')\n return\n }\n if(correct && validateProtect(protect, false) && enhance){\n setActiveImage('correctEnhance')\n return\n }\n if(!correct && validateProtect(protect) && enhance){\n setActiveImage('protectEnhance')\n return\n }\n if(!correct && validateProtect(protect, false)&& enhance){\n setActiveImage('enhance')\n return\n }\n if(!correct && validateProtect(protect) && !enhance){\n setActiveImage('protect')\n return\n }\n if(correct && validateProtect(protect, false) && !enhance){\n setActiveImage('correct')\n return\n }\n }\n }, [lensRecommendation, activePair, productFamily, sliderPage, withLensSlider])\n \n // HOOKS\n useEffect(() => {\n setImagesAssets();\n setTimeout(() => {\n setShow(true);\n }, 500);\n },[])\n\n useEffect(() => {\n const isExperio = isXperio();\n setIsProtectXperio(isExperio);\n setSliderValue(isExperio ? 4 : 100);\n }, [withLensSlider, activePair])\n\n useEffect(() => {\n const protect = getProtectLensImage();\n const imageId = protect ? protect.color?.id as imageType : null;\n if(!imageId){\n setWithLensSlider(false);\n return;\n }\n setActiveImage(imageId);\n setWithLensSlider(true);\n }, [lensRecommendation, activePair])\n\n\n // METHODS\n\n const validateProtect = (protect:any, exists = true) =>{\n if(exists) return protect && protect?.length > 0\n else return protect && protect?.length < 1 || !protect\n\n }\n\n const isXperio = () => {\n const protect:any = getProtectLensImage();\n if(!protect)return false;\n return String(protect?.product.label).toLocaleLowerCase().indexOf('xperio') >= 0;\n }\n\n const setImagesAssets = async () => { \n setImages({\n lensTransitionAmber,\n lensTransitionAmethyst,\n lensTransitionBrown,\n lensTransitionEmerald,\n lensTransitionGrey,\n lensTransitionSapphire,\n lensTransitionGreen,\n\n lensPolarizedAmber,\n lensPolarizedBlueInk,\n lensPolarizedBluePurple,\n lensPolarizedBlueSky,\n lensPolarizedBrown,\n lensPolarizedGrey,\n lensPolarizedGreyGreen,\n lensPolarizedHerbal,\n lensPolarizedViolet,\n\n lensTintedBlack,\n lensTintedBlueInk,\n lensTintedBrown,\n lensTintedBurgundy,\n lensTintedGreyGreen,\n lensTintedGrey,\n lensTintedHerbal,\n lensTintedNewBrown,\n\n lensMirrorBronzeShadow,\n lensMirrorBronze,\n lensMirrorCandy,\n lensMirrorForestGreen,\n lensMirrorGoldPink,\n lensMirrorGreenShadow,\n lensMirrorKaki,\n lensMirrorMauveSilver,\n lensMirrorNewBlue,\n lensMirrorNewSilver,\n lensMirrorOceanBlue,\n lensMirrorOrange,\n lensMirrorParma,\n lensMirrorPinkSilver,\n lensMirrorSilverShadow,\n lensMirrorSilver,\n lensMirrorSkyBlueSilver,\n lensMirrorViolet,\n\n correct: lensCorrectLens,\n protect: lensProtectLens, \n enhance: lensEnhanceLens,\n all: lensAll,\n none:lensNone,\n correctProtect: lensCorrectProtect,\n correctEnhance: lensCorrectEnhance,\n protectEnhance: lensProtectEnhance\n });\n }\n\n const getProtectLensImage = () => {\n if(!lensRecommendation)return '';\n const protect = lensRecommendation[activePair]?.protect;\n if(!protect || protect.length === 0)return '';\n // return protect[0]?.color?.id as imageType; \n return protect[protect.findIndex(x=> selectedProtect && x.product?.id === selectedProtect[activePair])];\n }\n\n const setLensOpacity = (value: number) => setSliderValue(value);\n\n const generateTransitionLensOpacity = (imageKey:imageType) => {\n if(!withLensSlider || activeImage !== (imageKey as imageType))return {};\n return {\n opacity: sliderValue / (isProtectXperio ? 4 : 100)\n }\n }\n\n const videoSource = () => {\n if(productFamily?.id === 'correct')return correctGlow\n if(productFamily?.id === 'protect')return protectGlow\n if(productFamily?.id === 'enhance')return enhanceGlow\n }\n\n if(!images || !show)return null;\n \n return (\n <>\n
    \n\n \"\" \n\n {Object.keys(images).map( (imgKey: string, index: number) => (\n \"\" \n ))} \n
    \n\n {\n withLensSlider && sliderPage < 3 &&\n
    \n \n {setLensOpacity(y)}}\n />\n \n
    \n }\n\n {productFamily && sliderPage > 0 && sliderPage < 3 &&\n \n }\n \n \n \n )\n}\n\nexport default LensAnimation;","import { useEffect, useState} from \"react\";\nimport useBEM from \"../../utils/hooks/useBEM\";\n\nconst ColoredCircleProgress = ({label, value, index}: any) => {\n\n const [isNA, setIsNA] = useState(false);\n const [B, E] = useBEM('colored-progress');\n // }\n useEffect(()=>{ \n (index === 1.74 && value === 0) ? setIsNA(true) : setIsNA(false);\n },[index, value])\n\n const dynamicProperty = () => {\n let finalHue = isNA ? 25 : (202 - (value * -1));\n let finalThickness = value * -1;\n\n if( finalHue < 172 && !isNA) finalHue = 172;\n if( finalThickness > 32 ) finalThickness = 32;\n\n const additionalHSL: any = isNA ? {\n '--app-sat': '84%',\n '--app-lit': '64%',\n } : {}\n\n return { \n '--app-hue': finalHue,\n '--app-thickness': finalThickness,\n ...additionalHSL,\n } as React.CSSProperties\n }\n\n return (\n
    \n
    \n
    \n {label}\n
    \n );\n}\n \nexport default ColoredCircleProgress;","import React, { useEffect, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport ColoredCircleProgress from '../../../components/ui/ColoredCircleProgress';\nimport iSubProduct from '../../../interface/sub-product.inteface';\nimport { getLensConsultation } from '../../../store/slices/lens-consultation.slice';\nimport { getlensThickness } from '../../../store/slices/lens-thickness.slice';\nimport { getUser } from '../../../store/slices/user.slice';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport { getApp } from '../../../store/slices/app.slice';\nimport useTranslation from '../../../utils/hooks/useTranslation';\n\nimport concaveLens50 from './../../../assets/images/lens-consulatation/lens-thickness/concave/Concave_Lens_50.png';\nimport concaveLens56 from './../../../assets/images/lens-consulatation/lens-thickness/concave/Concave_Lens_56.png';\nimport concaveLens60 from './../../../assets/images/lens-consulatation/lens-thickness/concave/Concave_Lens_60.png';\nimport concaveLens67 from './../../../assets/images/lens-consulatation/lens-thickness/concave/Concave_Lens_67.png';\nimport concaveLens74 from './../../../assets/images/lens-consulatation/lens-thickness/concave/Concave_Lens_74.png';\nimport convexeLens50 from './../../../assets/images/lens-consulatation/lens-thickness/convexe/Convexe_Lens_50.png';\nimport convexeLens56 from './../../../assets/images/lens-consulatation/lens-thickness/convexe/Convexe_Lens_56.png';\nimport convexeLens60 from './../../../assets/images/lens-consulatation/lens-thickness/convexe/Convexe_Lens_60.png';\nimport convexeLens67 from './../../../assets/images/lens-consulatation/lens-thickness/convexe/Convexe_Lens_67.png';\nimport convexeLens74 from './../../../assets/images/lens-consulatation/lens-thickness/convexe/Convexe_Lens_74.png';\n\ninterface Props {\n onComplete: () => void,\n type: 'Convexe' | 'Concave'\n}\n\nconst LensTransitionOut : React.FC = ({\n onComplete,\n type\n}) => {\n // VARIABLES\n const [B, E] = useBEM('lens-transition-out');\n const [thicknessImage, setThicknessImage] = useState(undefined);\n const { prescription } = useSelector(getUser);\n const [ fadeInLensThickness, setFadeInLensThickness] = useState(false);\n const { tempLensThicknessCalculation } = useSelector(getlensThickness);\n const { t } = useTranslation(useSelector(getApp));\n\n const { \n lensRecommendation,\n activePair\n } = useSelector(getLensConsultation);\n const indexImage: any = {\n Concave: {\n t5: concaveLens50,\n t59: concaveLens56,\n t6: concaveLens60,\n t67: concaveLens67,\n t74: concaveLens74\n },\n Convexe: {\n t5: convexeLens50,\n t59: convexeLens56,\n t6: convexeLens60,\n t67: convexeLens67,\n t74: convexeLens74\n }\n }\n\n // HOOKS\n useEffect(() => {\n setTimeout(() => {\n setFadeInLensThickness(true);\n }, 500);\n },[])\n useEffect(() => {\n if(!lensRecommendation)return;\n const pair = lensRecommendation[activePair];\n if(!pair){\n setThicknessImage(undefined);\n return;\n }\n let index:any = pair.correct.subProduct?.index;\n if(!index)return;\n index = String(index).split('.')[1];\n let lensThicknessType = getLensThicknessType(prescription);\n if(!lensThicknessType)lensThicknessType = 'Convexe';\n\n const lensImage = indexImage[lensThicknessType][`t${index}`];\n setThicknessImage(lensImage);\n }, [lensRecommendation, activePair, prescription]);\n \n const getLensThicknessType = (rx: any) => {\n const sphere = rx.values.sphere;\n if(!sphere.od || !sphere.os)return;\n const add = Number(sphere.od) + Number(sphere.os);\n return add < 0 ? 'Concave' : 'Convexe';\n }\n\n const recommendedSubProduct = (): iSubProduct | any => {\n if(!lensRecommendation || !lensRecommendation[activePair])return null;\n return lensRecommendation[activePair]?.correct?.subProduct as iSubProduct;\n }\n\n return (\n
    \n \n {\n thicknessImage &&\n \"\"\n }\n\n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n )\n}\n\nexport default LensTransitionOut;","import React, { useEffect, useRef, useState } from 'react';\nimport Button from '../../../components/ui/Button';\nimport Icon from '../../../components/ui/Icon';\nimport SideBoxBordered from '../../../components/ui/SideBoxBordered';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport LensAnimation from './LensAnimation';\nimport eyeGif from './../../../assets/gif/eye.gif';\nimport eyeSVG from './../../../assets/svg/eye.svg';\nimport { useDispatch, useSelector } from 'react-redux';\nimport lensConsultationSlice, { getLensConsultation } from '../../../store/slices/lens-consultation.slice';\nimport LensPairType from '../../../types/lens-pair.type';\nimport LensTransitionInAnimation from './LensTransitionInAnimation';\nimport LensTransitionOut from './LensTransitionOut';\nimport userSlice, { getUser } from '../../../store/slices/user.slice';\nimport lensThicknessSlice, { getlensThickness } from '../../../store/slices/lens-thickness.slice';\nimport prescriptionSlice, { getPrescription } from '../../../store/slices/prescription.slice';\nimport useLensThickness from '../../lens-thickness/useLensThickness';\nimport routes from '../../../constants/routes.constant';\nimport { useHistory } from 'react-router';\nimport { LENS_THICKNESS_RULES } from '../../../constants/lens-thickness.constants';\nimport Utils from '../../../utils/Utils';\nimport useGoogleAnalytics from '../../../utils/hooks/useGoogleAnalytics';\nimport summarySlice from '../../../store/slices/summary.slice';\nimport productsSlice, { getProducts } from '../../../store/slices/products.slice';\nimport useGoto from '../../../utils/hooks/useGoto';\nimport productDemoSlice from '../../../store/slices/products-demo.slice';\nimport iLensRecommendationPair from '../../../interface/lens-recommendaiton-pair.interface';\nimport iProduct from '../../../interface/product.inteface';\nimport LensFamilyType from '../../../types/lens-family.type';\nimport { getApp } from '../../../store/slices/app.slice';\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport iProductBrand from '../../../interface/product-brand.interface';\nimport ExperienceType from '../../../types/experience.type';\nimport CircleArrow from '../../../components/ui/CircleArrow';\n// import LensConsultationSideSun from './sun-experience/LensConsultationSideSun';\n// import lensConsultationSun, { getLensConsultationSun } from \"../../../store/slices/lens-consultation-sun-exp.slice\"\nimport { TEMPORARY_PRODUCT_LIST } from '../../../constants/products.constants';\nimport LensRecommendation from './LensRecommendation';\nimport useLensConsultation from '../../lens-consultation/useLensConsultation';\nimport axios from 'axios';\nimport useEprom from '../../../utils/hooks/useEprom';\n\ninterface Props {\n\n}\n\nconst LensConsultationSideV2: React.FC = ({\n // experience\n}) => {\n // VARIABLES\n const [B, E] = useBEM('lens-consultation-side-v2');\n const history = useHistory();\n const [onHoverEye, setOnHoverEye] = useState(false);\n const [transitionOutType, setTransitionOutType] = useState<'Convexe' | 'Concave'>('Convexe');\n const [isAnimateLensThickness, setAnimateLensThickness] = useState(false);\n const { isLensThickness, showDialogue, showWarning, temporaryByPassProduct } = useSelector(getLensConsultation)\n const [fadeOutSun, setFadeOutSun] = useState(false);\n const { temporaryProductList } = useSelector(getProducts)\n // const { solution, lensRecommendationSun, } = useSelector(getLensConsultationSun);\n const tempList: any[] = TEMPORARY_PRODUCT_LIST;\n const {\n activePair,\n lensRecommendation,\n productFamily,\n sliderPage,\n validOnEPROM\n } = useSelector(getLensConsultation);\n\n const { prescription, measures } = useSelector(getUser);\n const {\n getRecommendedSubProductByIndex,\n getRecommendedLensThickness,\n filterSubProductsWithEnabledIndex\n } = useLensThickness();\n const { getEpromApiEndpoint, isValidOnEPROM } = useEprom()\n const {\n getMeasuresHighestValues,\n getLeftAndRightPrescription,\n getRequestType,\n skipEPROMValidation\n } = useLensConsultation();\n const dispatch = useDispatch();\n const [isTransitionInAnimationComplete, setTransitionInAnimationComplete] = useState(false);\n const { view, tempBaseLensThicknessCalculation } = useSelector(getlensThickness);\n const { tempPrescriptionData, isValidPrescription, temporaryData } = useSelector(getPrescription);\n const { tempLensThickness, sliderValue, sliderCount } = useSelector(getlensThickness);\n const lensThicknessRules = LENS_THICKNESS_RULES;\n const lensThicknessTimestamp = useRef();\n const lensConsultationTimestamp = useRef();\n const { getDateTimeDifference } = Utils();\n const ga = useGoogleAnalytics();\n const goto = useGoto();\n const [recommendationToDemo, setRecommendationToDemo] = useState<{\n correct?: iProduct,\n protect?: iProduct,\n enhance?: iProduct,\n }>();\n const [recommendationToDemoBrands, setRecommendationToDemoBrands] = useState<{\n correct?: iProductBrand,\n protect?: iProductBrand,\n enhance?: iProductBrand,\n }>();\n const appStore = useSelector(getApp);\n const { t } = useTranslation(appStore);\n const { lensThicknessSettings, accountDetails } = appStore;\n const { deepEqual } = Utils();\n const [controlNextButton, setControlNextButton] = useState(true)\n\n // HOOKS\n useEffect(() => {\n lensConsultationTimestamp.current = new Date();\n setAnimateLensThickness(isLensThickness)\n }, [])\n useEffect(() => {\n if (!lensRecommendation) return;\n const pair: iLensRecommendationPair = lensRecommendation[activePair] as iLensRecommendationPair;\n if (!pair) return;\n const withDemo = (product?: iProduct) => {\n if (!product ||\n !product.demo ||\n product.demo.length < 1\n ) return undefined;\n return product;\n }\n\n const recommendation = {\n correct: withDemo(pair.correct?.product),\n protect: pair.protect && pair.protect.length > 0 ? withDemo(pair.protect[0].product) : undefined,\n enhance: withDemo(pair.enhance?.product),\n }\n\n const recommendationBrands = {\n correct: pair?.correct?.brand || undefined,\n protect: pair.protect && pair.protect.length > 0 ? pair.protect[0].brand : undefined,\n enhance: pair?.enhance?.brand || undefined\n }\n setRecommendationToDemoBrands(recommendationBrands);\n setRecommendationToDemo(recommendation);\n }, [lensRecommendation, activePair])\n\n useEffect(() => {\n // Note: dont update on lens thickness\n if (sliderPage === 3) return;\n const sphere = prescription.values && prescription.values.sphere;\n if (sphere !== undefined) {\n if (!sphere.od || !sphere.os) return;\n const add = Number(sphere.od) + Number(sphere.os);\n setTransitionOutType(add < 0 ? 'Concave' : 'Convexe');\n }\n }, [prescription]);\n\n useEffect(() => {\n // console.log(temporaryData)\n if (sliderPage === 3) {\n let sphere = temporaryData && temporaryData.sphere\n let cylinder = temporaryData && temporaryData.cylinder\n let axis = temporaryData && temporaryData.axis\n \n if (!sphere?.os && !sphere?.od) {\n setControlNextButton(false)\n } else {\n if ((sphere?.od && !sphere?.os) || (!sphere?.od && sphere?.os)) {\n setControlNextButton(true)\n } else {\n if (!cylinder?.od && !cylinder?.os && !axis?.os && !axis?.od) {\n setControlNextButton(false)\n } else if (cylinder?.od && cylinder?.os && axis?.os && axis?.od){\n setControlNextButton(false)\n }else {\n setControlNextButton(true)\n }\n }\n }\n }\n\n }, [temporaryData, sliderPage])\n\n // Note: update recommended lens thickness\n const timer = useRef();\n useEffect(() => {\n if (sliderPage < 3) return;\n const isSame = deepEqual(tempPrescriptionData, prescription);\n if (!isValidPrescription || isSame) {\n clearTimeout(timer.current);\n return;\n }\n if (timer.current) clearTimeout(timer.current);\n dispatch(userSlice.actions.savePrescriptionData(tempPrescriptionData));\n timer.current = setTimeout(() => {\n recommendLensThickness(tempPrescriptionData);\n }, 1000);\n }, [tempPrescriptionData])\n\n useEffect(() => {\n if (sliderPage === 0) {\n setAnimateLensThickness(false);\n }\n }, [sliderPage]);\n\n // Note: should only run when the Presctiption Value has changed\n useEffect(() => {\n if (lensRecommendation) {\n const pair = activePair === LensPairType.PAIR1 ? 0 : 1;\n const isWithRX = prescription.values.sphere.od ? true : false;\n const family = lensRecommendation[activePair]\n \n if (family?.correct) {\n const skipEPROM = skipEPROMValidation(\n accountDetails?.shop.region as string,\n family?.correct.subProduct?.code as string,\n family?.correct.subProduct?.code as string,\n );\n const isValidateEPROM = (accountDetails?.shop.eprom as boolean) && !skipEPROM;\n \n const data = {\n index: lensThicknessSettings[sliderValue as number].value,\n product_code: handleProductCode(family?.correct.product?.id as string),\n sub_product_code: handleSubProductCode(family?.correct.subProduct?.code as string),\n prescription: getLeftAndRightPrescription(prescription.values),\n measures: getMeasuresHighestValues(measures, pair),\n request_type: getRequestType(isWithRX, isValidateEPROM)\n }\n \n axios.post(getEpromApiEndpoint(), { data }).then(x => {\n if (x.data.statuscode !== 200 || !x.data.data.lens_thickness ) {\n return\n }\n const {\n max_edge_thk,\n weight,\n center_thk,\n index\n } = x.data.data.lens_thickness;\n \n dispatch(lensThicknessSlice.actions.saveBaseLensThickness({\n pair: activePair,\n data: {\n index: index,\n productCode: data.product_code as string,\n edge: max_edge_thk,\n weight: weight,\n center: center_thk,\n prescription: getLeftAndRightPrescription(prescription.values),\n measures: data.measures\n }\n }))\n \n const getSavedSelectedIndex = localStorage.getItem(\"selectedIndex\")\n if (getSavedSelectedIndex) {\n const parseSavedIndex = JSON.parse(getSavedSelectedIndex as any)\n if (parseSavedIndex.index) {\n dispatch(lensThicknessSlice.actions.saveLensThicknessDifference({\n pair: activePair,\n data: parseSavedIndex\n })) \n }\n }\n \n return\n })\n }\n } \n }, [prescription])\n \n // Note: should only run when the Thickness Slider has changed\n useEffect(() => {\n if (lensRecommendation) {\n if (lensRecommendation[activePair]) {\n const pair = activePair === LensPairType.PAIR1 ? 0 : 1;\n const isWithRX = prescription.values.sphere.od ? true : false;\n const family = lensRecommendation[activePair]\n \n if (family?.correct) {\n const skipEPROM = skipEPROMValidation(\n accountDetails?.shop.region as string,\n family?.correct.subProduct?.code as string,\n family?.correct.subProduct?.code as string,\n );\n const isValidateEPROM = (accountDetails?.shop.eprom as boolean) && !skipEPROM;\n const base = tempBaseLensThicknessCalculation[activePair]\n if (base) {\n const family = lensRecommendation[activePair]\n const data = {\n index: lensThicknessSettings[sliderValue as number].value,\n product_code: handleProductCode(family?.correct.product?.id as string),\n sub_product_code: handleSubProductCode(family?.correct.subProduct?.code as string),\n prescription: getLeftAndRightPrescription(prescription.values),\n measures: base?.measures,\n request_type: getRequestType(isWithRX, isValidateEPROM) \n }\n\n axios.post(getEpromApiEndpoint(), { data }).then(x => {\n if (x.data.statuscode !== 200 || !x.data.data.lens_thickness) {\n return\n }\n \n const {\n max_edge_thk,\n weight,\n center_thk,\n index\n } = x.data.data.lens_thickness;\n \n const diffData = {\n weight: computeDifferencePercentage(base.weight, weight),\n edge: computeDifferencePercentage(base.edge, max_edge_thk),\n center: computeDifferencePercentage(base.center, center_thk),\n }\n \n dispatch(lensThicknessSlice.actions.saveLensThicknessDifference({\n pair: activePair,\n data: {\n index: index,\n productCode: base.productCode,\n edge: diffData.edge,\n weight: diffData.weight,\n center: diffData.center\n }\n }))\n\n localStorage.setItem(\"selectedIndex\", JSON.stringify({\n index: index,\n productCode: base.productCode,\n edge: diffData.edge,\n weight: diffData.weight,\n center: diffData.center\n })) \n\n const recomValue = localStorage.getItem(\"recomData\")\n let parseRecomValue = JSON.parse(recomValue as any)\n if (parseRecomValue.index) {\n dispatch(lensThicknessSlice.actions.saveBaseLensThickness({\n pair: activePair,\n data: parseRecomValue\n }))\n return\n } else {\n localStorage.setItem(\"recomData\", JSON.stringify({\n index: lensThicknessSettings[sliderValue as number].value,\n productCode: data.product_code as string,\n edge: max_edge_thk,\n weight: weight,\n center: center_thk,\n prescription: getLeftAndRightPrescription(prescription.values),\n measures: data.measures\n }))\n return\n }\n })\n }\n }\n }\n }\n }, [sliderValue, prescription])\n\n // METHODS\n \n // Rule: Substitute Varilux X Series product_codes and sub_product_codes when XR Series is selected\n // Only applicable for Varilux XR series\n const handleProductCode = (productCode: string) => {\n if (productCode === \"varilux_xr_series\") {\n return \"varilux_x_series\"\n } else {\n return productCode\n }\n }\n const handleSubProductCode = (subProductCode: string) => {\n switch (subProductCode) {\n case \"varilux_xr_design\":\n return \"varilux_x_design\";\n case \"varilux_xr_design_short\":\n return \"varilux_x_design_short\";\n case \"varilux_xr_fit\":\n return \"varilux_x_f360\";\n case \"varilux_xr_track\":\n return \"varilux_x_track\";\n case \"varilux_xr_4d\":\n return \"varilux_x_4d\";\n case \"varilux_xr_pro\":\n return \"varilux_xclusive_4d\";\n \n default:\n return subProductCode;\n }\n }\n\n const computeDifferencePercentage = (currentValue: number, newValue: number) => {\n let values = [currentValue, newValue];\n // if (newValue > currentValue) values = values.reverse();\n const diff = values[0] - values[1];\n const deffPercentage = (diff / values[0]) * 100;\n const finalPercent = newValue >= currentValue ? deffPercentage : (deffPercentage * -1);\n return Math.round(finalPercent);// Number(finalPercent.toFixed(2));\n }\n\n const getProductIdsToCheck = (family: any, checkEnhance = false) => {\n const protectIdsToCheck = family?.protect ? family?.protect.map((p: any) => p.product?.id) : [];\n const enhanceIdsToCheck = (family?.enhance && checkEnhance) ? [family?.enhance.product?.id] : [];\n return [\n ...protectIdsToCheck,\n ...enhanceIdsToCheck\n ]\n }\n\n\n const changePair = (pair: LensPairType) => {\n if (!isActivePairWithCorrectSubProduct(pair) && sliderPage === 3) return;\n\n dispatch(lensConsultationSlice.actions.changePair(pair));\n }\n\n const getLabelText = () => {\n if (sliderPage === 0) return t('lens_consultation_lc_lens_consultation');\n if (sliderPage === 3) return t('lens_thickness_lt_completed');\n if (productFamily) return t(productFamily.label);\n return '';\n }\n\n const getLabelIcon = () => {\n if (sliderPage === 0) return '';\n if (sliderPage === 3) return ;\n if (productFamily) return ;\n return '';\n }\n const displayWarning = () => {\n if (!lensRecommendation) return false;\n\n const pair2 = lensRecommendation.pair2;\n if (\n (!pair2?.correct && (pair2?.enhance || (pair2?.protect || []).length > 0)) ||\n (pair2?.correct)\n ) return showDialogue;\n return false;\n }\n const displayWarning2 = () => {\n if (!lensRecommendation) return false;\n\n const pair2 = lensRecommendation.pair2;\n if ((pair2?.correct?.subProduct === null || !pair2?.correct?.subProduct) || (pair2?.protect && pair2?.protect.length < 1 ) || !pair2?.enhance?.product)return showWarning\n if(pair2?.correct?.subProduct && pair2?.protect && pair2?.protect[0]?.product && pair2?.enhance && pair2?.enhance?.product)return false\n else return false;\n }\n const clearSecondPairRecom = (clear:boolean) => {\n dispatch(lensConsultationSlice.actions.clearSecondPair(clear));\n dispatch(summarySlice.actions.saveSummary2(undefined))\n }\n\n const top = () => (\n //
    \n
    \n \n
    \n
    \n changePair(LensPairType.PAIR1)} />\n
    \n \n
    \n changePair(LensPairType.PAIR2)} />\n
    \n {displayWarning2() && \n
    \n !\n
    \n }\n {displayWarning() &&\n <>\n
    \n {t('ec_pair_2_recommend_mess', 'Do you want recommend the complementary pair?')}\n
    \n
    \n
    clearSecondPairRecom(true)}>\n {t('daily_mobility_q_sc_yes')}\n
    \n
    clearSecondPairRecom(false)}>\n {t('daily_mobility_q_sc_no')}\n
    \n
    \n
    \n
    \n \n }\n
    \n
    \n )\n\n const onHoverHandler = (isHover: boolean) => {\n setTimeout(() => {\n setOnHoverEye(isHover);\n }, isHover ? 0 : 500);\n }\n\n const eyeIconGif = () => {\n return
    onHoverHandler(true)}\n onMouseLeave={() => onHoverHandler(false)}\n >\n \"\"\n \"\"\n
    \n }\n\n const isActivePairWithCorrectSubProduct = (pair?: LensPairType) => {\n if (!lensRecommendation) return false;\n const pair1Correct = lensRecommendation.pair1?.correct;\n const pair2 = lensRecommendation.pair2;\n\n if (!pair1Correct || !pair1Correct.product || !pair1Correct?.subProduct)\n return false;\n if ((pair2?.correct || (pair2?.protect || []).length > 0 || pair2?.enhance)\n && (!pair2?.correct?.product || !pair2?.correct?.subProduct))\n return false;\n if (pair === LensPairType.PAIR2 && !pair2?.correct) return false;\n return true;\n }\n\n const disableNextButton = () => {\n\n if (accountDetails?.shop.country === 'be') {\n if (lensRecommendation?.pair1?.correct && !lensRecommendation.pair2?.correct) {\n if (lensRecommendation?.pair1?.correct?.subProduct === null || lensRecommendation?.pair1?.correct?.subProduct === undefined) {\n return true\n }\n if (activePair === 'pair2') {\n if (lensRecommendation?.pair2?.correct?.subProduct === null || lensRecommendation?.pair2?.correct?.subProduct === undefined) {\n return true\n }\n }\n } else if ((lensRecommendation?.pair1?.enhance?.product?.id !== null || lensRecommendation?.pair1?.enhance?.product?.id !== undefined) &&\n (lensRecommendation?.pair2?.enhance?.product?.id !== null || lensRecommendation?.pair2?.enhance?.product?.id !== undefined)\n ) {\n if ((lensRecommendation?.pair1?.correct?.subProduct === null || lensRecommendation?.pair1?.correct?.subProduct === undefined) ||\n (lensRecommendation?.pair2?.correct?.subProduct === null || lensRecommendation?.pair2?.correct?.subProduct === undefined)\n ) {\n return true\n }\n }\n }\n \n if (!lensRecommendation) return true;\n if (lensRecommendation?.pair1?.correct === null) return true;\n\n if(lensRecommendation && accountDetails?.shop.country === 'be'){\n const protect = lensRecommendation[activePair]?.protect\n if(protect && protect[1] && (protect[1]?.product?.id === 'xperio_mirrors' || protect[0]?.product?.id === 'xperio_mirrors'))return false\n } \n\n if (accountDetails?.shop.eprom && (\n validOnEPROM?.pair1 === false ||\n validOnEPROM?.pair2 === false\n )) return true;\n \n //eprom belgium new business rule\n const productsBelgiumSunX = [\n 'transitions_xtractive',\n 'transitions_xtractive_polarised',\n 'xperio_polarised',\n 'xperio_tinted',\n 'xperio_mirrors',\n 'xperio_tinted_mirrors',\n 'xperio_polarised_mirrors',\n 'style_mirrors']\n\n if(lensRecommendation){\n const protect = lensRecommendation[activePair]?.protect\n const enhance = lensRecommendation[activePair]?.enhance\n if(accountDetails?.shop.country === 'be' && \n protect && \n protect[0]?.product?.id &&\n enhance && \n enhance?.product?.id\n ){\n if(enhance?.product?.id === 'crizal_sun_xprotect' && !productsBelgiumSunX.includes(protect[0]?.product?.id))return true\n }\n \n if(accountDetails?.shop.country === 'be' && \n protect && \n !protect[0] &&\n enhance && \n enhance?.product?.id &&\n enhance?.product?.id === 'crizal_sun_xprotect'\n )return true\n if(accountDetails?.shop.country === 'be' && \n protect && \n protect[0]?.product?.id === 'xperio_mirrors' && \n !protect[1]\n )return true\n\n }\n\n\n\n // Lens Thickness\n if (sliderPage === 3) { \n return !isValidPrescription;\n }\n return !isActivePairWithCorrectSubProduct(activePair);\n }\n\n const saveAndNext = () => {\n if (sliderPage < 3) {\n dispatch(lensConsultationSlice.actions.setSliderPage(3));\n setAnimateLensThickness(true);\n saveLensConsultationSessionDuration();\n lensThicknessTimestamp.current = new Date();\n if (lensRecommendation) {\n dispatch(userSlice.actions.saveLensRecommendationData(lensRecommendation));\n // if (experience === ExperienceType.STANDARD) dispatch(lensConsultationSlice.actions.saveLensRecommendationStandard(lensRecommendation));\n // if (experience === ExperienceType.SUN) dispatch(lensConsultationSlice.actions.saveLensRecommendationSun(lensRecommendation));\n }\n } else {\n dispatch(userSlice.actions.savePrescriptionData(tempPrescriptionData));\n gotoSummary();\n saveLensThicknessSessionDuration()\n }\n }\n\n const saveLensThicknessSessionDuration = () => {\n if (!lensThicknessTimestamp.current) return;\n const timediff = getDateTimeDifference(lensThicknessTimestamp.current, new Date());\n ga.event({\n category: 'Lens Consulation',\n action: 'Lens Thickness Completion',\n variable_id: 'lens_thickness_completion',\n label: timediff\n });\n lensThicknessTimestamp.current = undefined;\n }\n\n const saveLensConsultationSessionDuration = () => {\n if (!lensConsultationTimestamp.current) return;\n const timediff = getDateTimeDifference(lensConsultationTimestamp.current, new Date());\n ga.event({\n category: 'Lens Consulation',\n action: 'Consultation Completion',\n variable_id: 'lens_consultation_completion',\n label: timediff\n });\n lensConsultationTimestamp.current = undefined;\n }\n\n const isPrescriptionComplete = () => {\n return (prescription.values && prescription.values.sphere.od) ? true : false\n }\n\n const gotoSummary = () => {\n if (view === 'prescription') {\n dispatch(lensThicknessSlice.actions.clearLensThicknessCalculationData())\n dispatch(lensThicknessSlice.actions.changeView('controls'));\n dispatch(userSlice.actions.savePrescriptionData(tempPrescriptionData));\n recommendLensThickness(tempPrescriptionData);\n dispatch(prescriptionSlice.actions.resetData());\n return;\n }\n\n if (tempLensThickness) dispatch(userSlice.actions.saveLensThickness(tempLensThickness));\n if (lensRecommendation?.pair1 !== undefined) {\n dispatch(summarySlice.actions.setPairDetails({\n brand: lensRecommendation?.pair1,\n pair: LensPairType.PAIR1\n }))\n }\n if (lensRecommendation?.pair2 !== undefined) {\n dispatch(summarySlice.actions.setPairDetails({\n brand: lensRecommendation?.pair2,\n pair: LensPairType.PAIR2\n }))\n }\n history.push(routes.summary.path);\n }\n\n const recommendLensThickness = (prescription: any) => {\n const sphere = prescription.values.sphere;\n const thickness = getRecommendedLensThickness({\n od: sphere.od,\n os: sphere.os\n }, lensThicknessRules)\n recommendSubProductByIndex(LensPairType.PAIR1, thickness);\n recommendSubProductByIndex(LensPairType.PAIR2, thickness);\n }\n\n const recommendSubProductByIndex = (pair: LensPairType, index: number) => {\n if (!lensRecommendation) return;\n if (!lensRecommendation[pair]! || !lensRecommendation[pair]?.correct) return;\n const correct = lensRecommendation[pair]?.correct;\n if (!correct || !correct.product || !correct.product.subProducts) return;\n const subProducts = filterSubProductsWithEnabledIndex(\n correct.product?.subProducts.filter(x => x.label === correct.subProduct?.label),\n lensThicknessSettings\n );\n let recommended = getRecommendedSubProductByIndex(subProducts, index);\n if (!recommended) return;\n dispatch(lensConsultationSlice.actions.selectProduct({\n lensFamily: LensFamilyType.CORRECT,\n brand: correct?.brand,\n product: correct?.product,\n subProduct: recommended,\n manual: true,\n pair: pair\n }));\n }\n\n const isWithDemo = (family: any) => {\n if (Array.isArray(family)) {\n if (family && family.length > 0 && family[0].product && (family[0].product.demo || []).length > 0) return true;\n return false;\n }\n if (family && family.product && (family.product.demo || []).length > 0) return true;\n return false;\n }\n\n const getInitialDemo = () => {\n if (!lensRecommendation) return;\n const pair: iLensRecommendationPair = lensRecommendation[activePair] as iLensRecommendationPair;\n const { correct, protect, enhance } = pair;\n if (isWithDemo(correct)) return { family: LensFamilyType.CORRECT, data: correct };\n if (isWithDemo(protect)) return { family: LensFamilyType.PROTECT, data: protect[0] };\n if (isWithDemo(enhance)) return { family: LensFamilyType.ENHANCE, data: enhance };\n }\n\n const demoProducts = () => {\n const initialDemo: any = getInitialDemo();\n if (!initialDemo) return;\n dispatch(productsSlice.actions.selectBrandTodemo(initialDemo.data.brand))\n dispatch(productsSlice.actions.selectProductTodemo(initialDemo.data.product))\n if (!recommendationToDemo || !recommendationToDemoBrands) return;\n dispatch(productDemoSlice.actions.setRecommendationDemo(recommendationToDemo));\n dispatch(productDemoSlice.actions.selectLensFamily(initialDemo.family));\n dispatch(productDemoSlice.actions.setDemoFrom(routes.lensConsultation));\n dispatch(productDemoSlice.actions.setRecommendationDemoBrands(recommendationToDemoBrands));\n goto.route(routes.demonstration);\n }\n\n const disableDemo = () => {\n if (!recommendationToDemo) return true;\n const {\n correct,\n protect,\n enhance\n } = recommendationToDemo;\n if (!correct && !protect && !enhance) return true;\n return false;\n }\n\n // const isSunExp = () => experience === ExperienceType.SUN;\n const bottom = () => (\n //
    \n
    \n demoProducts()} />\n \n }\n type=\"secondary\"\n outlined={false}\n click={() => saveAndNext()}\n />\n
    \n )\n\n const transitionInAnimationComplete = () => {\n setTransitionInAnimationComplete(true);\n }\n\n const sunOnSaveHandler = () => {\n // if (solution) {\n // dispatch(lensConsultationSun.actions.setSolutionId(solution.id))\n // }\n\n // if(!lensRecommendation?.pair1?.correct){\n const brandId = 'crizal';\n const brand = tempList\n .find((f: any) => f.id === LensFamilyType.ENHANCE).brands\n .find((b: iProductBrand) => b.id === brandId);\n const product = brand.products.find((p: iProduct) => p.id === 'crizal_sun_xprotect');\n dispatch(lensConsultationSlice.actions.selectProduct({\n lensFamily: LensFamilyType.ENHANCE,\n brand,\n product,\n manual: true,\n pair: LensPairType.PAIR1\n }));\n // dispatch(lensConsultationSlice.actions.setSliderPage(3));\n // setAnimateLensThickness(true);\n // saveLensConsultationSessionDuration();\n setFadeOutSun(true);\n setTimeout(() => {\n saveAndNext();\n }, 500);\n }\n\n return (\n //
    \n
    \n {/* */}\n \n {top()}\n \n {!isTransitionInAnimationComplete && !isAnimateLensThickness &&\n \n }\n {isAnimateLensThickness &&\n \n }\n {bottom()}\n {/* {isSunExp() &&\n \n } */}\n \n
    \n )\n}\n\nexport default LensConsultationSideV2;","import React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport iLensColor from '../../../interface/lens-color.inteface';\nimport { getApp } from '../../../store/slices/app.slice';\nimport lensConsultationSlice from '../../../store/slices/lens-consultation.slice';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport useTranslation from '../../../utils/hooks/useTranslation';\n\ninterface Props {\n colors: iLensColor[],\n onSelect?: (color: iLensColor) => void,\n selected?: iLensColor\n brand? : string;\n}\n\nconst ProtectColorPicker : React.FC = ({\n colors,\n onSelect,\n selected,\n brand\n}) => {\n // VARIABLES\n const [B, E] = useBEM('protect-color-picker');\n const [showColors, setShowColors] = useState(false);\n const {t} = useTranslation(useSelector(getApp));\n const dispatch = useDispatch();\n const lensColors = colors;\n\n // HOOKS\n // METHODS\n const inlineStyle = (color: string) => {\n return {\n backgroundColor: color,\n color: color\n }\n }\n\n const toggleColors = () => {\n setShowColors(prev => !prev);\n }\n\n const selectColor = (color: iLensColor) => {\n dispatch(lensConsultationSlice.actions.saveSelectProtect(brand));\n if(onSelect)onSelect(color);\n }\n\n const optionClassModifier = () => {\n const classes = ['toggle'];\n if(showColors)classes.push('toggle-closed');\n if(selected)classes.push('with-selected-color');\n\n return classes;\n }\n\n return (\n
    \n
      \n \n \n {selected ? t(selected.label) : t('lens_consultation_color')}\n \n \n {\n showColors && lensColors.map( (c:iLensColor) => (\n selectColor(c)}\n className={E('option', (selected && selected.id === c.id) ? 'selected' : '')}\n key={c.id} style={inlineStyle(c.value)}>\n ))\n }\n
    \n
    \n )\n}\n\nexport default ProtectColorPicker;\n","import React, { useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport Arrow from '../../../components/ui/Arrow';\nimport iSubProduct from '../../../interface/sub-product.inteface';\nimport { getApp } from '../../../store/slices/app.slice';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport useLensConsultation from '../useLensConsultation';\n\ninterface Props {\n options: iSubProduct[],\n selected?: iSubProduct,\n onSelect?: (option: iSubProduct) => void\n}\n\nconst SubProductsDropdown : React.FC = ({\n options,\n selected,\n onSelect\n}) => {\n // VARIABLES\n const [B, E] = useBEM('sub-products-dropdown');\n const [showOptions, setShowOptions ] = useState(false);\n const { getUniqueSubProducts } = useLensConsultation();\n const {t} = useTranslation(useSelector(getApp));\n\n // HOOKS\n\n // METHODS\n const selectOption = (option: iSubProduct) => {\n if(onSelect)onSelect(option);\n }\n\n const focusHandler = () => {\n toggleOptions(showOptions ? false : true);\n }\n\n const blurHandler = () => {\n toggleOptions(false)\n }\n\n const toggleOptions = (show: boolean) => {\n const delay = show ? 0 : 200;\n setTimeout(() => {\n setShowOptions(show)\n }, delay);\n }\n\n const renderOptions = (choices: iSubProduct[]) => {\n const uniqueSubProducts = getUniqueSubProducts(choices, {isLowestIndex: true});\n\n return
      \n { uniqueSubProducts.map((subProduct: iSubProduct) => (\n
    • selectOption(subProduct)}\n >{subProduct.label}
    • \n )\n ) }\n
    \n }\n\n return (\n
    \n \n\n {selected ? selected.label : t('lens_consultation_please_select_product')}\n\n \n \n\n {\n showOptions &&\n
    \n {renderOptions(options)}\n
    \n }\n\n\n
    \n )\n}\n\nexport default SubProductsDropdown;\n","import React, { useEffect } from 'react';\nimport Button from '../../../components/ui/Button';\nimport Icon from '../../../components/ui/Icon';\nimport iProductFamily from '../../../interface/product-family.interface';\nimport iProduct from '../../../interface/product.inteface';\nimport iSubProduct from '../../../interface/sub-product.inteface';\nimport LensFamilyType from '../../../types/lens-family.type';\nimport Lenstype from '../../../types/lens-family.type';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport { useSelector, useDispatch } from 'react-redux';\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport { getApp } from '../../../store/slices/app.slice';\nimport lensConsultationSlice, { getLensConsultation } from '../../../store/slices/lens-consultation.slice';\n\n\ntype eventType = 'select' | 'delete';\n\ninterface Props {\n family: iProductFamily,\n value?: iProduct | iSubProduct | any[],\n extraComponent?: React.ReactNode,\n noLabel?:boolean,\n allowMultiple?:boolean,\n disabled?: boolean,\n\n onEvent?: (event: eventType, family: iProductFamily) => void,\n}\n\nconst LensFamily : React.FC = ({\n family,\n value,\n extraComponent,\n noLabel,\n allowMultiple,\n disabled = false,\n onEvent\n}) => {\n // VARIABLES\n const [B, E] = useBEM('lens-family');\n const { t } = useTranslation(useSelector(getApp));\n const { \n productFamily, \n productBrand, \n lensRecommendation, \n activePair,\n } = useSelector(getLensConsultation);\n const { accountDetails, epromData } = useSelector(getApp);\n const dispatch = useDispatch()\n // HOOKS\n\n // METHODS\n\n\n const countryBusinessRule = () =>{\n if(accountDetails?.shop.country !== 'be')return true\n\n const productBelgiumExemption = ['transitions_signature_gen_8', 'eye_protect_system','clear']\n //products that can be paired with xperio mirrors\n const productBelgiumXperioMirrors = ['transitions_xtractive', 'xperio_polarised','xperio_tinted', 'transitions_xtractive_polarised']\n //add country with additional business rule\n let protect;\n let correct;\n if(lensRecommendation){\n protect = lensRecommendation[activePair]?.protect\n correct = lensRecommendation[activePair]?.correct\n }\n if (accountDetails?.shop.country === \"be\" && protect && protect[0]?.product?.id) {\n if ( protect[0]?.product?.id && productBelgiumXperioMirrors.includes(protect[0]?.product?.id) && epromData &&\n correct?.subProduct?.code && epromData[correct?.subProduct?.code]?.masstint)\n return epromData[correct?.subProduct?.code]?.masstint?.xperio_mirrors;\n if (productBelgiumExemption.includes(protect[0]?.product?.id)) return false;\n if (productBelgiumXperioMirrors.includes(protect[0]?.product?.id)) return true;\n return protect[0]?.product?.id === \"xperio_mirrors\";\n }\n }\n\n const onClickHandler = (event: eventType, force = false) => {\n if(!onEvent)return;\n if(event === 'select' && value && !force)return;\n onEvent(event, family);\n dispatch(lensConsultationSlice.actions.setFamily(family.id))\n }\n\n const classModifiers = () => {\n const modifiers: string[] = [ family.id ];\n if(value)modifiers.push('with-value');\n if(disabled)modifiers.push('disabled');\n return modifiers;\n }\n\n const getValueDisplay = () => {\n // if(family.id === LensFamilyType.PROTECT) {\n // return t((value as any[])[0].product.label);\n // }\n return t((value as iSubProduct | iProduct).label)\n }\n\n return (\n
    onClickHandler('select')}>\n \n \n {\n !noLabel &&\n

    {t(family.label)}

    \n }\n \n\n
    \n )\n}\n\nexport default LensFamily;","import React, { useState, useEffect, Fragment } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport Modal from '../../../components/Modal';\nimport Button from '../../../components/ui/Button';\nimport Icon from '../../../components/ui/Icon';\nimport ENDPOINTS from '../../../constants/endpoints';\nimport { LENS_THICKNESS_RULES } from '../../../constants/lens-thickness.constants';\nimport routes from '../../../constants/routes.constant';\nimport iLensColor from '../../../interface/lens-color.inteface';\nimport iPrescriptionData from '../../../interface/prescription-data.interface';\nimport iProductBrand from '../../../interface/product-brand.interface';\nimport iProductFamily from '../../../interface/product-family.interface';\nimport iProduct from '../../../interface/product.inteface';\nimport iSubProduct from '../../../interface/sub-product.inteface';\nimport { getApp } from '../../../store/slices/app.slice';\nimport lensConsultationSlice, { getLensConsultation } from '../../../store/slices/lens-consultation.slice';\nimport lensThicknessSlice, { getlensThickness } from '../../../store/slices/lens-thickness.slice';\nimport { getProducts } from '../../../store/slices/products.slice';\nimport summarySlice, { getSummary } from '../../../store/slices/summary.slice';\nimport userSlice, { getUser } from '../../../store/slices/user.slice';\nimport LensFamilyType from '../../../types/lens-family.type';\nimport LensPairType from '../../../types/lens-pair.type';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport useGoogleAnalytics from '../../../utils/hooks/useGoogleAnalytics';\nimport useGoto from '../../../utils/hooks/useGoto';\nimport usePricing from '../../../utils/hooks/usePricing';\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport Utils from '../../../utils/Utils';\n\nimport { fetchProductCombi, fetchProductDetailsViaId, fetchSubProductDetailsViaSubProductId } from '../../../utils/misc';\nimport ProtectColorPicker from '../../lens-consultation/components/ProtectColorPicker';\nimport SubProductsDropdown from '../../lens-consultation/components/SubProductsDropdown';\nimport useLensThickness from '../../lens-thickness/useLensThickness';\nimport LensFamily from './LensFamily';\nimport axios from 'axios';\nimport useLensConsultation from '../../lens-consultation/useLensConsultation';\nimport Alert from '../../../components/ui/Alert';\nimport useEprom from '../../../utils/hooks/useEprom';\nimport useProducts from '../../../utils/hooks/useProducts';\nimport { LENS_COLOR_MODIFICATIONS } from '../../../constants/lens-consultation-modified-colors';\n\ninterface Props {\n\n}\n\nconst LensRecommendation: React.FC = () => {\n // VARIABLES\n const [B, E] = useBEM('lens-recommendation');\n const productStore = useSelector(getProducts);\n const { temporaryProductList } = productStore;\n const dispatch = useDispatch();\n const { lensRecommendation, activePair, sliderPage, family, temporaryByPassProduct } = useSelector(getLensConsultation);\n const [validatePackageOfferModal, setValidatePackageOfferModal] = useState(false);\n const goto = useGoto();\n const ga = useGoogleAnalytics();\n const { isNullUndefined } = Utils();\n const { summaryList1, summaryList2 } = useSelector(getSummary);\n const appStore = useSelector(getApp);\n const { t } = useTranslation(appStore);\n const { productCombi, accountDetails } = useSelector(getApp);\n const {\n getRecommendedSubProductByIndex,\n getRecommendedLensThickness,\n filterSubProductsWithEnabledIndex\n } = useLensThickness();\n const { prescription, measures } = useSelector(getUser);\n const { getBreakdown } = usePricing();\n const { tempBaseLensThicknessCalculation } = useSelector(getlensThickness);\n const {\n getMeasuresHighestValues,\n getLeftAndRightPrescription,\n getRequestType,\n skipEPROMValidation\n } = useLensConsultation();\n const [isConfirmEPROM, setConfirmEPROM] = useState(false);\n const online = navigator.onLine;\n const {\n getAvailableColors,\n getEpromApiEndpoint,\n isValidOnEPROM,\n isValidOnEpromBO\n } = useEprom();\n const { getColorIdPrefix } = useProducts(productStore);\n let country = accountDetails?.shop.country\n\n // HOOKS\n useEffect(() => {\n\n if (lensRecommendation?.pair1 !== undefined) {\n dispatch(summarySlice.actions.setPairDetails({\n brand: lensRecommendation?.pair1,\n pair: LensPairType.PAIR1\n }));\n }\n\n // dispatch(userSlice.actions.saveSummary1(summaryList1)); \n }, [lensRecommendation?.pair1]);\n\n useEffect(() => {\n dispatch(lensConsultationSlice.actions.setValidOnEPROM(true))\n }, [])\n\n useEffect(() => {\n if (lensRecommendation?.pair2 !== undefined) {\n dispatch(summarySlice.actions.setPairDetails({\n brand: lensRecommendation?.pair2,\n pair: LensPairType.PAIR2\n }));\n }\n\n // dispatch(userSlice.actions.saveSummary2(summaryList2)); \n }, [lensRecommendation?.pair2]);\n\n useEffect(() => {\n if (validateLensIfEmpty()) {\n\n const breakdown = getBreakdown()\n dispatch(lensConsultationSlice.actions.setBreakdown(breakdown));\n }\n }, [lensRecommendation])\n\n useEffect(() => {\n if (!lensRecommendation || sliderPage !== 0) return;\n const lastGlobalEvent = sessionStorage.getItem('GLOBAL_EVENT');\n if ('CHANGE_PROPOSAL' === lastGlobalEvent) {\n sessionStorage.setItem('GLOBAL_EVENT', '');\n return;\n }\n\n const isWithRX = prescription.values.sphere.od ? true : false;\n\n const family = lensRecommendation[activePair];\n const pair = activePair === LensPairType.PAIR1 ? 0 : 1;\n if (\n !family || !family.correct ||\n !family.correct.subProduct\n ) {\n clearLensBaseThickness(activePair);\n return;\n }\n\n const productCode = family.correct.product?.id;\n const skipEPROM = skipEPROMValidation(\n accountDetails?.shop.country as string\n , productCode as string,\n family.correct.subProduct.code as string\n );\n const isValidateEPROM = (accountDetails?.shop.eprom as boolean) && !skipEPROM;\n const data = {\n index: family.correct.subProduct.index,\n product_code: handleProductCode(productCode as string),\n sub_product_code: handleSubProductCode(family.correct.subProduct.code as string),\n prescription: isWithRX ? getLeftAndRightPrescription(prescription.values) : null,\n measures: getMeasuresHighestValues(measures, pair),\n request_type: getRequestType(isWithRX, isValidateEPROM)\n }\n\n axios.post(getEpromApiEndpoint(), { data }).then(x => {\n if (isValidateEPROM) {\n const isBelgium = accountDetails?.shop.country === \"be\";\n const productIdsToCheck = getProductIdsToCheck(family, isBelgium);\n const validProducts = x.data.data.eprom_recommendation;\n isValidOnEPROM(productIdsToCheck, validProducts, (result: boolean) => {\n const correctSubProductId = family.correct.subProduct?.code;\n let validOnEpromBO = correctSubProductId ? checkIfValidOnEpromBO(family, correctSubProductId) : true;\n if (lensRecommendation && accountDetails?.shop.country === 'be') {\n const protect = lensRecommendation[activePair]?.protect\n if (protect && protect[1] &&\n (protect[1]?.product?.id === 'xperio_mirrors' || protect[0]?.product?.id === 'xperio_mirrors')) {\n setConfirmEPROM(false)\n dispatch(lensConsultationSlice.actions.setValidOnEPROM(true))\n }\n else {\n if (correctSubProductId === \"eyezen_kids\" || correctSubProductId === \"stellest\" || correctSubProductId === \"kids_standard_design\") {\n setConfirmEPROM(false)\n dispatch(lensConsultationSlice.actions.setValidOnEPROM(true))\n }\n else {\n setConfirmEPROM(!(result && validOnEpromBO));\n dispatch(lensConsultationSlice.actions.setValidOnEPROM(result && validOnEpromBO))\n }\n }\n }else{\n setConfirmEPROM(!(result && validOnEpromBO));\n dispatch(lensConsultationSlice.actions.setValidOnEPROM(result && validOnEpromBO))\n }\n })\n }\n\n if(\n x.data.statuscode !== 200 ||\n !x.data.data.lens_thickness ||\n Object.keys(x.data.data.lens_thickness).length === 0\n ){\n clearLensBaseThickness(activePair);\n return;\n }\n\n const {\n max_edge_thk,\n weight,\n center_thk\n } = x.data.data.lens_thickness;\n\n dispatch(lensThicknessSlice.actions.saveBaseLensThickness({\n pair: activePair,\n data: {\n index: family?.correct?.subProduct?.index as number,\n productCode: data.product_code as string,\n edge: max_edge_thk,\n weight: weight,\n center: center_thk,\n prescription: data.prescription,\n measures: data.measures\n }\n }))\n })\n }, [lensRecommendation, activePair])\n\n //belgium additional business rule validate\n useEffect(() => {\n const productsBelgium = [\n 'transitions_xtractive',\n 'transitions_xtractive_polarised',\n 'xperio_polarised',\n 'xperio_tinted',\n 'xperio_mirrors',\n 'xperio_tinted_mirrors',\n 'xperio_polarised_mirrors',\n 'transitions_style_mirrors']\n\n if (lensRecommendation) {\n const protect = lensRecommendation[activePair]?.protect\n const enhance = lensRecommendation[activePair]?.enhance\n if (accountDetails?.shop.country === 'be' &&\n protect &&\n protect[0] &&\n protect[0]?.product?.id &&\n enhance &&\n enhance?.product?.id\n ) {\n setConfirmEPROM(enhance?.product?.id === 'crizal_sun_xprotect' && !productsBelgium.includes(protect[0]?.product?.id))\n }\n }\n }, [lensRecommendation, activePair, sliderPage])\n\n // METHODS\n\n // Rule: Substitute Varilux X Series product_codes and sub_product_codes when XR Series is selected\n // Only applicable for Varilux XR series\n const handleProductCode = (productCode: string) => {\n if (productCode === \"varilux_xr_series\") {\n return \"varilux_x_series\"\n } else {\n return productCode\n }\n }\n const handleSubProductCode = (subProductCode: string) => {\n switch (subProductCode) {\n case \"varilux_xr_design\":\n return \"varilux_x_design\";\n case \"varilux_xr_design_short\":\n return \"varilux_x_design_short\";\n case \"varilux_xr_fit\":\n return \"varilux_x_f360\";\n case \"varilux_xr_track\":\n return \"varilux_x_track\";\n case \"varilux_xr_4d\":\n return \"varilux_x_4d\";\n case \"varilux_xr_pro\":\n return \"varilux_xclusive_4d\";\n \n default:\n return subProductCode;\n }\n }\n\n\n const checkIfValidOnEpromBO = (family: any, correctId: string) => {\n let isValid = true;\n if (family.protect && family.protect.length) {\n const ids = family.protect.map((p: any) => p.product?.id) as string[];\n const result = isValidOnEpromBO(correctId, ids, 'masstint');\n if (!result) isValid = false;\n }\n\n if (family.enhance) {\n const ids = [family.enhance.product?.id] as string[];\n const result = isValidOnEpromBO(correctId, ids, 'treatment');\n if (!result) isValid = false;\n }\n return isValid;\n }\n\n const getProductIdsToCheck = (family: any, checkEnhance = false) => {\n const protectIdsToCheck = family?.protect ? family?.protect.map((p: any) => p.product?.id) : [];\n const enhanceIdsToCheck = (family?.enhance && checkEnhance) ? [family?.enhance.product?.id] : [];\n return [\n ...protectIdsToCheck,\n ...enhanceIdsToCheck\n ]\n }\n\n const withCorrect = () => {\n if (!lensRecommendation) return false;\n return lensRecommendation[activePair]?.correct ? true : false;\n }\n\n const validateLensIfEmpty = () => {\n return lensRecommendation?.pair1?.correct === null ? false : true\n }\n\n const clearLensBaseThickness = (pair: LensPairType) => {\n dispatch(lensThicknessSlice.actions.saveBaseLensThickness({\n pair: pair,\n data: undefined\n }))\n dispatch(lensThicknessSlice.actions.saveLensThicknessDifference({\n pair: pair,\n data: undefined\n }))\n }\n\n const eventHander = (event: 'select' | 'delete', family: iProductFamily, index: number) => {\n if(event === 'select'){\n dispatch(lensConsultationSlice.actions.setSliderPage(1));\n dispatch(lensConsultationSlice.actions.selectProductFamily(family));\n return;\n }\n\n if (event === 'delete') {\n dispatch(lensConsultationSlice.actions.setShowDialogue(false))\n dispatch(lensConsultationSlice.actions.removeProduct({\n lensFamily: family.id,\n index: family.id === LensFamilyType.PROTECT ? index : undefined\n }));\n }\n }\n\n const getRecommendedValue = (type: LensFamilyType, all = false, country?: string) => {\n if (!lensRecommendation) return;\n const pair = lensRecommendation[activePair];\n const pairType: any = pair ? pair[type] : null;\n\n if (!pairType) return null;\n\n if (type === LensFamilyType.PROTECT) {\n if (pairType && (pairType as any[]).length > 0) {\n\n if (country) {\n let product = pairType[0]?.product.id\n let checkCountry = LENS_COLOR_MODIFICATIONS?.[country] ? true : false\n let checkProduct = LENS_COLOR_MODIFICATIONS?.[country]?.[product] ? true : false\n\n if (checkCountry && checkProduct) {\n let currentData = pairType[0]\n let newData = {\n ...currentData,\n product: {\n ...currentData.product,\n availableColors: LENS_COLOR_MODIFICATIONS?.[country]?.[currentData.product.id],\n colors: LENS_COLOR_MODIFICATIONS?.[country]?.[currentData.product.id]\n }\n }\n return [newData]\n } else {\n return pairType\n }\n\n } else {\n return pairType;\n }\n }\n return null;\n }\n if (all) return pairType;\n return pairType.subProduct ? pairType.subProduct : pairType.product;\n }\n\n const selectSubProduct = (brand: iProductBrand, product: iProduct, subProduct: iSubProduct) => {\n\n let recommendedSubProduct;\n if (prescription?.values?.sphere && product.subProducts) {\n const sphere = prescription.values.sphere;\n const thickness = getRecommendedLensThickness({\n od: sphere.od as number,\n os: sphere.os as number\n }, LENS_THICKNESS_RULES);\n const subProducts = filterSubProductsWithEnabledIndex(\n product.subProducts.filter(x => x.label === subProduct.label),\n appStore.lensThicknessSettings);\n recommendedSubProduct = getRecommendedSubProductByIndex(subProducts, thickness);\n }\n if(activePair === 'pair2'){\n dispatch(lensConsultationSlice.actions.setShowDialogue(false))\n }\n dispatch(lensConsultationSlice.actions.selectProduct({\n lensFamily: LensFamilyType.CORRECT,\n brand,\n product,\n subProduct: recommendedSubProduct || subProduct\n }));\n }\n\n const onSelectProtectColor = (color: iLensColor, index: number) => {\n dispatch(lensConsultationSlice.actions.setProtectColor({\n color,\n index,\n }))\n }\n\n const renderExtraComponent = (family: LensFamilyType, index: number, p: any) => {\n const recommendedValue = getRecommendedValue(family, true, country);\n if (!recommendedValue) return null;\n if (!validateProduct(p)) return null;\n\n if (family === LensFamilyType.CORRECT && !recommendedValue.subProduct) {\n return selectSubProduct(\n recommendedValue.brand,\n recommendedValue.product,\n subProduct)} />\n }\n\n if (family === LensFamilyType.PROTECT) {\n const availableColors = recommendedValue[index].product.availableColors\n const colors = recommendedValue[index].product.colors\n let finalColors;\n if(availableColors && availableColors.length > 0 && !availableColors.includes(null)) finalColors = availableColors\n else finalColors = colors\n if (!finalColors) return null;\n return onSelectProtectColor(color, index)}\n colors={filterColorsOnEPROM(finalColors, index)}\n brand={recommendedValue[index].product.id}\n />\n }\n\n return null;\n }\n\n const filterColorsOnEPROM = (colors: any[], index: number) => {\n if (!lensRecommendation || !accountDetails?.shop.eprom) return colors;\n const family = lensRecommendation[activePair];\n const correct = family?.correct?.subProduct?.code;\n const protect = family?.protect[index].product?.id;\n if (!correct || !protect) return colors;\n const available = getAvailableColors(correct, protect);\n\n const removeSpace = (txt: string) => txt.replace(/\\ /g, '').toLowerCase();\n const colorIdPrefix = getColorIdPrefix(protect);\n\n const filtered = colors.filter(x => {\n return available.filter(c => {\n const idWithoutPrefix = x.id.replace(colorIdPrefix, '');\n return idWithoutPrefix.toLowerCase() === removeSpace(c);\n }).length;\n });\n return filtered;\n }\n\n const validateProduct = (p: any) => {\n return p && p.id !== undefined ? true : false;\n }\n\n const gotoPackageOffer = () => {\n const proceed = isLensRecommendationValid()\n\n if (!proceed) {\n setValidatePackageOfferModal(true);\n return;\n }\n\n ga.event({\n category: 'Lens Consulation',\n action: 'Button Click',\n label: 'Packaged Offer'\n })\n\n goto.route(routes.packageOffer);\n }\n\n const isLensRecommendationValid = () => {\n const selectedPair = activePair === 'pair1' ? lensRecommendation?.pair1?.correct : lensRecommendation?.pair2?.correct\n const isPairNotValid = selectedPair?.subProduct === null || selectedPair?.subProduct === undefined\n\n return !isPairNotValid\n }\n\n const renderLensFamily = (family: iProductFamily) => {\n\n const value = getRecommendedValue(family.id);\n const products = Array.isArray(value) ?\n value.map(x => x.product) :\n [value];\n\n\n return (\n \n {products.map((p, index) => (\n 0}\n allowMultiple={\n family.id === LensFamilyType.PROTECT &&\n products.length === 1\n }\n key={`${family.id}${index}`}\n extraComponent={renderExtraComponent(family.id, index, p)}\n family={family}\n onEvent={(event, family) => eventHander(event, family, index)}\n value={validateProduct(p) ? p : false}\n disabled={\n !p &&\n accountDetails?.shop.eprom &&\n !withCorrect() &&\n family.id !== LensFamilyType.CORRECT\n }\n />\n ))}\n \n )\n }\n\n const confirmEPROM = (id: string) => {\n setConfirmEPROM(false);\n if (id === 'rx') {\n goto.route(routes.prescription);\n }\n }\n\n const removeFromCountries = () =>{\n const country = accountDetails?.shop.country\n return country === 'it' || country === 'sk'\n }\n\n const byPassXR = () => {\n let isVariluxXRRecommended = (lensRecommendation?.pair1?.correct?.product?.id) === 'varilux_xr_series'\n let isXRSubProductSelected = (lensRecommendation?.pair1?.correct?.subProduct) === undefined ? false : true\n if (lensRecommendation?.pair1?.correct?.subProduct === undefined) return false\n const xrProductsCode = [\n 'varilux_xr_design',\n 'varilux_xr_design_short',\n 'varilux_xr_fit',\n 'varilux_xr_track',\n 'varilux_xr_4d',\n 'varilux_xr_pro'\n ]\n return xrProductsCode.includes(temporaryByPassProduct as string) || isVariluxXRRecommended\n }\n\n return (\n
    \n { !removeFromCountries() &&\n
    gotoPackageOffer()}>\n {t('lens_consultation_lc_packaged_offer')}\n
    \n
    \n }\n\n
    \n {\n temporaryProductList.map((family: iProductFamily) => renderLensFamily(family))\n }\n
    \n\n setValidatePackageOfferModal(false)}>\n
    \n
    \n \n
    \n

    \n {/* To have access to Packaged Offer
    you must fill in at least one information. */}\n {t('packaged_offer_popup_po_popup_info')}\n

    \n setValidatePackageOfferModal(false)}\n text={t('packaged_offer_popup_po_popup_fill_lc')}\n type=\"secondary\" weight=\"normal\" />\n
    \n
    \n\n {\n !byPassXR() && (\n confirmEPROM(id)}\n />\n )\n }\n\n\n {\n !online && accountDetails?.shop.eprom &&\n

    \n {t('eprom_offline_message')}\n

    \n }\n\n
    \n )\n}\n\nexport default LensRecommendation;","import React from 'react';\nimport useBEM from '../utils/hooks/useBEM';\nimport Arrow from './ui/Arrow';\n\ninterface Props {\n title: string,\n open: boolean,\n onToggle?: () => void\n}\n\nconst ToggleCard : React.FC = ({\n title,\n open,\n onToggle,\n children\n}) => {\n // VARIABLES\n const [B, E] = useBEM('toggle-card');\n // HOOKS\n\n // METHODS\n const openClassModifier = () => {\n return !open ? [] : ['open']\n }\n\n return (\n
    \n
    \n \n \n \n \n
    \n
    \n {children}\n
    \n
    \n )\n}\n\nexport default ToggleCard;","import React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport SlideView from '../../components/SlideView';\nimport Button from '../../components/ui/Button';\nimport { getApp } from '../../store/slices/app.slice';\nimport lensConsultationSlice, { getLensConsultation } from '../../store/slices/lens-consultation.slice';\nimport lensThicknessSlice, { getlensThickness } from '../../store/slices/lens-thickness.slice';\nimport prescriptionSlice from '../../store/slices/prescription.slice';\nimport productDemoSlice from '../../store/slices/products-demo.slice';\nimport productsSlice from '../../store/slices/products.slice';\nimport LensPairType from '../../types/lens-pair.type';\nimport useBEM from '../../utils/hooks/useBEM';\nimport useTranslation from '../../utils/hooks/useTranslation';\nimport LensConsultationBrand from '../lens-consultation/components/LensConsultationBrand';\nimport LensConsultationProduct from '../lens-consultation/components/LensConsultationProduct';\nimport LensThicknessControl from '../lens-thickness/components/LensThicknessControl';\nimport PrescriptionForm from '../prescription/components/PrescriptionForm';\n// import PrescriptionFormV2 from '../prescription/components/PrescriptionFormV2';\nimport LensConsultationSideV2 from './components/LensConsultationSideV2';\nimport LensRecommendation from './components/LensRecommendation';\nimport ToggleCard from '../../components/ToggleCard';\n\ninterface Props {\n\n}\n\nconst LensConsultationV2 : React.FC = () => {\n // VARIABLES\n const [B, E] = useBEM('lens-consultation-v2');\n const { sliderPage, productFamily, productBrand, activePair} = useSelector(getLensConsultation); \n const { view } = useSelector(getlensThickness);\n const [reload, setReload] = useState(true);\n const dispatch = useDispatch();\n let throttle: any;\n const { t } = useTranslation(useSelector(getApp));\n const [openPrescription, setOpenPrescription] = useState(true);\n\n\n // HOOKS\n useEffect(() => {\n window.addEventListener('resize', windowOnresize);\n dispatch(lensConsultationSlice.actions.sessionStart(new Date().toISOString()));\n\n dispatch(productDemoSlice.actions.setActiveProductDemo(undefined));\n dispatch(productDemoSlice.actions.setActiveCompareProductDemo(undefined));\n dispatch(productDemoSlice.actions.changeDemoType(undefined));\n dispatch(productsSlice.actions.selectBrandTodemo(undefined))\n\n return () => {\n dispatch(lensConsultationSlice.actions.setSliderPage(0));\n dispatch(lensConsultationSlice.actions.selectProductFamily(null));\n dispatch(lensConsultationSlice.actions.changePair(LensPairType.PAIR1));\n dispatch(lensThicknessSlice.actions.changeView('controls'));\n window.removeEventListener('resize', windowOnresize);\n }\n },[]);\n\n useEffect(() => {\n \n if(sliderPage < 3){\n dispatch(lensConsultationSlice.actions.setSliderPage(0));\n }\n dispatch(lensConsultationSlice.actions.selectProductFamily(null));\n }, [activePair])\n\n // METHODS\n const windowOnresize = () => {\n if(throttle)clearTimeout(throttle);\n throttle = setTimeout(() => {\n setReload(false);\n setTimeout(() => setReload(true), 100)\n }, 250);\n }\n\n const slideBack = () => {\n dispatch(lensConsultationSlice.actions.setSliderPage(sliderPage - 1));\n if(sliderPage === 1){\n setTimeout(() => {\n dispatch(lensConsultationSlice.actions.selectProductFamily(null));\n }, 250);\n }\n }\n\n const getBackButtonLabel = () => {\n let label: string | undefined = '';\n if(sliderPage < 2) label = productFamily?.label;\n if(sliderPage === 2) label = productBrand?.label;\n return t(label as string);\n }\n\n const showBackButton = () => {\n return (sliderPage > 0 && sliderPage < 3);\n }\n\n const backLensThicknessControl = () => {\n if(view === \"controls\"){\n dispatch(lensConsultationSlice.actions.setSliderPage(0));\n return;\n }\n dispatch(lensThicknessSlice.actions.changeView('controls'));\n dispatch(prescriptionSlice.actions.resetData());\n }\n\n return (\n
    \n\n \n\n
    \n
    \n
    \n )\n}\n\nexport default LensConsultationV2;","import React, { useEffect, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport useBEM from '../../utils/hooks/useBEM';\ninterface Props {\n percentage:any,\n use?: 'default' | 'varilux'\n}\n\nconst LoadingAssets : React.FC = ({\n percentage,\n use = 'default'\n}) => {\n // VARIABLES\n const useCase = use === 'varilux' ? '-varilux' : ''\n const [B, E] = useBEM(`loading-asset${useCase}`);\n const dispatch = useDispatch();\n const [progress, setProgress] = useState([\"waiting\",\"waiting\",\"waiting\"])\n\n let currentPage = window.location.pathname\n let isInXRPage = currentPage.split(\"/\").includes(\"variluxxrdemo\")\n const loadingText = {\n first: !isInXRPage ? \"Our assistant is currently downloading the catalog\" : \"We are loading your Varilux XR Series demonstration tool\",\n second: !isInXRPage ? \"We currently adjusting our latest technologies for you\" : \"We are loading your Varilux XR Series demonstration tool\",\n third: !isInXRPage ? \"Your companion will be ready soon\" : \"We are loading your Varilux XR Series demonstration tool\",\n }\n \n \n // HOOKS\n useEffect(() => {\n let newList = progress;\n if(percentage <= 33){\n \n }\n if(percentage <= 33){\n if(percentage === 33){\n newList[0] = 'done'\n }else{\n newList[0] = ''\n }\n }\n else if(percentage >= 34 && percentage <= 66){\n if(percentage === 66){\n newList[1] = 'done'\n } else{\n newList[1] = ''\n }\n }\n else if(percentage >= 67){\n if(percentage === 100){\n newList[2] = 'done'\n }\n else{\n newList[2] = ''\n }\n }\n \n \n setProgress(newList)\n }, [percentage]);\n \n // console.log(percentage,progress)\n \n // METHODS\n const displayText = () =>{\n if(percentage <= 33)\n return loadingText.first;\n else if(percentage >= 34 && percentage <= 66)\n return loadingText.second;\n else if(percentage >= 67)\n return loadingText.third;\n }\n return (\n
    \n
    \n

    {displayText()}

    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n )\n}\n\nexport default LoadingAssets;","import React, { useEffect, useRef, useState } from 'react';\nimport useBEM from '../utils/hooks/useBEM';\nimport Utils from '../utils/Utils';\n\n//BRANDS\nimport variluxCard from './../assets/images/varilux-card.png';\nimport experioCard from './../assets/images/experio-card.jpg';\nimport blueUVCard from './../assets/images/blue-uv-card.jpg';\nimport eyezenCard from './../assets/images/eyezen-card.png';\nimport crizalCard from './../assets/images/crizal-card.png';\nimport optiFogCard from './../assets/images/optifog-card.png';\nimport transitionsCard from './../assets/images/transitions-card.png';\nimport stellestCard2 from './../assets/images/stellest-card2.png';\n\n//icons\nimport refresh from './../assets/svg/refresh.svg';\nimport lensMenuBlack from './../assets/svg/lensMenuBlack.svg';\nimport flip from './../assets/svg/flip.svg';\nimport hamburger from './../assets/svg/hamburger.svg';\n\n// Prescription\nimport clearLens from './../assets/images/prescription/Clear_Lens.png';\n// import avaOverlayClearLens0 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00000.png';\n// import avaOverlayClearLens1 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00001.png';\n// import avaOverlayClearLens2 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00002.png';\n// import avaOverlayClearLens3 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00003.png';\n// import avaOverlayClearLens4 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00004.png';\n// import avaOverlayClearLens5 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00005.png';\n// import avaOverlayClearLens6 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00006.png';\n// import avaOverlayClearLens7 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00007.png';\n// import avaOverlayClearLens8 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00008.png';\n// import avaOverlayClearLens9 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00009.png';\n// import avaOverlayClearLens10 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00010.png';\n// import avaOverlayClearLens11 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00011.png';\n// import avaOverlayClearLens12 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00012.png';\n// import avaOverlayClearLens13 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00013.png';\n// import avaOverlayClearLens14 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00014.png';\n// import avaOverlayClearLens15 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00015.png';\n// import avaOverlayClearLens16 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00016.png';\n// import avaOverlayClearLens17 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00017.png';\n// import avaOverlayClearLens18 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00018.png';\n// import avaOverlayClearLens19 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00019.png';\n// import avaOverlayClearLens20 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00020.png';\n// import avaOverlayClearLens21 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00021.png';\n// import avaOverlayClearLens22 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00022.png';\n// import avaOverlayClearLens23 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00023.png';\n// import avaOverlayClearLens24 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00024.png';\n// import avaOverlayClearLens25 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00025.png';\n// import avaOverlayClearLens26 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00026.png';\n// import avaOverlayClearLens27 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00027.png';\n// import avaOverlayClearLens28 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00028.png';\n// import avaOverlayClearLens29 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00029.png';\n// import avaOverlayClearLens30 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00030.png';\n// import avaOverlayClearLens31 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00031.png';\n// import avaOverlayClearLens32 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00032.png';\n// import avaOverlayClearLens33 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00033.png';\n// import avaOverlayClearLens34 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00034.png';\n// import avaOverlayClearLens35 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00035.png';\n// import avaOverlayClearLens36 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00036.png';\n// import avaOverlayClearLens37 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00037.png';\n// import avaOverlayClearLens38 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00038.png';\n// import avaOverlayClearLens39 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00039.png';\n// import avaOverlayClearLens40 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00040.png';\n// import avaOverlayClearLens41 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00041.png';\n// import avaOverlayClearLens42 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00042.png';\n// import avaOverlayClearLens43 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00043.png';\n// import avaOverlayClearLens44 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00044.png';\n// import avaOverlayClearLens45 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00045.png';\n// import avaOverlayClearLens46 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00046.png';\n// import avaOverlayClearLens47 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00047.png';\n// import avaOverlayClearLens48 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00048.png';\n// import avaOverlayClearLens49 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00049.png';\n// import avaOverlayClearLens50 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00050.png';\n// import avaOverlayClearLens51 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00051.png';\n// import avaOverlayClearLens52 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00052.png';\n// import avaOverlayClearLens53 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00053.png';\n// import avaOverlayClearLens54 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00054.png';\n// import avaOverlayClearLens55 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00055.png';\n// import avaOverlayClearLens56 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00056.png';\n// import avaOverlayClearLens57 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00057.png';\n// import avaOverlayClearLens58 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00058.png';\n// import avaOverlayClearLens59 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00059.png';\n// import avaOverlayClearLens60 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00060.png';\n// import avaOverlayClearLens61 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00061.png';\n// import avaOverlayClearLens62 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00062.png';\n// import avaOverlayClearLens63 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00063.png';\n// import avaOverlayClearLens64 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00064.png';\n// import avaOverlayClearLens65 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00065.png';\n// import avaOverlayClearLens66 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00066.png';\n// import avaOverlayClearLens67 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00067.png';\n// import avaOverlayClearLens68 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00068.png';\n// import avaOverlayClearLens69 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00069.png';\n// import avaOverlayClearLens70 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00070.png';\n// import avaOverlayClearLens71 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00071.png';\n// import avaOverlayClearLens72 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00072.png';\n// import avaOverlayClearLens73 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00073.png';\n// import avaOverlayClearLens74 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00074.png';\n// import avaOverlayClearLens75 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00075.png';\n// import avaOverlayClearLens76 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00076.png';\n// import avaOverlayClearLens77 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00077.png';\n// import avaOverlayClearLens78 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00078.png';\n// import avaOverlayClearLens79 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00079.png';\n// import avaOverlayClearLens80 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00080.png';\n// import avaOverlayClearLens81 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00081.png';\n// import avaOverlayClearLens82 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00082.png';\n// import avaOverlayClearLens83 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00083.png';\n// import avaOverlayClearLens84 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00084.png';\n// import avaOverlayClearLens85 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00085.png';\n// import avaOverlayClearLens86 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00086.png';\n// import avaOverlayClearLens87 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00087.png';\n// import avaOverlayClearLens88 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00088.png';\n// import avaOverlayClearLens89 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00089.png';\n// import avaOverlayClearLens90 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00090.png';\n// import avaOverlayClearLens91 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00091.png';\n// import avaOverlayClearLens92 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00092.png';\n// import avaOverlayClearLens93 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00093.png';\n// import avaOverlayClearLens94 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00094.png';\n// import avaOverlayClearLens95 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00095.png';\n// import avaOverlayClearLens96 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00096.png';\n// import avaOverlayClearLens97 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00097.png';\n// import avaOverlayClearLens98 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00098.png';\n// import avaOverlayClearLens99 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00099.png';\n// import avaOverlayClearLens100 from './../assets/images/prescription/ava-overylay-clear-lens/AVA_Overlay_Clear_Lens00100.png';\n\n// LENS CONSULTATIONS\nimport lensAll from './../assets/images/lens-consulatation/Lens_All.png';\nimport lensCorrectLens from './../assets/images/lens-consulatation/Lens_Correct_Active.png';\nimport lensEnhanceLens from './../assets/images/lens-consulatation/Lens_Enhance_Active.png';\nimport lensProtectLens from './../assets/images/lens-consulatation/Lens_Protect_Active.png';\n\n// LENS THICKNESS\nimport concaveLens50 from './../assets/images/lens-consulatation/lens-thickness/concave/Concave_Lens_50.png';\nimport concaveLens56 from './../assets/images/lens-consulatation/lens-thickness/concave/Concave_Lens_56.png';\nimport concaveLens60 from './../assets/images/lens-consulatation/lens-thickness/concave/Concave_Lens_60.png';\nimport concaveLens67 from './../assets/images/lens-consulatation/lens-thickness/concave/Concave_Lens_67.png';\nimport concaveLens74 from './../assets/images/lens-consulatation/lens-thickness/concave/Concave_Lens_74.png';\nimport convexeLens50 from './../assets/images/lens-consulatation/lens-thickness/convexe/Convexe_Lens_50.png';\nimport convexeLens56 from './../assets/images/lens-consulatation/lens-thickness/convexe/Convexe_Lens_56.png';\nimport convexeLens60 from './../assets/images/lens-consulatation/lens-thickness/convexe/Convexe_Lens_60.png';\nimport convexeLens67 from './../assets/images/lens-consulatation/lens-thickness/convexe/Convexe_Lens_67.png';\nimport convexeLens74 from './../assets/images/lens-consulatation/lens-thickness/convexe/Convexe_Lens_74.png';\n\n// TINTED LENS\n\n// Transitions\nimport lensTransitionGreen from './../assets/images/lens-consulatation/tinted-lens/transition/transition_green.png';\nimport lensTransitionAmber from './../assets/images/lens-consulatation/tinted-lens/transition/transition_amber.png';\nimport lensTransitionAmethyst from './../assets/images/lens-consulatation/tinted-lens/transition/transition_amethyst.png';\nimport lensTransitionBrown from './../assets/images/lens-consulatation/tinted-lens/transition/transition_brown.png';\nimport lensTransitionEmerald from './../assets/images/lens-consulatation/tinted-lens/transition/transition_emerald.png';\nimport lensTransitionGrey from './../assets/images/lens-consulatation/tinted-lens/transition/transition_grey.png';\nimport lensTransitionSapphire from './../assets/images/lens-consulatation/tinted-lens/transition/transition_saphirre.png';\n\n// Experio polarized\nimport lensPolarizedAmber from './../assets/images/lens-consulatation/tinted-lens/xperio/polarized/xperio_P_amber.png';\nimport lensPolarizedBlueInk from './../assets/images/lens-consulatation/tinted-lens/xperio/polarized/xperio_P_blue_ink.png';\nimport lensPolarizedBluePurple from './../assets/images/lens-consulatation/tinted-lens/xperio/polarized/xperio_P_blue_purple.png';\nimport lensPolarizedBlueSky from './../assets/images/lens-consulatation/tinted-lens/xperio/polarized/xperio_P_blue_sky.png';\nimport lensPolarizedBrown from './../assets/images/lens-consulatation/tinted-lens/xperio/polarized/xperio_P_brown.png';\nimport lensPolarizedGrey from './../assets/images/lens-consulatation/tinted-lens/xperio/polarized/xperio_P_grey.png';\nimport lensPolarizedGreyGreen from './../assets/images/lens-consulatation/tinted-lens/xperio/polarized/xperio_P_grey_green.png';\nimport lensPolarizedHerbal from './../assets/images/lens-consulatation/tinted-lens/xperio/polarized/xperio_P_herbal.png';\nimport lensPolarizedViolet from './../assets/images/lens-consulatation/tinted-lens/xperio/polarized/xperio_P_violet.png';\n\nimport lensTintedBlack from './../assets/images/lens-consulatation/tinted-lens/xperio/tinted/xperio_T_black.png';\nimport lensTintedBlueInk from './../assets/images/lens-consulatation/tinted-lens/xperio/tinted/xperio_T_blue_ink.png';\nimport lensTintedBrown from './../assets/images/lens-consulatation/tinted-lens/xperio/tinted/xperio_T_brown.png';\nimport lensTintedBurgundy from './../assets/images/lens-consulatation/tinted-lens/xperio/tinted/xperio_T_burgundy.png';\nimport lensTintedGreyGreen from './../assets/images/lens-consulatation/tinted-lens/xperio/tinted/xperio_T_grey_green.png';\nimport lensTintedGrey from './../assets/images/lens-consulatation/tinted-lens/xperio/tinted/xperio_T_grey.png';\nimport lensTintedHerbal from './../assets/images/lens-consulatation/tinted-lens/xperio/tinted/xperio_T_herbal.png';\nimport lensTintedNewBrown from './../assets/images/lens-consulatation/tinted-lens/xperio/tinted/xperio_T_newbrown.png';\n\nimport lensMirrorBronzeShadow from './../assets/images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_bronze_shadow.png';\nimport lensMirrorBronze from './../assets/images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_bronze.png';\nimport lensMirrorCandy from './../assets/images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_candy.png';\nimport lensMirrorForestGreen from './../assets/images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_forestgreen.png';\nimport lensMirrorGoldPink from './../assets/images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_goldpink.png';\nimport lensMirrorGreenShadow from './../assets/images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_green_shadow.png';\nimport lensMirrorKaki from './../assets/images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_kaki.png';\nimport lensMirrorMauveSilver from './../assets/images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_mauve_silver.png';\nimport lensMirrorNewBlue from './../assets/images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_new_blue.png';\nimport lensMirrorNewSilver from './../assets/images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_new_silver.png';\nimport lensMirrorOceanBlue from './../assets/images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_ocean_blue.png';\nimport lensMirrorOrange from './../assets/images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_orange.png';\nimport lensMirrorParma from './../assets/images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_parma.png';\nimport lensMirrorPinkSilver from './../assets/images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_pink_silver.png';\nimport lensMirrorSilverShadow from './../assets/images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_silver_shadow.png';\nimport lensMirrorSilver from './../assets/images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_silver.png';\nimport lensMirrorSkyBlueSilver from './../assets/images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_skyblue_silver.png';\nimport lensMirrorViolet from './../assets/images/lens-consulatation/tinted-lens/xperio/mirror/xperio_M_violet.png';\n\n// TRANSITION IN\nimport transitionIn0 from './../assets/images/lens-consulatation/transition-in/TransitionIn_00000.png';\nimport transitionIn1 from './../assets/images/lens-consulatation/transition-in/TransitionIn_00001.png';\nimport transitionIn2 from './../assets/images/lens-consulatation/transition-in/TransitionIn_00002.png';\nimport transitionIn3 from './../assets/images/lens-consulatation/transition-in/TransitionIn_00003.png';\nimport transitionIn4 from './../assets/images/lens-consulatation/transition-in/TransitionIn_00004.png';\nimport transitionIn5 from './../assets/images/lens-consulatation/transition-in/TransitionIn_00005.png';\nimport transitionIn6 from './../assets/images/lens-consulatation/transition-in/TransitionIn_00006.png';\nimport transitionIn7 from './../assets/images/lens-consulatation/transition-in/TransitionIn_00007.png';\nimport transitionIn8 from './../assets/images/lens-consulatation/transition-in/TransitionIn_00008.png';\nimport transitionIn9 from './../assets/images/lens-consulatation/transition-in/TransitionIn_00009.png';\nimport transitionIn10 from './../assets/images/lens-consulatation/transition-in/TransitionIn_00010.png';\nimport transitionIn11 from './../assets/images/lens-consulatation/transition-in/TransitionIn_00011.png';\nimport transitionIn12 from './../assets/images/lens-consulatation/transition-in/TransitionIn_00012.png';\nimport transitionIn13 from './../assets/images/lens-consulatation/transition-in/TransitionIn_00013.png';\nimport transitionIn14 from './../assets/images/lens-consulatation/transition-in/TransitionIn_00014.png';\nimport transitionIn15 from './../assets/images/lens-consulatation/transition-in/TransitionIn_00015.png';\nimport transitionIn16 from './../assets/images/lens-consulatation/transition-in/TransitionIn_00016.png';\nimport transitionIn17 from './../assets/images/lens-consulatation/transition-in/TransitionIn_00017.png';\nimport transitionIn18 from './../assets/images/lens-consulatation/transition-in/TransitionIn_00018.png';\nimport transitionIn19 from './../assets/images/lens-consulatation/transition-in/TransitionIn_00019.png';\nimport transitionIn20 from './../assets/images/lens-consulatation/transition-in/TransitionIn_00020.png';\nimport transitionIn21 from './../assets/images/lens-consulatation/transition-in/TransitionIn_00021.png';\nimport transitionIn22 from './../assets/images/lens-consulatation/transition-in/TransitionIn_00022.png';\nimport transitionIn23 from './../assets/images/lens-consulatation/transition-in/TransitionIn_00023.png';\nimport transitionIn24 from './../assets/images/lens-consulatation/transition-in/TransitionIn_00024.png';\nimport transitionIn25 from './../assets/images/lens-consulatation/transition-in/TransitionIn_00025.png';\nimport transitionIn26 from './../assets/images/lens-consulatation/transition-in/TransitionIn_00026.png';\nimport transitionIn27 from './../assets/images/lens-consulatation/transition-in/TransitionIn_00027.png';\nimport transitionIn28 from './../assets/images/lens-consulatation/transition-in/TransitionIn_00028.png';\nimport transitionIn29 from './../assets/images/lens-consulatation/transition-in/TransitionIn_00029.png';\nimport transitionIn30 from './../assets/images/lens-consulatation/transition-in/TransitionIn_00030.png';\nimport transitionIn31 from './../assets/images/lens-consulatation/transition-in/TransitionIn_00031.png';\nimport transitionIn32 from './../assets/images/lens-consulatation/transition-in/TransitionIn_00032.png';\nimport transitionIn33 from './../assets/images/lens-consulatation/transition-in/TransitionIn_00033.png';\nimport transitionIn34 from './../assets/images/lens-consulatation/transition-in/TransitionIn_00034.png';\nimport transitionIn35 from './../assets/images/lens-consulatation/transition-in/TransitionIn_00035.png';\nimport transitionIn36 from './../assets/images/lens-consulatation/transition-in/TransitionIn_00036.png';\nimport transitionIn37 from './../assets/images/lens-consulatation/transition-in/TransitionIn_00037.png';\nimport transitionIn38 from './../assets/images/lens-consulatation/transition-in/TransitionIn_00038.png';\nimport transitionIn39 from './../assets/images/lens-consulatation/transition-in/TransitionIn_00039.png';\nimport transitionIn40 from './../assets/images/lens-consulatation/transition-in/TransitionIn_00040.png';\nimport transitionIn41 from './../assets/images/lens-consulatation/transition-in/TransitionIn_00041.png';\nimport transitionIn42 from './../assets/images/lens-consulatation/transition-in/TransitionIn_00042.png';\nimport transitionIn43 from './../assets/images/lens-consulatation/transition-in/TransitionIn_00043.png';\nimport transitionIn44 from './../assets/images/lens-consulatation/transition-in/TransitionIn_00044.png';\nimport transitionIn45 from './../assets/images/lens-consulatation/transition-in/TransitionIn_00045.png';\nimport transitionIn46 from './../assets/images/lens-consulatation/transition-in/TransitionIn_00046.png';\nimport transitionIn47 from './../assets/images/lens-consulatation/transition-in/TransitionIn_00047.png';\nimport transitionIn48 from './../assets/images/lens-consulatation/transition-in/TransitionIn_00048.png';\nimport transitionIn49 from './../assets/images/lens-consulatation/transition-in/TransitionIn_00049.png';\nimport transitionIn50 from './../assets/images/lens-consulatation/transition-in/TransitionIn_00050.png';\nimport transitionIn51 from './../assets/images/lens-consulatation/transition-in/TransitionIn_00051.png';\nimport transitionIn52 from './../assets/images/lens-consulatation/transition-in/TransitionIn_00052.png';\nimport transitionIn53 from './../assets/images/lens-consulatation/transition-in/TransitionIn_00053.png';\nimport transitionIn54 from './../assets/images/lens-consulatation/transition-in/TransitionIn_00054.png';\nimport transitionIn55 from './../assets/images/lens-consulatation/transition-in/TransitionIn_00055.png';\nimport transitionIn56 from './../assets/images/lens-consulatation/transition-in/TransitionIn_00056.png';\nimport transitionIn57 from './../assets/images/lens-consulatation/transition-in/TransitionIn_00057.png';\nimport transitionIn58 from './../assets/images/lens-consulatation/transition-in/TransitionIn_00058.png';\nimport transitionIn59 from './../assets/images/lens-consulatation/transition-in/TransitionIn_00059.png';\nimport transitionIn60 from './../assets/images/lens-consulatation/transition-in/TransitionIn_00060.png';\n\n// Discovery Textture\nimport texture0\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00000-min.png';\nimport texture1\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00001-min.png';\nimport texture2\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00002-min.png';\nimport texture3\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00003-min.png';\nimport texture4\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00004-min.png';\nimport texture5\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00005-min.png';\nimport texture6\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00006-min.png';\nimport texture7\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00007-min.png';\nimport texture8\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00008-min.png';\nimport texture9\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00009-min.png';\nimport texture10\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00010-min.png';\nimport texture11\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00011-min.png';\nimport texture12\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00012-min.png';\nimport texture13\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00013-min.png';\nimport texture14\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00014-min.png';\nimport texture15\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00015-min.png';\nimport texture16\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00016-min.png';\nimport texture17\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00017-min.png';\nimport texture18\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00018-min.png';\nimport texture19\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00019-min.png';\nimport texture20\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00020-min.png';\nimport texture21\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00021-min.png';\nimport texture22\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00022-min.png';\nimport texture23\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00023-min.png';\nimport texture24\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00024-min.png';\nimport texture25\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00025-min.png';\nimport texture26\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00026-min.png';\nimport texture27\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00027-min.png';\nimport texture28\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00028-min.png';\nimport texture29\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00029-min.png';\nimport texture30\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00030-min.png';\nimport texture31\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00031-min.png';\nimport texture32\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00032-min.png';\nimport texture33\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00033-min.png';\nimport texture34\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00034-min.png';\nimport texture35\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00035-min.png';\nimport texture36\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00036-min.png';\nimport texture37\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00037-min.png';\nimport texture38\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00038-min.png';\nimport texture39\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00039-min.png';\nimport texture40\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00040-min.png';\nimport texture41\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00041-min.png';\nimport texture42\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00042-min.png';\nimport texture43\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00043-min.png';\nimport texture44\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00044-min.png';\nimport texture45\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00045-min.png';\nimport texture46\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00046-min.png';\nimport texture47\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00047-min.png';\nimport texture48\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00048-min.png';\nimport texture49\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00049-min.png';\nimport texture50\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00050-min.png';\nimport texture51\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00051-min.png';\nimport texture52\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00052-min.png';\nimport texture53\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00053-min.png';\nimport texture54\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00054-min.png';\nimport texture55\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00055-min.png';\nimport texture56\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00056-min.png';\nimport texture57\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00057-min.png';\nimport texture58\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00058-min.png';\nimport texture59\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00059-min.png';\nimport texture60\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00060-min.png';\nimport texture61\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00061-min.png';\nimport texture62\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00062-min.png';\nimport texture63\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00063-min.png';\nimport texture64\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00064-min.png';\nimport texture65\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00065-min.png';\nimport texture66\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00066-min.png';\nimport texture67\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00067-min.png';\nimport texture68\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00068-min.png';\nimport texture69\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00069-min.png';\nimport texture70\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00070-min.png';\nimport texture71\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00071-min.png';\nimport texture72\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00072-min.png';\nimport texture73\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00073-min.png';\nimport texture74\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00074-min.png';\nimport texture75\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00075-min.png';\nimport texture76\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00076-min.png';\nimport texture77\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00077-min.png';\nimport texture78\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00078-min.png';\nimport texture79\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00079-min.png';\nimport texture80\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00080-min.png';\nimport texture81\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00081-min.png';\nimport texture82\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00082-min.png';\nimport texture83\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00083-min.png';\nimport texture84\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00084-min.png';\nimport texture85\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00085-min.png';\nimport texture86\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00086-min.png';\nimport texture87\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00087-min.png';\nimport texture88\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00088-min.png';\nimport texture89\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00089-min.png';\nimport texture90\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00090-min.png';\nimport texture91\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00091-min.png';\nimport texture92\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00092-min.png';\nimport texture93\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00093-min.png';\nimport texture94\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00094-min.png';\nimport texture95\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00095-min.png';\nimport texture96\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00096-min.png';\nimport texture97\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00097-min.png';\nimport texture98\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00098-min.png';\nimport texture99\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00099-min.png';\nimport texture100\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00100-min.png';\nimport texture101\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00101-min.png';\nimport texture102\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00102-min.png';\nimport texture103\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00103-min.png';\nimport texture104\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00104-min.png';\nimport texture105\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00105-min.png';\nimport texture106\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00106-min.png';\nimport texture107\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00107-min.png';\nimport texture108\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00108-min.png';\nimport texture109\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00109-min.png';\nimport texture110\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00110-min.png';\nimport texture111\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00111-min.png';\nimport texture112\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00112-min.png';\nimport texture113\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00113-min.png';\nimport texture114\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00114-min.png';\nimport texture115\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00115-min.png';\nimport texture116\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00116-min.png';\nimport texture117\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00117-min.png';\nimport texture118\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00118-min.png';\nimport texture119\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00119-min.png';\nimport texture120\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00120-min.png';\nimport texture121\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00121-min.png';\nimport texture122\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00122-min.png';\nimport texture123\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00123-min.png';\nimport texture124\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00124-min.png';\nimport texture125\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00125-min.png';\nimport texture126\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00126-min.png';\nimport texture127\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00127-min.png';\nimport texture128\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00128-min.png';\nimport texture129\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00129-min.png';\nimport texture130\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00130-min.png';\nimport texture131\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00131-min.png';\nimport texture132\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00132-min.png';\nimport texture133\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00133-min.png';\nimport texture134\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00134-min.png';\nimport texture135\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00135-min.png';\nimport texture136\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00136-min.png';\nimport texture137\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00137-min.png';\nimport texture138\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00138-min.png';\nimport texture139\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00139-min.png';\nimport texture140\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00140-min.png';\nimport texture141\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00141-min.png';\nimport texture142\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00142-min.png';\nimport texture143\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00143-min.png';\nimport texture144\tfrom './../assets/images/discovery/texture/loop verre01_plan01_00144-min.png';\n\n// Transition Out Convexe\nimport transitionOutConvexe0 from './../assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00000.png';\nimport transitionOutConvexe1 from './../assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00001.png';\nimport transitionOutConvexe2 from './../assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00002.png';\nimport transitionOutConvexe3 from './../assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00003.png';\nimport transitionOutConvexe4 from './../assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00004.png';\nimport transitionOutConvexe5 from './../assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00005.png';\nimport transitionOutConvexe6 from './../assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00006.png';\nimport transitionOutConvexe7 from './../assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00007.png';\nimport transitionOutConvexe8 from './../assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00008.png';\nimport transitionOutConvexe9 from './../assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00009.png';\nimport transitionOutConvexe10 from './../assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00010.png';\nimport transitionOutConvexe11 from './../assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00011.png';\nimport transitionOutConvexe12 from './../assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00012.png';\nimport transitionOutConvexe13 from './../assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00013.png';\nimport transitionOutConvexe14 from './../assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00014.png';\nimport transitionOutConvexe15 from './../assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00015.png';\nimport transitionOutConvexe16 from './../assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00016.png';\nimport transitionOutConvexe17 from './../assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00017.png';\nimport transitionOutConvexe18 from './../assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00018.png';\nimport transitionOutConvexe19 from './../assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00019.png';\nimport transitionOutConvexe20 from './../assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00020.png';\nimport transitionOutConvexe21 from './../assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00021.png';\nimport transitionOutConvexe22 from './../assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00022.png';\nimport transitionOutConvexe23 from './../assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00023.png';\nimport transitionOutConvexe24 from './../assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00024.png';\nimport transitionOutConvexe25 from './../assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00025.png';\nimport transitionOutConvexe26 from './../assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00026.png';\nimport transitionOutConvexe27 from './../assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00027.png';\nimport transitionOutConvexe28 from './../assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00028.png';\nimport transitionOutConvexe29 from './../assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00029.png';\nimport transitionOutConvexe30 from './../assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00030.png';\nimport transitionOutConvexe31 from './../assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00031.png';\nimport transitionOutConvexe32 from './../assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00032.png';\nimport transitionOutConvexe33 from './../assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00033.png';\nimport transitionOutConvexe34 from './../assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00034.png';\nimport transitionOutConvexe35 from './../assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00035.png';\nimport transitionOutConvexe36 from './../assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00036.png';\nimport transitionOutConvexe37 from './../assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00037.png';\nimport transitionOutConvexe38 from './../assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00038.png';\nimport transitionOutConvexe39 from './../assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00039.png';\nimport transitionOutConvexe40 from './../assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00040.png';\nimport transitionOutConvexe41 from './../assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00041.png';\nimport transitionOutConvexe42 from './../assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00042.png';\nimport transitionOutConvexe43 from './../assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00043.png';\nimport transitionOutConvexe44 from './../assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00044.png';\nimport transitionOutConvexe45 from './../assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00045.png';\nimport transitionOutConvexe46 from './../assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00046.png';\nimport transitionOutConvexe47 from './../assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00047.png';\nimport transitionOutConvexe48 from './../assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00048.png';\nimport transitionOutConvexe49 from './../assets/images/lens-consulatation/transition-out-convexe/TransitionOut_Convexe_00049.png';\n\n// Transition Out Concave\nimport transitionOutConcave0 from './../assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00000.png';\nimport transitionOutConcave1 from './../assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00001.png';\nimport transitionOutConcave2 from './../assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00002.png';\nimport transitionOutConcave3 from './../assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00003.png';\nimport transitionOutConcave4 from './../assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00004.png';\nimport transitionOutConcave5 from './../assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00005.png';\nimport transitionOutConcave6 from './../assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00006.png';\nimport transitionOutConcave7 from './../assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00007.png';\nimport transitionOutConcave8 from './../assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00008.png';\nimport transitionOutConcave9 from './../assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00009.png';\nimport transitionOutConcave10 from './../assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00010.png';\nimport transitionOutConcave11 from './../assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00011.png';\nimport transitionOutConcave12 from './../assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00012.png';\nimport transitionOutConcave13 from './../assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00013.png';\nimport transitionOutConcave14 from './../assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00014.png';\nimport transitionOutConcave15 from './../assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00015.png';\nimport transitionOutConcave16 from './../assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00016.png';\nimport transitionOutConcave17 from './../assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00017.png';\nimport transitionOutConcave18 from './../assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00018.png';\nimport transitionOutConcave19 from './../assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00019.png';\nimport transitionOutConcave20 from './../assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00020.png';\nimport transitionOutConcave21 from './../assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00021.png';\nimport transitionOutConcave22 from './../assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00022.png';\nimport transitionOutConcave23 from './../assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00023.png';\nimport transitionOutConcave24 from './../assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00024.png';\nimport transitionOutConcave25 from './../assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00025.png';\nimport transitionOutConcave26 from './../assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00026.png';\nimport transitionOutConcave27 from './../assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00027.png';\nimport transitionOutConcave28 from './../assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00028.png';\nimport transitionOutConcave29 from './../assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00029.png';\nimport transitionOutConcave30 from './../assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00030.png';\nimport transitionOutConcave31 from './../assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00031.png';\nimport transitionOutConcave32 from './../assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00032.png';\nimport transitionOutConcave33 from './../assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00033.png';\nimport transitionOutConcave34 from './../assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00034.png';\nimport transitionOutConcave35 from './../assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00035.png';\nimport transitionOutConcave36 from './../assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00036.png';\nimport transitionOutConcave37 from './../assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00037.png';\nimport transitionOutConcave38 from './../assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00038.png';\nimport transitionOutConcave39 from './../assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00039.png';\nimport transitionOutConcave40 from './../assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00040.png';\nimport transitionOutConcave41 from './../assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00041.png';\nimport transitionOutConcave42 from './../assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00042.png';\nimport transitionOutConcave43 from './../assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00043.png';\nimport transitionOutConcave44 from './../assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00044.png';\nimport transitionOutConcave45 from './../assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00045.png';\nimport transitionOutConcave46 from './../assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00046.png';\nimport transitionOutConcave47 from './../assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00047.png';\nimport transitionOutConcave48 from './../assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00048.png';\nimport transitionOutConcave49 from './../assets/images/lens-consulatation/transition-out-concave/TransitionOut_Concave_00049.png';\n\n// Need Explorer Images\nimport needExplorerEyes from './../assets/images/gen_eyes.png';\nimport needExplorerEyeGlasses from './../assets/images/gen_eyeglasses.png';\nimport needExplorerStop from './../assets/images/gen_stop.png';\nimport needExplorerNearby from './../assets/images/gen_nearby.png';\nimport needExplorerDistance from './../assets/images/gen_distance.png';\nimport needExplorerFarAway from './../assets/images/gen_far_away.png';\nimport needExplorerDragScreen from './../assets/images/gen_drag_screen.png';\nimport needExplorerDragDaily from './../assets/images/gen_drag_daily.png';\nimport needExplorerDragOutdoor from './../assets/images/gen_drag_outdoor.png';\nimport needExplorerDragIndoor from './../assets/images/gen_drag_indoor.png';\nimport needExplorerWomanChildren from './../assets/images/gen_woman_children.png';\nimport needExplorerRunning from './../assets/images/running.png';\nimport needExplorerExpose from './../assets/images/gen_expose.png';\nimport needExplorerRunningSolo from './../assets/images/running-solo.png';\nimport needExplorerDiscomfort from './../assets/images/gen_discomfort.png';\nimport needExplorerSmudge from './../assets/images/gen_smudge.png';\nimport needExplorerScratchGlasses from './../assets/images/gen_scratch_glasses.png';\nimport needExplorerRain from './../assets/images/gen_rain.png';\nimport needExplorerMultipleScreen from './../assets/images/gen_multiple_screen.png';\nimport needExplorerDicussion from './../assets/images/gen_discussion.png';\nimport needExplorerMeetings from './../assets/images/gen_meetings.png';\nimport needExplorerBike from './../assets/images/bike.png';\nimport needExplorerScooter from './../assets/images/scooter.png';\nimport needExplorerMotor from './../assets/images/motor.png';\nimport needExplorerCar from './../assets/images/gen_car.png';\nimport needExplorerBusDriver from './../assets/images/gen_bus_driver.png';\nimport needExplorerBrightlight from './../assets/images/gen_brightlight.png';\nimport needExplorerLowlight from './../assets/images/gen_lowlight.png';\nimport needExplorerReducedDark from './../assets/images/gen_reduced_dark.png';\nimport needExplorerChangingLight from './../assets/images/gen_changing_light.png';\nimport needExplorerGlare from './../assets/images/gen_glare.png';\nimport needExplorerHeadlights from './../assets/images/gen_headlights.png';\nimport needExplorerMultitask from './../assets/images/gen_multitask.png';\nimport needExplorerPrecisionTask from './../assets/images/gen_precision_task.png';\nimport needExplorerElectrician from './../assets/images/gen_electrician.png';\nimport needExplorerFarsighted from './../assets/images/gen_farsighted.png';\nimport needExplorerDragQuickEye from './../assets/images/gen_drag_quick_eye.png';\nimport needExplorerDragHighRisk from './../assets/images/gen_drag_high_risk.png';\nimport needExplorerFastResponse from './../assets/images/gen_fast_response.png';\nimport needExplorerDragKitchen from './../assets/images/gen_drag_kitchen.png';\nimport needExplorerSmudgeDustGrease from './../assets/images/gen_smudge_dust_grease.png';\nimport needExplorerLightCircumstances from './../assets/images/gen_light_circumstances.png';\n\nimport useTranslation from '../utils/hooks/useTranslation';\nimport LoadingAssets from './ui/loadingAssets';\nimport settings from './../constants/settings.constants';\nimport { IndexedDBContext, IndexedDBContextType } from '../utils/context/indexedDBContext';\n\ninterface Props {\n\n}\n\nconst siteAssetURL = (url: string) => {\n return `${settings[settings.environment].siteAssets}${url}`;\n}\n\nlet measurementAnimation = siteAssetURL('videos/measurement.mp4');\nlet discoveryMontageAnimation = siteAssetURL('videos/montage_background.mp4');\n\nconst DownloadAssets : React.FC = () => {\n // VARIABLES\n const [B,E] = useBEM('download-assets');\n const {downloadAssetBase64} = Utils();\n const [preloadComplete, setPreloadComplete] = useState(false);\n const {get, insert} = React.useContext(IndexedDBContext) as IndexedDBContextType;\n\n const [doneCount, setDoneCount] = useState(0);\n\n const loadedCount = useRef(0);\n const totalAssets = 365;\n\n // HOOKS\n useEffect(() => {\n const downloadAppVideos = async () => {\n\n const downloadDiscoveryMontageAnimation = await get('localAssetsStore', 'discoveryMontageAnimation');\n const downloadMeasurementbase64 = await get('localAssetsStore', 'measurementAnimation');\n\n if(!downloadDiscoveryMontageAnimation){\n const discoverybase64 = await downloadAssetBase64(discoveryMontageAnimation);\n await insert('localAssetsStore', {\n id: `discoveryMontageAnimation`, \n asset: discoverybase64,\n });\n }\n\n if(!downloadMeasurementbase64){\n const measurementbase64 = await downloadAssetBase64(measurementAnimation);\n await insert('localAssetsStore', {\n id: `measurementAnimation`, \n asset: measurementbase64,\n });\n } \n }\n downloadAppVideos();\n },[]);\n \n // METHODS\n // const downloadAssets = async () => { \n // const tempAssets = cloneObject(assets);\n // for (const key of Object.keys(assets)) {\n // const blob = await downloadAsset(assets[key].path);\n // tempAssets[key] = {\n // ...tempAssets[key],\n // blob\n // }\n // // setDoneCount(prev => prev + 1);\n // }\n // dispatch(appSlice.actions.setAssets(tempAssets)); \n // setBatchPreloadComplete(prev => prev + 1);\n // console.log(`Batch Complete`);\n // }\n\n const loaded = () => {\n loadedCount.current += 1;\n \n setDoneCount(prev => prev + 1);\n\n if(loadedCount.current >= totalAssets){\n setPreloadComplete(true);\n }\n }\n const downloadPercentage = () => {\n const percent = (doneCount / totalAssets * 100);\n // return `${ Math.floor(percent) }%`;\n return Math.floor(percent);\n }\n\n return (\n
    \n\n {/* \n */}\n \n \n\n {/* LENS CONSULTATION LENS IN */}\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n\n {/* DISCOVERY TEXTURE */}\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n\n {/* PRESCRIPTION */}\n \"\" loaded()} />\n\n {/* LENS THICKNESS */}\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n\n {/* BRANDS */}\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} /> \n \"\" loaded()} /> \n \"\" loaded()} />\n\n {/* LENS CONSULTATION SIDE */}\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n\n {/* Need Explorer Images */}\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n \"\" loaded()} />\n
    \n );\n}\n\nexport default DownloadAssets;","import React, { useEffect } from 'react'\nimport { useSelector } from 'react-redux';\nimport { useLocation, withRouter } from 'react-router-dom';\nimport routes from '../constants/routes.constant';\nimport { getApp } from '../store/slices/app.slice';\nimport useGoogleAnalytics from '../utils/hooks/useGoogleAnalytics';\nimport useGoto from '../utils/hooks/useGoto';\nimport ReactGA from 'react-ga';\nconst RouteChangeTracker = () => {\n\n // const ga = useGoogleAnalytics();\n const goto = useGoto();\n const { accountDetails } = useSelector(getApp);\n const country = accountDetails?.shop?.country\n const isUSCountry = country && ['us'].includes(country)\n const enableVarilux = country && ['ro','bg','de','pt','gb','be','es'].includes(country)\n const location = useLocation();\n\n useEffect(() => {\n routeGuard();\n ReactGA.pageview(location.pathname)\n }, [location]);\n\n const routeGuard = () => {\n if(\n (!accountDetails || accountDetails.state !== \"Active\") && \n location.pathname !== '/license-activation' && \n location.pathname !== '/legal-notices' &&\n location.pathname !== '/variluxG9'\n ) {\n setTimeout(() => {\n goto.route(routes.licenseActivation);\n },100);\n \n }\n\n if(accountDetails && !enableVarilux && location.pathname === '/variluxG9'){\n setTimeout(() => {\n goto.route(routes.home);\n },100);\n }\n }\n\n return
    ;\n};\n\nexport default withRouter(RouteChangeTracker);\n","import oceanie from './../assets/images/regions/oceanie.jpg';\nimport amera from './../assets/images/regions/amera.jpg';\nimport noam from './../assets/images/regions/noam.jpg';\nimport europe from './../assets/images/regions/europe.jpg';\nimport latam from './../assets/images/regions/latam.jpg';\nimport africa from './../assets/images/regions/africa.jpg'\n\nconst regionImages:{\n [key: string]: string\n} = {\n oceanie: oceanie,\n amera: amera,\n noam: noam,\n europe,\n latam,\n africa\n}\n\n\n\nconst REGIONS = {\n images: regionImages\n}\n\nexport default REGIONS;","import React from 'react';\nimport REGIONS from '../constants/regions.constants';\nimport iRegion from '../interface/region.interface';\nimport useBEM from '../utils/hooks/useBEM';\n\n\ninterface Props {\n currentRegion?: iRegion,\n items: iRegion[],\n onSelect: (region: iRegion) => void\n}\n\nconst RegionSelection : React.FC = ({\n currentRegion,\n items,\n onSelect\n}) => {\n // VARIABLES\n const [B, E] = useBEM('region-selection');\n const images = REGIONS.images;\n\n // METHODS\n const isSelected = (id: string) => {\n return id === currentRegion?.id ? ['selected'] : [];\n }\n\n const onSelectHandler = (region: iRegion) => {\n if(region.id === currentRegion?.id)return;\n onSelect(region)\n }\n\n return (\n
    \n \n {\n items.map( i => (\n
    onSelectHandler(i)}>\n \n\n \n\n \"\"\n
    \n ))\n }\n \n \n\n
    \n )\n}\n\nexport default RegionSelection;","\nimport React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport iTranslation from '../interface/translation.interface';\nimport appSlice, { getApp } from '../store/slices/app.slice';\nimport sidebarSlice, { getSidebar } from '../store/slices/sidebar.slice';\nimport useBEM from '../utils/hooks/useBEM';\nimport useTranslation from '../utils/hooks/useTranslation';\nimport Modal from './Modal';\nimport Button from './ui/Button';\nimport { IndexedDBContext, IndexedDBContextType } from '../utils/context/indexedDBContext';\nimport RegionSelection from './RegionSelection';\nimport iCountry from '../interface/country.interface';\nimport iRegion from '../interface/region.interface';\n\n\ninterface Props {\n\n}\n\ntype LanguageViewType = 'country' | 'region';\n\nconst Language : React.FC = () => {\n\n // VARIABLES\n const { selectedMenu, callerId } = useSelector(getSidebar);\n // const { translations } = useSelector(getApp);\n const [translations, setTranslations] = useState(undefined);\n const dispatch = useDispatch();\n const [show, setShow] = useState(false);\n const [showMultiple, setShowMultiple] = useState(false);\n const [B, E] = useBEM('language');\n const { \n regions, \n translationRegion,\n translationCountry, \n translationCountryLanguage,\n accountDetails,\n translation\n } = useSelector(getApp);\n const { t, getTranslations2, generateIconImage, sortCountries } = useTranslation(useSelector(getApp));\n const {get, update} = React.useContext(IndexedDBContext) as IndexedDBContextType;\n const [currentRegion, setCurrentRegion] = useState();\n const online = navigator.onLine;\n\n const [localTranslation, setLocalTranslation] = useState();\n const [localTranslationCountry, setLocalTranslationCountry] = useState(translationCountry); \n const [localTranslationCountryLanguage, setLocalTranslationCountryLanguage] = useState();\n\n \n\n const [languageView, setLanguageView] = useState('country');\n const modalSettings = {\n country: {\n title: 'language_lang_select_your_language',\n backButtonText: 'region_language_change_region'\n },\n region: {\n title: 'region_filter',\n backButtonText: 'language_lang__back_'\n }\n }\n\n\n const modalStyle = {\n width: \"95.4rem\",\n height: \"69.8rem\",\n borderRadius: \"15px\"\n }\n const popupStyle = {\n width: \"50rem\",\n height: \"30rem\",\n borderRadius: \"15px\"\n }\n \n\n // HOOKS\n useEffect(() => {\n setLocalTranslation(translation)\n },[translation])\n \n useEffect(() => {\n setLocalTranslationCountry(translationCountry);\n }, [translationCountry])\n\n useEffect(() => {\n setLocalTranslationCountryLanguage(translationCountryLanguage);\n }, [translationCountryLanguage])\n\n useEffect(() => {\n setCurrentRegion(translationRegion);\n }, [translationRegion])\n\n useEffect(() => {\n if(selectedMenu?.id !== 'settings_language')return;\n\n const getTranslations = async () => {\n const translationData = await get('languageStore', 'translations');\n setTranslations(translationData.value);\n setShow(true);\n }\n getTranslations()\n\n }, [selectedMenu, translationRegion])\n\n\n \n\n // METHODS\n\n const onLanguageSelect = (id: string, country:any) => {\n const languages = translations[id].language;\n\n const availableTranslations = Object.keys(languages).filter( x => {\n return languages[x] !== null;\n });\n\n setLocalTranslationCountry({\n id,\n ...country\n })\n\n //Note: multiple language\n if(availableTranslations.length > 1){ \n if(localTranslationCountry?.id !== id){\n setLocalTranslationCountryLanguage(undefined);\n }\n \n setShowMultiple(true);\n } else {\n\n setLocalTranslation({\n code: availableTranslations[0],\n country: country.label,\n translation: languages[availableTranslations[0]]\n });\n setLocalTranslationCountryLanguage({\n country: id,\n languageCode: availableTranslations[0]\n });\n\n } \n }\n\n const changeLanguage = async () => {\n if(languageView === 'country') {\n dispatch(appSlice.actions.setTranslationCountry(localTranslationCountry as iCountry));\n dispatch(appSlice.actions.setTranslation(localTranslation));\n dispatch(appSlice.actions.setTranslationCountryLanguage(localTranslationCountryLanguage));\n setShow(false);\n dispatch(sidebarSlice.actions.selectMenu({menu: undefined}));\n\n if(callerId === 'reloadPage'){\n setTimeout(()=> window.location.reload(), 500);\n }\n return;\n }\n\n // NOTE: Region\n // Dont call api if select the same region\n if(translationRegion?.id === currentRegion?.id) {\n setLanguageView('country');\n return;\n }\n if(!currentRegion)return;\n\n const {responseData: {data: translationsData}} = await getTranslations2(currentRegion?.id, true);\n if(!translationsData)return;\n await update('languageStore', {\n id: 'translations',\n value: translationsData.country\n }); \n dispatch(appSlice.actions.setTranslationRegion(currentRegion)); \n dispatch(appSlice.actions.setTranslationCountryLanguage(undefined));\n \n setLanguageView('country');\n }\n\n const modalOnClose = () => {\n if(showMultiple) {\n setShowMultiple(false);\n }\n else{\n dispatch(sidebarSlice.actions.selectMenu({menu: undefined}));\n setLanguageView('country');\n setShow(false);\n }\n \n }\n\n\n const disableLanguage = () =>{\n if(languageView === 'country') {\n if(!localTranslationCountryLanguage)return true;\n }\n return false;\n }\n\n const downloadRegionsData = async (callback: () => void) => {\n const {responseData: {data: translationsData}} = await getTranslations2(accountDetails?.shop.region as string);\n dispatch(appSlice.actions.saveRegions(translationsData.region));\n callback();\n }\n \n const backButtonHandler = async () => {\n const newView = languageView === 'region' ? 'country' : 'region';\n if(newView === 'country'){\n setCurrentRegion(translationRegion);\n \n if((regions || []).length < 0){\n downloadRegionsData(() => setLanguageView(newView));\n return;\n } \n }\n setLanguageView( newView );\n }\n\n const isTranslationsAvailable = (key: string, languages: string[]) => {\n const translation = translations[key];\n let available = false;\n if(translation !== undefined) {\n const avalalableTranslationKeys: string[] = [];\n\n Object.keys(translation.language).forEach( x => {\n if(translation.language[x] !== null) avalalableTranslationKeys.push(x);\n })\n\n const foundTranslationCount = languages.filter(val => avalalableTranslationKeys.includes(val)).length;\n available = foundTranslationCount > 0;\n } \n\n return available;\n }\n\n const multipleLanguageSelectedClass = (countryId: string, languageCode: string) => {\n return (\n localTranslationCountryLanguage?.languageCode === languageCode &&\n localTranslationCountryLanguage?.country === countryId\n ) ? 'selected' : '';\n }\n\n const selectCountryLanguage = (key: number) => {\n if(!localTranslationCountry)return;\n const code = localTranslationCountry?.language[key].id;\n const country = translations[localTranslationCountry.id];\n\n setLocalTranslation({\n code,\n country: country.country,\n translation: country.language[code]\n });\n setLocalTranslationCountryLanguage({\n country: localTranslationCountry.id,\n languageCode: code\n })\n setTimeout( x => setShowMultiple(false), 250);\n }\n\n return <>\n modalOnClose()} \n closeModalOnOutsideClick = {false} \n >\n
    \n
    \n

    {t('language_lang_select_your_language')}

    \n
    \n
    \n
      \n { \n localTranslationCountry && \n localTranslationCountry?.language && \n Object.keys(localTranslationCountry?.language).map((key:any, i:number) => (\n
    • \n selectCountryLanguage(key)}\n />\n
    • \n )) \n }\n
    \n
    \n
    \n
    \n modalOnClose()}\n >\n
    \n
    \n
    \n
    \n\n { languageView === 'country' &&
      \n { translations && translationRegion?.country && sortCountries(translationRegion?.country)\n .map(([key, value]: any[])=>{\n return(\n
    • \n\n x.id))}\n text={value.label} \n type=\"secondary\" weight=\"normal\"\n icon={generateIconImage(value.label)} \n className={\"country-btn \"+ (localTranslationCountry?.id === key ? ' selected' : '')}\n click={()=>onLanguageSelect(key, value)}\n iconPosition=\"left\"\n outlineType=\"light\"\n />\n\n
    • \n )\n }) }\n
    }\n\n { \n languageView === 'region' && \n \n }\n \n
    \n
    \n
    \n
    \n
    \n \n}\n\nexport default Language;","import { useSelector } from \"react-redux\";\nimport Icon from \"../../../components/ui/Icon\";\nimport { getApp } from \"../../../store/slices/app.slice\";\nimport useBEM from \"../../../utils/hooks/useBEM\";\nimport useTranslation from \"../../../utils/hooks/useTranslation\";\n\n\ninterface Props {\n title:string,\n count?: number,\n totalCount?: number,\n className?: string,\n click?: () => void,\n}\n\nconst TutorialCard : React.FC = (\n { title,\n count = 0, \n totalCount = 0,\n className,\n click\n }\n ) => {\n //VARIABLE\n const [B, E] = useBEM('tutorial-card');\n const { t } = useTranslation(useSelector(getApp));\n\n //METHOD\n const onClickHandler = () => {\n if(!click)return;\n click();\n }\n const computeProgress = () => {\n const percent = 100 / totalCount * count;\n return Math.ceil(percent);\n }\n const getWord = (value:string) =>{\n return value.substr(1, 9);\n }\n return(\n
    \n
    \n

    \n {title}\n

    \n \n
    \n
    \n \n
    \n \n {/* */}\n
    \n
    \n
    \n )\n}\n\nexport default TutorialCard;","import axios from \"axios\";\nimport { useState, useEffect } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport Modal from \"../../../components/Modal\";\nimport Accordion from \"../../../components/ui/Accordion\";\nimport Icon from \"../../../components/ui/Icon\";\nimport { TUTORIAL_CONTENT } from \"../../../constants/tutorial-content.constants\";\nimport { getApp } from \"../../../store/slices/app.slice\";\nimport sidebarSlice, { getSidebar } from \"../../../store/slices/sidebar.slice\";\nimport tutorialSlice, { getTutorial } from \"../../../store/slices/tutorial.slice\";\nimport useBEM from \"../../../utils/hooks/useBEM\";\nimport useTranslation from \"../../../utils/hooks/useTranslation\";\nimport TutorialCard from \"./TutorialCard\";\n\ninterface Props {\n\n}\nconst TutorialMain : React.FC = () => {\n \n // VARIABLES\n const dispatch = useDispatch();\n const [B, E] = useBEM('tutorial-main');\n const { selected, items } = useSelector(getTutorial);\n const { token } = useSelector(getApp);\n const { t } = useTranslation(useSelector(getApp));\n // HOOKS\n useEffect(() => {\n if(items !== undefined)\n dispatch(tutorialSlice.actions.saveTutorialItems(items));\n \n\n }, [])\n // METHODS\n const onError = (error: any) => {\n }\n \n const onClickContent = (type:string,key:string) =>{\n dispatch(tutorialSlice.actions.selectedCard({key:type,selectedKey:key}));\n dispatch(tutorialSlice.actions.saveViewMode('tutorialSection'));\n }\n\n const returnTotal = (file:any[] = []) =>{\n return file.length;\n }\n const returnRemaining = (file:any[] = []) =>{\n let count = 0;\n file.map(cond =>{\n if(cond.viewed) count = count + 1;\n })\n return count;\n }\n return (
    \n
    \n
    \n\n
    \n
    \n

    \n {t('my_practice_my_otutorials')} \n

    \n
    \n {t('my_practice_my_expla_vid')} \n
    \n
    \n
    \n {t('my_practice_my_interac_tuto')} \n
    \n
    \n
    \n
    \n \n {\n items?.newFeatures?.length !== 0 && items?.newFeatures?.map((value:any, i)=>{\n return onClickContent('newFeatures',value.key)} \n className={returnTotal(value.content) === returnRemaining(value.content) ? 'selected' : ''}\n totalCount={returnTotal(value.content)} count={returnRemaining(value.content)}>\n })\n \n } \n \n \n {\n items?.useJourney?.length !== 0 && items?.useJourney?.map((value:any, i)=>{\n return onClickContent('useJourney',value.key)} \n totalCount={returnTotal(value.content)} count={returnRemaining(value.content)}\n className={returnTotal(value.content) === returnRemaining(value.content) ? 'selected' : ''}\n >\n })\n \n }\n \n \n \n {\n items?.personalizedCompanion?.length !== 0 && items?.personalizedCompanion?.map((value:any, i)=>{\n return onClickContent('personalizedCompanion',value.key)} \n totalCount={returnTotal(value.content)} count={returnRemaining(value.content)}\n className={returnTotal(value.content) === returnRemaining(value.content) ? 'selected' : ''}\n >\n })\n \n }\n \n \n {\n items?.updateApp?.length !== 0 && items?.updateApp?.map((value:any, i)=>{\n return onClickContent('updateApp',value.key)} \n totalCount={returnTotal(value.content)} count={returnRemaining(value.content)}\n className={returnTotal(value.content) === returnRemaining(value.content) ? 'selected' : ''}\n >\n })\n \n }\n \n
    \n
    \n )\n\n}\nexport default TutorialMain;","import { useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport Button from \"../../../components/ui/Button\";\nimport { getApp } from \"../../../store/slices/app.slice\";\nimport tutorialSlice, { getTutorial } from \"../../../store/slices/tutorial.slice\";\nimport useBEM from \"../../../utils/hooks/useBEM\";\nimport useTranslation from \"../../../utils/hooks/useTranslation\";\n\ninterface Props {\n\n}\nconst TutorialSection : React.FC = () => {\n // VARIABLES\n const dispatch = useDispatch();\n const [B, E] = useBEM('tutorial-section');\n const { description, view, items, selected } = useSelector(getTutorial);\n const [file, setFile] = useState('');\n const { t } = useTranslation(useSelector(getApp));\n // METHOD\n const renderContainer = () =>{\n \n const labelDetails = \n description?.content?.map((ls,i)=>{\n return
    \n

    {ls.title}

    \n
    \n showVideo(ls.file, description, i)}\n >\n \n \n \n \n \n
    \n
    \n })\n \n\n return labelDetails;\n }\n const showVideo = (file:string = \"\", content:any = {}, key: number = 0) =>{\n dispatch(tutorialSlice.actions.saveViewMode('tutorialVideo'));\n setFile(file);\n //set to true once viewed\n onChangeView(key,content)\n dispatch(tutorialSlice.actions.saveTutorialItems(onChangeView(key,content)));\n }\n\n const onChangeView = (key:number = 0, content:any = {}) =>{\n let newList = {};\n switch(selected?.toString()) {\n case 'newFeatures': \n newList = {\n ...items,\n newFeatures: items?.newFeatures?.map(v=>{\n if(v.key === content.key){\n return {\n ...v, \n content: v.content?.map((sub,i:number)=>{\n if(key === i || sub.viewed) {\n return {\n ...sub,\n viewed: true\n }\n } else{\n return {\n ...sub,\n viewed: false,\n }\n } \n })\n }\n }\n return {\n ...v\n }\n \n })\n \n }\n \n break;\n case 'useJourney':\n newList = {\n ...items,\n useJourney: items?.useJourney?.map(v=>{\n if(v.key === content.key){\n return {\n ...v, \n content: v.content?.map((sub,i:number)=>{\n if(key === i || sub.viewed) {\n return {\n ...sub,\n viewed: true\n }\n } else{\n return {\n ...sub,\n viewed: false,\n }\n } \n })\n }\n }\n return {\n ...v\n }\n \n })\n \n }\n break;\n case 'personalizedCompanion':\n newList = {\n ...items,\n personalizedCompanion: items?.personalizedCompanion?.map(v=>{\n if(v.key === content.key){\n return {\n ...v, \n content: v.content?.map((sub,i:number)=>{\n if(key === i || sub.viewed) {\n return {\n ...sub,\n viewed: true\n }\n } else{\n return {\n ...sub,\n viewed: false,\n }\n } \n })\n }\n }\n return {\n ...v\n }\n })\n }\n break;\n case 'updateApp':\n newList = {\n ...items,\n updateApp: items?.updateApp?.map(v=>{\n if(v.key === content.key){\n return {\n ...v, \n content: v.content?.map((sub,i:number)=>{\n if(key === i || sub.viewed) {\n return {\n ...sub,\n viewed: true\n }\n } else{\n return {\n ...sub,\n viewed: false,\n }\n } \n })\n }\n }\n return {\n ...v\n }\n \n })\n \n }\n break;\n default: \n break;\n }\n \n return newList;\n }\n\n const renderVideo = () =>{\n return
    \n \n
    \n }\n\n return(\n
    \n {\n view === 'tutorialSection' && (\n
    \n

    {description?.label}

    \n

    {description?.description}

    \n
    \n )\n } \n
    \n { view === 'tutorialSection' && (renderContainer())}\n { view === 'tutorialVideo' && (renderVideo())}\n
    \n
    \n )\n\n}\nexport default TutorialSection;","\nimport React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport sidebarSlice, { getSidebar } from '../../store/slices/sidebar.slice';\nimport useBEM from '../../utils/hooks/useBEM';\nimport Modal from '../../components/Modal';\nimport Icon from '../../components/ui/Icon';\nimport Accordion from '../../components/ui/Accordion';\nimport { TUTORIAL_CONTENT } from '../../constants/tutorial-content.constants';\nimport TutorialCard from './components/TutorialCard';\nimport tutorialSlice, { getTutorial } from '../../store/slices/tutorial.slice';\nimport TutorialMain from './components/TutorialMain';\nimport TutorialSection from './components/TutorialSection';\nimport Button from '../../components/ui/Button';\nimport axios from 'axios';\nimport { getApp } from '../../store/slices/app.slice';\nimport useTranslation from '../../utils/hooks/useTranslation';\nimport ENDPOINTS from '../../constants/endpoints';\nimport tutorialContentDetails from '../../interface/tutorial-content-details.interface';\nimport tutorialDetails from '../../interface/tutorial-content-details';\n\ninterface Props {\n\n}\n\nconst Tutorial : React.FC = () => {\n\n // VARIABLES\n const dispatch = useDispatch();\n const [show, setShow] = useState(false);\n const [B, E] = useBEM('tutorial');\n const { selectedMenu } = useSelector(getSidebar);\n const { view, items } = useSelector(getTutorial);\n const { token } = useSelector(getApp);\n const { t } = useTranslation(useSelector(getApp));\n const modalStyle = {\n width: \"95.4rem\",\n height: \"69.8rem\",\n borderRadius: \"15px\"\n }\n // HOOKS\n // METHODS\n useEffect(() => {\n if(selectedMenu?.id !== 'tutorial')return;\n setShow(true);\n }, [selectedMenu])\n\n useEffect(() => {\n if(show)fetchMore();\n\n }, [show])\n const fetchMore = () =>{\n const axiosConfig = { headers: {\"Authorization\" : `Bearer ${token}`} }\n // const axiosConfig = { headers: {\"Authorization\" : `Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJFc3NpbG9yIENvbXBhbmlvbiIsImF1ZCI6IiIsImF2YWlsYWJsZV9kYXRlIjoiMjAyMS0wNi0wNCIsImlzcyI6InVybjpcL1wvYXBpZ2VlLWVkZ2UtZXNzaWxvci1KV1QiLCJtYWNoaW5lX2lkIjoiZDUyMGM3YTgtNDIxYi00NTYzLWI5NTUtZjVhYmM1NmI5N2VjIiwic3RhdGUiOiI4IiwiZXhwaXJhdGlvbl9kYXRlIjoiMjAyMS0wNy0wNCIsImlhdCI6MTYyMzI5NTk1MywianRpIjoiZmVjYTAwYmYtMjEyMy00MWU5LWE1MDctMTVkYTgxZmE3YTAyIiwibGljZW5zZV9udW1iZXIiOiJURVNULVczTUEtSk1BTS0xNU1MTSJ9.DmF_8MEBvCUeFmJCaA2pageG-NHrd_wt7sOf7XtHAN60Hbp2FK-09H3amNcyh3nxLAu7HgZzRDchXi-IBnzTvkE5hbDck72l3up1F__dY828hEFeYBdrQuhvu1xL9S48AJym_z_xxShEja32ZxoVZekLTSyOdfxBGy6U4yQjQmOsN-xk8R9rPI2u5eXUdgie59Vsni3AQFHdKkQDeVWict8yTwdZNVpzkzxn2uu6rZAiHMriBKStTpRRDIkIP209Z9POIdHf-kzh28JEgFLbuXcLwhIdA1hMzvVErISrysCDtqyxi9Gog4o9Z-KwKOkI6G7ZArk81H5ozGxWy4ETww`} }\n const url =\n ENDPOINTS.tutorial\n axios.get(\n url, axiosConfig)\n .then(res => {\n if(items === undefined){\n dispatch(tutorialSlice.actions.saveTutorialItems(res.data));\n }\n else{\n filterTutorialData(res.data)\n }\n\n }).catch(onError);\n }\n const onError = (error: any) => {\n }\n const filterTutorialData = (data:any) =>{\n const stateNewFeatures = data?.newFeatures && data?.newFeatures.map((v: tutorialDetails, index:number) =>{\n return{\n ...v,\n content: v.content?.map((content:tutorialContentDetails, contentIndex:number)=>{\n if(items?.newFeatures){\n const existing = items?.newFeatures.length-1 >= index &&\n items?.newFeatures[index].content && items?.newFeatures[index].content?.filter((c:tutorialContentDetails)=>c.viewed === true\n && c.title === content.title)\n if(existing && existing.length > 0 && items?.newFeatures.length >= index){\n return {\n title: content.title,\n viewed: true,\n file: content.file\n }\n }else{\n return {\n title: content.title,\n viewed: false,\n file: content.file\n }\n }\n\n }\n\n })\n }\n });\n const personalizedCompanion = data?.personalizedCompanion && data?.personalizedCompanion.map((v:tutorialDetails, index:number) =>{\n return{\n ...v,\n content: v.content?.map((content:tutorialContentDetails, contentIndex:number)=>{\n if(items?.personalizedCompanion){\n const existing =items?.personalizedCompanion.length-1 >= index &&\n items?.personalizedCompanion[index].content && items?.personalizedCompanion[index].content?.filter((c:tutorialContentDetails)=>c.viewed === true\n && c.title === content.title)\n if(existing && existing.length > 0){\n return {\n title: content.title,\n viewed: true,\n file: content.file\n }\n }else{\n return {\n title: content.title,\n viewed: false,\n file: content.file\n }\n }\n\n }\n\n })\n }\n });\n const useJourney = data?.useJourney && data?.useJourney.map((v:tutorialDetails, index:number) =>{\n return{\n ...v,\n content: v.content?.map((content:tutorialContentDetails, contentIndex:number)=>{\n if(items?.useJourney){\n const existing = items?.useJourney.length-1 >= index &&\n items?.useJourney[index].content && items?.useJourney[index].content?.filter((c:tutorialContentDetails)=>c.viewed === true\n && c.title === content.title)\n if(existing && existing.length > 0){\n return {\n title: content.title,\n viewed: true,\n file: content.file\n }\n }else{\n return {\n title: content.title,\n viewed: false,\n file: content.file\n }\n }\n\n }\n\n })\n }\n });\n const updateApp = data?.updateApp && data?.updateApp.map((v:tutorialDetails, index:number) =>{\n return{\n ...v,\n content: v.content?.map((content:tutorialContentDetails, contentIndex:number)=>{\n if(items?.updateApp){\n const existing = items?.updateApp.length-1 >= index &&\n items?.updateApp[index].content?.filter((c:tutorialContentDetails)=>c.viewed === true && c.title === content.title)\n\n if(existing && existing.length > 0){\n return {\n title: content.title,\n viewed: true,\n file: content.file\n }\n }else{\n return {\n title: content.title,\n viewed: false,\n file: content.file\n }\n }\n\n }\n\n })\n }\n });\n const newState = {\n newFeatures: stateNewFeatures,\n personalizedCompanion: personalizedCompanion,\n updateApp: updateApp,\n useJourney: useJourney\n }\n dispatch(tutorialSlice.actions.saveTutorialItems(newState || {}));\n }\n const modalOnClose = () => {\n dispatch(sidebarSlice.actions.selectMenu({menu: undefined}));\n setShow(false);\n }\n const backButton = () =>{\n if(view === 'tutorialSection')\n dispatch(tutorialSlice.actions.saveViewMode('tutorialMain'));\n else\n dispatch(tutorialSlice.actions.saveViewMode('tutorialSection'));\n }\n\n return (\n modalOnClose()}\n hideCloseButton={view==='tutorialVideo'? true : false}>\n
    \n
    \n {\n view !== 'tutorialMain' && (\n backButton()}\n />\n )\n }\n\n\n {view === 'tutorialMain' && (

    {t('my_practice_my_tutorial')}

    ) }\n
    \n
    \n {view === 'tutorialMain' ? :\n \n }\n\n
    \n
    \n
    \n )\n}\n\nexport default Tutorial;\n","\nimport React, {useEffect,useState } from 'react';\nimport {useDispatch, useSelector } from 'react-redux';\nimport iTranslation from '../../../interface/translation.interface';\nimport appSlice, { getApp } from '../../../store/slices/app.slice';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport Modal from '../../Modal';\nimport Button from '../../ui/Button';\nimport { IndexedDBContext, IndexedDBContextType } from '../../../utils/context/indexedDBContext';\nimport { TRANSLATIONS_MULTIPLE_LANG } from '../../../constants/translations.contants';\nimport { elacES, elacEN } from '../../../constants/language-code.constants';\n\n\ninterface Props {\n\n}\n\nconst Language : React.FC = () => {\n\n // VARIABLES\n // const { translations } = useSelector(getApp);\n const [translations, setTranslations] = useState(undefined);\n\n const { firstLogin } = useSelector(getApp);\n const [B, E] = useBEM('first-login');\n const dispatch = useDispatch();\n const { t, generateIconImage, sortCountries } = useTranslation(useSelector(getApp));\n const [showMultiple, setShowMultiple] = useState(false);\n const [listLanguage, setlistLanguage] = useState();\n const { \n subLanguage, \n translationRegion, \n translationCountry, \n translation,\n translationCountryLanguage\n } = useSelector(getApp);\n const [selectedMLanguage, setSelectedMLanguage] = useState<{country: any, code: any}>();\n const {get} = React.useContext(IndexedDBContext) as IndexedDBContextType;\n\n\n\n const popupStyle = {\n width: \"50rem\",\n height: \"30rem\",\n borderRadius: \"15px\"\n }\n \n\n\n // HOOKS\n\n useEffect(() => {\n const getTranslations = async () => {\n const translationData = await get('languageStore', 'translations');\n setTranslations(translationData.value);\n }\n getTranslations()\n }, [firstLogin?.selectedLanguage]);\n\n\n const isMultiLanguage = (code: string) => {\n const keys = Object.keys(TRANSLATIONS_MULTIPLE_LANG);\n const isMulti = keys.includes(code);\n\n return {\n condition: isMulti,\n data: TRANSLATIONS_MULTIPLE_LANG[code]\n };\n }\n\n const onSubLanguageSelect = (code:any) =>{\n setSelectedMLanguage({country: firstLogin?.selectedLanguage, code: code});\n if(firstLogin?.selectedLanguage)dispatch(appSlice.actions.selectedSubLanguage({code, country: firstLogin?.selectedLanguage }));\n\n dispatch(appSlice.actions.setTranslation(translations[code]));\n setTimeout(() => {\n modalOnClose();\n }, 500);\n }\n\n \n\n const onLanguageSelect = (id: string, country:any) => {\n const languages = translations[id].language;\n\n const availableTranslations = Object.keys(languages).filter( x => {\n return languages[x] != null;\n });\n\n dispatch(appSlice.actions.setTranslationCountry({\n id,\n ...country\n }))\n\n //Note: multiple language\n if(availableTranslations.length > 1){\n dispatch(appSlice.actions.setTranslationCountryLanguage(undefined));\n setShowMultiple(true);\n } else {\n dispatch(appSlice.actions.setTranslation({\n code: availableTranslations[0],\n country: country.label,\n translation: languages[availableTranslations[0]]\n }));\n dispatch(appSlice.actions.setTranslationCountryLanguage({\n country: id,\n languageCode: availableTranslations[0]\n }));\n } \n }\n\n const modalOnClose = () => {\n setShowMultiple(false);\n }\n\n const highlightButton = (countryCode:any, keyCode:any) =>{\n if(selectedMLanguage?.country === countryCode &&\n keyCode === selectedMLanguage?.code) return true;\n return false;\n }\n\n const isTranslationsAvailable = (key: string, languages: string[]) => {\n const translation = translations[key];\n let available = false;\n if(translation != undefined) {\n const avalalableTranslationKeys: string[] = [];\n\n Object.keys(translation.language).forEach( x => {\n if(translation.language[x] !== null) avalalableTranslationKeys.push(x);\n })\n\n const foundTranslationCount = languages.filter(val => avalalableTranslationKeys.includes(val)).length;\n available = foundTranslationCount > 0;\n } \n\n return available;\n }\n\n const multipleLanguageSelectedClass = (countryId: string, languageCode: string) => {\n return (\n translationCountryLanguage?.languageCode === languageCode &&\n translationCountryLanguage?.country === countryId\n ) ? 'selected' : '';\n }\n\n const selectCountryLanguage = (key: number) => {\n if(!translationCountry)return;\n const code = translationCountry?.language[key].id;\n const country = translations[translationCountry.id];\n \n dispatch(appSlice.actions.setTranslation({\n code,\n country: country.country,\n translation: country.language[code]\n }));\n \n dispatch(appSlice.actions.setTranslationCountryLanguage({\n country: translationCountry.id,\n languageCode: code\n }));\n setTimeout( x => setShowMultiple(false), 250)\n }\n\n return <>\n
      \n { translations && translationRegion && sortCountries(translationRegion?.country)\n .map(([key, value]: any[])=>{\n return(\n
    • \n\n x.id))}\n text={value.label} \n type=\"secondary\" weight=\"normal\"\n icon={generateIconImage(value.label)} \n className={\"country-btn \"+ (translationCountry?.id === key ? ' selected' : '')}\n click={()=>onLanguageSelect(key, value)}\n iconPosition=\"left\"\n outlineType=\"light\"\n />\n
    • \n )\n }) }\n
    \n \n
    \n
    \n

    {t('language_lang_select_your_language')}

    \n
    \n
    \n
      \n { \n translationCountry && \n translationCountry?.language && \n Object.keys(translationCountry?.language).map((key:any, i:number) => (\n
    • \n selectCountryLanguage(key)}\n />\n
    • \n )) \n }\n
    \n \n
    \n
    \n
    \n \n}\n\nexport default Language;","import React, { useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport MyCompanionFooter from '../../../pages/my-companion/components/MyCompanionFooter';\nimport MyCompanionLeft from '../../../pages/my-companion/components/MyCompanionLeft';\nimport MyCompanionList from '../../../pages/my-companion/components/MyCompanionList';\nimport useBEM from '../../../utils/hooks/useBEM';\ninterface Props {\n}\n\nconst MyComapanion : React.FC = ({\n}) => {\n // VARIABLES\n const [B, E] = useBEM('loading');\n const dispatch = useDispatch();\n\n \n\n // HOOKS\n\n // METHODS\n return (\n
    \n \n \n \n
    \n )\n}\n\nexport default MyComapanion;","\nimport React, {useEffect,useState } from 'react';\nimport {useDispatch, useSelector } from 'react-redux';\nimport appSlice, { getApp } from '../../../store/slices/app.slice';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport Button from '../../ui/Button';\nimport ReactHtmlParser from 'react-html-parser';\nimport routes from '../../../constants/routes.constant';\nimport useGoto from '../../../utils/hooks/useGoto';\n\ninterface Props {\n\n}\n\nconst TermsCondition : React.FC = () => {\n\n // VARIABLES\n const goto = useGoto();\n const [B, E] = useBEM('terms-condition');\n const dispatch = useDispatch();\n const { t } = useTranslation(useSelector(getApp));\n\n const sections = [\n {\n header:t('legal_notice_data_content_title'),\n content:t('legal_notice_data_content_content'),\n },\n {\n header:t('legal_notice_privacy_title'),\n content:t('legal_notice_privacy_content'),\n },\n {\n header:t('legal_notice_prohibited_title'),\n content:t('legal_notice_prohibited_content'),\n },\n {\n header:t('legal_notice_ownership_title'),\n content:t('legal_notice_ownership_content'),\n },\n {\n header:t('legal_notice_conduct_title'),\n content:t('legal_notice_conduct_content'),\n },\n {\n header:t('legal_notice_third_party_title'),\n content:t('legal_notice_third_party_content'),\n },\n {\n header:t('legal_notice_disclaimer_title'),\n content:t('legal_notice_disclaimer_content'),\n },\n {\n header:t('legal_notice_limitation_title'),\n content:t('legal_notice_limitation_content'),\n },\n {\n header:t('legal_notice_provision_title'),\n content:t('legal_notice_provision_content'),\n },\n // {\n // header: t('legal_notice_ln_under_this_privacy_notice_data_title'),\n // multipleContent: [\n // {\n // subHeader: 'header 1',\n // subContent: t('legal_notice_ln_under_this_privacy_notice_data'),\n // },\n // {\n // subHeader: 'header 2',\n // subContent: t('legal_notice_ln_under_this_privacy_notice_data'),\n // }\n // ]\n \n \n // },\n ]\n\n // HOOKS\n \n // METHODS\n const accept = () =>{\n dispatch(appSlice.actions.setOpenFirstLogin(false));\n dispatch(appSlice.actions.setFirstLoginStatus(true));\n }\n const decline = () =>{\n setTimeout(() => { \n dispatch(appSlice.actions.setOpenFirstLogin(false));\n dispatch(appSlice.actions.setFirstLoginStatus(true));\n goto.route(routes.licenseActivation);\n }, 500);\n }\n const renderSections = () => {\n const sections_jsx = sections.map((section, j)=>{\n return (\n
    \n
    {`0${j+1}`}
    \n\n
    \n

    {section.header}

    \n {\n section?.content && \n
    \n {ReactHtmlParser(section?.content)}\n
    \n }\n {/* {\n section?.multipleContent && section?.multipleContent?.length > 0 && \n
    \n {\n section?.multipleContent.map((v:any)=>{\n return <>\n

    {v.subHeader}

    \n

    {ReactHtmlParser(v.subContent)}

    \n \n })\n }\n \n
    \n } */}\n
    \n
    \n )\n })\n \n return sections_jsx\n }\n return (\n
    \n
    \n

    {t('legal_notice_terms_of_use_title')}

    \n
    \n

    \n {t('legal_notice_terms_of_use_content')}\n

    \n {t('legal_notice_agree_terms')}\n

    \n {t('legal_notice_agree_terms_content')}\n

    \n

    \n
    \n
    \n {renderSections()}\n
    \n
    \n
    \n )\n}\n\nexport default TermsCondition;\n\n","import React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { TRANSLATIONS_MULTIPLE_LANG } from '../../constants/translations.contants';\nimport iRegion from '../../interface/region.interface';\nimport appSlice, { getApp } from '../../store/slices/app.slice';\nimport lensConsultationSlice from '../../store/slices/lens-consultation.slice';\nimport { getProducts } from '../../store/slices/products.slice';\nimport sidebarSlice from '../../store/slices/sidebar.slice';\nimport { IndexedDBContext, IndexedDBContextType } from '../../utils/context/indexedDBContext';\nimport useBEM from '../../utils/hooks/useBEM';\nimport useProducts from '../../utils/hooks/useProducts';\nimport useTranslation from '../../utils/hooks/useTranslation';\nimport Modal from '../Modal';\nimport RegionSelection from '../RegionSelection';\nimport Button from '../ui/Button';\nimport Language from './components/Language';\nimport MyComapanion from './components/MyComapanion';\nimport TermsCondition from './components/TermsCondition';\ninterface Props {\n // show: boolean\n}\n\nconst FirstLogin : React.FC = ({\n // show\n}) => {\n // VARIABLES\n const [B, E] = useBEM('first-login');\n const modalStyle = {\n width: \"95.4rem\",\n height: \"69.8rem\",\n borderRadius: \"15px\"\n }\n const { \n firstLogin, \n regions, \n accountDetails, \n translationCountry,\n translationCountryLanguage\n } = useSelector(getApp);\n const dispatch = useDispatch();\n const { t, getTranslations2 } = useTranslation(useSelector(getApp));\n const {getCurrency } = useProducts(useSelector(getProducts));\n const [currentRegion, setCurrentRegion] = useState();\n const { update } = React.useContext(IndexedDBContext) as IndexedDBContextType;\n\n // HOOKS\n useEffect(() => {\n dispatch(appSlice.actions.setViewFirstLogin('region'));\n dispatch(appSlice.actions.setCookieEnabled(getCookies())); \n }, [])\n // METHODS\n const modalOnClose = () => {\n dispatch(appSlice.actions.setOpenFirstLogin(false));\n dispatch(appSlice.actions.setFirstLoginStatus(true));\n }\n\n const loadCurrency = async() =>{\n const currency = await getCurrency();\n dispatch(lensConsultationSlice.actions.setCurrency(currency.responseData));\n } \n\n const getCookies = () =>{\n const pairs = document.cookie.split(\";\");\n let cookies:any = {};\n for (var i=0; i{\n if(firstLogin?.view === 'region' && currentRegion){\n const {responseData: {data: translationsData}} = await getTranslations2(currentRegion?.id, true);\n if(!translationsData)return;\n await update('languageStore', {\n id: 'translations',\n value: translationsData.country\n }); \n dispatch(appSlice.actions.setViewFirstLogin('language')); \n dispatch(appSlice.actions.setTranslationRegion(currentRegion)); \n return;\n }\n if(firstLogin?.view === 'language'){\n loadCurrency();\n dispatch(appSlice.actions.setLanguage(firstLogin.selectedLanguage || 'enUS'));\n dispatch(appSlice.actions.setSubLanguage(firstLogin.subLanguage?.code || 'enUS'));\n dispatch(appSlice.actions.setViewFirstLogin('companion'));\n }\n }\n\n const onSelectRegion = (r: iRegion) => {\n setCurrentRegion(r);\n }\n\n const onNextPage = () =>{\n switch(firstLogin?.view){\n case 'region': \n return \n case 'language':\n return \n case 'companion':\n return \n default: {\n if(firstLogin?.cookieEnabled){ \n return \n }\n }\n }\n }\n\n const onTitleChange = () =>{\n switch(firstLogin?.view){\n case 'region':\n return t('region_filter')\n\n case 'language':\n return t('language_lang_select_your_language')\n case 'companion':\n return t('catalog_first_time_login_catalog');\n default: {\n if(firstLogin?.cookieEnabled){ \n return \"Terms and conditions of usage\";\n }\n }\n }\n }\n\n const isMultiLanguage = (code: string) => {\n const keys = Object.keys(TRANSLATIONS_MULTIPLE_LANG);\n const isMulti = keys.includes(code);\n\n return {\n condition: isMulti,\n data: TRANSLATIONS_MULTIPLE_LANG[code]\n };\n }\n\n const disableLanguage = () =>{\n if( \n !firstLogin?.selectedLanguage ||\n firstLogin?.view === 'region' && !currentRegion ||\n firstLogin?.view === 'language' && !translationCountryLanguage\n )return true;\n\n return false;\n }\n\n return (\n modalOnClose()}\n closeModalOnOutsideClick = {false}\n hideCloseButton={true}>\n
    \n
    \n {\n firstLogin?.view === 'companion' && (\n
    \n
    \n {\n onNextPage()\n }\n \n
    \n {\n ( firstLogin?.view === 'language' || firstLogin?.view === 'region' ) && \n
    \n
    \n }\n \n
    \n
    \n )\n}\n\nexport default FirstLogin;","import React, { SyntheticEvent, useState } from 'react';\nimport Button from '../../../components/ui/Button';\nimport useBEM from '../../../utils/hooks/useBEM';\n\ninterface Props {\n type?: 'actual' | 'percent',\n value: string,\n currency: string,\n onChange?: (value: string, type?: 'actual' | 'percent') => void\n}\n\nconst AdvancePriceModifierInput : React.FC = ({\n type,\n value,\n currency,\n onChange\n}) => {\n // VARIABLES\n const [B, E] = useBEM('advance-price-modifier-input');\n\n // HOOKS\n\n // METHODS\n const changeType = (type: 'actual' | 'percent') => {\n if(onChange)onChange(value, type)\n }\n\n const onValueChange = (e: any) => {\n const newValue = e.target.value;\n if(onChange)onChange(newValue, type)\n }\n\n return (\n
    \n {\n type && \n <>\n
    \n )\n}\n\nexport default AdvancePriceModifierInput;","import React, { useEffect } from 'react';\nimport { useSelector } from 'react-redux';\nimport iProductCombi from '../../../store/interface/product-combi.interface';\nimport { getApp } from '../../../store/slices/app.slice';\nimport { getProducts } from '../../../store/slices/products.slice';\nimport LensFamilyType from '../../../types/lens-family.type';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport useProducts from '../../../utils/hooks/useProducts';\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport AdvancePriceModifierInput from './AdvancePriceModifierInput';\n\ninterface Props {\n list: iProductCombi[],\n currency: string,\n onUpdateItem: (\n id: string, \n field: 'correctEnhanceModifier' | 'protectModifier' | 'flatFee',\n value: string, \n type?: 'actual' | 'percent',\n ) => void\n}\n\nconst AdvanceSettingFilterResults : React.FC = ({\n list = [],\n onUpdateItem,\n currency\n}) => {\n // VARIABLES\n const [B, E] = useBEM('advance-setting-filter-results');\n const { getProductLabelById } = useProducts(useSelector(getProducts));\n const { t } = useTranslation(useSelector(getApp));\n\n // METHODS\n const getLabel = (productId: string, familyType: string, subProductId?: string) => {\n if(!productId)return '';\n\n return getProductLabelById({ \n productId, \n familyType: familyType as LensFamilyType,\n subProductId,\n });\n }\n\n return (\n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {\n list.length === 0 ?\n \n \n : \n list.map( (p, indx) => (\n \n \n \n \n \n \n \n \n \n \n \n ))\n }\n \n
    {t('advancedpricing_correct')} {t('advancedpricing_protect_-_1')} {t('advancedpricing_protect_-_2')} {t('advancedpricing_enhance')} {t('advancedpricing_index')} {t('advancedpricing_price')} \n {t('advancedpricing_price_modifier_for_correct_+_enhance')}\n \n {t('advancedpricing_price_modifier_for_protect_1_&_2')}\n \n {t('advancedpricing_flat_fee')}\n
    \n No Results found!\n
    \n { getLabel(p.correct, 'correct', p.correct_sub) }\n \n { getLabel(p.protect1, 'protect') }\n \n { getLabel(p.protect2, 'protect') }\n \n { getLabel(p.enhance, 'enhance') }\n \n {p.index}\n \n {p.price} {currency}\n \n onUpdateItem(p.id as string, 'correctEnhanceModifier', val, type)}\n />\n\n \n onUpdateItem(p.id as string, 'protectModifier', val, type)} \n />\n \n onUpdateItem(p.id as string, 'flatFee', val)} \n />\n
    \n
    \n )\n}\n\nexport default AdvanceSettingFilterResults;","import React from 'react';\nimport Icon from '../../../components/ui/Icon';\nimport useBEM from '../../../utils/hooks/useBEM';\n\ninterface Props {\n id: string,\n label: string,\n value?: string,\n onClick?: () => void,\n onClear?: () => void,\n}\n\nconst AdvanceSettingFilterField : React.FC = ({\n id,\n label,\n value,\n onClick,\n onClear\n}) => {\n // VARIABLES\n const [B, E] = useBEM('advance-setting-filter-field');\n\n // HOOKS\n const onClickHandler = () => {\n if(onClick)onClick();\n }\n\n const onClearHandler = () => {\n if(onClear)onClear();\n }\n\n\n // METHODS\n\n return (\n
    \n \n
    \n \n \n {\n value ?\n :\n \n }\n\n
    \n
    \n )\n}\n\nexport default AdvanceSettingFilterField;","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport Modal from '../../../components/Modal';\nimport Accordion from '../../../components/ui/Accordion';\nimport { getApp } from '../../../store/slices/app.slice';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport useTranslation from '../../../utils/hooks/useTranslation';\n\n\ninterface SelectionType {\n label: string,\n value?: string,\n subSelection?: SelectionType[],\n}\n\ninterface Props {\n show: boolean,\n onClose?: () => void,\n options?: SelectionType[],\n onSelect?: (value: {\n label: string,\n value: string\n }) => void\n\n}\n\nconst AdvanceSettingFilterFieldSelection : React.FC = ({\n show,\n options = [],\n onClose,\n onSelect\n}) => {\n // VARIABLES\n const [B, E] = useBEM('advance-setting-filter-field-selection');\n const { t } = useTranslation(useSelector(getApp));\n\n // HOOKS\n\n // METHODS\n const onCloseModal = () => {\n if(onClose)onClose()\n }\n\n const onSelectHandler = (opt: SelectionType) => {\n if(opt.subSelection && opt.subSelection.length > 0 || !onSelect)return;\n onSelect({\n label: opt.label,\n value: opt.value as string\n })\n }\n\n const renderOptions = (ops: SelectionType[]) => {\n return ops.map( x => (\n onSelectHandler(x)}>\n {\n x.subSelection && \n x.subSelection.length > 0 && \n renderOptions(x.subSelection)\n }\n \n ))\n }\n\n return (\n
    \n {onCloseModal()}} \n height=\"51rem\">\n\n

    \n {t('advancedpricing_choose_product')}\n

    \n\n
    \n {\n renderOptions(options)\n }\n
    \n
    \n
    \n )\n}\n\nexport default AdvanceSettingFilterFieldSelection;","import React, { useCallback, useEffect, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport Button from '../../../components/ui/Button';\nimport iProductBrand from '../../../interface/product-brand.interface';\nimport iProductFamily from '../../../interface/product-family.interface';\nimport { getApp } from '../../../store/slices/app.slice';\nimport { getMyCompanion } from '../../../store/slices/mycompanion.slice';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport useLensConsultation from '../../lens-consultation/useLensConsultation';\nimport AdvanceSettingFilterField from './AdvanceSettingFilterField';\nimport AdvanceSettingFilterFieldSelection from './AdvanceSettingFilterFieldSelection';\n\n\ninterface iFilterValue {\n id: string,\n label: string,\n value?: {\n label: string,\n id: string\n }\n}\n\ninterface Props {\n onSubmit: (values: iFilterValue[]) => void\n}\n\nconst AdvanceSettingFilter : React.FC = ({\n onSubmit\n}) => {\n // VARIABLES\n const [B, E] = useBEM('advance-setting-filter');\n const { productList, tempLensThicknessSettings} = useSelector(getMyCompanion);\n \n const [showFilterSelection, setShowFilterSelection] = useState(false);\n const [activeFieldId, setActiveFieldId] = useState('');\n const [selectOptions, setSelectOptions] = useState([]);\n const { getUniqueSubProducts } = useLensConsultation();\n const { t } = useTranslation(useSelector(getApp));\n\n\n const [fields, setFields] = useState([\n { id: \"correct_sub\", label: \"advancedpricing_correct\"},\n { id: \"protect2\", label: \"advancedpricing_protect_-_2\"},\n { id: \"index\", label: \"advancedpricing_index\"},\n { id: \"protect1\", label: \"advancedpricing_protect_-_1\"},\n { id: \"enhance\", label: \"advancedpricing_enhance\"}\n ])\n\n\n // HOOKS\n useEffect(() => {\n // console.log(productList);\n }, [])\n\n // METHODS\n const onClickHandler = useCallback((id: string) => {\n const options = getDynamicOptions(id);\n setSelectOptions(options);\n setActiveFieldId(id);\n setShowFilterSelection(true); \n }, []);\n\n\n const onClearHandler = useCallback((id: string) => {\n setFields(prevStat => (prevStat.map( x => (\n x.id === id ?\n { ...x, value: undefined} :\n x\n )))) \n }, []);\n\n\n\n const getDynamicOptions = (id: string) => {\n const key = id.replace('1', '').replace('2', '').replace('_sub', '');\n\n if(key === 'index'){\n const indxOptions = tempLensThicknessSettings.filter( x => x.enabled).map( x => ({\n label: x.value,\n value: x.value\n }));\n return indxOptions;\n }\n \n const family = productList.filter( (p: iProductFamily) => p.id === key)[0];\n const options = family.brands.map((b: iProductBrand) => ({\n label: b.label,\n value: b.id,\n subSelection: b.products.map( p => ({\n label: p.label,\n value: p.id,\n subSelection: getUniqueSubProducts(p.subProducts || []).map( sp => ({\n label: sp.label,\n value: sp.code,\n }))\n }))\n }));\n return options;\n }\n \n const selectionOnCloseHandler = useCallback(() => {\n setShowFilterSelection(false);\n }, [])\n\n const renderFields = (flds: any[]) => (\n flds.map( x => (\n onClickHandler(x.id)}\n onClear={() => onClearHandler(x.id)}\n />\n ))\n )\n\n\n const onSelectOptionHandler = useCallback((option) => {\n setFields(prevStat => (prevStat.map( x => (\n x.id === activeFieldId ?\n { ...x, value: option } :\n x\n ))))\n setShowFilterSelection(false);\n },[activeFieldId])\n\n return (\n <>\n
    \n
    \n { renderFields(fields) } \n
    \n
    \n \n \n \n )\n}\n\nexport default AdvanceSettingFilter;","import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport useBEM from '../../utils/hooks/useBEM';\nimport AdvanceSettingFilterResults from './components/AdvanceSettingFilterResults';\nimport AdvanceSettingFilter from './components/AdvancePriceSettingFilter';\nimport Button from '../../components/ui/Button';\nimport { useDispatch, useSelector } from 'react-redux';\nimport appSlice, { getApp } from '../../store/slices/app.slice';\nimport iProductCombi from '../../store/interface/product-combi.interface';\nimport useGoto from '../../utils/hooks/useGoto';\nimport routes from '../../constants/routes.constant';\nimport Modal from '../../components/Modal';\nimport Icon from '../../components/ui/Icon';\nimport useTranslation from '../../utils/hooks/useTranslation';\n\ninterface Props {\n\n}\n\nconst AdvancePriceSetting : React.FC = () => {\n // VARIABLES\n const dispatch = useDispatch();\n const [B, E] = useBEM('advance-price-setting');\n const appStore = useSelector(getApp);\n const { productCombi, accountDetails} = appStore;\n const originalResults = useRef([...productCombi]);\n const [filteredResults, setFilteredResults] = useState([...productCombi]);\n const [showSuccessAlert, setShowSuccessAlert] = useState(false);\n const goto = useGoto();\n const { t } = useTranslation(appStore);\n\n useEffect(() => {\n originalResults.current = appendAdvanceProperties(originalResults.current);\n setFilteredResults( originalResults.current )\n }, [])\n\n // METHODS\n const appendAdvanceProperties = (productCombi: iProductCombi[]) => {\n const transformed = productCombi.map( (x, indx) => {\n return {\n ...x,\n id: String(indx + 1),\n ...( x.correctEnhanceModifier || { correctEnhanceModifier: { type: 'actual' as any, value: '0' }}),\n ...( x.protectModifier || { protectModifier: { type: 'actual' as any, value: '0' }}),\n ...( x.flatFee || { flatFee: { value: '0' }}),\n };\n });\n return transformed;\n }\n\n const filterOnSubmit = useCallback((values: any[]) => {\n \n const filterFieldsWithValues = values.filter( x => x.value);\n if(filterFieldsWithValues.length === 0){\n setFilteredResults(originalResults.current);\n return;\n }\n\n setFilteredResults(() => {\n const filtered = [...originalResults.current].filter( (x: any) => {\n const requiredFound = filterFieldsWithValues.length;\n let foundCount = 0;\n\n filterFieldsWithValues.forEach( f => {\n if(x[f.id] === f.value.value)foundCount += 1;\n });\n return requiredFound === foundCount;\n });\n return filtered;\n });\n }, [])\n\n\n const onUpdateItemHandler = (\n id: string, \n field: 'correctEnhanceModifier' | 'protectModifier' | 'flatFee', \n value: string, \n type?: any\n ) => {\n\n originalResults.current = originalResults.current.map( x => {\n if(x.id === id){\n return { ...x, [field]: { type, value } }\n }\n return x;\n })\n\n setFilteredResults( prev => {\n return prev.map( x => {\n if(x.id === id){\n return { ...x, [field]: { type, value } }\n }\n return x;\n })\n });\n \n }\n\n const onSaveHandler = () => {\n dispatch(appSlice.actions.updateAdvancePriceCombinations(originalResults.current));\n setShowSuccessAlert(true);\n goto.route(routes.home, 2000)\n }\n\n const onCancelHandler = () => {\n goto.route(routes.myCompanion);\n }\n\n return (\n
    \n \n\n \n\n\n
    \n
    \n\n \n
    \n \n

    Success

    \n
    \n \n
    \n )\n}\n\nexport default AdvancePriceSetting;","import React, { useEffect, useState } from \"react\";\nimport useBEM from \"../../../utils/hooks/useBEM\";\nimport Modal from \"../../../components/Modal\";\nimport SearchIcon from \"../../../assets/images/demonstrations/icons/Union.png\";\nimport useTranslation from \"../../../utils/hooks/useTranslation\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport appSlice, { getApp } from \"../../../store/slices/app.slice\";\nimport { IndexedDBContext, IndexedDBContextType } from \"../../../utils/context/indexedDBContext\";\nimport iG9CountryLanguages from \"../../../store/interface/g9-country-languages.interface\";\n\n\nconst LanguageSetting = () => {\n const dispatch = useDispatch();\n const { tg9 } = useTranslation(useSelector(getApp));\n const [B, E] = useBEM('varilux-language-setting');\n const { language, g9CountryLanguages, g9Languages } = useSelector(getApp);\n const [selectedLanguage, setSelectedLanguage] = useState(language);\n const [showModal, setShowModal] = useState(false);\n const [searchText, setSearchText] = useState(\"\");\n const [dataList, setDataList] = useState([]);\n const [location, setLocation] = useState(localStorage.getItem('location') !== null ? localStorage.getItem('location') : 'default');\n const [continent, setContinent] = useState(\"\");\n const { get } = React.useContext(IndexedDBContext) as IndexedDBContextType;\n\n // HOOKS\n useEffect(() => {\n dispatch(appSlice.actions.setLanguage(location === 'default' ? 'enUK' : selectedLanguage));\n localStorage.setItem('location', location)\n }, [selectedLanguage, location])\n\n useEffect(() => {\n let strings = JSON.stringify(g9CountryLanguages);\n localStorage.setItem('countryLanguages', strings);\n setDataList(g9CountryLanguages);\n }, [g9CountryLanguages])\n\n \n const handleLocation = async (loc: any) => {\n if (loc === 'default') {\n setLocation('default')\n const engCountryCode = 'GB'\n const enCountryLanguageCode = 'enGB'\n let g9lang = await get('languageStore', 'g9translations')\n let englishTranslation = g9lang.value[engCountryCode].language[enCountryLanguageCode];\n\t\t\tdispatch(appSlice.actions.setG9LanguageSetting({\n\t\t\t\talphaCode: \"enCountryLanguageCode\",\n\t\t\t\tcode: enCountryLanguageCode,\n\t\t\t\tcountry: \"UK\",\n\t\t\t\ttranslation: englishTranslation\n\t\t\t}));\n }\n\n setSelectedLanguage(loc === 'default' ? 'enUK' : loc)\n dispatch(appSlice.actions.setLanguage(loc === 'default' ? 'enUK' : loc));\n setLocation(loc);\n }\n\n const handlSearch = () => {\n let strings: any = localStorage.getItem('countryLanguages');\n const data = JSON.parse(strings);\n if (searchText === \"\") {\n setDataList(data);\n } else {\n let continents: any = [];\n\n data?.map((item: any) => {\n let countries: any = [];\n item.countries.map((country: any) => {\n if ((country.name.toLowerCase()).includes(searchText) || (country.language.name.toLowerCase()).includes(searchText)) {\n countries.push(country)\n }\n })\n if (countries.length > 0) {\n item.countries = countries;\n continents.push(item)\n }\n })\n setDataList(continents);\n }\n }\n\n const handleSelectLanguage = async (contenent: any, country: any) => {\n const countryCode = country.code;\n const countryLanguageCode = country.language.code + countryCode;\n const standardTranslationData = await get('languageStore', 'g9translations');\n const variluxTranslationData = standardTranslationData;\n const standardTranslation = standardTranslationData?.value[countryCode]?.language[countryLanguageCode];\n const variluxTranslation = variluxTranslationData[countryCode]?.language[countryLanguageCode];\n const newTranslation = {...standardTranslation, ...variluxTranslation};\n\n\t\tdispatch(appSlice.actions.setG9LanguageSetting({\n\t\t\talphaCode: countryCode,\n code: countryLanguageCode,\n country: country.name,\n translation: newTranslation\n }));\n setLocation(country.language.code + country.code)\n }\n\n return (\n <>\n
    setShowModal(true)}>\n
    {selectedLanguage.substring(0,2).toUpperCase()}
    \n
    \n
    \n setShowModal(false)}\n hideCloseButton={false}\n closeModalOnOutsideClick={true}\n className={B()}\n >\n
    {tg9('language_settings', 'Language Settings')}
    \n
    \n \n
    \n
    \n setSearchText((e.target.value).toLowerCase())} type=\"text\" placeholder={tg9('search_location_language', \"Search location/language\")} />\n
    \n
    \n \n \"search-icon\"\n \n
    \n
    \n
    \n\n
    \n \n {\n g9Languages?.map((item, index) => {\n return (\n
    \n {\n (index === 0 || item.code === location) && (\n
    handleLocation(item.code)}>\n \n \n \n \n
    \n )\n }\n
    \n )\n })\n }\n
    \n\n
    \n \n {\n dataList?.map((item: iG9CountryLanguages, index: number) => {\n return (\n
    \n
    setContinent(item.continent === continent ? \"\" : item.continent)}>\n \n \n
    \n {\n (item.continent === continent) && item?.countries?.map((country: any, index: number) => {\n return (\n
    {\n setSelectedLanguage(country?.language?.code + country?.code);\n handleSelectLanguage(item.continent, country);\n }\n }>\n \n
    \n )\n })\n }\n
    \n )\n })\n }\n
    \n
    \n
    \n \n \n )\n}\nexport default LanguageSetting;","import React, { useState, useEffect, useContext, useRef } from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\nimport Modal from '../../../components/Modal'\nimport useBEM from '../../../utils/hooks/useBEM'\nimport { getApp } from '../../../store/slices/app.slice'\nimport PlayVideoIcon from '../../../assets/svg/varilux-g9/icons/play-video.svg'\nimport useTranslation from '../../../utils/hooks/useTranslation'\nimport { IndexedDBContext, IndexedDBContextType } from '../../../utils/context/indexedDBContext'\nimport Icon from '../../../components/ui/Icon'\n\n// control icons\nimport Icon_1_white from \"../../../assets/svg/varilux-g9/icons/control-1-white.svg\"\nimport Icon_2_white from \"../../../assets/svg/varilux-g9/icons/control-2-white.svg\"\nimport Icon_3_white from \"../../../assets/svg/varilux-g9/icons/control-3-white.svg\"\nimport Icon_4_white from \"../../../assets/svg/varilux-g9/icons/control-4-white.svg\"\nimport Icon_5_white from \"../../../assets/svg/varilux-g9/icons/control-5-white.svg\"\nimport Icon_1 from \"../../../assets/svg/varilux-g9/icons/control-1.svg\"\nimport Icon_2 from \"../../../assets/svg/varilux-g9/icons/control-2.svg\"\nimport Icon_3 from \"../../../assets/svg/varilux-g9/icons/control-3.svg\"\nimport Icon_4 from \"../../../assets/svg/varilux-g9/icons/control-4.svg\"\nimport Icon_5 from \"../../../assets/svg/varilux-g9/icons/control-5.svg\"\n\ninterface Props {\n}\n\nconst DemonstrationPopup: React.FC = () => {\n const [B, E] = useBEM('demonstration-pop-up')\n const [showDemoModal, setShowDemoModal] = useState(false)\n const { t } = useTranslation(useSelector(getApp))\n const { get } = useContext(IndexedDBContext) as IndexedDBContextType\n\n const getScreenWidth = () => {\n const modalStyle = {\n width: \"100%\",\n height: \"67.8rem\",\n borderRadius: \"15px\"\n }\n\n const modalStyleMd = {\n width: \"100%\",\n height: \"60.8rem\",\n borderRadius: \"15px\"\n }\n\n const modalStyleSm = {\n width: \"100%\",\n height: \"58.8rem\",\n borderRadius: \"15px\"\n }\n\n let screenWidth = window.innerWidth\n\n if (screenWidth < 1024) {\n return modalStyleMd\n }\n\n if (screenWidth < 800) {\n return modalStyleSm\n }\n\n return modalStyle\n }\n\n const videoController = [\n {\n name: 'GPS',\n category: 'instant',\n clickedIcon: Icon_1_white,\n defaultIcon: Icon_1,\n isClicked: true, // for initial render\n text: [\"varilux_demo_card_instant\"]\n },\n {\n name: 'STAIRS',\n category: 'stabilized',\n clickedIcon: Icon_2_white,\n defaultIcon: Icon_2,\n isClicked: false,\n text: [\"varilux_demo_card_stabilized\"]\n },\n {\n name: 'TROTT',\n category: 'panoramic',\n clickedIcon: Icon_3_white,\n defaultIcon: Icon_3,\n isClicked: false,\n text: [\"varilux_demo_card_panoramic\"]\n },\n {\n name: 'LIVRE',\n category: 'sharp',\n clickedIcon: Icon_4_white,\n defaultIcon: Icon_4,\n isClicked: false,\n text: [\"varilux_demo_card_sharp\"]\n },\n {\n name: 'TABLETTE',\n category: 'extended',\n clickedIcon: Icon_5_white,\n defaultIcon: Icon_5,\n isClicked: false,\n text: [\"varilux_demo_card_extended\"]\n },\n ]\n\n const productsArray: any = [\n {\n isSelected: true, // set to true when initial loaded\n productName: 'Varilux® X series™',\n product: \"xseries\",\n videoIndex: { \n instant: \"2\",\n stabilized: \"1\",\n panoramic: \"1\",\n sharp: \"1\",\n extended: \"1\",\n },\n },\n {\n isSelected: false,\n productName: 'Varilux® Physio 3.0',\n product: \"physio\",\n videoIndex: {\n instant: \"3\",\n stabilized: \"2\",\n panoramic: \"2\",\n sharp: \"1\",\n extended: \"2\",\n },\n },\n {\n isSelected: false,\n productName: 'Varilux® Comfort Max',\n product: \"xseries\",\n videoIndex: {\n instant: \"3\",\n stabilized: \"2\",\n panoramic: \"3\",\n sharp: \"1\",\n extended: \"1\",\n },\n },\n {\n isSelected: false,\n productName: 'Premium Progressive Lenses',\n product: \"xseries\",\n videoIndex: {\n instant: \"3\",\n stabilized: \"2\",\n panoramic: \"3\",\n sharp: \"3\",\n extended: \"3\",\n },\n }\n ]\n\n const modalStyle = {\n width: \"100%\",\n height: \"69.8rem\",\n borderRadius: \"15px\"\n }\n\n const [showProductList, setShowProductList] = useState(false)\n const [controller, setController] = useState(videoController)\n const [productList, setProductList] = useState(productsArray)\n const [caption, setCaption] = useState(videoController[0].text[0])\n const [videoAssetArray, setVideoAssetArray] = useState([])\n const [currentSelectedProduct, setCurrentSelectedProduct] = useState(\"Varilux® X series™\")\n const [currentDemo, setCurrentDemo] = useState({\n category: \"GPS\",\n selectedProductIndex: 1,\n selectedButtonIndex: 0,\n })\n\n useEffect(() => {\n setVideoAssetArray([])\n let leftVideoKey = getAssetMatrix(currentDemo.selectedButtonIndex, currentDemo.selectedProductIndex)\n\n getVideoFromIndexedDB(leftVideoKey, currentDemo.category)\n\n return () => {\n setVideoAssetArray([])\n }\n }, [currentDemo])\n \n\n const getVideoFromIndexedDB = async (key: string, category?: string) => {\n // videoName: string, videoIndex?: string\n let leftVideoAsset = await get(\"variluxG9Store\", key)\n let rightVideoAsset = await get(\"variluxG9Store\", category + \"_0\")\n\n if (leftVideoAsset && rightVideoAsset) {\n let arr = []\n arr.push(leftVideoAsset)\n arr.push(rightVideoAsset)\n\n setVideoAssetArray(arr)\n }\n }\n\n const controllerHandler = (ii: number, category: string) => {\n setController(controller.map((control, index) => {\n return {\n ...control,\n isClicked: index === ii ? true : false\n }\n }))\n setCurrentDemo({\n ...currentDemo,\n selectedButtonIndex: ii,\n category: videoController[ii].name,\n })\n setCaption(videoController[ii].text[0])\n setShowProductList(false)\n }\n\n const productListHandler = (ii: number, product: any) => {\n setCurrentSelectedProduct(productList[ii].productName)\n setProductList(productList.map((product: any, index: number) => ({\n ...product,\n isSelected: index === ii ? true : false\n })))\n setCurrentDemo({\n ...currentDemo,\n selectedProductIndex: ii + 1\n })\n setShowProductList(false)\n }\n\n const getAssetMatrix = (categoryIndex: number, productLevel: number): string => {\n if (productLevel === 1) {\n switch (categoryIndex) {\n case 0:\n return currentDemo.category + \"_\" + (productLevel + 1).toString()\n case 1:\n case 2:\n case 3:\n case 4:\n return currentDemo.category + \"_\" + (productLevel).toString()\n\n default:\n return ''\n }\n } else if (productLevel === 2) {\n switch (categoryIndex) {\n case 0:\n return currentDemo.category + \"_\" + (productLevel + 1).toString()\n case 1:\n case 2:\n case 4:\n return currentDemo.category + \"_\" + (productLevel).toString()\n case 3:\n return currentDemo.category + \"_\" + (productLevel - 1).toString()\n default:\n return ''\n }\n } else if (productLevel === 3) {\n switch (categoryIndex) {\n case 0:\n case 2:\n return currentDemo.category + \"_\" + (productLevel).toString()\n case 1:\n return currentDemo.category + \"_\" + (productLevel - 1).toString()\n case 3:\n case 4:\n return currentDemo.category + \"_\" + (productLevel - 2).toString()\n default:\n return ''\n }\n } else if (productLevel === 4) {\n switch (categoryIndex) {\n case 0:\n case 2:\n case 3:\n case 4:\n return currentDemo.category + \"_\" + (productLevel - 1).toString()\n case 1:\n return currentDemo.category + \"_\" + (productLevel - 2).toString()\n\n default:\n return ''\n }\n } else {\n return 'no video'\n }\n }\n\n return (\n <>\n
    setShowDemoModal(true)}>\n \n
    \n setShowDemoModal(false)}\n style={getScreenWidth()}\n noPadding={true}\n // className={B()}\n >\n
    \n
    \n\n
    \n {\n videoAssetArray.map((video: any, index: number) => {\n if (index === 0) {\n return (\n
    \n
    \n )\n }\n\n return (\n
    \n
    \n )\n })\n }\n
    \n\n
    \n
    \n
    \n {\n controller.map((controls, index) => (\n controllerHandler(index, controls.name)} \n />\n ))\n }\n
    \n\n
    \n

    {t(caption)}

    \n
    \n
    \n
    \n
    \n\n \n \n )\n}\n\nexport default DemonstrationPopup","import React, { useEffect, useState } from 'react'\nimport { useDispatch, useSelector } from 'react-redux';\nimport RouterLink from '../../../components/ui/RouterLink';\nimport routes from '../../../constants/routes.constant';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport logo from '../../../assets/png/logo-white.png';\nimport Icon from '../../../components/ui/Icon';\nimport LanguageSetting from './LanguageSetting';\nimport variluxgG9Slice from '../../../store/slices/variluxG9.slice';\nimport RefreshIcon from \"../../../assets/svg/varilux-g9/icons/refresh.svg\";\nimport DemonstrationPopup from './DemonstrationPopup';\nimport { getApp } from '../../../store/slices/app.slice';\n\ninterface Props {\n\n}\n\nconst VarNavbarHeader: React.FC = () => {\n const [B, E] = useBEM('varilux-navbar-head')\n const [supported, setSupported] = useState(false)\n const [installed, setInstalled] = useState(null)\n const dispatch = useDispatch()\n const { g9LanguageSetting } = useSelector(getApp)\n\n\n useEffect(() => {\n const handler = (e: any) => {\n e.preventDefault()\n setSupported(true)\n setInstalled(e)\n }\n window.addEventListener('beforeinstallprompt', (handler))\n return () => window.removeEventListener(\"transitionend\", handler)\n }, [])\n\n const openDownloadPopUp = () => {\n dispatch(variluxgG9Slice.actions.setShowDownloadPopup(true))\n }\n\n const handleRefresh = () => {\n window.location.reload();\n }\n\n return (\n
    \n \n \"essilor-logo\"\n \n\n \n\n {/* download and language selection */}\n
    \n
    \n \n
    \n \n {\n supported && installed !== null && <>\n
    \n \n
    \n \n \n }\n {\n (g9LanguageSetting?.country === \"Germany\") && (\n <>\n \n \n \n )\n }\n \n
    \n
    \n )\n}\n\nexport default VarNavbarHeader","import iVariluxSteps from \"../../interface/variluxSteps.interface\";\n\n\nexport const variluxSteps:iVariluxSteps[] = [\n {\n id:'needExplorer',\n label:['lens_proposal_builder_lpb_need_explorer', 'Need Explorer']\n },\n {\n id:'prescription',\n label:['current_lens_rx_current_lens', 'Current Lenses']\n },\n {\n id:'demonstrations',\n label:['legal_notice_ln_01_demonstrations_title', 'Demonstration']\n },\n {\n id:'conclusion',\n label:['conclusion_rx_conclusion', 'Conclusion']\n },\n]","enum PrescriptionAddSegmentationType {\n HIGH_ADD = 'high_add',\n MID_ADD = 'mid_add',\n LOW_ADD = 'low_add',\n}\n\nexport default PrescriptionAddSegmentationType;","import { useSelector } from \"react-redux\";\nimport { PRESCRIPTION_RULES_VARILUX } from \"../../constants/prescription.constants\";\nimport { iView } from \"../../store/interface/variluxG9.interface\";\nimport { getVariluxG9 } from \"../../store/slices/variluxG9.slice\";\nimport PrescriptionProductTypeVarilux from \"../../types/prescription-product-varilux.type\";\nimport { iViewStep } from \"../../pages/varilux-g9/components/ProgressBar\";\n\ntype hookType = {\n disableNext: (currentView:iView) => boolean\n disableButtonNav: (disabledView:iView) => boolean\n}\n\n\nconst useVariluxDisableButton = (): hookType => {\n //variables\n const { needExplorerChoices, prescriptionVarilux, view } = useSelector(getVariluxG9);\n const { productSelected, addition, values } = prescriptionVarilux\n\n // NEED EXPLORER\n const needExplorerHasSelectedValue = needExplorerChoices.every(choice => choice.selected === false)\n\n //PRESCRIPTION\n const sphereMax = PRESCRIPTION_RULES_VARILUX.standard.sphere.max\n const sphereMin = PRESCRIPTION_RULES_VARILUX.standard.sphere.min\n const additionMax = PRESCRIPTION_RULES_VARILUX.standard.addition.max\n const additionMin = PRESCRIPTION_RULES_VARILUX.standard.addition.min\n const od = values?.sphere?.od\n const os = values?.sphere?.os\n\n const disableNext = (currentView: iView) => {\n if(currentView === 'needExplorer'){\n return needExplorerHasSelectedValue\n }\n\n if(currentView === 'prescription'){\n if(productSelected === PrescriptionProductTypeVarilux.NONE) return true\n if(os && od && addition){\n return !((os <= sphereMax && os >= sphereMin) && \n (od <= sphereMax && od >= sphereMin) && \n (addition <= additionMax && addition >= additionMin))\n }\n //if(!os && !od && !addition) return true\n // revert back to false when no logic on demo calculation without inputs on prescription is made.\n if(!os && !od && !addition) return false\n if(os || od || addition)return true\n }\n return false\n }\n\n\tconst disableButtonNav = (disabledView:iView) => {\n switch (disabledView) {\n case 'needExplorer':\n return iViewStep[view] < iViewStep.needExplorer\n case 'prescription':\n return iViewStep[view] < iViewStep.prescription\n case 'demonstrations':\n return iViewStep[view] < iViewStep.demonstrations\n case 'conclusion':\n return iViewStep[view] < iViewStep.conclusion\n default:\n return false\n }\n }\n\n\t// const disableButtonNav = (disabledView:iView) => {\n // switch (disabledView) {\n // case 'needExplorer':\n // return false\n // case 'prescription':\n // return needExplorerHasSelectedValue\n // case 'demonstrations':\n // return demonstrationViewSettings()\n // case 'conclusion':\n // return !(view === 'demonstrations' || view === 'conclusion')\n // default:\n // return false\n // }\n // }\n\n\n const demonstrationViewSettings = () => {\n if(view === 'intro'){\n return disableNext('needExplorer')\n }\n if(view === 'needExplorer'){\n return true\n }\n if(view === 'prescription'){\n return disableNext('prescription')\n }\n return false\n }\n\n return {\n disableNext,\n disableButtonNav\n }\n}\n\nexport default useVariluxDisableButton;","import Varilux_Matrix from \"../../interface/varilux-matrix.interface\"\n\nconst varilux_matrix: Varilux_Matrix = {\n none:{\n low_myope:{\n low_add:{\n extended: 0,\n stabilized: 0,\n panoramic: 0,\n instant: 0,\n sharp: 0\n },\n mid_add:{\n extended: 0,\n stabilized:0,\n panoramic: 0,\n instant: 0,\n sharp: 0\n },\n high_add:{\n extended: 0,\n stabilized:0,\n panoramic:0,\n instant:0,\n sharp:0\n },\n },\n\n high_myope:{\n low_add:{\n extended:0,\n stabilized:0,\n panoramic:0,\n instant:0,\n sharp:0\n },\n mid_add:{\n extended:0,\n stabilized:0,\n panoramic: 0,\n instant:0,\n sharp: 0\n },\n high_add:{\n extended:0,\n stabilized: 0,\n panoramic: 0,\n instant: 0,\n sharp: 0\n }\n },\n\n emmetropic:{\n low_add:{\n extended: 0,\n stabilized:0,\n panoramic: 0,\n instant: 0,\n sharp: 0\n },\n mid_add:{\n extended: 0,\n stabilized: 0,\n panoramic: 0,\n instant: 0,\n sharp: 0\n },\n high_add:{\n extended: 0,\n stabilized: 0,\n panoramic: 0,\n instant: 0,\n sharp: 0\n }\n },\n\n low_hyperope:{\n low_add:{\n extended: 0,\n stabilized: 0,\n panoramic:0,\n instant: 0,\n sharp: 0\n },\n mid_add:{\n extended: 0,\n stabilized: 0,\n panoramic: 0,\n instant: 0,\n sharp: 0\n },\n high_add:{\n extended: 0,\n stabilized: 0,\n panoramic: 0,\n instant: 0,\n sharp: 0\n }\n },\n\n high_hyperope:{\n low_add:{\n extended: 0,\n stabilized: 0,\n panoramic: 0,\n instant: 0,\n sharp: 0\n },\n mid_add:{\n extended: 0,\n stabilized: 0,\n panoramic: 0,\n instant: 0,\n sharp: 0\n },\n high_add:{\n extended:0,\n stabilized: 0,\n panoramic: 0,\n instant: 0,\n sharp: 0\n }\n }\n },\n standard_progressive_lens:{\n low_myope:{\n low_add:{\n extended: 16.20822441,\n stabilized: -9.691148378,\n panoramic: 14.53908896,\n instant: 33.42395783,\n sharp: 51.04476716\n },\n mid_add:{\n extended: 19.56282605,\n stabilized: -13.3467453,\n panoramic: 9.356287705,\n instant: 51.02839098,\n sharp: 31.12484054\n },\n high_add:{\n extended: 128.7359399,\n stabilized: 12.07546201,\n panoramic: 40.20968547,\n instant: 76.96636986,\n sharp: 77.53441455\n },\n },\n\n high_myope:{\n low_add:{\n extended: 23.99720463,\n stabilized: -2.256157772,\n panoramic: 43.16455305,\n instant: 71.28381089,\n sharp: 25.37321562\n },\n mid_add:{\n extended: 23.08481623,\n stabilized: -13.1488358,\n panoramic: 24.50292839,\n instant: 93.09243687,\n sharp: 7.205707975\n },\n high_add:{\n extended: 92.76927984,\n stabilized: 10.03277559,\n panoramic: 59.20645529,\n instant: 99.00165343,\n sharp: 57.29566296\n }\n },\n\n emmetropic:{\n low_add:{\n extended: 23.34015273,\n stabilized: 9.605824648,\n panoramic: 20.64439144,\n instant: 34.91307856,\n sharp: 79.92902121\n },\n mid_add:{\n extended: 40.37075,\n stabilized: 4.101040789,\n panoramic: 14.50159067,\n instant: 31.9559952,\n sharp: 88.78596267\n },\n high_add:{\n extended: 135.1965586,\n stabilized: 21.01504333,\n panoramic: 48.09454081,\n instant: 93.39544742,\n sharp: 81.17735109\n }\n },\n\n low_hyperope:{\n low_add:{\n extended: 9.776435274,\n stabilized: 36.99800833,\n panoramic: 2.144376633,\n instant: 32.81223152,\n sharp: 160.8634637\n },\n mid_add:{\n extended: 21.71472302,\n stabilized: 41.09935725,\n panoramic: 5.977806836,\n instant: 28.13384894,\n sharp: 196.0510463\n },\n high_add:{\n extended: 70.95507669,\n stabilized: 12.40237305,\n panoramic: 16.19457286,\n instant: 52.2754674,\n sharp: 220.1450768\n }\n },\n\n high_hyperope:{\n low_add:{\n extended: -1.028660068,\n stabilized: 40.73388597,\n panoramic: 27.15544958,\n instant: 42.80880495,\n sharp: 87.40937178\n },\n mid_add:{\n extended: 8.683374204,\n stabilized: 47.45031677,\n panoramic: 39.90977245,\n instant: 40.27104252,\n sharp: 120.4507311\n },\n high_add:{\n extended: 30.96186004,\n stabilized: 17.23292186,\n panoramic: 39.98336997,\n instant: 44.33864805,\n sharp: 177.0129851\n }\n }\n },\n\n\n\n varilux_comfort:{\n low_myope:{\n low_add:{\n extended: 5.448985739,\n stabilized: 10.94952304,\n panoramic: 21.91285489,\n instant: 31.72980159,\n sharp: -5.371737417\n },\n mid_add:{\n extended: 4.595889293,\n stabilized: 12.64696123,\n panoramic: 35.07687963,\n instant: 41.02797777,\n sharp: -24.26750402\n },\n high_add:{\n extended: 16.56709117 ,\n stabilized: 28.50893927,\n panoramic: 56.21685447,\n instant: 60.54236944,\n sharp: -44.11983973\n }\n },\n\n high_myope:{\n low_add:{\n extended: 5.677038491,\n stabilized: 4.498251397,\n panoramic: 56.710483,\n instant: 48.05549108,\n sharp: -2.873110538\n },\n mid_add:{\n extended: 1.352374594,\n stabilized: 0.002154102,\n panoramic: 56.58118876,\n instant: 61.73542537,\n sharp: -20.8972008\n },\n high_add:{\n extended: 4.512768078,\n stabilized: 23.08171912,\n panoramic: 69.4862372,\n instant: 71.43196195,\n sharp: -48.04903585\n },\n },\n \n emmetropic:{\n low_add:{\n extended: 18.2919,\n stabilized: 23.91213614,\n panoramic: 43.05809833,\n instant: 42.62188655,\n sharp: 15.25837191\n },\n mid_add:{\n extended: 27.31846279,\n stabilized: 17.73911997,\n panoramic: 33.76485756,\n instant: 60.60317366,\n sharp: 17.93315676\n },\n high_add:{\n extended: 70.76921429,\n stabilized: 25.26914814,\n panoramic: 50.39139069,\n instant: 72.13168102,\n sharp: 15.04005366\n },\n },\n\n low_hyperope:{\n low_add:{\n extended: -0.528463019,\n stabilized: 36.3068722,\n panoramic: 33.04435987,\n instant: 48.71838875,\n sharp: 15.28430763\n },\n mid_add:{\n extended: 1.613130955,\n stabilized: 34.49939026,\n panoramic: 31.65944611,\n instant: 58.02086282,\n sharp: 12.71549122\n },\n high_add:{\n extended: 58.24191959,\n stabilized: 31.58201447,\n panoramic: 54.419417,\n instant: 64.83808459,\n sharp: 18.631578\n },\n },\n \n high_hyperope:{\n low_add:{\n extended: -5.135450625,\n stabilized: 30.95434037,\n panoramic: 76.16475532,\n instant: 47.77466953,\n sharp: 8.977145782\n },\n mid_add:{\n extended: -1.650745733,\n stabilized: 33.89650862,\n panoramic: 78.40382419,\n instant: 51.68105585,\n sharp: 9.318518358\n },\n high_add:{\n extended: 49.79208816,\n stabilized: 22.9179387,\n panoramic: 98.57813184,\n instant: 49.64507721,\n sharp: 19.45858675\n },\n },\n },\n\n\n varilux_x_series:{\n low_myope:{\n low_add:{\n extended: 1.762456715,\n stabilized: -17.47041642,\n panoramic: 10.460397,\n instant: 33.26781724,\n sharp: -7.066752853\n },\n mid_add:{\n extended: 4.014844902,\n stabilized: -29.34210938,\n panoramic: 28.28255067,\n instant: 61.89806629,\n sharp: -9.229877288\n },\n high_add:{\n extended: 3.720213688 ,\n stabilized: -3.907034721,\n panoramic: 33.32259589,\n instant: 53.99987003,\n sharp: -20.41589159\n }\n },\n\n high_myope:{\n low_add:{\n extended: 6.099394556,\n stabilized: -11.24397668,\n panoramic: 29.6509863,\n instant: 57.02026616,\n sharp: 1.741881791\n },\n mid_add:{\n extended: 11.4398299,\n stabilized: -21.44558221,\n panoramic: 69.28692902,\n instant: 106.2937577,\n sharp: -0.75424116\n },\n high_add:{\n extended: 9.713957086,\n stabilized: -4.483715819,\n panoramic: 58.43883824,\n instant: 72.02194374,\n sharp: -30.39756185\n }\n },\n\n emmetropic:{\n low_add:{\n extended: 2.254333354,\n stabilized: 8.61607726,\n panoramic: 25.27093007,\n instant: 8.606746637,\n sharp: -9.220858173\n },\n mid_add:{\n extended: 4.021798197,\n stabilized: 4.830478171,\n panoramic: 8.286340852,\n instant: 15.94996171,\n sharp: -7.404415363\n },\n high_add:{\n extended: 3.664538618,\n stabilized: 10.14444396,\n panoramic: 43.96047877,\n instant: 37.62403775,\n sharp: 1.301071358\n }\n },\n\n low_hyperope:{\n low_add:{\n extended: 0.90454517,\n stabilized: 16.73918951,\n panoramic: 29.25364798,\n instant: 18.57816417,\n sharp: -0.249089001\n },\n mid_add:{\n extended: 1.102349803,\n stabilized: 25.58310527,\n panoramic: 56.62228035,\n instant: 44.33703217,\n sharp: 5.782054932\n },\n high_add:{\n extended: 1.917567989,\n stabilized: 21.72325639,\n panoramic: 64.39004814,\n instant: 40.42320497,\n sharp: 5.206929909\n }\n },\n\n high_hyperope:{\n low_add:{\n extended: 5.602589971,\n stabilized: 15.3178461,\n panoramic: 85.10425063,\n instant: 34.55545842,\n sharp: -1.208388588\n },\n mid_add:{\n extended: 13.45117325,\n stabilized: 18.73217194,\n panoramic: 159.7095417,\n instant: 74.10811795,\n sharp: 1.242280466\n },\n high_add:{\n extended: 17.18117834,\n stabilized: 16.39429037,\n panoramic: 82.00828039,\n instant: 44.91682032,\n sharp: 15.0638362\n }\n },\n },\n\n\n varilux_physio_30:{\n low_myope:{\n low_add:{\n extended: 21.70113445,\n stabilized: -18.55069159,\n panoramic: 20.00408626,\n instant: 51.18732709,\n sharp: 3.246305651\n },\n mid_add:{\n extended: 32.55069424,\n stabilized: -20.04172913,\n panoramic: 25.16814333,\n instant: 67.75418439,\n sharp: -9.726443156\n },\n high_add:{\n extended: 74.4040218,\n stabilized: 5.038748671,\n panoramic: 22.15400087,\n instant: 60.07402951,\n sharp: -20.13190123\n }\n },\n\n high_myope:{\n low_add:{\n extended: 31.6388818,\n stabilized: -10.41030539,\n panoramic: 66.11487844,\n instant: 86.09175118,\n sharp: 15.62564294\n },\n mid_add:{\n extended: 42.86221774,\n stabilized: -23.37203384,\n panoramic: 65.96216617,\n instant: 104.0356712,\n sharp: 8.034370727\n },\n high_add:{\n extended: 71.89196383,\n stabilized: -1.268382962,\n panoramic: 46.43180918,\n instant: 78.28778891,\n sharp: -13.29860337\n }\n },\n\n emmetropic:{\n low_add:{\n extended: 7.98676395,\n stabilized: 13.77940479,\n panoramic: 23.38712871,\n instant: 14.3097305,\n sharp: -9.193546927\n },\n mid_add:{\n extended: 11.79925257,\n stabilized: 7.514958008,\n panoramic: -2.87627551,\n instant: 19.50952866,\n sharp: -11.2657667\n },\n high_add:{\n extended: 16.61305236,\n stabilized: 15.24441152,\n panoramic: 38.42455456,\n instant: 42.20645598,\n sharp: -13.47559895\n }\n },\n\n low_hyperope:{\n low_add:{\n extended: -1.534937081,\n stabilized: 33.22805453,\n panoramic: 68.99992466,\n instant: 40.44655422,\n sharp: -6.15207302\n },\n mid_add:{\n extended: 1.183407234,\n stabilized: 40.30873221,\n panoramic: 69.41925251,\n instant: 40.02471407,\n sharp: -7.41187986\n },\n high_add:{\n extended: 7.897521831,\n stabilized: 25.94484157,\n panoramic: 13.50543269,\n instant: 41.9286635,\n sharp: 10.38266078\n }\n },\n\n high_hyperope:{\n low_add:{\n extended: -0.965997159,\n stabilized: 38.99493466,\n panoramic: 95.30958285,\n instant: 55.82046703,\n sharp: -3.570450491\n },\n mid_add:{\n extended: 11.53119853,\n stabilized: 43.54463727,\n panoramic: 115.7199961,\n instant: 59.85084979,\n sharp: -2.444374378\n },\n high_add:{\n extended: 18.80136927,\n stabilized: 21.2156491,\n panoramic: 49.50962627,\n instant: 44.61326733,\n sharp: 18.6291229\n }\n },\n },\n}\n\n\nexport default varilux_matrix","enum PrescriptionEyeConditionType {\n LOW_MYOPE = 'low_myope',\n HIGH_MYOPE = 'high_myope',\n EMMETROPIC = 'emmetropic',\n LOW_HYPEROPE = 'low_hyperope',\n HIGH_HYPEROPE = 'high_hyperope',\n}\n\nexport default PrescriptionEyeConditionType;","export enum VariluxPreviewType {\n IMAGE = \"image\",\n VIDEO = \"video\",\n}\ninterface listItem {\n title: string,\n source: string,\n}\ninterface previewItem {\n type: VariluxPreviewType,\n list: listItem[]\n}\ninterface iVariluxProductCard {\n video: string | undefined;\n category: string,\n image: string,\n title: string | string[],\n isRecommended: boolean,\n isExclusive: boolean,\n previewItems: previewItem,\n}\n\nexport default iVariluxProductCard;","import varilux_matrix from \"../../constants/variluxG9/varilux-products-matrix\";\nimport IVariluxResult from \"../../interface/varilux-matrix-result.interface\";\nimport PrescriptionAddSegmentationType from \"../../types/prescription-add-segmentation-varilux.type\";\nimport PrescriptionEyeConditionType from \"../../types/prescription-eye-condition-varilux.type\";\nimport PrescriptionProductTypeVarilux from \"../../types/prescription-product-varilux.type\";\n\ntype hookType = {\n getAmetropia: (value:number) => PrescriptionEyeConditionType | null\n getAddSegmentation: (n: number) => PrescriptionAddSegmentationType | null\n getCategoryPercentages:(ametropia:PrescriptionEyeConditionType, add:PrescriptionAddSegmentationType, product:PrescriptionProductTypeVarilux) => IVariluxResult | null\n}\n\nconst useVariluxMatrix = (): hookType => {\n\n const getAmetropia = (value:number) =>{\n if(value >= -3 && value < -0.75)return PrescriptionEyeConditionType.LOW_MYOPE\n\n if( value < -3)return PrescriptionEyeConditionType.HIGH_MYOPE\n\n if( value >= -0.75 && value <= 0.75 ) return PrescriptionEyeConditionType.EMMETROPIC\n\n if( value <= 3 && value > 0.75) return PrescriptionEyeConditionType.LOW_HYPEROPE\n\n if( value > 3) return PrescriptionEyeConditionType.HIGH_HYPEROPE\n\n return null\n }\n\n const getAddSegmentation = (n: number) => {\n if(n >= 2.5)return PrescriptionAddSegmentationType.HIGH_ADD\n\n if(n >= 2 && n < 2.5)return PrescriptionAddSegmentationType.MID_ADD\n\n if(n <= 1.75)return PrescriptionAddSegmentationType.LOW_ADD\n\n\n return null\n }\n\n\n const getCategoryPercentages = (ametropia:PrescriptionEyeConditionType | null, add:PrescriptionAddSegmentationType, product:PrescriptionProductTypeVarilux) => {\n if(ametropia !== null && add !== null){\n const category = varilux_matrix[product][ametropia][add]\n const {extended, stabilized, panoramic, instant,sharp} = category\n return {\n extended,\n stabilized,\n panoramic,\n instant,\n sharp\n }\n }\n return null\n }\n\n\n\n return {\n getAmetropia,\n getAddSegmentation,\n getCategoryPercentages,\n }\n}\n\nexport default useVariluxMatrix;","import { useState } from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\nimport Button from '../../../components/ui/Button'\nimport { variluxSteps } from '../../../constants/variluxG9/variluxSteps'\nimport { iView } from '../../../store/interface/variluxG9.interface'\nimport { getApp } from '../../../store/slices/app.slice'\nimport variluxgG9Slice, { getVariluxG9 } from '../../../store/slices/variluxG9.slice'\nimport PrescriptionProductTypeVarilux from '../../../types/prescription-product-varilux.type'\nimport useBEM from '../../../utils/hooks/useBEM'\nimport useTranslation from '../../../utils/hooks/useTranslation'\nimport useVariluxDisableButton from '../../../utils/hooks/useVariluxDisableButton'\nimport useVariluxMatrix from '../../../utils/hooks/useVariluxMatrix'\nimport ProgressBar from './ProgressBar'\n\nconst VarNavbarBottom = () => {\n //variables\n const dispatch = useDispatch()\n //hooks\n const [B, E] = useBEM('varilux-navbar-bottom')\n const { tg9 } = useTranslation(useSelector(getApp));\n const { prescriptionVarilux, view } = useSelector(getVariluxG9)\n const [stepProgress, setStepProgress] = useState(1);\n const { disableButtonNav } = useVariluxDisableButton()\n const { productSelected, sphereMean, addition } = prescriptionVarilux\n const { getAddSegmentation, getAmetropia, getCategoryPercentages } = useVariluxMatrix()\n\n\n //functions\n const activeStep = (v: iView) => {\n if (view === v) {\n return 'active'\n }\n }\n\n const changeView = (v: iView, i: number) => {\n setStepProgress(i + 1);\n if (v === 'demonstrations') {\n if (productSelected === PrescriptionProductTypeVarilux.NONE) {\n dispatch(variluxgG9Slice.actions.setLensCategorySelected(false))\n }\n if (sphereMean && addition && productSelected !== PrescriptionProductTypeVarilux.NONE) {\n const add = getAddSegmentation(addition)\n const ametropia = getAmetropia(sphereMean)\n if (ametropia !== null && add !== null) {\n const categoryPercentages = getCategoryPercentages(ametropia, add, productSelected)\n dispatch(variluxgG9Slice.actions.setEyeCondition(ametropia))\n dispatch(variluxgG9Slice.actions.setAddSegmentation(add))\n dispatch(variluxgG9Slice.actions.setCategoryPercentages(categoryPercentages))\n dispatch(variluxgG9Slice.actions.setLensCategorySelected(true))\n }\n }\n }\n dispatch(variluxgG9Slice.actions.changeView(v))\n }\n\n return (\n
    \n {/* buttons */}\n
    \n {\n variluxSteps.map((step, i) =>\n changeView(step.id, i)}\n disabled={disableButtonNav(step.id)}\n />\n )\n }\n
    \n\n\n {/* progress bar */}\n \n
    \n )\n}\n\nexport default VarNavbarBottom","import React from 'react'\nimport { useSelector } from 'react-redux'\n// import { getApp } from '../../../store/slices/app.slice'\nimport useBEM from '../../../utils/hooks/useBEM'\nimport VarNavbarHeader from './VarNavbarHeader'\nimport VarNavbarBottom from './VarNavbarBottom'\nimport { getVariluxG9 } from '../../../store/slices/variluxG9.slice'\n\n\nconst VarNavbar:React.FC = () => {\n const [ B ] = useBEM('varilux-navbar')\n // const appStore = useSelector(getApp);\n const { prescriptionVideoPlay } = useSelector(getVariluxG9)\n\n return (\n <>\n {!prescriptionVideoPlay ?\n
    \n \n \n
    \n :\n null\n }\n \n\n )\n}\n\nexport default VarNavbar","import { useDispatch, useSelector } from 'react-redux';\nimport Button from '../../../components/ui/Button';\nimport Icon from '../../../components/ui/Icon';\nimport { getApp } from '../../../store/slices/app.slice';\nimport variluxgG9Slice from '../../../store/slices/variluxG9.slice';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport useGoto from '../../../utils/hooks/useGoto';\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport routes from '../../../constants/routes.constant'\nimport { useState } from 'react';\nimport PrescriptionProductTypeVarilux from '../../../types/prescription-product-varilux.type';\n\nconst ConclusionVarilux = () => {\n const dispatch = useDispatch()\n const [B, E] = useBEM('varilux-conclusion')\n const { tg9 } = useTranslation(useSelector(getApp));\n const [endExperience, setEndExperience] = useState(true)\n const goto = useGoto()\n const { accountDetails, g9LanguageSetting } = useSelector(getApp)\n\n const nextStep = () => {\n dispatch(variluxgG9Slice.actions.resetData())\n goto.route(routes.home)\n //window.location.replace(window.name)\n }\n\n const restart = () => {\n let country = accountDetails?.shop.country\n if (country === \"de\") { // RETURN TO 'CURRENT LENSES' PAGE FOR GERMANY\n dispatch(variluxgG9Slice.actions.changeView('prescription'))\n dispatch(variluxgG9Slice.actions.selectProduct('none' as PrescriptionProductTypeVarilux))\n dispatch(variluxgG9Slice.actions.resetNeedExplorerChoices())\n } else {\n dispatch(variluxgG9Slice.actions.changeView('intro'))\n dispatch(variluxgG9Slice.actions.resetData())\n }\n }\n\n // useEffect( () => {\n // if(window.name){\n // setEndExperience(true)\n // }\n // },[window.name])\n\n const setKoreanHeaderText = () => {\n if (g9LanguageSetting?.country === 'Korea') {\n return (\n

    \n 바리락스 최고의  \n \n 누진다초점 렌즈\n \n

    \n )\n } return (\n

    \n \n {tg9('varilux_the_best_overall', 'The best overall')}\n \n  \n \n {tg9('varilux_progressive_lens', 'progressive lens*')}\n \n

    \n )\n }\n\n return (\n
    \n
    \n \n
    \n
    \n {/*

    \n \n {tg9('varilux_the_best_overall', 'The best overall')}\n \n  \n \n {tg9('varilux_progressive_lens', 'progressive lens*')}\n \n

    */}\n {setKoreanHeaderText()}\n
    \n
    \n \n {\n endExperience &&\n \n }\n
    \n
    \n {tg9('calculation_based_on_lenses', '*Disclaimer: Essilor R&D simulations - 2022 - calculation based on lenses measurements weighted by the level of importance of each criteria for progressive lenses declared by users (Quantitative Consumer study - Ipsos - Q1 2022 - BR/FR/IT/UK/US - n=4000 progressive lens wearers) - Simulations done on most relevant competitive brands : brands with good level of awareness among consumers (Consumer Lens Brand Tracking - Ipsos - Q3 2022 - BR/CA/CN/FR/IN/IT/UK/US - n=8000) & offering premium progressive lenses.')}​\n
    \n
    \n )\n}\n\nexport default ConclusionVarilux","const variluxCategories = {\n EXTENDED: \"extended\",\n INSTANT: \"instant\",\n PANORAMIC: \"panoramic\",\n SHARP: \"sharp\",\n STABILIZED: \"stabilized\",\n};\nexport default variluxCategories;\n\n\n\n","import iVariluxProductCard, { VariluxPreviewType } from '../interface/varilux-product-card.interface';\nimport variluxCategories from '../constants/variluxG9/varilux-categories';\nimport Image1 from '../assets/images/demonstrations/01.png';\nimport Image2 from '../assets/images/demonstrations/027.png';\nimport Image3 from '../assets/images/demonstrations/03.png';\nimport Image4 from '../assets/images/demonstrations/04.png';\nimport Image5 from '../assets/images/demonstrations/05.png';\n\nconst variluxProducts: iVariluxProductCard[] = [\n {\n category: variluxCategories.INSTANT,\n image: Image1,\n title: ['varilux_demo_card_instant','Instant sharpness at all distances, even in motion'],\n isRecommended: false,\n isExclusive: true,\n previewItems: {\n type: VariluxPreviewType.VIDEO,\n list: [{\n title: \"Standard progressive lens\",\n source: \"\"\n }, {\n title: \"Varilux® XR series™\",\n source: \"\"\n }],\n },\n video: \"\",\n },\n {\n category: variluxCategories.STABILIZED,\n image: Image2,\n title: ['varilux_demo_card_stabilized','Stabilized vision even in the most demanding situations'],\n isRecommended: true,\n isExclusive: false,\n previewItems: {\n type: VariluxPreviewType.VIDEO,\n list: [{\n title: \"Standard progressive lens\",\n source: \"\"\n }, {\n title: \"Varilux® XR series™\",\n source: \"\"\n }],\n },\n video: \"\",\n },\n {\n category: variluxCategories.PANORAMIC,\n image: Image3,\n title: ['varilux_demo_card_panoramic',\"Panoramic field of vision\"],\n isRecommended: false,\n isExclusive: false,\n previewItems: {\n type: VariluxPreviewType.VIDEO,\n list: [{\n title: \"Standard progressive lens\",\n source: \"\"\n }, {\n title: \"Varilux® XR series™\",\n source: \"\"\n }],\n },\n video: \"\",\n },\n {\n category: variluxCategories.SHARP,\n image: Image4,\n title: ['varilux_demo_card_sharp',\"High visual acuity even in low light conditions\"],\n isRecommended: false,\n isExclusive: false,\n previewItems: {\n type: VariluxPreviewType.VIDEO,\n list: [{\n title: \"Standard progressive lens\",\n source: \"\"\n }, {\n title: \"Varilux® XR series™\",\n source: \"\"\n }],\n },\n video: \"\",\n },\n {\n category: variluxCategories.EXTENDED,\n image: Image5,\n title: ['varilux_demo_card_extended',\"Natural posture in all circumstances​\"],\n isRecommended: false,\n isExclusive: false,\n previewItems: {\n type: VariluxPreviewType.VIDEO,\n list: [{\n title: \"Standard progressive lens\",\n source: \"\"\n }, {\n title: \"Varilux® XR series™\",\n source: \"\"\n }],\n },\n video: \"\",\n },\n];\n\nexport default variluxProducts;","import iVariluxProductCard from \"../../../../interface/varilux-product-card.interface\";\nimport Button from '../../../../components/ui/Button';\nimport useBEM from \"../../../../utils/hooks/useBEM\";\nimport useTranslation from \"../../../../utils/hooks/useTranslation\";\nimport { useSelector } from \"react-redux\";\nimport { getApp } from \"../../../../store/slices/app.slice\";\nimport { useState } from \"react\";\n\nconst ProductCardVarilux = ({ product, setShowDemo, setPreviewItem, setPreviewItemIndex, index, setActiveIndex }: any) => {\n const item: iVariluxProductCard = product;\n const { tg9 } = useTranslation(useSelector(getApp));\n const [B, E] = useBEM('varilux-demonstrations');\n const [active, setActive] = useState(false);\n const [playVideo, setPlayVideo] = useState(false);\n\n return (\n <>\n
    {setActive(true);setActiveIndex(index)}}\n onMouseLeave={() => {\n setActive(false);\n setPlayVideo(false);\n setActiveIndex(-1)\n }}\n >\n
    setPlayVideo(true)}\n >
    \n\n setPlayVideo(false)}\n style={{ display: playVideo ? 'block' : 'none' }}\n >\n \n \n \n\n {\n item.isRecommended && (\n
    \n \n {tg9('recommended', 'Recommended')}\n
    \n )\n }\n {\n item.isExclusive && (\n {tg9('exclusive', 'Exclusive')}\n )\n }\n
    {tg9(item.title[0], item.title[1])}
    \n\n
    {\n setPlayVideo(false);\n setPreviewItem(item);\n setShowDemo(true);\n setPreviewItemIndex(index);\n }\n }\n >\n \n
    \n\n
    \n \n\n )\n}\n\nexport default ProductCardVarilux;","import Icon_1 from \"../../../../assets/svg/varilux-g9/icons/control-1.svg\";\nimport Icon_2 from \"../../../../assets/svg/varilux-g9/icons/control-2.svg\";\nimport Icon_3 from \"../../../../assets/svg/varilux-g9/icons/control-3.svg\";\nimport Icon_4 from \"../../../../assets/svg/varilux-g9/icons/control-4.svg\";\nimport Icon_5 from \"../../../../assets/svg/varilux-g9/icons/control-5.svg\";\nimport Icon_1_white from \"../../../../assets/svg/varilux-g9/icons/control-1-white.svg\";\nimport Icon_2_white from \"../../../../assets/svg/varilux-g9/icons/control-2-white.svg\";\nimport Icon_3_white from \"../../../../assets/svg/varilux-g9/icons/control-3-white.svg\";\nimport Icon_4_white from \"../../../../assets/svg/varilux-g9/icons/control-4-white.svg\";\nimport Icon_5_white from \"../../../../assets/svg/varilux-g9/icons/control-5-white.svg\";\nimport Icon_fill from \"../../../../assets/svg/varilux-g9/icons/fill.svg\";\n// import Icon_fill_white from \"../../../../assets/svg/varilux-g9/icons/fill-white.svg\";\n// import Icon_ZoomIn from \"../../../../assets/images/demonstrations/icons/zoom-in.png\";\n// import Icon_ZoomOut from \"../../../../assets/images/demonstrations/icons/zoom-out.png\";\nimport Loading from \"../../../../components/Loading\";\nimport variluxProducts from \"../../../../utils/varilux-products\";\nimport { VariluxPreviewType } from \"../../../../interface/varilux-product-card.interface\";\nimport { useSelector } from \"react-redux\";\nimport { getVariluxG9 } from \"../../../../store/slices/variluxG9.slice\";\n\nconst ProductCardVariluxModalContent = ({ E, t, showModal, setShowModal, item, isDownloading, index, handlControlClick }: any) => {\n\n const { previewItems } = item;\n const products = variluxProducts;\n const {\n needExplorerChoices,\n } = useSelector(getVariluxG9);\n\n return (\n
    \n {\n showModal && (\n
    \n {/* {t('demo', 'Demo')} */}\n
    \n )\n }\n
    \n {\n isDownloading ? :\n previewItems?.list?.map((item: any, index: number) => {\n return (\n
    \n {\n previewItems?.type === VariluxPreviewType.IMAGE ?\n Asset :\n \n }\n
    \n
    {item.title}
    \n
    \n
    \n )\n })\n }\n
    \n
    \n {\n !isDownloading && (\n <>\n
    \n
    \n {\n index === 0\n ? {products[0].title[0]}\n : handlControlClick(0)} alt={products[0].title[0]} />\n }\n {\n needExplorerChoices[0].selected && {products[0].title[0]}\n }\n
    \n
    \n {\n index === 1\n ? {products[1].title[0]}\n : handlControlClick(1)} id={products[1].title[0]} alt={products[1].title[0]} />\n }\n {\n needExplorerChoices[1].selected && {products[1].title[0]}\n }\n
    \n
    \n {\n index === 2\n ? {products[2].title[0]}\n : handlControlClick(2)} id={products[2].title[0]} alt={products[2].title[0]} />\n }\n {\n needExplorerChoices[2].selected && {products[2].title[0]}\n }\n
    \n
    \n {\n index === 3\n ? {products[3].title[0]}\n : handlControlClick(3)} id={products[3].title[0]} alt={products[3].title[0]} />\n }\n {\n needExplorerChoices[3].selected && {products[3].title[0]}\n }\n
    \n
    \n {\n index === 4\n ? {products[4].title[0]}\n : handlControlClick(4)} id={products[4].title[0]} alt={products[4].title[0]} />\n }\n {\n needExplorerChoices[4].selected && {products[4].title[0]}\n }\n
    \n
    \n
    \n
    {t(item.title[0], item.title[1])}
    \n {/*
    {showModal ? t('full-screen', 'Full screen') : t('quit-full-screen', 'Quit full screen')}
    \n
    setShowModal(!showModal)}>
    */}\n
    \n \n )\n }\n\n
    \n
    \n )\n}\nexport default ProductCardVariluxModalContent;","import Modal from \"../../../../components/Modal\";\nimport useBEM from \"../../../../utils/hooks/useBEM\";\nimport { useState } from \"react\";\nimport useTranslation from \"../../../../utils/hooks/useTranslation\";\nimport { useSelector } from \"react-redux\";\nimport { getApp } from \"../../../../store/slices/app.slice\";\nimport ProductCardVariluxModalContent from \"./ProductCardVariluxModalContent\";\n\nconst ProductCardVariluxModal = (props: any) => {\n const { tg9 } = useTranslation(useSelector(getApp));\n const [B, E] = useBEM('varilux-demonstrations-modal');\n const [showModal, setShowModal] = useState(true);\n const modalStyle = {\n width: \"100%\",\n height: \"69.8rem\",\n borderRadius: \"15px\"\n }\n return (\n <>\n {\n showModal ?\n props.setShowDemo(false)}\n hideCloseButton={false}\n closeModalOnOutsideClick={true}\n className={B()}\n >\n \n \n : \n\n }\n \n\n )\n}\nexport default ProductCardVariluxModal;","const prescriptionOptions = [\n // {\n // label: '',\n // value: 'none',\n // videoIndex: {\n // extended: 0,\n // stabilized: 0,\n // panoramic: 0,\n // instant: 0,\n // sharp: 0,\n // }\n // },\n {\n label: 'Varilux® X series™',\n value: 'varilux_x_series',\n videoIndex: { \n instant: 2,\n stabilized: 1,\n panoramic: 1,\n sharp: 1,\n extended: 1,\n },\n gtmId: \"current_lenses_varilux_x_series\"\n },\n {\n label: 'Varilux® Physio® 3.0',\n value: 'varilux_physio_30',\n videoIndex: {\n instant: 3,\n stabilized: 2,\n panoramic: 2,\n sharp: 1,\n extended: 2,\n },\n gtmId: \"current_lenses_varilux_physio_30\"\n },\n {\n label: 'Varilux® Comfort Max',\n value: 'varilux_comfort',\n videoIndex: {\n instant: 3,\n stabilized: 2,\n panoramic: 3,\n sharp: 1,\n extended: 1,\n },\n gtmId: \"current_lenses_varilux_comfort\"\n },\n {\n label: 'Premium Progressive Lenses',\n value: 'standard_progressive_lens',\n videoIndex: {\n instant: 3,\n stabilized: 2,\n panoramic: 3,\n sharp: 3,\n extended: 3,\n },\n gtmId: \"current_lenses_standard_progressive_lens\"\n },\n]\n\n\nexport default prescriptionOptions","import React, { useEffect, useRef, useState } from 'react';\nimport Slider from \"react-slick\";\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport Button from '../../../components/ui/Button';\nimport { getApp } from '../../../store/slices/app.slice';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport useTranslation from '../../../utils/hooks/useTranslation';\nimport variluxProducts from '../../../utils/varilux-products';\nimport ProductCardVarilux from './demonstrations-varilux/ProductCardVarilux';\nimport variluxgG9Slice, { getVariluxG9 } from \"../../../store/slices/variluxG9.slice\";\nimport ProductCardVariluxModal from './demonstrations-varilux/ProductCardVariluxModal';\nimport iVariluxProductCard from '../../../interface/varilux-product-card.interface';\nimport VARILUX_CATEGORY from '../../../constants/variluxG9/varilux-categories';\nimport { IndexedDBContext, IndexedDBContextType } from '../../../utils/context/indexedDBContext';\nimport Utils from '../../../utils/Utils';\nimport DEMO_CATEGORY from \"../../../constants/variluxG9/varilux-demo-categories\";\nimport variluxG9Videos from '../../../utils/varilux-g9-videos';\nimport prescriptionOptions from \"../../../constants/variluxG9/prescription-options\";\n\nconst DemonstrationsVarilux = () => {\n const dispatch = useDispatch();\n const { tg9 } = useTranslation(useSelector(getApp));\n const [B, E] = useBEM('varilux-demonstrations');\n const { prescriptionVarilux } = useSelector(getVariluxG9);\n const { productSelected } = prescriptionVarilux;\n\n const { get, insert } = React.useContext(IndexedDBContext) as IndexedDBContextType;\n const { downloadAssetBase64 } = Utils();\n const {\n needExplorerChoices,\n lensCategorySelected,\n categoryPercentages,\n } = useSelector(getVariluxG9);\n const { g9LanguageSetting } = useSelector(getApp)\n // hooks\n const [isDownloading, setIsDownloading] = useState(false);\n const [showDemo, setShowDemo] = useState(false);\n const [iVariluxProducts, setIVariluxProducts] = useState([]);\n const [previewItem, setPreviewItem] = useState();\n const [previewItemIndex, setPreviewItemIndex] = useState(0);\n const [activeIndex, setActiveIndex] = useState(-1);\n const loadedCount = useRef(0);\n const totalAssets = 2;\n const nextButtonContainerRef = useRef(null)\n\n // constants\n const settings = {\n className: \"slider variable-width\",\n initialSlide: 0,\n infinite: false,\n centerMode: true,\n slidesToShow: 5,\n slidesToScroll: 1,\n variableWidth: true,\n responsive: [\n {\n breakpoint: 1024,\n settings: {\n slidesToShow: 3,\n centerMode: false,\n }\n },\n {\n breakpoint: 1180,\n settings: {\n slidesToShow: 3,\n centerMode: false,\n }\n },\n {\n breakpoint: 1280,\n settings: {\n slidesToShow: 4,\n centerMode: false,\n }\n },\n {\n breakpoint: 1440,\n settings: {\n slidesToShow: 4,\n centerMode: false,\n }\n },\n {\n breakpoint: 1600,\n settings: {\n slidesToShow: 4,\n centerMode: false,\n }\n },\n {\n breakpoint: 1920,\n settings: {\n slidesToShow: 5,\n centerMode: false,\n }\n },\n {\n breakpoint: 2048,\n settings: {\n slidesToShow: 5,\n }\n },\n {\n breakpoint: 2304,\n settings: {\n slidesToShow: 5,\n }\n },\n ]\n };\n\n useEffect(() => {\n if (nextButtonContainerRef.current) {\n nextButtonContainerRef.current.scrollIntoView({ behavior: 'smooth' });\n }\n }, [])\n\n useEffect(() => {\n if (needExplorerChoices.length) {\n if (needExplorerChoices[needExplorerChoices.length - 1].selected) {\n variluxProducts?.map((item) => {\n return item.isRecommended = false;\n })\n } else {\n needExplorerChoices?.map((item: any, i: number) => {\n if (i < variluxProducts.length) {\n variluxProducts[i].isRecommended = item.selected\n }\n })\n }\n setIVariluxProducts(variluxProducts);\n }\n // unsubscribe\n return () => { };\n }, [needExplorerChoices]);\n\n useEffect(() => {\n // unsubscribe\n setPreviewAssets();\n return () => { };\n }, [lensCategorySelected])\n\n const setPreviewAssets = () => {\n if (lensCategorySelected) {\n // do apply dynamic video by categoryPercentages for each category\n variluxProducts?.map(async (item: iVariluxProductCard) => {\n const filteredItem = await filterVideoByCategoryPercentage(item.category, item);\n return filteredItem;\n });\n\n } else {\n // do apply static videos for each category\n variluxProducts?.map((item) => {\n const filteredItem = filterVideoByCategory(item.category, item);\n return filteredItem;\n });\n }\n setIVariluxProducts(variluxProducts);\n }\n const getVideoIndex = (percentage: number) => {\n const index = percentage < 15 ? 1 : percentage < 30 ? 2 : 3;\n return index;\n }\n\n const filterVideoByCategoryPercentage = async (category: string, item: iVariluxProductCard) => {\n // Logic of filter video by category percentage : TODO\n const resutls: any = categoryPercentages;\n const percentage = resutls[category];\n const videoIndex = getVideoIndex(percentage);\n const demoCategory = getDemoCategory(category);\n const filteredItem = await getPreviewAssets(demoCategory, videoIndex, item);\n return filteredItem;\n }\n\n const filterVideoByCategory = async (category: string, item: iVariluxProductCard) => {\n // Logic of filter video by category : TODO\n const videoIndex = getVideoIndexByCategory(category);\n const demoCategory = getDemoCategory(category);\n const filteredItem = await getPreviewAssets(demoCategory, videoIndex, item);\n return filteredItem;\n }\n\n const getPreviewAssets = async (category: string, index: number, item: iVariluxProductCard) => {\n const leftAsset = await get('variluxG9Store', category + '_' + index);\n const rightAsset = await get('variluxG9Store', category + '_0');\n //const Alpha = [\"A\",\"B\",\"C\",\"D\"];\n if (leftAsset && rightAsset) {\n const leftTitle = prescriptionOptions.find(item => item.value === productSelected);\n //item.previewItems.list[0].title = leftTitle?.label + ' '+ Alpha[index];\n if(leftTitle){\n item.previewItems.list[0].title = tg9(leftTitle.value,leftTitle?.label);\n }\n item.previewItems.list[0].source = leftAsset.asset;\n //item.previewItems.list[1].title = rightAsset.id;\n item.previewItems.list[1].source = rightAsset.asset;\n }\n return item;\n }\n\n const getDemoCategory = (category: string) => {\n let demoCategory: string = \"\";\n switch (category) {\n case VARILUX_CATEGORY.INSTANT:\n demoCategory = DEMO_CATEGORY.INSTANT;\n break;\n case VARILUX_CATEGORY.STABILIZED:\n demoCategory = DEMO_CATEGORY.STABILIZED;\n break;\n case VARILUX_CATEGORY.PANORAMIC:\n demoCategory = DEMO_CATEGORY.PANOROMIC;\n break;\n case VARILUX_CATEGORY.SHARP:\n demoCategory = DEMO_CATEGORY.SHARP;\n break;\n case VARILUX_CATEGORY.EXTENDED:\n demoCategory = DEMO_CATEGORY.EXTENDED;\n break;\n default:\n break;\n }\n return demoCategory;\n }\n\n const loaded = async (data?: any, flag?: boolean) => {\n loadedCount.current += 1;\n if (loadedCount.current >= totalAssets) {\n if (flag) {\n setPreviewAssets();\n }\n setTimeout(() => setIsDownloading(false),500);\n }\n }\n const handlDownloadAsset = async (category: string) => {\n setIsDownloading(true);\n setShowDemo(true);\n const resutls: any = categoryPercentages;\n const videoIndex = resutls ? getVideoIndex(resutls[category]): getVideoIndexByCategory(category); \n const demoCategory = getDemoCategory(category);\n for (const categoryItem of variluxG9Videos) {\n if (categoryItem.directory === demoCategory) {\n categoryItem?.videos?.map(async (asset, i) => {\n if (i === 0 || i === videoIndex) {\n const isAlreadyDownloaded = await isAlreadyPreloaded(categoryItem.directory, i);\n if (!isAlreadyDownloaded) {\n setIsDownloading(true);\n const base64 = await downloadAssetBase64(asset);\n const itemData = await insert('variluxG9Store', {\n id: `${categoryItem.directory}_${i}`,\n asset: base64,\n });\n await loaded(itemData, true);\n } else {\n await loaded();\n }\n }\n })\n }\n }\n\n }\n\n const getVideoIndexByCategory = (category: string) => {\n const prescriptionOption:any = prescriptionOptions.find(item => item.value === productSelected);\n return prescriptionOption?.videoIndex ? prescriptionOption.videoIndex[category]: 0;\n }\n\n const isAlreadyPreloaded = async (category: string, i: number) => {\n const id = `${category}_${i}`;\n const asset = await get('variluxG9Store', id);\n return asset ? true : false;\n }\n\n const nextStep = () => {\n dispatch(variluxgG9Slice.actions.changeView('conclusion'));\n }\n\n const handlControlClick = (index: number) => {\n setPreviewItem(iVariluxProducts[index]);\n setPreviewItemIndex(index)\n }\n\n const setKoreanHeaderText = () => {\n if (g9LanguageSetting?.country === 'Korea') {\n return (\n <>\n \n 다양한 시나리오를\n \n \n  \n 가상체험\n  \n \n \n 해 보세요.\n \n \n )\n } else {\n return (\n <>\n {tg9('welcome-to-your', 'Welcome to your')} {tg9('personalized-profile', 'personalized profile')}\n \n )\n }\n }\n\n return (\n
    \n
    \n {/* {tg9('welcome-to-your', 'Welcome to your')} {tg9('personalized-profile', 'personalized profile')} */}\n {setKoreanHeaderText()}\n
    \n
    -1 ? ' fadein-card':''))}>\n \n {\n iVariluxProducts?.map((item, i) => (\n handlDownloadAsset(item.category)}\n setPreviewItem={setPreviewItem}\n setPreviewItemIndex={setPreviewItemIndex}\n />\n ))\n }\n \n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n {/** Demo modal */}\n \n
    \n )\n}\n\nexport default DemonstrationsVarilux","import { useEffect } from 'react';\nimport { useDispatch, useSelector } from \"react-redux\";\nimport Button from \"../../../components/ui/Button\";\nimport Icon from \"../../../components/ui/Icon\"\nimport { getApp } from \"../../../store/slices/app.slice\";\nimport variluxgG9Slice from \"../../../store/slices/variluxG9.slice\";\nimport useBEM from \"../../../utils/hooks/useBEM\"\nimport useTranslation from \"../../../utils/hooks/useTranslation\";\n\n\nconst IntroVarilux = () => {\n const dispatch = useDispatch()\n const [B, E] = useBEM('varilux-intro')\n const { tg9 } = useTranslation(useSelector(getApp));\n const { g9LanguageSetting } = useSelector(getApp)\n\n const nextStep = () => {\n dispatch(variluxgG9Slice.actions.changeView('needExplorer'))\n }\n\n useEffect(() => {\n dispatch(variluxgG9Slice.actions.resetData())\n }, [])\n\n const setKoreanHeaderText = () => {\n if (g9LanguageSetting?.country === 'Korea') {\n return (\n

    \n \n 당신의  \n 개인맞춤렌즈\n \n \n \n 가상체험  \n 해 보세요.\n \n

    \n ) \n } else {\n return (\n

    \n {tg9('need_explorer_experience_your','Experience your')}\n \n {tg9('need_explorer_personalized_demonstration','personalized demonstration')}\n \n

    \n )\n }\n }\n\n return (\n
    \n
    \n \n
    \n
    \n {/*

    \n {tg9('need_explorer_experience_your','Experience your')}\n \n {tg9('need_explorer_personalized_demonstration','personalized demonstration')}\n \n

    */}\n {setKoreanHeaderText()}\n
    \n
    \n )\n}\n\nexport default IntroVarilux","import useBEM from \"../../utils/hooks/useBEM\"\n\ninterface Props{\n text:string,\n click?: () => void,\n className?:string,\n selected?:boolean,\n gtmId?: string\n}\n\nconst Champ:React.FC = ({\n click,\n text,\n selected = true,\n gtmId\n }) => {\n const [B,E] = useBEM('champ')\n\n const onClickHandler = () => {\n if(!click)return;\n click();\n }\n\n return (\n
    \n \n {text}\n \n \n {selected && \n
    \n }\n
    \n
    \n )\n}\n\nexport default Champ","import useBEM from \"../../utils/hooks/useBEM\"\n\ninterface Props{\n className?:string\n flexColumn?:boolean\n}\n\n\nconst Dialogue:React.FC = ({children, className, flexColumn = false}) => {\n const [B, E] = useBEM('dialogue')\n return (\n
    \n {children}\n
    \n )\n}\n\nexport default Dialogue","import { SetStateAction, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport Modal from \"../../../components/Modal\";\nimport Button from \"../../../components/ui/Button\";\nimport Champ from \"../../../components/ui/Champ\"\nimport Dialogue from \"../../../components/ui/Dialogue\";\nimport Icon from \"../../../components/ui/Icon\";\nimport { getApp } from \"../../../store/slices/app.slice\";\nimport variluxgG9Slice, { getVariluxG9 } from \"../../../store/slices/variluxG9.slice\";\nimport useBEM from \"../../../utils/hooks/useBEM\"\nimport useTranslation from \"../../../utils/hooks/useTranslation\";\nimport useVariluxDisableButton from \"../../../utils/hooks/useVariluxDisableButton\";\n\ninterface Props {\n \n}\n\nconst NeedExplorerVarilux: React.FC = () => {\n const dispatch = useDispatch()\n const { tg9 } = useTranslation(useSelector(getApp));\n const [B,E] = useBEM('varilux-needExplorer')\n const { needExplorerChoices, view } = useSelector(getVariluxG9); \n\n //hooks\n const [showWarning, setShowWarning] = useState(false)\n const {disableNext} = useVariluxDisableButton()\n\n //functions\n const selectChoice = (id:number) => {\n dispatch(variluxgG9Slice.actions.selectChoice(id))\n }\n\n const nextStep = () => {\n dispatch(variluxgG9Slice.actions.changeView('prescription'))\n }\n\n return (\n\n
    \n \n
    \n \n {tg9('select_visual__prog_lens','Select the visual discomforts experienced by your patient with their current progressive lenses')}\n \n \n {tg9('need_explorer_multiple_choice_question','Multiple choice question')}\n \n
    \n {/* choices */}\n
    \n {\n needExplorerChoices.map((choice) => (\n selectChoice(choice.id)}\n />\n ))\n }\n
    \n\n
    \n */}\n
    \n )\n}\n\nexport default NeedExplorerVarilux","import React, { useEffect, useRef, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport Button from \"../../../components/ui/Button\";\nimport Dialogue from \"../../../components/ui/Dialogue\";\nimport prescriptionOptions from \"../../../constants/variluxG9/prescription-options\";\nimport { getApp } from \"../../../store/slices/app.slice\";\nimport variluxgG9Slice, {\n getVariluxG9,\n} from \"../../../store/slices/variluxG9.slice\";\nimport PrescriptionProductTypeVarilux from \"../../../types/prescription-product-varilux.type\";\nimport useBEM from \"../../../utils/hooks/useBEM\";\nimport useTranslation from \"../../../utils/hooks/useTranslation\";\nimport useVariluxDisableButton from \"../../../utils/hooks/useVariluxDisableButton\";\nimport useVariluxMatrix from \"../../../utils/hooks/useVariluxMatrix\";\nimport Icon from \"../../../components/ui/Icon\";\nimport settings from \"../../../constants/settings.constants\";\nimport {\n IndexedDBContext,\n IndexedDBContextType,\n} from \"../../../utils/context/indexedDBContext\";\nimport Utils from \"../../../utils/Utils\";\nimport Champ from \"../../../components/ui/Champ\";\n\ninterface Props {\n\n}\n\nconst PrescriptionVarilux2: React.FC = () => {\n //variables, hooks\n const dispatch = useDispatch();\n const { tg9 } = useTranslation(useSelector(getApp));\n const { prescriptionVarilux, view, prescriptionVideoPlay } =\n useSelector(getVariluxG9);\n const [B, E] = useBEM(\"varilux-prescription\");\n const { productSelected, sphereMean, addition } = prescriptionVarilux;\n const { getAddSegmentation, getAmetropia, getCategoryPercentages } =\n useVariluxMatrix();\n const { get, insert } = React.useContext(\n IndexedDBContext\n ) as IndexedDBContextType;\n const { downloadAssetBase64 } = Utils();\n\n const { disableNext } = useVariluxDisableButton();\n const [showSkip, setShowSkip] = useState(false);\n const [asset, setAsset] = useState(null);\n const videoRef = useRef();\n const newAssetsURL = (url: string) => {\n return `${\n settings[settings.environment].newAssetsUrl\n }VariluxG9/demo/${url}`;\n };\n const prescriptionVideo = newAssetsURL(\n \"PRESCRIPTIONS/varilux_prescription_video.mp4\"\n );\n\n \n useEffect(() => {\n let mounted = true\n const downloadPrescriptionAsset = async () => {\n const isPrescriptionVideoDownloaded = await isAlreadyPreloaded(\n \"PRESCRIPTIONS\",\n 0\n );\n if (!isPrescriptionVideoDownloaded) {\n const base64 = await downloadAssetBase64(prescriptionVideo);\n await insert(\"variluxG9Store\", {\n id: \"PRESCRIPTIONS_0\",\n asset: base64,\n });\n const asset = await get(\"variluxG9Store\", \"PRESCRIPTIONS_0\");\n if (asset.asset) setAsset(asset.asset);\n } else {\n const asset = await get(\"variluxG9Store\", \"PRESCRIPTIONS_0\");\n if (mounted && asset.asset) setAsset(asset.asset);\n }\n };\n downloadPrescriptionAsset();\n\n return () => {mounted = false}\n }, []);\n\n\n const isAlreadyPreloaded = async (category: string, i: number) => {\n const id = `${category}_${i}`;\n const asset = await get(\"variluxG9Store\", id);\n return asset ? true : false;\n };\n\n // functions\n const onSelectChamp = (option: string) => {\n if(option === productSelected){\n dispatch(variluxgG9Slice.actions.selectProduct(\"none\" as PrescriptionProductTypeVarilux));\n return\n }\n dispatch(\n variluxgG9Slice.actions.selectProduct(\n option as PrescriptionProductTypeVarilux\n )\n );\n };\n\n const next = () => {\n dispatch(variluxgG9Slice.actions.setPrescriptionVideoPlay(true));\n };\n\n const delayedShowSkip = () => {\n setTimeout(() => {\n setShowSkip(true);\n }, 3000);\n };\n\n const videoSkip = () => {\n if (productSelected === PrescriptionProductTypeVarilux.NONE) {\n dispatch(variluxgG9Slice.actions.setLensCategorySelected(false));\n }\n if (\n sphereMean &&\n addition &&\n productSelected !== PrescriptionProductTypeVarilux.NONE\n ) {\n const add = getAddSegmentation(addition);\n const ametropia = getAmetropia(sphereMean);\n if (ametropia !== null && add !== null) {\n const categoryPercentages = getCategoryPercentages(\n ametropia,\n add,\n productSelected\n );\n dispatch(variluxgG9Slice.actions.setEyeCondition(ametropia));\n dispatch(variluxgG9Slice.actions.setAddSegmentation(add));\n dispatch(\n variluxgG9Slice.actions.setCategoryPercentages(categoryPercentages)\n );\n dispatch(variluxgG9Slice.actions.setLensCategorySelected(true));\n }\n }\n dispatch(variluxgG9Slice.actions.setPrescriptionVideoPlay(false));\n dispatch(variluxgG9Slice.actions.changeView(\"demonstrations\"));\n };\n\n return (\n
    \n {!prescriptionVideoPlay ? (\n \n {/* prescription part */}\n
    \n \n {tg9('current_progress_lens', 'Current progressive lenses')}\n \n \n {tg9('need_explorer_single_choice_question','Single choice question')}\n \n
    \n {/* choices */}\n
    \n {prescriptionOptions.map((choice, i) => {\n return (\n onSelectChamp(choice.value)}\n />\n )\n })}\n
    \n\n {/* bottom */}\n
    \n \n {/* {t(\"varilux__mandatory\", \" *Mandatory \")} */}\n \n\n
    \n {/* to do : confirm if will remove skip button */}\n {/*
    \n {t('skip_button', 'Skip')}\n \n
    */}\n\n \n
    \n
    \n
    \n ) : (\n <>\n {/*
    */}\n
    \n \n \n \n
    \n {showSkip && (\n
    \n {tg9(\"skip_button\", \"Skip\")}\n \n
    \n )}\n \n )}\n
    \n );\n};\n\nexport default PrescriptionVarilux2;\n","import React, { useState } from 'react'\n// import { useSelector } from 'react-redux';\nimport { iView } from '../../../store/interface/variluxG9.interface';\n// import { getApp } from '../../../store/slices/app.slice';\n// import useTranslation from '../../../utils/hooks/useTranslation';\nimport ConclusionVarilux from './ConclusionVarilux';\nimport DemonstrationsVarilux from './DemonstrationsVarilux';\nimport IntroVarilux from './IntroVarilux';\nimport NeedExplorerVarilux from './NeedExplorerVarilux';\nimport PrescriptionVarilux2 from './PrescriptionVarilux2';\n\ninterface Props {\n step?:iView\n}\n\nconst VariluxContainer:React.FC = ({step}) => {\n// const { t } = useTranslation(useSelector(getApp));\n // for gtm id\n\n const viewPage = (step:iView) => {\n switch (step) {\n case 'intro':\n return \n case 'needExplorer':\n return \n case 'prescription':\n return \n case 'demonstrations':\n return \n case 'conclusion':\n return \n \n default:\n break;\n }\n }\n\n return (\n <>\n {\n step && viewPage(step)\n }\n \n )\n}\n\nexport default VariluxContainer","import iVariluxG9Background from \"../../interface/variluxG9Background.interface\";\n\ntype iView = 'intro' | 'needExplorer' | 'prescription' | 'demonstrations' | 'conclusion'\n\n \n\nconst useVariluxBackground = (source:string[], view:iView) => {\n\n const backgrounds:iVariluxG9Background = {\n intro:{\n background:source[0]\n },\n needExplorer:{\n background:source[1]\n },\n prescription:{\n background:source[1]\n },\n demonstrations:{\n background:source[0]\n },\n conclusion:{\n background:source[0]\n }\n }\n const background = backgrounds[view]?.background\n const backgroundStyle = {\n height:'100%',\n width:'100%',\n backgroundImage:`url(${background ?? source[0]})`,\n backgroundSize: 'cover',\n backgroundPosition:'center'\n }\n return {backgroundStyle}\n}\n\nexport default useVariluxBackground;","import React, { useEffect, useRef, useState } from 'react';\nimport useBEM from '../../../utils/hooks/useBEM';\nimport Utils from '../../../utils/Utils';\nimport LoadingAssets from '../../../components/ui/loadingAssets';\nimport { IndexedDBContext, IndexedDBContextType } from '../../../utils/context/indexedDBContext';\nimport variluxG9Videos from '../../../utils/varilux-g9-videos';\ninterface Props {\n\n}\nconst DownloadVariluxAssets: React.FC = () => {\n // VARIABLES\n const [ B ] = useBEM('download-assets');\n const { downloadAssetBase64 } = Utils();\n const [preloadComplete, setPreloadComplete] = useState(false);\n const { get, insert } = React.useContext(IndexedDBContext) as IndexedDBContextType;\n const [doneCount, setDoneCount] = useState(0);\n const loadedCount = useRef(0);\n const totalAssets = 21;\n\n // HOOKS\n useEffect(() => {\n downloadAssets();\n return () => { };\n }, []);\n const loaded = () => {\n loadedCount.current += 1;\n setDoneCount(prev => prev + 1);\n if (loadedCount.current >= totalAssets) {\n setPreloadComplete(true);\n }\n }\n const downloadPercentage = () => {\n const percent = (doneCount / totalAssets * 100);\n // return `${ Math.floor(percent) }%`;\n return Math.floor(percent);\n }\n const downloadAssets = async () => {\n for (const category of variluxG9Videos) {\n category?.videos?.map(async (asset, i) => {\n const isAlreadyDownloaded = await isAlreadyPreloaded(category.directory, i);\n\n if (!isAlreadyDownloaded) {\n const base64 = await downloadAssetBase64(asset)\n await insert('variluxG9Store', {\n id: `${category.directory}_${i}`,\n asset: base64,\n });\n loaded();\n } else {\n loaded();\n }\n })\n }\n }\n const isAlreadyPreloaded = async (category: string, i: number) => {\n const id = `${category}_${i}`;\n const asset = await get('variluxG9Store', id);\n return asset ? true : false;\n }\n return (\n
    \n \n
    \n );\n}\n\nexport default DownloadVariluxAssets;","import React, { useLayoutEffect, useState, useEffect, useContext } from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\nimport appSlice, { getApp } from '../../store/slices/app.slice'\nimport useBEM from '../../utils/hooks/useBEM'\nimport VarNavbar from './components/VarNavbar'\nimport background1 from '../.././assets/png/variluxG9-bg-4.png'\nimport background2 from '../.././assets/png/variluxG9-bg-2.png'\nimport background3 from '../.././assets/png/variluxG9-bg-3.png'\nimport VariluxContainer from './components/VariluxContainer'\nimport variluxgG9Slice, { getVariluxG9 } from '../../store/slices/variluxG9.slice'\nimport useVariluxBackground from '../../utils/hooks/useVariluxBackground'\nimport DownloadVariluxAssets from './components/DownloadVariluxAssets'\nimport Modal from '../../components/Modal'\nimport Icon from '../../components/ui/Icon'\nimport useTranslation from '../../utils/hooks/useTranslation'\nimport Button from '../../components/ui/Button'\nimport { IndexedDBContext, IndexedDBContextType } from '../../utils/context/indexedDBContext'\nimport iG9CountryLanguages from '../../store/interface/g9-country-languages.interface'\n\ninterface Props {\n\n}\n\nconst Varilux: React.FC = () => {\n const dispatch = useDispatch()\n const [B, E] = useBEM('varilux')\n const { tg9 } = useTranslation(useSelector(getApp));\n const { view, showDownloadPopup } = useSelector(getVariluxG9);\n const [installPWA, setInstallPWA] = useState(null) \n const { backgroundStyle } = useVariluxBackground([background1, background2, background3], view)\n const {get, update, insert} = useContext(IndexedDBContext) as IndexedDBContextType\n const { accountDetails } = useSelector(getApp)\n\n useLayoutEffect(() => {\n dispatch(variluxgG9Slice.actions.changeView('intro'))\n\n return () => {\n closeDownloadPopup()\n }\n }, [])\n\n useEffect(() => {\n let country = accountDetails?.shop.country\n if (country === \"de\") { // START AT 'CURRENT LENSES' PAGE WHEN COUNTRY IS GERMANY\n dispatch(variluxgG9Slice.actions.changeView('prescription'))\n } else {\n dispatch(variluxgG9Slice.actions.changeView('intro'))\n }\n\n fetchG9Translation()\n\n const handler = (e: any) => {\n e.preventDefault()\n setInstallPWA(e)\n }\n window.addEventListener('beforeinstallprompt', handler)\n return () => window.removeEventListener(\"transitionend\", handler)\n }, [])\n \n const closeDownloadPopup = () => {\n dispatch(variluxgG9Slice.actions.setShowDownloadPopup(false))\n }\n\n const handlInstallation = (e: any) => {\n e.preventDefault()\n installPWA?.prompt()\n dispatch(variluxgG9Slice.actions.setShowDownloadPopup(false))\n }\n\n const fetchG9Translation = async () => {\n try {\n const res = await fetch('https://qua-bo.essilorcompanion.com/api/v1/translationg9')\n const data = await res.json()\n const translationData = await get('languageStore', 'g9translations')\n const todo = translationData ? update : insert\n todo('languageStore', {\n id: 'g9translations',\n value: data.translations\n })\n\n let sortedCountryLanguages = data.continents.map((continent: iG9CountryLanguages) => {\n return {\n ...continent,\n countries: continent.countries.sort((a, b) => {\n return a.name.localeCompare(b.name);\n })\n }\n });\n \n dispatch(appSlice.actions.setG9CountryLanguages(sortedCountryLanguages))\n dispatch(appSlice.actions.setG9Languages(data.languages))\n } catch (error) {\n return error\n }\n }\n\n const varilux_version = 'Version: 0.0.14'\n\n return (\n <>\n \n
    \n \n \n {varilux_version} \n
    \n\n {/* download modal */}\n {\n closeDownloadPopup()}\n closeButtonColor='#6E51EB'\n >\n
    \n
    \n \n
    \n
    \n \n {tg9('varilux_web_app', 'Installation web app')}\n \n

    \n {tg9('varilux_install_web_app', 'Install the application for a better experience')}\n

    \n
    \n
    \n \n
    \n
    \n \n }\n\n {/* NOTE: varilux version, Increment the value varilux \n version everytime you deploy something that is \n related to varilux G9*/}\n \n )\n}\n\nexport default Varilux","import React, { useEffect, useRef, useState } from 'react';\nimport { BrowserRouter as Router, Route, Switch } from \"react-router-dom\";\nimport BreadCrumb from './components/Breadcrumb';\nimport NavBar from './components/NavBar';\nimport SideBar from './components/sidebar/Sidebar';\nimport HomePage from './pages/homepage/HomePage';\nimport { Provider } from 'react-redux';\nimport store from './store/store';\nimport MyCompanion from './pages/my-companion/MyCompanion';\nimport PracticeID from './pages/practice-id/PracticeID';\nimport LensProposalBuilder from './pages/lens-proposal-builder/LensProposalBuilder';\nimport LegalNotices from './pages/legal-notices/LegalNotices';\nimport NeedExplorer from './pages/need-explorer/NeedExplorer';\nimport Prescription from './pages/prescription/Prescription';\nimport Measures from './pages/measures/Measures';\nimport routes from './constants/routes.constant';\nimport LensThickness from './pages/lens-thickness/LensThickness';\nimport Summary from './pages/summary/Summary';\nimport PackageOffer from './pages/package-offer/PackageOffer';\nimport Education from './components/education/Education';\nimport Products from './components/products/Products';\nimport Demonstrations from './pages/demonstrations/Demonstrations';\nimport Delivery from './pages/delivery/Delivery';\nimport Emat from './pages/emat/Emat';\nimport LicenseActivation from './pages/license-activation/LicenseActivation';\nimport Discovery from './pages/discovery/Discovery';\nimport iTheme from './interface/theme.interface';\nimport LensConsultationV2 from './pages/lens-consultation-v2/LensConsultationV2';\nimport DownloadAssets from './components/DownloadAssets';\nimport ReactGA from 'react-ga';\nimport RouteChangeTracker from './components/RouteChangeTracker';\nimport Language from './components/Language';\nimport axios from 'axios';\nimport Loading from './components/Loading';\nimport Tutorial from './pages/tutorial-content/Tutorial';\nimport FirstLogin from './components/first-login/FirstLogin';\nimport IndexedDBProvider from './utils/context/indexedDBContext';\nimport useIndexedDB from './utils/hooks/useIndexedDB';\nimport iRootState from './store/interface/root-state.interface';\nimport useENV from './utils/hooks/useEnv';\nimport AdvancePriceSetting from './pages/advance-price-setting/AdvancePriceSetting'; \nimport iUserStore from './store/interface/user-store.interface';\nimport Varilux from './pages/varilux-g9/Varilux';\nimport ExperienceType from './types/experience.type';\n\n\nfunction App() {\n const [theme, setTheme] = useState();\n const [globalAlert, setGlobalAlert] = useState<{\n show: boolean,\n message?: string,\n action?: () => void\n }>({\n show: false\n });\n const [experience, setExperience] = useState(ExperienceType.STANDARD);\n const [isModalOpen, setIsModalOpen] = useState(():any => {\n store.subscribe(() => {\n const state = store.getState();\n const appStore = state.app;\n return appStore.isModalOpen\n })\n })\n const oldTheme = useRef();\n const [loading, setLoading] = useState<{\n show: boolean,\n text?: string,\n textOnly?: boolean\n }>({show: false});\n\n const loadingPrevValue = useRef(false);\n const [db, setDB] = useState(undefined);\n const dbRef = useRef(db);\n const { connect, createTables, get,getAll, insert, update } = useIndexedDB();\n const env = useENV();\n\n useEffect(() => {\n watchAppTheme(); \n axiosInterceptors();\n\n async function connectIndexDB() {\n const indexDB = await connect((db: any) => createTables(db));\n setDB(indexDB)\n }\n connectIndexDB();\n }, []);\n\n useEffect(() => {\n dbRef.current = db;\n initializeGoogleAnalytics();\n if(!db)return;\n\n const isIndexedDbDataFixed = localStorage.getItem('isIndexedDbDataFixed');\n if(isIndexedDbDataFixed)return;\n fixIndexedDbData();\n localStorage.setItem('isIndexedDbDataFixed', 'true');\n }, [db]);\n\n const fixIndexedDbData = () => { \n // Note: old user data: createdDate = string data type\n // new: createdDate = Date data type\n // query createdDate using string is not posible. \n getAll(db as IDBDatabase, 'userStore', (data: any) => {\n return (typeof data.createdDate) === 'string';\n }).then( (result) => {\n console.log(result);\n result.forEach( (user: iUserStore) => {\n const createdDate = removeDateTime(user.createdDate as string);\n update(db as IDBDatabase, 'userStore', {...user, createdDate});\n })\n });\n }\n\n useEffect(()=>{\n store.subscribe(() => {\n const state = store.getState();\n const appStore = state.app;\n setIsModalOpen(appStore.isModalOpen)\n }\n )},[isModalOpen])\n\n const initializeGoogleAnalytics = () => {\n const accountDetails = store.getState().app.accountDetails;\n const currencyCode = accountDetails?.currency?.code;\n // const gaCode = accountDetails?.ga_code;\n if(!currencyCode)return;\n\n //for custom GA code\n // ReactGA.initialize( (gaCode !== undefined || gaCode !== \"\" ? gaCode : env.GA) || env.GA);\n ReactGA.initialize(env.GA);\n ReactGA.pageview('/');\n }\n\n const axiosInterceptors = () => {\n let isBackground = false;\n axios.interceptors.request.use(\n (req) => {\n const token = store.getState().app.token;\n isBackground = req.headers['background'];\n delete req.headers['background'];\n const requiredToken = req.headers['Authorization'];\n if(requiredToken)req.headers['Authorization'] = `Bearer ${token}`;\n if(!isBackground)setLoading({show: true}); \n return req;\n },\n (err) => {\n if(!isBackground)setLoading({show: false}); \n return Promise.reject(err);\n }\n );\n axios.interceptors.response.use(\n (res) => {\n // Add configurations here\n if (res.status === 201 || res.status === 200) {\n if(!isBackground)setLoading({show: false}); \n }\n return res;\n },\n (err) => {\n if(!isBackground)setLoading({show: false}); \n return Promise.reject(err);\n }\n );\n }\n\n const removeDateTime = (date: string) => {\n return new Date(new Date(date).setHours(0,0,0,0))\n }\n\n let throttle: any;\n const saveToLocalStorage = (state: iRootState) => {\n clearTimeout(throttle);\n throttle = setTimeout(() => {\n try {\n const serialisedState = JSON.stringify(state);\n localStorage.setItem(\"persistantState\", serialisedState);\n\n const user = state.user;\n const lensThickness = state.lensThickness\n const dbCopy = dbRef.current as IDBDatabase;\n if(!dbCopy || !user || !user.id)return;\n const createdDate = removeDateTime(user.createdDate as string);\n\n get(dbCopy, 'userStore', user?.id).then( (result) => {\n if(!result){ \n if(!user.createdDate)return;\n insert(dbCopy, 'userStore', {...user, createdDate, lensThickness});\n } else { \n update(dbCopy, 'userStore', {...user, createdDate, lensThickness});\n }\n })\n\n } catch (e) {\n console.warn(e);\n }\n }, 250);\n }\n\n const watchAppTheme = () => {\n store.subscribe( () => {\n const state = store.getState();\n\n const appStore = state.app;\n const currentTheme = appStore.theme; \n // Note: update theme only when theme state is changed\n if(!oldTheme.current || oldTheme.current !== currentTheme.id){\n setTheme(currentTheme);\n oldTheme.current = currentTheme.id;\n }\n\n if(appStore.loading.show === undefined)return;\n if(appStore.loading.show !== loadingPrevValue.current){\n setLoading(appStore.loading);\n loadingPrevValue.current = appStore.loading.show\n }\n\n saveToLocalStorage(state);\n setExperience(appStore.experience);\n });\n setTheme(store.getState().app.theme)\n }\n\n if(!db)return null;\n return (\n
    \n\n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n\n \n \n \n \n\n \n
    \n );\n}\n\nexport default App;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://cra.link/PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/)\n);\n\ntype Config = {\n onSuccess?: (registration: ServiceWorkerRegistration) => void;\n onUpdate?: (registration: ServiceWorkerRegistration) => void;\n};\n\nexport function register(config?: Config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://cra.link/PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl: string, config?: Config) {\n navigator.serviceWorker\n .register(swUrl)\n .then((registration) => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://cra.link/PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch((error) => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl: string, config?: Config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' },\n })\n .then((response) => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType !== null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log('No internet connection found. App is running in offline mode.');\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then((registration) => {\n registration.unregister();\n })\n .catch((error) => {\n console.error(error.message);\n });\n }\n}\n","import { ReportHandler } from 'web-vitals';\n\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './styles/index.scss';\nimport App from './App';\nimport * as serviceWorkerRegistration from './serviceWorkerRegistration';\nimport reportWebVitals from './reportWebVitals';\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root')\n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://cra.link/PWA\nserviceWorkerRegistration.register({\n onUpdate: registration => {\n if (registration && registration.waiting) {\n registration.waiting.postMessage({ type: 'SKIP_WAITING' });\n }\n }\n});\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n\n"],"sourceRoot":""}